Zastaw ciekawych makroinstrukcji
Author: Włodzimierz Macewicz
Keywords: tex, latex, makroinstrukcje, pakiety makroinstrukcji, Wirtualna Akademia

## manyfoot

Pakiet definiuje polecenia umożliwiające definiowanie nowych obiektów typu przypis; będą one numerowane niezależnie (w ramach danego typu), o kolejności pojawiania się przypisów decyduje kolejność ich definicji. Pakiet posiada następujące opcje:

`ruled` | jeżeli na jednej stronie wystąpi kilka typów przypisów, będą one oddzielone wynikiem działania polecenia `\extrafootnoterule` (domyślnie jest mu nadawana wartość `\footnoterule`)
`para` | opcja uaktywnia możliwość utworzenia typu przypisu, który będzie składany w postaci jednego akapitu (p. też fnpara lub footmisc)
`para*` | jak wyżej, ale w akapicie nie będzie wcinana pierwsza linia

Wewnątrz pakietu jest wywoływany pakiet `nccfoots`, w którym są definiowane następujące polecenia:

`Footnotemark{marker}` | wstawia odsyłacz do przypisu, jeżeli wartość parametru jest nieokreślona (pusta), wstawiana jest ostatnio użyta (zarówno w poleceniu `footnote`, `footnotemark` jak i `\Footnotemark` i `Footnote`)
`Footnotetext{marker}{tekst` | wstawia przypis (bez odsyłacza), jeżeli wartość parametru marker jest nieokreślona (pusta), wstawiana jest ostatnio użyta (zarówno w poleceniu `footnote`, `footnotemark` jak i `\Footnotemark` i `Footnote`)
`Footnote{marker}{tekst` | wstawia odsyłacz do przypisu (i przypis), jeżeli wartość parametru marker jest nieokreślona (pusta), wstawiana jest ostatnio użyta (zarówno w poleceniu `footnote`, `footnotemark` jak i `\Footnotemark` i `Footnote`)

Do tworzenia nowych typów przypisów służy następujące polecenie:
`\newfootnote[parametr]{suffix}`
parametr może przyjmować wartości: `plain` i `para` (tylko w przypadku użycia opcji `para` lub `para*` przy wywołaniu pakietu).

Powyższe polecenie tworzy jedynie obiekt ruchomy typu ,,footnote'' oraz polecenie `\Footnotetextsuffix` o następującej składni:
`\Footnotetextsuffix{marker}{tekst}`; to niestety nie wszystko, oprócz tego należy zdefiniować licznik i podstawową makroinstrukcję służącą do wstawienia przypisu -- poniżej przykład utworzenia dwu nowych typów przypisów:

    \newfootnote{A}
    \newfootnote{B}
    \newcounter{footnoteA}
    \newcommand{\footnoteA}{%
       \stepcounter{footnoteA}%
       \Footnotemark\thefootnoteA \FootnotetextA{}}
    \newcounter{footnoteB}
    \newcommand{\footnoteB}{%
       \stepcounter{footnoteB}%
       \Footnotemark\thefootnoteB \FootnotetextB\thefootnoteB}
    \renewcommand{\thefootnoteB}{\roman{footnoteB}}

i ich użycie:

    to jest tekst
    to jest tekst\footnoteA{a to przypis typu A}
    to jest tekst\footnoteB{a to przypis typu B}
    to jest tekst

Proces tworzenie jest nowego typu przypisu jest nieco uciążliwy, proponuję dopisanie poniższego kodu:

    \makeatletter
    \let\xxx=\newfootnote
    \let\newfootnote\relax
    \def\newfootnote{%
        \@ifnextchar[{\@xnewfootnote}{\@ynewfootnote}}
    \def\@xnewfootnote[#1]#2{%
    \@newfootnote[#1]{#2}%
    }
    \def\@ynewfootnote#1{%
    \@newfootnote[plain]{#1}%
    }
    \def\@newfootnote[#1]#2{%
      \xxx[#1]{#2}
      \expandafter\newcounter{footnote#2}
      \edef\@tempa{\noexpand\newcommand
        \expandafter\noexpand\csname Footnote#2\endcsname
         {%
          \noexpand\stepcounter{footnote#2}%
            \noexpand\Footnotemark{\noexpand\csname thefootnote#2\endcsname}%
    	\expandafter\noexpand\csname Footnotetext#2\endcsname{}}}%
      \@tempa
    }
    \makeatother

składnia polecenie `\newfootnote` zostaje zachowana, jednak w wyniku jej działania zostanie utworzony odpowiedni licznik przypisów danego typu, oraz samo polecenie wstawiania przypisu. `\Footnotesuffix{tekst przypisu}`, proszę zwrócić uwagę, że nie można w tym poleceniu określić parametru opcjonalnego określającego inny, niż kolejny, numer przypisu.

Teraz utworzenie nowych typów przypisów jest proste:

    \newfootnote{A}
    \newfootnote{B}
    \renewcommand{\thefootnoteB}{\roman{footnoteB}}

i ich użycie:

    to jest tekst
    to jest tekst\FootnoteA{a to przypis typu A}
    to jest tekst\FootnoteB{a to przypis typu B}
    to jest tekst

oraz efekt:

Maksymalna wysokość zajmowana przez przypisy danego typu (a nie przez wszystkie razem) wynosi `\dimen\footins`

Włodzimierz Macewicz

Ostatnie zmiany: 05.05.2014.