LaTeX全攻略之Footnote脚注

LaTeX全攻略之Footnote脚注

摘要(Abstract)

函数footnode的功能是在\LaTeX的文档中加入脚注,其宏包文档为\LaTeX2e: An unofficial reference manual》

1. 概述

1.1. 简要用法

宏包文件中,footnode的总定义是:

Place a numbered footnote at the bottom of the current page.

(在当前页的底部放置一个编了号的脚注。)

脚注编号会紧贴在你调用该函数的位置。按文学习惯,我们要给某字或词注释,则在该字或词后调用;给某句或某段注释,当然该把编号打在逗号或句号后面,如下用法:

1
2
3
4
\usepackage{ctex}%汉语环境
\begin{document}
    昔帝鸿氏\footnote{帝鸿指黄帝.}有不才子\footnote{不才子指黄帝苗裔讙兜.},掩义隐贼,好行凶慝,天下谓之浑沌。\footnote{【正义】:一本云“天下之民,谓之浑沌.”}
\end{document
}

输出图示如下:

1.2.脚注太多自动换页

经典原句:

You can place multiple(大量的)footnotes on a page. If the text becomes too long it will flow to the next page.

(你可以在页面上放置多个脚注, 如果文本太长,它将流向下一页。)

1.3.自定义脚注

经典原句:

You can also produce footnotes by combining(组合) the \footnotemark and the \footnotetext commands, which is useful in special circumstances.

(你还可以通过组合\footnotemark\footnotetext  命令来生成脚注,这在特殊情况下很有用。)

如何组合这两个命令,宏包后面会详细解释。

1.4.参考文献作脚注

经典原句:

To make bibliographic references(参考文献) come out as(作为……输出) footnotes you need to include a bibliographic style with that behavior.

(为了使参考文献作为脚注出现,您需要包含具有该行为的书目风格。)

2.\footnote命令

2.1.总述footnote命令的表达式为:

1
\footnote[number]{text}

该命令即把 text 的内容,作为脚注显示在本页左下方,脚注编号会自动递增。

若要人为地给某脚注编号,可给可选参数 number 传参,此时,后续脚注的编号,将无视你人为设定的数字,继续按前面的顺序递增,请注意下面例子中的编号顺序。

注意:[number]中只能传数字参数,如[1],而不能写[(1)][<2>]这样的。

1
2
3
4
5
\begin{document}
    子曰:“君子不重则不威,\footnote{邢昺:君子当须敦重,若不敦重,则无威严.}学则不固。\footnote{邢昺:又当学先王之道,以致博闻强识,则不固蔽也。}
    主忠信。\footnote[8]{朱子曰:人不忠信,则事皆无实,为恶则易,为善则难,故学者必以是为主焉。}
    无友不如己者。\footnote{翻译1:不跟自己志向不同的人交往。}\footnote{翻译2:没有不如自己的朋友,指要见到每个人的长处。}过则勿惮改。”
\end{document
}

输出图示如下:

2.2.变幻脚注编号样式

2.2.1 一般情况

脚注在一般情况下,默认依阿拉伯数字排序:‘1’、‘2’、‘3’……

若要变更脚注的编号样式,需调用下面的函数:

1
\renewcommand{\thefootnote}{\fnsymbol{footnote}}

对于此函数,我们只需要更改\fnsymbol部分,\fnsymbol可以改为

\alph \Alph \arabic \roman \Roman \fnsymbol 六种样式。

(1)若改为\alph ,则脚注编号变为‘a’、‘b’、‘c’……

(2)若改为\Alph ,则脚注编号变为‘A’、‘B’、‘C’……

(3)若改为\arabic(默认),则脚注编号变为‘1’、‘2’、‘3’……

(4)若改为\roman,则脚注编号变为‘ⅰ’、‘ⅱ’、‘ⅲ’……

(5)若改为\Roman,则脚注编号变为‘Ⅰ’、‘Ⅱ’、‘Ⅲ’……

(6)若改为\fnsymbol,则脚注编号变为一列特殊的符号序列(从1-9),这九个符号依次如下:

2.2.2 特殊情况

