脚注・傍注

LaTeX の \footnote には、初めて踏むと必ず驚く穴があります。tabular の中に書いた脚注は、本文がどこにも出ません。 マークだけが表に残り、注の中身は消え、エラーも警告も出ません。しかも消えた注は番号を一つ食べていくので、次の脚注は 2 ではなく 3 から始まります。おもしろいのは、LaTeX 自身がこの穴を踏んでいることです——\maketitle は著者名を tabular の中に組むので、標準クラスは表題の中だけ \footnote\thanks に差し替えています。このページでは \footnote\footnotemark\footnotetextminipage の中の別番号、footmisc による調整、\marginparmarginnote の傍注、そして章末注までを、実測しながら見ていきます。

脚注の基本 — \footnote の書き方と番号の形

\footnote{本文} と書けば、その位置に上付きの番号が出て、対応する本文がそのページの下に組まれます。番号は footnote カウンタが自動で進めるので、自分で振る必要はありません。大切なのは 置く位置 です。マークは注を付けたい語の直後に出したいので、\footnoteその語のすぐ後ろに、間に空白を入れずに 書きます。語と命令のあいだに空白や改行があると、その空きが本文に残ってマークが語から離れます。句読点との関係では、ふつう句読点の 後ろ に置きます。

latex
TeX was born in 1978.\footnote{Written by Donald Knuth.}
Its maths setting is still the reference.\footnote{arXiv accepts LaTeX sources.}

% forced number: does NOT step the footnote counter
See the note above.\footnote[1]{Same note, referenced twice.}

番号を強制したいときは \footnote[番号]{本文} と書きます。角かっこで番号を与えたその回は footnote カウンタを進めず、指定した番号でマークを出すので、同じ注を二か所から指すときに使えます。番号の 見た目\thefootnote が決めます。アラビア数字をやめて記号にしたければ \renewcommand{\thefootnote}{\fnsymbol{footnote}}\fnsymbol は 1〜9 をアスタリスク・短剣符などに割り当てるので、注が少ない文書に向きます。同じ要領で \alph\roman にも変えられます。章ごとに番号を戻したければ \@addtoreset ではなく、chngcntr\counterwithin*{footnote}{chapter} を使うのが今の書き方です。

脚注の見た目を決める長さも押さえておくと便利です。TeX Live 2024 の article で実測すると、注どうしの最小の空きを決める \footnotesep6.65pt、本文と脚注のあいだの空き \skip\footins9.0pt plus 4.0pt minus 2.0pt。本文と注を分ける短い横線は \footnoterule というマクロで、\renewcommand{\footnoterule}{} と空に再定義すれば線を消せます。

表の中の脚注が出ない — tabular・caption・見出しの罠

\footnote は「外側の段落モード」でしか正しく働かないから です。tabular の中はセルという別のモードなので、注の本文はページの脚注置き場(\footins)へ渡されず、そのまま失われます。実際に組んでみると症状は完全に無音です。次の文書を TeX Live 2024 で処理すると、pdftotext の出力は Body text.1 / A value2 / B value の順に並び、ページ下には 1 番の注しか出ません。2 番の中身はどこにもなく、ログにも一行も出ません。

document.tex
\documentclass{article}
\begin{document}
Body text.\footnote{Real footnote at the page bottom.}

\begin{tabular}{ll}
  A & value\footnote{This footnote is inside a tabular -- the text is lost.} \\
  B & value \\
\end{tabular}

Next.\footnote{This one is numbered 3, not 2.}
\end{document}

見落としやすいのは 番号のずれ です。失われた注もカウンタは進めるので、表の次に書いた脚注は 2 ではなく 3 になります。本文だけ読んでいると「2 番はどこへ行った」と首をかしげることになります。同じ制約は \caption や見出しの引数にも当たりますが、そちらの症状はもっと派手で、\caption{Cap\footnote{...}}エラーで止まります——! Argument of \@caption has an extra }.! Paragraph ended before \@caption was complete. が続けて出ます。\caption の引数は目次へ書き出される「動く引数」で、そこに脆弱な \footnote を裸で置けないからです。

マークと本文を分ける — \footnotemark と \footnotetext、そして \thanks

逃げ道は、マークと本文を別々の命令で置く ことです。表やキャプションの中では \footnotemark でマークだけを出し、そこを抜けた本文側で \footnotetext{…} に中身を書きます。番号がずれないよう、\footnotemark[7]\footnotetext[7]{…} のように明示的に揃えるのが安全です。

  • \footnotemark — マーク(番号)だけをその場に出します。引数なしなら footnote カウンタを 1 進め、\footnotemark[番号] と番号を与えると カウンタを進めず その番号を使います。
  • \footnotetext{本文} — 脚注の本文だけをページ下に出します。\footnotemark の後の、外側の段落モードの場所に書きます。\footnotetext[番号]{本文} で番号を合わせられます。
