2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

LaTeXの脚注中の行間隔(と脚注同士の間隔)を詰める

Last updated at Posted at 2020-01-22

LaTeXの脚注中の行間隔(と脚注同士の間隔)を詰める

普段はブログに書いているのでQiita初投稿です。

やりたいこと

さて,LaTeXの脚注中の行間隔が広いと思ったことはありませんか。もっとぎゅうぎゅう詰めにしたい。あるいは,行間隔が狭すぎる。もっと広げたい。行間広げる.png

どうやるか

脚注同士の間隔を狭めたり広げたりするのは\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の深奥をどのように検索されておりますか。

  1. これまた非常にアドホックな方法ですが,regexpatchパッケージを使った方法がかろうじてStack Overflowに見つかります

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?