
O TeXbook propõe, p. 398sq, sistema para obtenção de nota paragrafada.
Ou seja, em vez de obter
- Nota de rodapé.
- Nota de rodapé.
- Nota de rodapé
obtivermos :
- Nota de rodapé 2. Nota de rodapé 3. Nota de rodapé.
No mesmo parágrafo.
Este sistema é usado por alguns pacotes como footmisc e eledmac. Como mantenedor do último, estou encerrando um problema.
Este sistema (fornecido pelo próprio grande Knuth!), precisa de hboxes para funcionar. Conseqüentemente, com uma nota longa, enquanto a nota de rodapé "normal" será dividida pelo TeX, a nota de rodapé com parágrafo não pode ser dividida, porque usa \hbox.
Como posso reproduzir neste MWE, em plainTeX.
%% This file try to reconstruct a MWE example for paragraphed not from the TeXBook
% p. 398/399
% Specific output routine, which call \makefootnoteparagraph
\def\pagecontents{\ifvoid\topins\else\unvbox\topins\fi
\unvbox255
\ifvoid\footins\else % footnote info is present
\vskip\skip\footins \footnoterule \makefootnoteparagraph\fi
}
% Here, some code for the ouput
\def\makefootnoteparagraph{\unvbox\footins \makehboxofhboxes
\setbox0=\hbox{\unhbox0 \removehboxes}
\baselineskip=\footnotebaselineskip\noindent\unhbox0\par}
\def\makehboxofhboxes{\setbox0=\hbox{}
\loop\setbox2=\lastbox \ifhbox2 \setbox0=\hbox{\box2\unhbox0}\repeat}
\def\removehboxes{\setbox0=\lastbox
\ifhbox0{\removehboxes}\unhbox0 \fi}
% Here, the code for \getfactor
{\catcode`p=12 \catcode`t=12
\csname expandafter\endcsname\gdef
\csname getfactor\endcsname#1pt{#1}
}
% Here, some setting for paragraphed footnote
\newskip\footglue \footglue=1.5em plus.3em minus.3em
\newdimen\footnotebaselineskip \footnotebaselineskip=10pt
\dimen0=\footnotebaselineskip \multiply\dimen0 by 1024
\divide \dimen0 by \hsize \multiply\dimen0 by 64
\xdef\fudgefactor{\expandafter\getfactor\the\dimen0 }
% Here the \footnote redefined (for this MWE, I don't need any marks)
\def\footnote#1{%
\insert\footins{\floatingpenalty=20000
\setbox0=\hbox{%
#1\penalty-10\hskip\footglue} \dp0=0pt \ht0=\fudgefactor\wd0 \box0}
}
\footnote{s}\footnote{s}
\footnote{Long note Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi lobortis, nibh quis luctus porttitor, metus metus accumsan erat, ac commodo ante lorem tempus velit. Nulla ut ex mi. Curabitur magna tortor, egestas quis convallis nec, venenatis non nibh. Aenean et lacinia elit. Aenean ornare fermentum tincidunt. Etiam sed metus ipsum. Nulla accumsan non justo at tincidunt. Integer sed est est. Nullam non velit diam. Proin ut ante risus. Fusce ac enim libero. Proin ac risus nec nisi semper viverra eu ut ligula. Nulla orci ligula, elementum vel auctor eu, suscipit ac mi. Duis in hendrerit nunc, vitae efficitur lectus. Nam tristique eros a lacus posuere, quis placerat sapien venenatis.
Nulla facilisi. Vivamus dapibus nunc neque, eget maximus neque accumsan nec. Fusce suscipit, sapien id pellentesque vestibulum, orci tortor efficitur felis, eget tempus ex augue euismod tortor. Praesent lobortis diam non orci accumsan, sit amet condimentum eros semper. Mauris vel quam non nulla egestas aliquet ornare eu ligula. Sed tristique ultrices sem imperdiet placerat. Maecenas rhoncus, magna sit amet efficitur tristique, elit odio semper magna, ut aliquet magna odio nec lectus. Nullam tristique dolor id purus lobortis placerat.
Etiam sit amet rhoncus nunc. Pellentesque fermentum mi elit, et posuere augue ultricies nec. Curabitur vulputate, purus id molestie lacinia, nisl massa feugiat nunc, non consectetur mi nisi non mauris. Morbi blandit, odio a efficitur fringilla, nulla libero fermentum lectus, vel finibus odio felis eu sem. Nullam sit amet condimentum ligula. Nulla rutrum lacus eget ipsum laoreet elementum. Curabitur in molestie felis. Nunc ut malesuada orci.
Suspendisse tempor ligula in elementum dignissim. Sed vehicula feugiat hendrerit. Curabitur ultricies massa eget dapibus laoreet. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed blandit eleifend nulla, vel feugiat lorem elementum at. Sed a magna sollicitudin, hendrerit lacus vitae, malesuada nibh. Sed commodo, justo vitae varius auctor, nisl purus lacinia enim, ut rutrum libero nisl ut odio. Phasellus vel massa diam. Nulla facilisi. Ut sagittis blandit volutpat.
Morbi lobortis sollicitudin felis, at accumsan eros blandit eget. Donec venenatis, dolor eu tristique sagittis, diam arcu dignissim ligula, eget sagittis nulla arcu scelerisque nisl. Etiam ac lacus leo. Donec consequat diam quis risus venenatis sodales. Duis tempus nibh quis mi fermentum, eget dapibus diam elementum. Nunc eu ultrices odio. Vivamus in ipsum sapien. Aliquam erat volutpat. Nunc euismod eros volutpat massa ultrices porttitor. Ut scelerisque sit amet mi a tincidunt. Sed nec porta urna. Proin eu arcu eget felis euismod ultrices. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi lobortis, nibh quis luctus porttitor, metus metus accumsan erat, ac commodo ante lorem tempus velit. Nulla ut ex mi. Curabitur magna tortor, egestas quis convallis nec, venenatis non nibh. Aenean et lacinia elit. Aenean ornare fermentum tincidunt. Etiam sed metus ipsum. Nulla accumsan non justo at tincidunt. Integer sed est est. Nullam non velit diam. Proin ut ante risus. Fusce ac enim libero. Proin ac risus nec nisi semper viverra eu ut ligula. Nulla orci ligula, elementum vel auctor eu, suscipit ac mi. Duis in hendrerit nunc, vitae efficitur lectus. Nam tristique eros a lacus posuere, quis placerat sapien venenatis.
Nulla facilisi. Vivamus dapibus nunc neque, eget maximus neque accumsan nec. Fusce suscipit, sapien id pellentesque vestibulum, orci tortor efficitur felis, eget tempus ex augue euismod tortor. Praesent lobortis diam non orci accumsan, sit amet condimentum eros semper. Mauris vel quam non nulla egestas aliquet ornare eu ligula. Sed tristique ultrices sem imperdiet placerat. Maecenas rhoncus, magna sit amet efficitur tristique, elit odio semper magna, ut aliquet magna odio nec lectus. Nullam tristique dolor id purus lobortis placerat.
Etiam sit amet rhoncus nunc. Pellentesque fermentum mi elit, et posuere augue ultricies nec. Curabitur vulputate, purus id molestie lacinia, nisl massa feugiat nunc, non consectetur mi nisi non mauris. Morbi blandit, odio a efficitur fringilla, nulla libero fermentum lectus, vel finibus odio felis eu sem. Nullam sit amet condimentum ligula. Nulla rutrum lacus eget ipsum laoreet elementum. Curabitur in molestie felis. Nunc ut malesuada orci.
Suspendisse tempor ligula in elementum dignissim. Sed vehicula feugiat hendrerit. Curabitur ultricies massa eget dapibus laoreet. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed blandit eleifend nulla, vel feugiat lorem elementum at. Sed a magna sollicitudin, hendrerit lacus vitae, malesuada nibh. Sed commodo, justo vitae varius auctor, nisl purus lacinia enim, ut rutrum libero nisl ut odio. Phasellus vel massa diam. Nulla facilisi. Ut sagittis blandit volutpat.
Morbi lobortis sollicitudin felis, at accumsan eros blandit eget. Donec venenatis, dolor eu tristique sagittis, diam arcu dignissim ligula, eget sagittis nulla arcu scelerisque nisl. Etiam ac lacus leo. Donec consequat diam quis risus venenatis sodales. Duis tempus nibh quis mi fermentum, eget dapibus diam elementum. Nunc eu ultrices odio. Vivamus in ipsum sapien. Aliquam erat volutpat. Nunc euismod eros volutpat massa ultrices porttitor. Ut scelerisque sit amet mi a tincidunt. Sed nec porta urna. Proin eu arcu eget felis euismod ultrices.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi lobortis, nibh quis luctus porttitor, metus metus accumsan erat, ac commodo ante lorem tempus velit. Nulla ut ex mi. Curabitur magna tortor, egestas quis convallis nec, venenatis non nibh. Aenean et lacinia elit. Aenean ornare fermentum tincidunt. Etiam sed metus ipsum. Nulla accumsan non justo at tincidunt. Integer sed est est. Nullam non velit diam. Proin ut ante risus. Fusce ac enim libero. Proin ac risus nec nisi semper viverra eu ut ligula. Nulla orci ligula, elementum vel auctor eu, suscipit ac mi. Duis in hendrerit nunc, vitae efficitur lectus. Nam tristique eros a lacus posuere, quis placerat sapien venenatis.
Nulla facilisi. Vivamus dapibus nunc neque, eget maximus neque accumsan nec. Fusce suscipit, sapien id pellentesque vestibulum, orci tortor efficitur felis, eget tempus ex augue euismod tortor. Praesent lobortis diam non orci accumsan, sit amet condimentum eros semper. Mauris vel quam non nulla egestas aliquet ornare eu ligula. Sed tristique ultrices sem imperdiet placerat. Maecenas rhoncus, magna sit amet efficitur tristique, elit odio semper magna, ut aliquet magna odio nec lectus. Nullam tristique dolor id purus lobortis placerat.
Etiam sit amet rhoncus nunc. Pellentesque fermentum mi elit, et posuere augue ultricies nec. Curabitur vulputate, purus id molestie lacinia, nisl massa feugiat nunc, non consectetur mi nisi non mauris. Morbi blandit, odio a efficitur fringilla, nulla libero fermentum lectus, vel finibus odio felis eu sem. Nullam sit amet condimentum ligula. Nulla rutrum lacus eget ipsum laoreet elementum. Curabitur in molestie felis. Nunc ut malesuada orci.
Suspendisse tempor ligula in elementum dignissim. Sed vehicula feugiat hendrerit. Curabitur ultricies massa eget dapibus laoreet. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed blandit eleifend nulla, vel feugiat lorem elementum at. Sed a magna sollicitudin, hendrerit lacus vitae, malesuada nibh. Sed commodo, justo vitae varius auctor, nisl purus lacinia enim, ut rutrum libero nisl ut odio. Phasellus vel massa diam. Nulla facilisi. Ut sagittis blandit volutpat.
Morbi lobortis sollicitudin felis, at accumsan eros blandit eget. Donec venenatis, dolor eu tristique sagittis, diam arcu dignissim ligula, eget sagittis nulla arcu scelerisque nisl. Etiam ac lacus leo. Donec consequat diam quis risus venenatis sodales. Duis tempus nibh quis mi fermentum, eget dapibus diam elementum. Nunc eu ultrices odio. Vivamus in ipsum sapien. Aliquam erat volutpat. Nunc euismod eros volutpat massa ultrices porttitor. Ut scelerisque sit amet mi a tincidunt. Sed nec porta urna. Proin eu arcu eget felis euismod ultrices.
}\footnote{s}
s
\bye
E assim, o TeX não pode dividir as notas com parágrafos longos, porque está usando o hbox.
Alguma idéia de uma maneira alternativa de produzir notas com parágrafos semelhantes sem hboxes? As restrições são:
- Não dividir manualmente a nota longa na nota de rodapé (mas algum algoritmo TeX poderia fazer isso).
- Produza nota de rodapé com parágrafos.
Responder1
OK, você escreveu que resolveu o problema de uma maneira diferente, mas manteve a questão em aberto; então presumo que você esteja interessado em uma segunda solução.
Primeiro uma observação: seu MWE não é um código TeX válido quando você acessa \wd0
um hbox cuja largura é maior que \maxdimen
. O TeX deve ser compilado com uma verificação de estouro aritmético. Veja, por exemplo, a seção 9 do tex.web e Knuth repete isso algumas vezes;veja aqui (p.234).
É claro que a solução de Knuth se destina apenas a notas de rodapé curtas, como ele escreveu na página 395 do TeXbook:
E agora, para o nosso próximo truque, vamos considerar uma aplicação para notas de rodapé curtas.
Você já deve saber disso, pois no texto vinculado no comentário o comprimento da nota de rodapé é limitado a \maxdimen
.
Knuth sugere na página 398 do TeXbook:
Seria possível pegar o conteúdo
\box\footins
mostrado anteriormente e reformatar tudo em um parágrafo, mas tal operação seria desnecessariamente complicada.
Eu escolho um caminho diferente para minha solução. Ele usa um hbox apenas para linhas individuais e coloca as notas de rodapé em um vbox, portanto não deve haver limite no comprimento da nota de rodapé.
Esta é a minha ideia: Salve a última linha de uma nota de rodapé em um hbox e cada vez que uma nova nota de rodapé for escrita use este hbox como uma espécie de prefixo. No momento da saída das notas de rodapé, verifique se a última linha deve ser anexada.
Eu mudo as macros simples padrão do TeX e adapto e estendo seu exemplo. Eu uso \insertpenalties
para detectar inserções de notas de rodapé divididas.
\dimen\footins=\vsize % changed
\newbox\fnlastline % new
\newskip\footglue \footglue=1.5em plus.3em minus.3em % from DEK's solution
\catcode`@=11
\def\vfootnote#1{\insert\footins\bgroup
\interlinepenalty\interfootnotelinepenalty
\splittopskip\ht\strutbox
\splitmaxdepth\dp\strutbox \floatingpenalty\@MM
\leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip
\setbox0=\vbox\bgroup\noindent % new
\ifvoid\fnlastline % new
\else\unhbox\fnlastline\hskip\footglue % new
\fi % new
#1\thinspace % changed
\futurelet\next\fo@t}
\def\@foot{\egroup % changed
\unvbox0\global\setbox0=\lastbox % new
\global\setbox\fnlastline=\hbox % new
{\unhbox0\unskip\unskip\unpenalty}% new
\egroup} % new
\def\plainoutput{\ifnum\outputpenalty>-\@MM % new
\ifnum\insertpenalties>0 % new
\else\ifvoid\fnlastline % new
\else\setbox\footins=\vbox{\unvbox\footins\box\fnlastline}% new
\fi % new
\fi % new
\else\ifvoid\fnlastline % new
\else\setbox\footins=\vbox{\unvbox\footins\box\fnlastline}% new
\fi % new
\fi % new
\shipout\vbox{\makeheadline\pagebody\makefootline}%
\advancepageno
\ifnum\outputpenalty>-\@MM \else\dosupereject\fi}
\catcode`@=12
one\footnote\dag{one} two\footnote\ddag{two} three\footnote\dag{three
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Morbi lobortis, nibh quis luctus porttitor, metus metus accumsan erat,
ac commodo ante lorem tempus velit. Nulla ut ex mi. Curabitur magna
tortor, egestas quis convallis nec, venenatis non nibh. Aenean et
lacinia elit. Aenean ornare fermentum tincidunt. Etiam sed metus
ipsum. Nulla accumsan non justo at tincidunt. Integer sed est
est. Nullam non velit diam. Proin ut ante risus. Fusce ac enim libero.
Proin ac risus nec nisi semper viverra eu ut ligula. Nulla orci
ligula, elementum vel auctor eu, suscipit ac mi. Duis in hendrerit
nunc, vitae efficitur lectus. Nam tristique eros a lacus posuere,
quis placerat sapien venenatis. Nulla facilisi. Vivamus dapibus nunc
neque, eget maximus neque accumsan nec. Fusce suscipit, sapien id
pellentesque vestibulum, orci tortor efficitur felis, eget tempus ex
augue euismod tortor. Praesent lobortis diam non orci accumsan, sit
amet condimentum eros semper. Mauris vel quam non nulla egestas
aliquet ornare eu ligula. Sed tristique ultrices sem imperdiet
placerat. Maecenas rhoncus, magna sit amet efficitur tristique, elit
odio semper magna, ut aliquet magna odio nec lectus. Nullam tristique
dolor id purus lobortis placerat. Etiam sit amet rhoncus
nunc. Pellentesque fermentum mi elit, et posuere augue ultricies
nec. Curabitur vulputate, purus id molestie lacinia, nisl massa
feugiat nunc, non consectetur mi nisi non mauris. Morbi blandit, odio
a efficitur fringilla, nulla libero fermentum lectus, vel finibus odio
felis eu sem. Nullam sit amet condimentum ligula. Nulla rutrum lacus
eget ipsum laoreet elementum. Curabitur in molestie felis. Nunc ut
malesuada orci. Suspendisse tempor ligula in elementum dignissim. Sed
vehicula feugiat hendrerit. Curabitur ultricies massa eget dapibus
laoreet. Pellentesque habitant morbi tristique senectus et netus et
malesuada fames ac turpis egestas. Sed blandit eleifend nulla, vel
feugiat lorem elementum at. Sed a magna sollicitudin, hendrerit lacus
vitae, malesuada nibh. Sed commodo, justo vitae varius auctor, nisl
purus lacinia enim, ut rutrum libero nisl ut odio. Phasellus vel massa
diam. Nulla facilisi. Ut sagittis blandit volutpat. Morbi lobortis
sollicitudin felis, at accumsan eros blandit eget. Donec venenatis,
dolor eu tristique sagittis, diam arcu dignissim ligula, eget sagittis
nulla arcu scelerisque nisl. Etiam ac lacus leo. Donec consequat diam
quis risus venenatis sodales. Duis tempus nibh quis mi fermentum, eget
dapibus diam elementum. Nunc eu ultrices odio. Vivamus in ipsum
sapien. Aliquam erat volutpat. Nunc euismod eros volutpat massa
ultrices porttitor. Ut scelerisque sit amet mi a tincidunt. Sed nec
porta urna. Proin eu arcu eget felis euismod ultrices. Lorem ipsum
dolor sit amet, consectetur adipiscing elit. Morbi lobortis, nibh quis
luctus porttitor, metus metus accumsan erat, ac commodo ante lorem
tempus velit. Nulla ut ex mi. Curabitur magna tortor, egestas quis
convallis nec, venenatis non nibh. Aenean et lacinia elit. Aenean
ornare fermentum tincidunt. Etiam sed metus ipsum. Nulla accumsan non
justo at tincidunt. Integer sed est est. Nullam non velit diam. Proin
ut ante risus. Fusce ac enim libero. Proin ac risus nec nisi semper
viverra eu ut ligula. Nulla orci ligula, elementum vel auctor eu,
suscipit ac mi. Duis in hendrerit nunc, vitae efficitur lectus. Nam
tristique eros a lacus posuere, quis placerat sapien venenatis. Nulla
facilisi. Vivamus dapibus nunc neque, eget maximus neque accumsan
nec. Fusce suscipit, sapien id pellentesque vestibulum, orci tortor
efficitur felis, eget tempus ex augue euismod tortor. Praesent
lobortis diam non orci accumsan, sit amet condimentum eros
semper. Mauris vel quam non nulla egestas aliquet ornare eu
ligula. Sed tristique ultrices sem imperdiet placerat. Maecenas
rhoncus, magna sit amet efficitur tristique, elit odio semper magna,
ut aliquet magna odio nec lectus. Nullam tristique dolor id purus
lobortis placerat. Etiam sit amet rhoncus nunc. Pellentesque
fermentum mi elit, et posuere augue ultricies nec. Curabitur
vulputate, purus id molestie lacinia, nisl massa feugiat nunc, non
consectetur mi nisi non mauris. Morbi blandit, odio a efficitur
fringilla, nulla libero fermentum lectus, vel finibus odio felis eu
sem. Nullam sit amet condimentum ligula. Nulla rutrum lacus eget ipsum
laoreet elementum. Curabitur in molestie felis. Nunc ut malesuada
orci. Suspendisse tempor ligula in elementum dignissim. Sed vehicula
feugiat hendrerit. Curabitur ultricies massa eget dapibus
laoreet. Pellentesque habitant morbi tristique senectus et netus et
malesuada fames ac turpis egestas. Sed blandit eleifend nulla, vel
feugiat lorem elementum at. Sed a magna sollicitudin, hendrerit lacus
vitae, malesuada nibh. Sed commodo, justo vitae varius auctor, nisl
purus lacinia enim, ut rutrum libero nisl ut odio. Phasellus vel massa
diam. Nulla facilisi. Ut sagittis blandit volutpat. Morbi lobortis
sollicitudin felis, at accumsan eros blandit eget. Donec venenatis,
dolor eu tristique sagittis, diam arcu dignissim ligula, eget sagittis
nulla arcu scelerisque nisl. Etiam ac lacus leo. Donec consequat diam
quis risus venenatis sodales. Duis tempus nibh quis mi fermentum, eget
dapibus diam elementum. Nunc eu ultrices odio. Vivamus in ipsum
sapien. Aliquam erat volutpat. Nunc euismod eros volutpat massa
ultrices porttitor. Ut scelerisque sit amet mi a tincidunt. Sed nec
porta urna. Proin eu arcu eget felis euismod ultrices. Lorem ipsum
dolor sit amet, consectetur adipiscing elit. Morbi lobortis, nibh quis
luctus porttitor, metus metus accumsan erat, ac commodo ante lorem
tempus velit. Nulla ut ex mi. Curabitur magna tortor, egestas quis
convallis nec, venenatis non nibh. Aenean et lacinia elit. Aenean
ornare fermentum tincidunt. Etiam sed metus ipsum. Nulla accumsan non
justo at tincidunt. Integer sed est est. Nullam non velit diam. Proin
ut ante risus. Fusce ac enim libero. Proin ac risus nec nisi semper
viverra eu ut ligula. Nulla orci ligula, elementum vel auctor eu,
suscipit ac mi. Duis in hendrerit nunc, vitae efficitur lectus. Nam
tristique eros a lacus posuere, quis placerat sapien venenatis. Nulla
facilisi. Vivamus dapibus nunc neque, eget maximus neque accumsan
nec. Fusce suscipit, sapien id pellentesque vestibulum, orci tortor
efficitur felis, eget tempus ex augue euismod tortor. Praesent
lobortis diam non orci accumsan, sit amet condimentum eros
semper. Mauris vel quam non nulla egestas aliquet ornare eu
ligula. Sed tristique ultrices sem imperdiet placerat. Maecenas
rhoncus, magna sit amet efficitur tristique, elit odio semper magna,
ut aliquet magna odio nec lectus. Nullam tristique dolor id purus
lobortis placerat. Etiam sit amet rhoncus nunc. Pellentesque
fermentum mi elit, et posuere augue ultricies nec. Curabitur
vulputate, purus id molestie lacinia, nisl massa feugiat nunc, non
consectetur mi nisi non mauris. Morbi blandit, odio a efficitur
fringilla, nulla libero fermentum lectus, vel finibus odio felis eu
sem. Nullam sit amet condimentum ligula. Nulla rutrum lacus eget ipsum
laoreet elementum. Curabitur in molestie felis. Nunc ut malesuada
orci. Suspendisse tempor ligula in elementum dignissim. Sed vehicula
feugiat hendrerit. Curabitur ultricies massa eget dapibus laoreet. }
four\footnote\ddag{four} Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Morbi lobortis, nibh quis luctus porttitor, metus
metus accumsan erat, ac commodo ante lorem tempus velit. Nulla ut ex
mi. Curabitur magna tortor, egestas quis convallis nec, venenatis non
nibh. Aenean et lacinia elit. Aenean ornare fermentum tincidunt.
Etiam sed metus ipsum. Nulla accumsan non justo at tincidunt. Integer
sed est est. Nullam non velit diam. Proin ut ante risus. Fusce ac enim
libero. Proin ac risus nec nisi semper viverra eu ut ligula. Nulla
orci ligula, elementum vel auctor eu, suscipit ac mi. Duis in
hendrerit nunc, vitae efficitur lectus. Nam tristique eros a lacus
posuere, quis placerat sapien venenatis. Nulla facilisi. Vivamus
dapibus nunc neque, eget maximus neque accumsan nec. Fusce suscipit,
sapien id pellentesque vestibulum, orci tortor efficitur felis, eget
tempus ex augue euismod tortor. Praesent lobortis diam non orci
accumsan, sit amet condimentum eros semper. Mauris vel quam non nulla
egestas aliquet ornare eu ligula. Sed tristique ultrices sem imperdiet
placerat. Maecenas rhoncus, magna sit amet efficitur tristique, elit
odio semper magna, ut aliquet magna odio nec lectus. Nullam tristique
dolor id purus lobortis placerat. Etiam sit amet rhoncus
nunc. Pellentesque fermentum mi elit, et posuere augue ultricies
nec. Curabitur vulputate, purus id molestie lacinia, nisl massa
feugiat nunc, non consectetur mi nisi non mauris. Morbi blandit, odio
a efficitur fringilla, nulla libero fermentum lectus, vel finibus odio
felis eu sem. Nullam sit amet condimentum ligula. Nulla rutrum lacus
eget ipsum laoreet elementum. Curabitur in molestie felis. Nunc ut
malesuada orci. Suspendisse tempor ligula in elementum dignissim. Sed
vehicula feugiat hendrerit. Curabitur ultricies massa eget dapibus
laoreet. Pellentesque habitant morbi tristique senectus et netus et
malesuada fames ac turpis egestas. Sed blandit eleifend nulla, vel
feugiat lorem elementum at. Sed a magna sollicitudin, hendrerit lacus
vitae, malesuada nibh. Sed commodo, justo vitae varius auctor, nisl
purus lacinia enim, ut rutrum libero nisl ut odio. Phasellus vel massa
diam. Nulla facilisi. Ut sagittis blandit volutpat. Morbi lobortis
sollicitudin felis, at accumsan eros blandit eget. Donec venenatis,
dolor eu tristique sagittis, diam arcu dignissim ligula, eget sagittis
nulla arcu scelerisque nisl. Etiam ac lacus leo. Donec consequat diam
quis risus venenatis sodales. Duis tempus nibh quis mi fermentum, eget
dapibus diam elementum. Nunc eu ultrices odio. Vivamus in ipsum
sapien. Aliquam erat volutpat. Nunc euismod eros volutpat massa
ultrices porttitor. Ut scelerisque sit amet mi a tincidunt. Sed nec
porta urna. Proin eu arcu eget felis euismod ultrices. Lorem ipsum
dolor sit amet, consectetur adipiscing elit. Morbi lobortis, nibh quis
luctus porttitor, metus metus accumsan erat, ac commodo ante lorem
tempus velit. Nulla ut ex mi. Curabitur magna tortor, egestas quis
convallis nec, venenatis non nibh. Aenean et lacinia elit. Aenean
ornare fermentum tincidunt. Etiam sed metus ipsum. Nulla accumsan non
justo at tincidunt. Integer sed est est. Nullam non velit diam. Proin
ut ante risus. Fusce ac enim libero. Proin ac risus nec nisi semper
viverra eu ut ligula. Nulla orci ligula, elementum vel auctor eu,
suscipit ac mi. Duis in hendrerit nunc, vitae efficitur lectus. Nam
tristique eros a lacus posuere, quis placerat sapien venenatis. Nulla
facilisi. Vivamus dapibus nunc neque, eget maximus neque accumsan
nec. Fusce suscipit, sapien id pellentesque vestibulum, orci tortor
efficitur felis, eget tempus ex augue euismod tortor. Praesent
lobortis diam non orci accumsan, sit amet condimentum eros
semper. Mauris vel quam non nulla egestas aliquet ornare eu
ligula. Sed tristique ultrices sem imperdiet
placerat. Maecenas rhoncus, magna sit amet efficitur tristique, elit
odio semper magna, ut aliquet magna odio nec lectus. Nullam tristique
dolor id purus lobortis placerat. Etiam sit amet rhoncus
nunc. Pellentesque fermentum mi elit, et posuere augue ultricies
nec.
\par five\footnote\dag{five}
\vfil\eject
six\footnote\dag{six} seven\footnote\ddag{seven}
eight\footnote\dag{\vtop{\hbox{eight}\hbox{eight}}}
nine\footnote\dag{\vbox{\hbox{nine}\hbox{nine}}}
ten\footnote\ddag{ten}
\bye
Eu programei a solução, mas não a usei, exceto no exemplo acima. Portanto, o código pode precisar de algumas alterações adicionais para obter flexibilidade para um ambiente de produção. Por exemplo, \par
é necessário antes de "cinco", caso contrário a próxima nota de rodapé será impressa antes de sua referência; é claro que a rotina de saída deve ser chamada de vez em quando.