latex
\begin{tabular}{ll}
  Item A & value\footnotemark[1] \\
  Item B & value \\
\end{tabular}
\footnotetext[1]{This value is provisional.}

この「マークと本文を分ける」型が LaTeX 本体にも埋め込まれています。latex.ltx\thanks の定義は次のとおりで、中身はまさに \footnotemark と、あとで実行される \footnotetext[現在の番号] の組です。そして article.cls\@maketitle には \let \footnote \thanks の一行があります。表題ブロックの著者名は \begin{tabular}[t]{c} の中に組まれるので、そこで素の \footnote を使えば本文が消える——だからクラス側が先回りして、表題の中の \footnote\thanks にすり替えているわけです。冒頭で紹介した罠の回避策は、LaTeX 自身が使っています。

latex.ltx
\DeclareRobustCommand\thanks[1]{\footnotemark
    \protected@xdef\@thanks{\@thanks
        \protect\footnotetext[\the\c@footnote]{#1}}%
}

実務では、\title\author に付ける所属・謝辞・連絡先はすべて \thanks{…} で書きます。番号の見た目を記号にしたければ、\maketitle の前で \renewcommand{\thefootnote}{\fnsymbol{footnote}} としておき、\maketitle 直後に元へ戻すのが定石です(標準クラスは \maketitle の最後で \setcounter{footnote}{0} を実行するので、本文の脚注は 1 から始まります)。

minipage の中の脚注は a・b・c になる

minipage の中では \footnote別のカウンタ mpfootnote に切り替わり、番号が小文字のアルファベットになる からです。実測すると、minipage に入れた注は本文の 1・2 とは無関係に a と組まれ、ページの下ではなく その minipage の直下 に置かれました。つまり minipage は「小さな独立したページ」として振る舞います。見た目を数字に戻したければ \renewcommand{\thempfootnote}{\arabic{mpfootnote}} とします。

この性質は、表の脚注を「表の下」に置きたいときにそのまま使えます。tabularminipage で包めば、\footnote は消えずに表のすぐ下へ組まれます——ただし ページの脚注とは別の番号体系 になる点は覚悟してください。表の注をきちんと扱いたいなら、専用の threeparttable(表・注・キャプションの三部構成を整える)や、tabularraytalltblr 環境を使うほうが体裁がそろいます。

footmisc — ページごとに番号を戻す、記号にする、段落に流す

標準の脚注の振る舞いを細かく変えたいときは、\usepackage[オプション]{footmisc} を読み込みます。TeX Live 2024 同梱版は 2023/07/05 の v6.0f。オプションは組み合わせて使え、たとえば [perpage,symbol] で組むと、実測では 1 ページ目が ∗ † ‡、2 ページ目でまた ∗ † に戻りました——番号のリセットと記号化が同時に効いています。

オプション効果
perpageページごとに番号をリセットし、各ページで 1 から数え直します。
symbol番号ではなく記号(∗ † ‡ …)でラベルします。symbol* は本文中のマークだけを記号にします。
bottomページが短くても、脚注を紙面のいちばん下へ押し下げます。
para複数の注を改行せず、ひとつづきの段落として流し込みます。
multiple隣り合ったマークを検出し、あいだに区切りを入れてきれいに並べます。
hangマークを本文の左に出し、注の二行目以降をぶら下げてそろえます。
flushmargin注の本文を字下げせず、版面の左端にそろえます。
norule本文と脚注を分ける横線を引きません。splitrule は分割された注に別の線を用意します。
stable見出しなど動く引数の中でも \footnote が壊れないようにします。
marginalマークを版面の外、余白側へはみ出させて置きます。
latex
% per-page numbering, notes pushed to the bottom, adjacent marks separated
\usepackage[perpage,bottom,multiple]{footmisc}

% width of the gap between the mark and the note body
\setlength{\footnotemargin}{1.8em}

footmisc は余白側にも手が届きます。マークと脚注本文のあいだの空き(脚注の左マージン)は、このパッケージが用意する長さ \footnotemargin で調整できます。フロートとの前後関係を決める bottomfloatsabovefloatsbelowfloats、注を版面の脇に出す side、注をラギッドに組む ragged もあります。オプション名は footmisc.sty\DeclareOption を見れば一覧できます。

傍注を余白に置く — \marginpar と marginparwidth

本文の脇に短い注を出すには \marginpar{本文} を書きます。書いた行の高さで、余白に小さく組まれます。両面組版(twoside)では 外側の余白 に出て、左ページと右ページで自動的に側が入れ替わります。左右で文言を変えたければ \marginpar[左]{右} と書き、角かっこの [左] が左余白に来たときの文、波かっこの {右} が右余白に来たときの文です。出る側を反転させるには \reversemarginpar、既定に戻すには \normalmarginpar を使います。

傍注の寸法は三つの長さで決まります。TeX Live 2024 での実測値は次のとおりです——articlereport\marginparwidth65ptbook125pt、片面の articletwoside を付けると 121pt に跳ね上がります。本文と傍注の間隔 \marginparsep11pt、傍注どうしを押しのける最小の間隔 \marginparpush5pt。65pt は 10pt の本文でおよそ 6 文字強しか入りませんから、既定のままの article で長い傍注を書くと、ほぼ確実に一語ずつ縦に積まれます。傍注を本気で使うなら \setlength{\marginparwidth}{...}geometry で余白ごと設計し直すのが前提です。

\marginpar には強い制約があります。内部ではフロートとして処理される ので、figuretable の中、脚注の中、別の \marginpar の中では使えません。figure の中に書いて処理すると ! LaTeX Error: Float(s) lost. で止まります。段落も一つしか入りません。さらに、近い行に傍注が並ぶと押し合いになり、LaTeX は位置をずらしたうえで LaTeX Warning: Marginpar on page 1 moved. と報告します。この警告が出たら、傍注が意図した行から離れて印刷されている合図です。

marginnote — フロートでない傍注、ただし二回コンパイル

\marginpar の制約を回避したいときは、marginnote パッケージの \marginnote{本文} を使います。フロートを使わないので、\marginpar! LaTeX Error: Float(s) lost. で落ちる figure の中でも通ります——実際に同じ文書で試すと、\marginpar 版はエラーで止まり、\marginnote 版は何事もなく通って余白に注が出ました。\marginpar と同様に \marginnote[左]{右} で左右の文言を分けられ、\reversemarginpar も尊重されます。TeX Live 2024 同梱版は 1.4b(2018/08/09)です。

ただし代償があります。marginnote は二回コンパイルしないと何も出ません。 一回目のログには Package marginnote Info: xpos seems to be \@mn@currxposLaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. が並び、PDF の余白は空のままでした。注が左右どちらに来るかを相互参照の仕組みで決めているためです。二回目を走らせて初めて余白に文字が現れます。

もう一つ、\marginnote には波かっこの 後ろ に置く三つ目の引数——縦方向のずらし幅——があります。書式は \marginnote[左]{右}[ずらし]。実測すると [-3\baselineskip] を与えた注は本文より 3 行ぶん上 に、[3\baselineskip] を与えた注は 3 行ぶん下 に置かれました。負で上、正で下です。これは必須の機能です——\marginnote は書いた行の高さにそのまま置くだけで、\marginpar のような 衝突回避をいっさいしません。注が重なったら、この引数で手で散らします。ページをまたいで分割することもできないので、余白に長文を流したい場合は別の設計(段組みや sidenotes 系のクラス)を考えるべきです。

latex
\usepackage{marginnote}
% ...
A note beside the text.\marginnote{This is a margin note.}

% negative offset moves the note up by three lines
Another line.\marginnote{Nudged upwards}[-3\baselineskip]

% marginnote works here; \marginpar would give "Float(s) lost."
\begin{figure}[h]
  Some figure.\marginnote{Inside a float.}
  \caption{A figure with a margin note}
\end{figure}

章末注・巻末注 — endnotes と enotez

注をページの下ではなく 章や本の末尾にまとめたい ときは、脚注ではなく章末注(endnote)を使います。標準的な道具は endnotes パッケージで、書き方は \endnote{本文}、そして注をまとめて出したい場所に \theendnotes を置くだけ。実測では二つの注を書いた文書が、本文に 12 のマークを残し、\theendnotes の位置に「Notes」という見出しと二つの注を並べて出力しました。見出しの文言は \notesname で変えられます。人文系の書籍や、注が多くて紙面が黒くなる文書で選ばれます。

より現代的な選択肢が enotez(expl3 で書かれています)で、注のグループ分け、見出しの体裁、リストの書式などをキー=値で細かく指定できます。使い分けは単純です——既存文書に注をいくつか足すだけなら endnotes、章ごとに注をまとめる・体裁を細かく作り込むなら enotez。どちらを選ぶ場合も、注を末尾へ送ると読者が本文と注のあいだを行き来しなければならなくなる点は忘れないでください。参照が本当に必要な注は脚注に残し、出典だけを末尾へ送る、という混在も可能です。