一般情况下,默认编号是阿拉伯数字。但在小环境迷你页等类似“页中页”的内容里脚注时,默认编号是‘a’、‘b’、‘c’……如下面用tcolorbox宏包生成的盒子就是例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
%添加xpinyin(汉字注音包)、tcolorbox(带色方框包)宏包
\textsc{\begin{tcolorbox}[adjusted title=\subsection{陪李北海宴历下亭}]
    \small{
            {
               \kaishu{【鹤注】历下,在齐州,以有历山故得名。历山,即舜耕之山也。李北海即李\xpinyin*{}
               按:新旧史:邕,广陵人,开元二十三年为括州刺史,后历\xpinyin*{}、滑二州刺史,天宝初为汲郡、北海二太守。
               五载,奸赃事发,又尝与刘\xpinyin*{}马,勣下狱,吉温吏引邕,李林甫素忌邕,因傅以罪,诏祁顺之、罗希\xpinyin*{}就郡杖杀之,乃六年正月辛巳。
               此诗当是天宝四年作。梁权道编在天宝十一年者,非是,时邕死已六年矣。\\
               【朱注】《旧唐书·地理志》:青州,属河南道,武德四年置}青州总管府,天宝无年改为北海郡,乾元元年复为青州。
               于钦《齐乘》:历下亭,在府城驿邸内历山台上,面山背湖,实为胜绝。}
        }
    }
    \tcblower
        东\xpinyin*{}\xpinyin*{}盖,北\xpinyin*{}凌青荷\footnote{钱从“青荷”,一作“清\xpinyin*{}}
        海右\footnote{一作“内”}此亭古,济\footnote{上声}南名士多。\footnote{原注:时邑人\xpinyin*{}处士辈在坐}\\
    云山已发兴\footnote{去声},玉佩仍当歌。
        修竹不受暑,交流空涌波。\footnote{【张綖注】修竹既不受暑则交流空自涌波,此十字句法。}\\
    \xpinyin*{}\xpinyin*{}所遇,落日将如何。贵贱俱物役,从公难重\footnote{义从平声,读依去声}过。
\end{tcolorbox
}

输出图示如下:

可以看到,在tcolorbox这种“盒子”般的小环境中,编号自动变成了‘a’、‘b’、‘c’……而非‘1’、‘2’、‘3’……脚注也自动居于该小环境的左下方,而非居于整个页面的左下方。

英文字母一共只有26个,如果你的脚注大于26个,用这种方法编号就会报如下错误:

1
2
Counter too large.
Overfull \vbox (10.55025pt too high) has occurred while \output is active []

此时我们就要考虑把编号重新变回阿拉伯数字,但是在这种小环境中,是不能再用:

1
\renewcommand{\thefootnote}{\arabic{footnote}}

这条命令改变编号样式的,那样无效。只能用:

1
\renewcommand{\thempfootnote}{\arabic{mpfootnote}}

2.3.章节标题不能加脚注

经典原句:

LATEX’s default puts many restrictions(限制) on where you can use a \footnote; for instance(例如), you cannot use it in an argument(参数) to a sectioning command such as \chapter (it can only be used in outer paragraph mode). There are some workarounds; see following sections.

(LATEX的默认设置限制了你可以使用\footnote的位置; 例如,你不能在诸如\chapter之类的章节命令的参数中使用它(它只能用于段外模式)。有一些解决方法; 见后续部分。)

2.4.小环境、迷你页的脚注

在2.2.2中我们其实已经介绍了本部分内容,以下为宏包原句:

In a minipage(迷你页) environment the \footnote command uses the mpfootnote counter instead of(而不是……) the footnote counter, so they are numbered(被编号) independently(独立地). They are shown at the bottom of(在……底部) the environment, not at the bottom of the page. And by default(默认情况下) they are shown alphabetically(adv.照字母顺序排列地)

(在小型语言环境中,\footnote 命令使用mpfootnote计数器而不是footnote 计数器,因此它们是独立编号的。它们显示在环境的底部,而不是页面的底部。 默认情况下,它们按字母顺序显示。)

3.\footnotemark命令

3.1.总述footnotemark命令表达式:

1
2
\footnotemark
\footnotemark[number]

关于footnotemark命令的原句如下:

Put the current footnote number in the text.  The verison(版本) with the optional argument number uses that number to determine(决定) the mark printed. This command can be used in inner paragraph mode.

(将当前脚注的编号放在文本中。通过可选参数number 里的各版编号,来确定要显示的标号。此命令可用于内部段落模式。)

3.2.例子一

