脚注和边注是在不中断正文流动的情况下补充说明的两种工具。脚注把带编号的注释放到页面底部;边注则把短注放在正文旁边的页边空白处。本页介绍 \footnote 及其拆分形式 \footnotemark / \footnotetext,用 footmisc package 调整脚注,以及用 \marginpar 和 marginnote package 制作边注,并说明各自适合的场景和常见陷阱。
脚注 — \footnote
基本命令是 \footnote{text}。在写下它的位置,LaTeX 会放置一个上标编号(脚注标记),并把对应的文字排在该页底部。编号通过 footnote counter 自动递增,因此不需要自己编号。
关键是 放置位置。脚注标记应紧跟被注释的词,所以 \footnote 要 紧接在该词之后,中间不要有空格。如果词和命令之间有空格或换行,这个空白会留在正文中,使标记离开该词。与标点的关系上,标记通常放在标点 之后。
TeX は 1978 年に生まれました\footnote{作者はクヌース。}。
その数式組版は今も標準です\footnote{arXiv も LaTeX を推奨。}。要强制指定编号,写 \footnote[num]{text}。在方括号中给出编号时,本次调用会用这个编号作为标记,并且 不会 增加 footnote counter。两个位置需要指向同一条脚注时很有用。
编号的 显示形式 由 \thefootnote 决定。若要把阿拉伯数字换成符号(†、‡ 等),使用 \renewcommand{\thefootnote}{\fnsymbol{footnote}}。\fnsymbol 将 1–9 映射为星号、短剑号等,适合脚注较少的文档。也可以用同样的方法改成 \alph、\roman 等。
分离标记和正文 — \footnotemark / \footnotetext
\footnote 只有在 外层段落模式 中才能正常工作。因此在 表格(tabular)内部、\caption 中、分节命令(\section 等)的参数中、或 minipage 内,标记可能不出现,正文也可能消失。应对这些位置的办法,是用两条命令分别放置标记和脚注正文。
\footnotemark— 只在当前位置放置标记(编号)。无参数时把footnotecounter 增加 1;\footnotemark[num]使用该编号而 不 增加 counter。\footnotetext{text}— 只在页底放置脚注正文。把它写在\footnotemark之后,并放在外层段落模式的位置;\footnotetext[num]{text}可以对齐编号。
典型写法是:在表格中用 \footnotemark 只输出标记,然后离开表格(或 minipage)回到正文后,用 \footnotetext{…} 写脚注正文。为了避免编号错位,最好显式指定,例如把 \footnotemark[7] 与 \footnotetext[7]{…} 配对。
\begin{tabular}{ll}
項目 A & 値\footnotemark[1] \\
項目 B & 値 \\
\end{tabular}
\footnotetext[1]{この値は暫定です。}minipage 中的脚注是特殊的。在 minipage 内使用 \footnote 时,脚注不会出现在页底,而会排在 该 minipage 的底部;编号也由 mpfootnote counter 而不是 footnote 管理,默认显示为 小写字母(a, b, c...)。换句话说,它独立于正文脚注编号,只在这个 minipage 内成立。
用 footmisc 调整脚注
如果想更细致地控制标准脚注的行为,加载常用的 footmisc package。在导言区写 \usepackage[options]{footmisc},通过组合选项选择需要的行为。主要选项如下:
| 选项 | 效果 |
|---|---|
perpage | 每页重置脚注编号(每页重新从 1 开始)。 |
bottom | 强制脚注落到页面最底部(即使该页正文较短)。 |
para | 把多个脚注连续排成一个段落,而不是每条另起一行。 |
multiple | 处理相邻的多个脚注标记,并用分隔符整齐隔开。 |
symbol | 用符号(*, †, ‡...)而不是数字标记脚注。 |
它还能调整边距。标记与脚注正文之间的距离(脚注的左边距)可通过 footmisc 提供的长度 \footnotemargin 调整,例如 \setlength{\footnotemargin}{1.8em}。
\usepackage[perpage,bottom,multiple]{footmisc}
% ページごとに番号リセット+最下部固定+隣接マーク処理边注 — \marginpar
若要在正文旁放一条短注,使用 \marginpar{text}。小注会按命令所在行的高度排在页边空白中。在双面排版(twoside)中,注释会放在 外侧页边,并在左页和右页之间自动换边。
如果左右两侧要用不同文字,写 \marginpar[left]{right}。方括号中的 [left] 是注释落在左边距(左页)时使用的文字;花括号中的 {right} 是注释落在右边距时使用的文字。要反转注释所在一侧,用 \reversemarginpar;恢复默认则用 \normalmarginpar。
不过 \marginpar 有明显的 限制。它在内部像图表一样作为一种 float 处理,因此 不能放在 float(figure/table)内部、脚注内部,或另一个 \marginpar 内部。它也只能包含一个段落;如果在相邻行放多个注释,位置可能不像预期那样对齐,甚至重叠或偏移。
marginnote package — 少受限制的边注
如果想避开这些限制,使用 marginnote package 的 \marginnote{text}。它不使用 float 机制,因此即使在 \marginpar 不能用的 float 和脚注内部 也能放置边注。与 \marginpar 一样,可以用 \marginnote[left]{right} 为左右两侧提供不同文字,也会遵守 \reversemarginpar。
此外,\marginnote 还有第二个可选参数,用来给出 垂直偏移,它写在花括号 之后。形式为 \marginnote[left]{right}[offset],其中 [offset] 是一个长度:负值把注释上移,正值把注释下移。这对于手动错开相邻且可能重叠的边注很方便。
\usepackage{marginnote}
...
本文の脇に注を付けます\marginnote{これは傍注。}。
少し上げたい場合\marginnote{上にずらす}[-1\baselineskip]。注意,\marginnote 会把注释原样放在 当前行的高度,不会像 \marginpar 那样尝试自动避让碰撞;如果重叠,就用上面的 offset 手动调整。它摆脱了 \marginpar 的 float 限制,但也有自己的取舍,例如 \marginnote 不能跨页分断。