脚注

脚注是为读者提供额外息的一种非常有用的方式。通常,脚注包含非必需的息,这些息可以放在页面底部,从而使正文保持简洁。

脚注功能使用起来非常简单。你需要的命令是:\footnote{文本}。请不要在命令和你希望显示脚注标记的单词之间留空格,否则 LaTeX 会处理这个空格,并导致输出的效果与预期不符。

创建脚注非常简单:\footnote{这是一个脚注示例。}

LaTeX 会自动处理脚注的排版,将其放置在页面底部。每个脚注都会按顺序编号——正如你现在应该已经猜到的那样,这个过程是自动完成的。

如果你希望脚注位于页面底部(而不是默认的“粘附”在正文下方),可以使用:

\usepackage[bottom]{footmisc}

你也可以选择手动放置脚注文本。在这种情况下,我们使用 \footnotemark\footnotetext 组合:

\footnotemark
% ...
其他地方\footnotetext{这是我的脚注!}

也可以显式指定脚注编号:

\footnotemark[17]
% ...
其他地方\footnotetext[17]{这是我的脚注!}

自定义

编号/计数器样式

可以自定义脚注的标记。默认情况下,脚注是按顺序编号的(阿拉伯数字)。然而,如果你不想深入了解 LaTeX 的内部机制,也可以使用以下命令进行更改(需要将其放在文档的开始位置,或者至少在第一次使用脚注命令之前):

\renewcommand{\thefootnote}{\arabic{footnote}}  % 阿拉伯数字,如:1, 2, 3...
\renewcommand{\thefootnote}{\roman{footnote}}  % 罗马数字(小写),如:i, ii, iii...
\renewcommand{\thefootnote}{\Roman{footnote}}  % 罗马数字(大写),如:I, II, III...
\renewcommand{\thefootnote}{\alph{footnote}}  % 字母(小写),如:a, b, c...
\renewcommand{\thefootnote}{\Alph{footnote}}  % 字母(大写),如:A, B, C...
\renewcommand{\thefootnote}{\fnsymbol{footnote}}  % 九个符号序列,试试看!

如果你想创建没有编号标记的脚注,可以使用以下声明:

\let\thefootnote\relax\footnote{此脚注没有编号}

这样会全局关闭脚注的编号。若只想让某个脚注没有编号,可以将上述命令放入 {} 内。然而,这种做法会使当前的脚注计数器仍然增加,因此例如会得到脚注 1(没有编号)和 3。更好的解决方案是,在前导部分定义以下宏,并使用它:

\makeatletter
\def\blfootnote{\xdef\@thefnmark{}\@footnotetext}
\makeatother

重置计数器

每节重置:

\makeatletter
\@addtoreset{footnote}{section}
\makeatother

每页重置(这可能需要运行 LaTeX 两次):

\usepackage{perpage}  % perpage 包
\MakePerPage{footnote}  % perpage 包命令

引用脚注

可以通过在脚注末尾放置 \label{labelName} 来引用脚注,并使用 \ref{labelName} 来引用该脚注。

常见问题及解决方法

脚注无法与表格一起使用,因为这被认为是一个不好的做法。你可以通过几种技巧来克服这个限制:你可以在表格中使用 \footnotemark[123],并在页面的某个地方使用 \footnotetext[123]{HelloWorld!}。同样,对于引用:可以在页面某个地方使用 \footnote{HelloWorld!\label{fnote}},并在表格中使用 \textsuperscript{\ref{fnote}}。或者,你可以在前导部分加入 \usepackage{footnotehyper}\makesavenoteenv{tabular},并将表格环境放在 \begin{savenotes} 环境中。后一种方法不适用于 colorcolortbl 包。有关其他方法,请参阅此 FAQ 页面(例如使用 tablenotesthreeparttable)。

脚注在 minipage 环境中也不起作用。(事实上,一些环境会破坏脚注的支持。footnote 包的 \makesavenoteenv{environmentname} 命令可能解决大部分问题。)minipage 环境包含自己的脚注,独立于文档的脚注。mpfnmark 包允许更灵活地管理这两种脚注。

如果脚注中的文本是 URL(使用 \url\href 命令)并且包含特殊字符,则不会编译。你必须使用反斜杠转义这些字符,或者使用其他命令。

如果脚注中的文本非常长,LaTeX 可能会将脚注分割到多个页面。你可以通过增加惩罚值来防止这种情况发生。为此,请在文档的前导部分插入以下行:

