LaTeXの脚注中の行間隔(と脚注同士の間隔)を詰める
普段はブログに書いているのでQiita初投稿です。
やりたいこと
さて,LaTeXの脚注中の行間隔が広いと思ったことはありませんか。もっとぎゅうぎゅう詰めにしたい。あるいは,行間隔が狭すぎる。もっと広げたい。
どうやるか
脚注同士の間隔を狭めたり広げたりするのは\setlength{\footnotesep}{15pt}
などとすればできます。しかし,脚注内の行間隔を狭めたり広げたりするのに必要な情報はなかなかありません1。行間隔をいじる有名パッケージのsetstretch.sty
は,脚注中まで行間隔調整の影響が及ばないようにわざわざ回避するコードが入ってしまっており,使えません。
結論から言うと,非常にアドホックですが,次のようにプリアンブルに書けばよろしいということになります。
\makeatletter
\let\@makefntextOrig\@makefntext
\def\@makefntext#1{\@makefntextOrig{%
\baselineskip=7.2pt%%%ここで脚注の行間隔を指定
#1}}
\makeatother
これは一体何をしているのかというと,latex.ltx
の中にある\@footnotetext
および\@mpfootnotetext
の定義の中を書き換えています。これらの命令の中にある\@makefntext
に対して働きかけることでギミックを実現しています。
サンプルファイルをGithubのGistにおいておきます。また,サンプルファイルでは,ついでに脚注同士の間隔を狭めたり広げたりするものも一緒に行っています。これについては次に説明します。
脚注同士の間隔を狭めたい
脚注同士の間には,空行がデフォルトで入ってしまいます。それを抜くために,適切な位置に\let\@finalstrut\@gobble
と書いてその処理を無効化しておきます。結果として,次のようなコードをプリアンブルに書いています。
\makeatletter
\let\@makefntextOrig\@makefntext
\def\@makefntext#1{\@makefntextOrig{%
\baselineskip=7.2pt%%%ここで脚注の行間隔を指定
\let\@finalstrut\@gobble%%%ここで脚注同士の間の空行を除去
#1}}
\makeatother
\setlength{\footnotesep}{7.2pt}%%%ここで脚注同士の間隔を指定
おわりに
いいパッケージないですか。あれだけTeX Liveのパッケージ数が増えているのだから,きっとこういうのがアドホックじゃなくできるパッケージあると思うんですよ。TeX Live探索能力が欲しい。みなさんTeX Liveの深奥をどのように検索されておりますか。
-
これまた非常にアドホックな方法ですが,regexpatchパッケージを使った方法がかろうじてStack Overflowに見つかります。 ↩