下面这个例子,给第一和第三作者提供了相同的机构隶属关系。(\thanks是脚注的一个版本)

1
2
3
4
5
6
\title{A Treatise on the Binomial Theorem}
\author{J Moriarty\thanks{University of Leeds}
\and A C Doyle\thanks{Durham University}
\and S Holmes\footnotemark[1]}
\begin{document
}
\maketitle

输出图示如下:

\footnotemark画出的编号,不能指向引用,即点击编号无法直接跳到注释处,所以一般不用该函数。

单用\footnotemark就在该处显示递增到当前的数字或字母编号,\footnotemark[number]则是在该处显示你人为定义的一个编号,它只能作为一个mark(标记)功能,没有注释功能,该函数鲜有实用价值。

3.3.例子二

经典原句:

If you use \footnotemark without the optional argument then it increments the footnote counter but if you use the optional number then it does not. This produces several consecutive footnote markers referring to the same footnote.

(如果使用 \footnotemark而不使用可选参数,则它会增加脚注计数器;但若你用了可选参数number,那么它不会增加。这可产生几个连续的脚注标记指向同一个脚注。)

请注意下例中,有注释功能的\footnote函数,和没有注释功能、只有标号功能的\footnotemark\footnotemark[number]函数的交错使用与编号序数的增加方式。

1
2
3
4
5
\begin{document}
    黄帝者,\footnote{【集解】徐廣曰:“號有熊。”}少典之子,\footnote{【集解】譙周曰:“有熊國君,少典之子也。”皇甫謐曰:“有熊,今河南新鄭是也。”}
    姓公孫,名曰軒轅\footnotemark
    生\footnotemark[8]而神\footnotemark[6]靈,弱而能言\footnotemark,幼而徇齊,\footnote{【集解】徐廣曰:“墨子曰‘年踰十五,則聰明心慮無不徇通矣’。”}長而敦敏,成而聰明。
\end{document
}

输出图示如下:

4.\footnotetext命令

4.1.总述footnotetext命令表达式:

1
2
\footnotetext{text}
\footnotetext[number]{text
}

经典原句:

Place text at the bottom of the page as a footnote. This command can come anywhere after the \footnotemark command. The optional argument number changes the displayed(显示的) footnote number. The \footnotetext command must appear in outer paragraph mode.

(将文本放在页面底部作为脚注。这个命令可以在\footnotemark 命令之后调用。 可选参数 number 会更改所显示内容的脚注编号。 \footnotetext 命令必须出现在段外模式中。)

4.2. \footnotetext和\footnote的区别

\footnotetext{text}\footnote{text}的区别是,后者会在文中显示编号,而前者不显示。

\footnotetext不会自动递增编号序号,而是重复上一个编号的序号。所以在某些特别环境,要自己定义编号序号的,就把\footnotetext\footnotemark配合使用。前面提到我们可以用\footnotemark\footnotetext联合制作自己的脚注,即此理。

4.3.\footnotetext和\footnotemark联合使用例子

先用\footnotemark显示出这儿的脚注编号,接着立即再调用\footnotetext{text}命令。这样,在正文文本中,就通过\footnotemark函数显示出你想要的编号,而脚注中,因为\footnotetext{text}有重复上一个编号序号的特性,脚注中也同步显示\footnotemark的编号。

1
2
3
4
5
6
7
\begin{document}
    黄帝者,\footnote{【集解】徐廣曰:“號有熊。”}少典之子,\footnotetext{【集解】譙周曰:“有熊國君,少典之子也。”皇甫謐曰:“有熊,今河南新鄭是也。”}
    姓公孫,名曰軒轅。生而神靈,弱而能言,幼而徇齊,\footnotemark\footnotetext{【集解】徐廣曰:“墨子曰‘年踰十五,則聰明心慮無不徇通矣’。”}長而敦敏,成而聰明。
    軒轅之時,神農氏世衰\footnote{【索隱】:世衰,謂神農氏後代子孫道德衰薄,非指炎帝之身,即班固所謂“參盧”,皇甫謐所云“帝榆罔”是也。}
    諸侯相侵伐,暴虐百姓,而神農氏弗能征。
    於是軒轅乃習用干戈,以征不享,諸侯咸來賓從。而蚩尤最為暴,莫能伐。
\end{document
}

输出图示如下:

