发布时间:2010-01-07 19:12:12
文章类别:小技巧
原文地址:http://blog.sina.com.cn/s/blog_5e16f1770100grma.html
QQ群:91940767/145316219/141877998/80300084/194770436
淘宝店:http://latexstudio.taobao.com
技巧续篇:http://latexstudio.net/
常见数学公式问题集下载
如果具有相同内容的脚注在文档中多次出现在不同地方,简单地重复输入脚注内容不是一个好办法。我
们可以通过半自动的方法来避免重复输入,或者对需要重复的脚注加上标签然后在其他地方加以引用。但
是没有完全自动的解决方法(自动发现重复的脚注并加以处理)。
如果你的整个文档只有一个脚注,而且需要重复使用,那么最简单的方法就是使用\footnotemark 命
令的可选参数,例如
...\footnote{需要重复使用的脚注内容}
...
...\footnotemark[1]
可以这么做的原因就是因为我们知道只有一个编号为1 的脚注。如果脚注不止一个,但是顺序和位置是固定
的,那么可以使用类似的技巧,只需重复使用LATEX 给相应的脚注分配的编号即可。但是大多数时候这么做
会比较麻烦,因为文档内容的改变经常会导致脚注之间的关系改变。这时候,使用标签是一个更好的办法。
一个手工标签的方法是使用计数器来记住脚注的编号:
\newcounter{fnnumber}
...
...\footnote{需要重复使用的脚注内容}%
\setcounter{fnnumber}{\thefootnote}%
...
...\footnotemark[\thefnnumber]
经常这么做确实有点繁琐。LATEX 的标签引用机制可以帮助我们简化工作
...\footnote{需要重复使用的脚注内容\label{fn:repeat}}
...
...\footnotemark[\ref{fn:repeat}]
但是又有另外一个问题, LATEX 会在第一次运行时报告\footnotemark 命令的参数为空的错误,这是因
为\ref 命令无法确定标签的内容而返回了一个空值造成的。这个错误会在第二次运行LATEX 命令后消失。
footmisc 宏包和memoir 文档类中定义了一个\footref 命令来解决这个问题。这个命令还有一个额外的好
处就是即使脚注使用了非数字的标记,它也能正确工作。使用\footref 命令后我们的例子变成了
...\footnote{需要重复使用的脚注内容\label{fn:repeat}}
...
...\footref{fn:repeat}
这可能是最简洁的解决方法了。需要注意的是在以上的例子里\label 命令必须放在\footnote 的参数中。
xfoot 宏包提供了另外一种解决机制:使用\DeclareFixedFootnote 命令预先定义好你需要重复使用
的脚注,一般都放在导言区中,然后每次只需简单地使用定义好的命令就可以了。
\DeclareFixedFootnote{\rep}{需要重复使用的脚注内容}
...
...\rep{}
...\rep{}
这个宏包会保证每个重复的脚注在每一页最多出现一次。但是通常你需要运行多次LATEX 来除去多余的脚
注。
选自:吴凌云《CTeX-FAQ》
发表评论 取消回复