文本(由其他人撰写)具有编号的脚注插入点:
Text text1) text text text2) text text text.3) Text ...
实际的脚注文本位于第二个文件中:
1) text of note one
2) text of note two
3) text of note three
...
手动将每个注释放在其所属的位置会很麻烦;遗憾的是,使用尾注代替脚注不是一个选择。使用\footnotemark[num]
和\footnotetext[num]
可以给我正确的编号,但不能在页面上正确分布。
我想知道是否可以为每个注释定义一个编号的宏(例如,\newcommand{\sepfootnote1}{\footnote{text of note one}}
并在文本中的适当位置调用每个宏,但由于宏名称可能不包含数字,因此使用简单的 RegEx 是不可能的。
还有其他方法可以让 LaTeX 完成这些繁琐的工作吗?
答案1
如果进行文本替换不是问题,您可以在文本和脚注文件中的\printfootnote
所有表达式(例如1)
或)前面添加;也可以在每个脚注文本的末尾添加。然后2)
\definefootnote
\endfootnote
\def\printfootnote#1){\footnote{\csname extfootnote#1\endcsname}}
\def\definefootnote#1) #2\endfootnote{%
\expandafter\def\csname extfootnote#1\endcsname{#2}}
\input{footnotefile}
(footnotefile.tex
包含脚注文本的文件在哪里)应该可以解决问题,至少如果脚注文件不是特别大的话。
这是main.tex
:
\documentclass[a4paper]{article}
\def\printfootnote#1){\footnote{\csname extfootnote#1\endcsname}}
\def\definefootnote#1) #2\endfootnote{%
\expandafter\def\csname extfootnote#1\endcsname{#2}}
\input{footnotefile}
\begin{document}
Text text\printfootnote1) text text text\printfootnote2) text text text.\printfootnote3) Text
\end{document}
下面是footnotefile.tex
:
\definefootnote1) First footnote\endfootnote
\definefootnote2) Second footnote\endfootnote
\definefootnote3) Third footnote\endfootnote
注意:使用\def
和不是 \newcommand
,因为这个技巧涉及分隔参数。