Footnote ???? (zacatecnik)

Stepan Kasal KASAL at ksvi.mff.cuni.cz
Wed May 24 16:58:13 CEST 1995


Dobry den,

pokud nebudete tuto rozpravu chapat, preskocte ji a zkuste pokracovat
na radek s textem  "----test.tex----"  (ne tento, ten druhy).

Yenya pise:
>     - \parindent je lepsi si pamatovat v skip-registru nez pres \edef
>     - Pri teto definici \fnote by se neinkrementovalo \footnotenum,
>       pokud by \fnote bylo uzavreno v grupe.

100% souhlas, ale treti problem je tezsi:

>     - Za text poznamky se pridava \par az nekdy hodne pozde,
>       coz ma za nasledek, ze posledni radek poznamky je vysazen
>       s implicitnim \baselineskip em, tedy s jinym, nez zadame.

Yenya pak navrhl dve reseni.  Prvni je osklive, ale funguje (viz jeho
prispevek).  Druhe:

>       [...] Druhym resenim by bylo
>       budto predefinovani \par tak, aby jeste pred vlastnim \endgraf
>       nastavil "maly" \baselineskip, a po \endgraf by se vratil
>       zpet na svoji puvodni definici -- nejak takhle:
>       \let\origpar\par
>       \def\par{{\baselineskip=8pt\endgraf}\let\par\origpar}
>       Ale tuto cestu jsem neprozkoumal prakticky.

Myslim si, ze by nefungovala.  Totiz tam se nikde nevola \par
explicitne (ani pres prazdny radek), ale pres } (resp. \egroup), ktere
ukoncuje schema  \insert\footins{text poznamky pod carou}.

Spravny pristup je podle meho precist si v plainu (kdo muze, tak
v appendixu B v TeXbooku), jak \footnote funguje.
Zavolam-li \footnote{*}{text}, vola se makro
\footnote{*}, ktere vytiskne * do textu zavola \vfootnote{*}
  (\vfootnote je to same, jako \footnote, jen uz nedela tu znacku v textu)
Ten druhy "parametr" makra \(v)footnote se vlastne nikdy necte jako
parametr, jsou tam kouzla s futurelet, do podrobnejsiho vykladu se nebudu
poustet, lze se to docist v TeXbooku.

Z toho plyne, ze ta nastaveni musime nejak "vpas~ovat" do makra \vfootnote,
protoze kdyz se zacne zpracovavat text poznamky, tak uz je davno pozde.
V nasledujicim prikladu to obstara makro \footnotesettings,
ktere vlozim do definice \vfootnote, kterou jsem opsal z plainu.

Jinak je, doufam, tento priklad pochopitelny; kdyby preci ne,
rad zodpovim jakekoliv dotazy.

----test.tex----
\catcode `\@ = 11
% @ zavinac je pismeno, mohu predefinovat nasledujici \def z plainu:
\def\vfootnote#1{\insert\footins\bgroup
  \interlinepenalty\interfootnotelinepenalty
%%% Pridam:
             \footnotesettings
  \splittopskip\ht\strutbox % top baseline for broken footnotes
  \splitmaxdepth\dp\strutbox \floatingpenalty\@MM
  \leftskip\z at skip \rightskip\z at skip \spaceskip\z at skip \xspaceskip\z at skip
  \textindent{#1}\footstrut\futurelet\next\fo at t}
\catcode `\@ = 12

\newskip\origparindent
\origparindent=\parindent
\def\footnotesettings{\parindent=\origparindent
         \sevenrm                   % To tu mam misto \obnot
         \baselineskip=8pt          % nebo 8pt, to je jedno
  % Jeste musim zmenit \strut, pouziva se nejen v makru \vfootnote,
  % ale, a to je dulezitejsi, v makru \@foot na samem konci textu poznamky.
  % Kdybych zde \strut nezmenil, byla by mezera pred posledni radkou
  % poznamky prilis velka (vyzkousejte si to); muze za to \@foot
  % (opet viz plain.tex).
         \setbox\strutbox=\hbox{\vrule height 6pt depth 2pt width 0pt}
}

% Tohle je opsano od Yenyi, jen stoji za povsimnuti, ze makro
% \myfnote nema zadny parametr.
\newcount\footnotenum \footnotenum=0
\def\myfnote{\global\advance \footnotenum by 1\relax
     \footnote{$^{\the\footnotenum}$}}

% A ted si to vyzkousime:
\hsize 8cm
\vsize 4cm

\parindent=3\parindent

No a ted napisu\myfnote{Pricemz chapu pouzivani klavesnice jako psani ve
zobecnenem smyslu.} neco, na cem si svuj
potvorak otestuji.\myfnote{Musite mi prominout, ze nepouzivam
diakritiku, jsem na to liny. I~kdyz ted mne napada, ze to vlastne
budu za chvili posilat do konference, takze mam dobrou vymluvu.
Jeste budu chvilku neco psat, abych pronikl do taju techto
nesmyslu.}

\bye
           Stepan Kasal




More information about the csTeX mailing list