纯 TeX 格式的尾注

纯 TeX 格式的尾注

是否有可用于在 Plain TeX 中创建尾注的宏?

我确信我自己可以写这些,但我更愿意搭乘别人的便车。

答案1

endnote来自CTAN可以给出一个合适的起点。这里有一个简单的例子:

\input endnote

Hello world! This is to have an endnote. \endnote{[1]}{ Endnote text.}

\producenotes

\bye

在此处输入图片描述

答案2

你可以受到以下启发OPmac 技巧 0051以下是我对这个 OPmac 技巧的笨拙翻译:

文档末尾的词汇表

文档中可能会出现缩写或其他内容,我们需要在文档末尾写一些对此类对象的解释。我们写成\glos{abbreviation}{explanation}。文档的此处没有出现任何内容。例如:

\input opmac
...
I am working at CTU\glos{CTU}{Czech Technical University in Prague} in Prague.

宏将信息保存到内存中,并在需要的\glos地方使用它们。您可以通过以下方式实现:\makeglos\glos\makeglos

\def\gloslist{}
\def\glos #1#2{%
   \expandafter\isinlist\expandafter\gloslist\csname;#1\endcsname
   \iftrue \opwarning{Duplicated glossary item `#1'}%
   \else 
      \global\sdef{;#1}{{#1}{#2}}%
      \global\expandafter\addto\expandafter\gloslist\csname;#1\endcsname
   \fi
}
\def\makeglos{%
   \ifx\gloslist\empty \opwarning{Gossary data unavailable}%
   \else
      \bgroup
        \let\iilist=\gloslist
        \dosorting
        \def\act##1{\ifx##1\relax \else \expandafter\printglos##1\expandafter\act\fi}
        \expandafter\act\iilist\relax
      \egroup
   \fi
}
\newdimen\glosindent  \glosindent=2\parindent
\def\printglos #1#2{\noindent \hangindent=\glosindent \hbox to\glosindent{#1\hss-- }#2\par}

词汇表自动按字母顺序排序。如果您不需要这样的排序,并且按出现次数排序就足够了,那么您可以\dosorting在定义中注释掉该顺序\makeglos

当然,您可以\printglos根据自己的意愿和排版设计来编程。该\printglos宏有两个参数: {abbverviation}{explanation}和 ,它在列表中打印一个词汇表项。上面的定义设置了所有项的\printglos固定缩进 。您可以使用其他缩进,例如,缩进可以 根据缩写的最大长度计算,请参阅 2\parindent

OPmac 技巧 0041

另一个更简单的例子\printglos

\def\printglos #1#2{\noindent #1 -- #2\par}

解释:宏将等 \glos保存到并将定义为,定义 为等。宏在本地转换为 并按照 OPmac 中的宏进行字母排序。最后,宏打印项目。\;abbver1 \;abbver2\gloslist\;abbver1{abbver1}{explanation}\;abbver2{abbver2}{explanation}\makeglos\gloslist\iilist\dosorting\act

相关OPmac技巧:

相关内容