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