5. Footnotes in a table(表格中的脚注)

5.1. 表格中脚注会失效

table环境中,\footnote 命令不起作用。 例如,若下面的代码单独出现,则脚注消失; 表格单元格中仍会有一个脚注标记,但无论表格底部还是页面底部,都不会出现任何注释内容。

1
2
3
4
5
6
7
8
9
10
11
\begin{document}
\begin{center}
    \begin{tabular}{l|l}
        \textsc{Ship} &amp;\textsc{Book} \\ \hline
        \textit{HMS Sophie} &amp;Master and Commander \\
        \textit{HMS Polychrest} &amp;Post Captain \\
    \textit{HMS Lively} &amp;Post Captain \\
    \textit{HMS Surprise} &amp;A number of books\footnote{Starting with HMS Surprise.}
    \end{tabular}
\end{center}
\end{document
}

输出图示如下:

5.2.解决表格中脚注失效问题

经典原句:

The solution is to surround the tabular environment with a minipage environment, as here.

(解决方案是使用 minipage 环境围绕tabular环境)

如下例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
\begin{document}
\begin{center}
    \begin{minipage}{.5\textwidth}
    \begin{tabular}{l|l}
        \textsc{Ship} &amp;\textsc{Book} \\ \hline
        \textit{HMS Sophie} &amp;Master and Commander \\
        \textit{HMS Polychrest} &amp;Post Captain \\
        \textit{HMS Lively} &amp;Post Captain \\
        \textit{HMS Surprise} &amp;A number of books\footnote{Starting with
            HMS Surprise.}
        \end{tabular}
    \end{minipage}
    \end{center}
\end{document
}

输出图示如下:

可以看到,在表格的左下方,注释内容已经显示。

5.3.浮动表与tablefootnote包

经典原句:

The same technique will work inside a floating table environment. To get the footnote at the bottom of the page use the tablefootnote package, as illustrated(阐述) in this example. If you put \usepackage{tablefootnote} in the preamble(序文) and use the code shown then the footnote appears at the bottom and is numbered in sequence with(与……同序列) other footnotes.

(同样的技术可在浮动 table 环境中起作用。 要获取页面底部的脚注,请使用tablefootnote 包,如本例所示。 如果您在序言中放置 \usepackage{tablefootnote} 并使用显示的代码,则脚注将显示在底部,并与其他脚注一起按顺序编号。)

1
2
3
4
5
6
7
8
9
10
11
12
13
\usepackage{tablefootnote}
\begin{document}
    \begin{table}
    \centering
    \begin{tabular}{l|l}
        \textsc{Date} &amp;\textsc{Campaign} \\ \hline
        1862 &amp;Fort Donelson \\
        1863 &amp;Vicksburg \\
        1865 &amp;Army of Northern Virginia\footnote{Ending the war.}
    \end{tabular}
    \caption{Forces captured by US Grant}
    \end{table}
\end{document
}

6.Footnotes in section headings(标题加脚注)

6.1.标题加脚注通用代码

前面我们说过,在标题中,禁止加入脚注,否则会出现如下错误与警告:

