일반 TeX 및 단락 메모

일반 TeX 및 단락 메모

TeXbook은 p. 398sq, 단락 메모를 얻는 시스템입니다.

즉, 얻는 대신

  1. 각주.
  2. 각주.
  3. 각주

얻다 :

  1. 각주 2. 각주 3. 각주.

같은 단락에서.

이 시스템은 footmisc 및 eledmac과 같은 일부 패키지에서 사용됩니다. 마지막 메인테이너로서 문제가 생겼습니다.

이 시스템(위대한 Knuth가 직접 제공!)이 작동하려면 hbox가 필요합니다. 결과적으로 긴 메모의 경우 "일반" 각주는 TeX로 분할되지만 문단으로 된 각주는 분할될 수 없습니다. 왜냐하면 \hbox를 사용하기 때문입니다.

이 MWE에서 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

그래서 TeX은 hbox를 사용하기 때문에 긴 문단으로 된 메모를 분할할 수 없습니다.

hbox 없이 유사한 단락으로 구성된 노트를 생성하는 대체 방법에 대한 아이디어가 있습니까? 제약 조건은 다음과 같습니다.

  1. 긴 메모를 각주로 수동으로 분할하지 마십시오(그러나 일부 TeX 알고리즘에서는 이를 수행할 수 있습니다).
  2. 단락으로 된 각주를 생성합니다.

답변1

좋아요, 당신은 다른 방식으로 문제를 해결했다고 썼지만 질문은 계속 열어두었습니다. 그래서 나는 당신이 두 번째 해결책에 관심이 있다고 가정합니다.

\wd0첫 번째 주의 사항: 너비가 다음보다 큰 hbox에 액세스할 때 MWE는 유효한 TeX 코드가 아닙니다.\maxdimen . TeX는 산술 오버플로 검사를 통해 컴파일되어야 합니다. 예를 들어 tex.web의 섹션 9를 참조하세요. Knuth는 때때로 이를 반복합니다.여기를 참조하세요 (p.234).

물론 Knuth의 솔루션은 TeXbook의 395페이지에 쓴 것처럼 짧은 각주에만 사용됩니다.

이제 다음 트릭으로 짧은 각주에 적용하는 방법을 고려해 보겠습니다.

댓글에 링크한 텍스트에서 각주 길이가 로 제한되어 있으므로 이미 알고 계실 것입니다 \maxdimen.

Knuth는 TeXbook의 398페이지에서 다음과 같이 제안합니다.

\box\footins이전에 표시된 내용을 가져와 모든 내용을 단락으로 다시 포맷하는 것이 가능 하지만 이러한 작업은 불필요하게 복잡합니다.

내 솔루션에 대해 다른 경로를 선택합니다. 개별 줄에만 hbox를 사용하고 각주를 vbox에 배치하므로 각주 길이에 제한이 없어야 합니다.

이것이 내 생각이다: 각주의 마지막 줄을 hbox에 저장하고 새로운 각주가 작성될 때마다 이 hbox를 일종의 접두사로 사용하십시오. 각주가 출력되는 순간 마지막 줄을 추가해야 하는지 확인하세요.

기본 일반 TeX 매크로를 변경하고 예제를 적용하고 확장합니다. 분할된 각주 삽입을 감지하는 데 사용합니다 \insertpenalties.

\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

솔루션을 프로그래밍했지만 위의 예를 제외하고는 직접 사용하지 않았습니다. 따라서 프로덕션 환경에 대한 유연성을 얻으려면 코드를 추가로 변경해야 할 수도 있습니다. 예를 들어, \par"5" 앞에 가 필요합니다. 그렇지 않으면 다음 각주가 해당 참조보다 먼저 인쇄됩니다. 물론, 출력 루틴은 가끔씩 호출되어야 합니다.

관련 정보