\interfootnotelinepenalty=10000

或者在脚注命令后设置 \samepage

\footnote{ \samepage 脚注文本继续在这里显示 }

要多次引用同一个脚注,可以使用以下语法:

带有脚注的文本\footnote{这是脚注} 看起来是这样的。稍后的文本引用同一个脚注\footnotemark[\value{footnote}] 使用其他命令。

如果你需要支持 hyperref,可以改用:

带有脚注的文本\footnote{这是脚注}\addtocounter{footnote}{-1}\addtocounter{Hfootnote}{-1} 看起来是这样的。稍后的文本引用同一个脚注\footnotemark 使用其他命令。

这些方法在第一次引用和后续的“重复”引用之间如果有其他脚注时将无法工作。更多通用解决方案,请查看此处和此处。

如果脚注打算添加到章节、节标题或类似位置,可以使用以下两种方法:

  1. \section[标题] {标题\footnote{我是与节相关的脚注}},其中 标题 是节的标题。

  2. 使用 footmisc 包,选择 stable 包选项,只需将脚注添加到节标题中。

边注

页边上的笔记
边注非常有用,特别是在编辑过程中,用于作者之间交换评论。要插入边注,可以使用 \marginpar{边注文本}。对于单面布局(simplex),文本会放在页面右侧,从定义它的行开始。对于双面布局(duplex),它将放在外侧边缘,对于双栏布局,将放在最近的边缘。

要交换默认的边注位置,可以使用 \reversemarginpar,此时边注将放在相反的一侧,对于双面布局来说,就是内侧边缘。

如果边注的文本取决于它所放置的边缘(比如包含指向文本的箭头或指向方向的文字,如“如左所示...”),可以使用 \marginpar[左文本]{右文本} 来指定不同的内容。

要在 \marginpar 无法处理的区域(如脚注或方程环境)插入边注,可以使用 marginnote 包。

另一个用于以更华丽的方式添加有色边注的选项是 todonotes 包,使用 \todo{todo笔记}。它利用了 pgf 包,这个包用于设计和绘图,具有庞大的工具数据库。

如果 \marginpar 命令不能满足需求,可以使用 mparhackmarginnote 包。

边注几何(底部边距 H 未显示)

marginnotegeometry 包可以设置边距和边注的宽度。

在前导部分插入:

边缘几何(底部边缘H未显示)。

\usepackage{marginnote}

并使用 geometry 包设置自定义尺寸:

\usepackage[top=Bcm, bottom=Hcm, outer=Ccm, inner=Acm, heightrounded, marginparwidth=Ecm, marginparsep=Dcm]{geometry}

其中 A, B, C, D, E, F, G, H 都是厘米(当然也可以使用其他单位)。

在正文中,按照以下方式使用 marginnote 包:

\marginnote{这里排版文本...}[Fcm]

具体而言:

  • marginparwidth (E) 是边注的宽度,

  • marginparsep (D) 是段落和边注之间的间距,

  • F 是从边注排版的第一行向下的垂直偏移量(负值 F 会将边注向上移动),

  • G = C - (D + E) 是边注和边缘之间的间距。

右侧的示例是通过以下代码排版的:

\documentclass[a4paper,twoside,english]{article}
\usepackage{lmodern}
\renewcommand{\sfdefault}{lmss}
\usepackage[T1]{fontenc}

\makeatletter
\special{papersize=\the\paperwidth,\the\paperheight}

\usepackage{lipsum}
\usepackage{marginnote}
\usepackage[top=1.5cm, bottom=1.5cm, outer=5cm, inner=2cm, heightrounded, marginparwidth=2.5cm, marginparsep=2cm]{geometry}

\makeatother

\usepackage{babel}
\begin{document}

\section{边注}

\marginnote{这是一个使用 `geometry` 包的边注,设置为与排版的第一行的垂直偏移为 0cm。}[0cm]
\marginnote{这是一个使用 `geometry` 包的边注,设置为与排版的第一行的垂直偏移为 5cm。}[5cm]
\lipsum[1-10]
\end{document}

另外,最小垂直间隙可以通过 \marginparpush 调整,例如使用 \setlength{\marginparpush}{0pt}

注释和参考

  • “LaTeX 脚注”。检索日期:2016-01-14

  • 本页内容使用了 Andy Roberts 的《Getting to grips with LaTeX》中的资料,已获授权。


Last modified: Monday, 21 April 2025, 9:31 AM