1
2
TeX capacity exceeded, sorry [input stack size=5000]. ..footnote{……}}
Token not allowed in a PDF string (Unicode):(hyperref) removing `\xpinyin'

要在标题中添加脚注,请调用函数:

1
\section{Full sets\protect\footnote{This material due to ...}}

如下例:

1
2
3
4
5
6
7
8
9
10
11
12
\usepackage{CJKulem}%让下划线好看的包
\usepackage{ctex}%汉语环境
\usepackage{xpinyin}%汉语注音包
begin{document}
\section{论语序说}
\subsection{……}
\subsection{\xpinyin*{}\protect\footnote{俎和豆。古代祭祀、宴饗時,用來盛祭品的兩種禮器。亦泛指各種禮器。}}
    史记世家曰:孔子名丘,字仲尼。其先宋人。
    父\underline{叔梁{\xpinyin{}{he2}}},母\uline{颜氏}
    以\uline{鲁襄公}二十二年,庚戌之岁,十一月庚子,生孔子于鲁昌平乡\xpinyin*{}邑。
    为儿嬉戏,常陈\xpinyin*{}豆,设礼容。
\end{document
}

输出图示如下:

6.2.通用方法的缺陷

经典原句:

causes the footnote to appear at the bottom of the page where the section starts, as usual(通常),but also at the bottom of the table of contents, where it is not likely to be desired(被期望). To have it not appear on the table of contents use the package footmisc with the stable option.

(这样去规定标题的脚注,当然会让脚注出现在当页的底部。但通常,它也会出现在目录索引的底部,尽管文章的目录索引中常常不希望出现标号。要让它不出现在目录中,请使用带有稳定选项的包footmisc。)

当不加footmisc宏包时,在标题中加脚注,生成的目录也会有脚注,如下图:

而加了如下代码:

1
\usepackage[stable]{footmisc}

在序文中后,就不存在目录页有脚注的情况了。并且,你在标题中加脚注时,无需再写上\protect,你已可以直接\footnote了。

7.Footnotes of footnotes(多重脚注)

经典原句:

Particularly(特别地) in the humanities(人文学科), authors can have multiple classes of footnotes, including having footnotes of footnotes. The package bigfoot extends \LaTeX’s default footnote mechanism(机制,原理) in many ways, including allow these two, as in this example.

(特别是在人文学科中,作者可以有多种脚注,包括脚注的脚注。 bigfoot包在许多方面扩展了\LaTeX的默认脚注机制,包括允许二重脚注,如本例所示。)

1
2
3
4
5
6
7
8
9
10
11
\documentclass[]{article}
\usepackage{bigfoot}
\title{脚注测试}
\author{yourgame}
    \DeclareNewFootnote{Default}
    \DeclareNewFootnote{from}[alph
]
\begin{document}
    \maketitle
    The third theorem is a partial converse of the
second.\footnotefrom{First noted in Wilson.\footnote{Second edition only.}}
\end{document
}

输出图示如下:

8.Multiple references to footnotes(对脚注的多次引用)

您可以多次引用单个脚注。 这时,可使用 cleverref 包(要用 cleverref 2012.2.15之后的版本)。如下例:

1
2
3
4
5
6
7
8
9
10
11
12
\documentclass[]{article}
\usepackage{hyperref
}%在生成的PDF文档中添加链接以及书签和属性,可生成目录包
\usepackage{cleveref}[2012/02/15]% this version of package or later
\crefformat{footnote}{#2\footnotemark[#1]#3}
\title{多次引用脚注测试}
\author{yourgame}
\begin{document}
    \maketitle
    The theorem is from Evers.\footnote{\label{fn:TE}Tinker and Evers, 1994.}
    The corollary is from Chance.\footnote{Evers and Chance, 1990.}
    But the key lemma is from Tinker.\cref{fn:TE}
\end{document
}

输出图示如下:

我们可以看到,这样生成的多次引用脚注,是带有指向性的,点击文档中的标号,会跳到同样的脚注处。

这种方法远胜于\footnotemark的纯标记功能,所以,会用此方法进行多引用脚注的,就不需要再用\footnotemark了。

另外,特别注意的是,我们在写代码时,一定要先写:

\usepackage{hyperref}
再写:
\usepackage{cleveref}
。否则会出现如下错误:

1
Package cleveref Error: cleveref must be loaded after hyperref!. \begin{document}

9. Footnote parameters

有这些参数可以调整:

1
\footnoterule

经典原句:

Produces the rule separating the main text on a page from the page’s footnotes.Default dimensions: 0.4pt thick (or wide), and 0.4\columnwidth long in the standard document classes (except slides, where it does not appear).

(生成将页面上的主文本与页面脚注分开的规则。默认尺寸:0.4pt厚(或宽),标准文档类中的长度为0.4 \ columnwidth(幻灯片除外,它不显示)。)

1
\footnotesep

经典原句:

The height of the strut placed at the beginning of the footnote. By default, this is set to the normal strut for \footnotesize fonts (see Section 4.2 [Font sizes],page 19), therefore there is no extra space between footnotes. This is ‘6.65pt’ for ‘10pt’, ‘7.7pt’ for ‘11pt’, and ‘8.4pt’ for ‘12pt’.

(支柱的高度放在脚注的开头。 默认情况下,它设置为\ footnotesize字体的正常支柱(参见章节4.2 [字体大小],第19页),因此脚注之间没有额外的空间。 “10pt”为“6.65pt”,“11pt”为“7.7pt”,“12pt”为“8.4pt”。)

发表评论

电子邮件地址不会被公开。