2018/8/11 by @kmuto

見栄えが悪い箇所を「少しだけ」調整する

@<embed> および //embed 命令により、TeX PDF の見た目を調整します。

★キャプチャを入れたい


LaTeX は独自のルールに従っておおむね綺麗に見える紙面を生成してくれますが、ときにはいささか見苦しいものを作り出すことがあります。たとえば @<tt> で表現される段落内等幅コードを多用すると、文字間がスカスカになったり、本文領域(版面)からはみ出したりといったことが起きがちです。

また、紙面化すると「ここで改ページできると後が綺麗なのに」「ここであとわずかだけ版面が広がれば収まるのに」ということもままあります。

re ファイル内に生の LaTeX マクロを埋め込むことでこれらを調整できます。ただし re ファイルの可視性は低下するので、使いすぎには注意しましょう。

生の LaTeX マクロを入れる

生の指示を埋め込む方法として、インライン命令としては @<embed>{|ビルダ名|〜}、ブロック命令としては //embed[ビルダ名]{ //} があります。ビルダ名はここでは「latex」と入れます。

〜〜@<embed>{|latex|\allowbreak }〜〜
〜〜

//embed[latex]{
\clearpage
//}

〜〜

LaTeX の記法では } を多用するため、インライン命令でそれらを \} といちいちエスケープするのはわずらわしいかもしれません。代替となるフェンス記法を使って表現するとよいでしょう(フェンス記号には $| がありますが、| はビルダ名の指定と衝突するため、$ のみを利用できます)。

@<embed>{|latex|\vspace{-0.5\Cvs\}} (通常の記法)

@<embed>$|latex|\vspace{-0.5\Cvs}$ ($によるフェンス記法)

//embed のブロック命令では //} までの範囲がそのまま使われるので、フェンス記法はもともとありません。

段落途中の折り返しを調整する

段落がスカスカになっていたり、はみ出したり、ひとかたまりになっていてほしい語句が泣き別れてしまっていたりといった箇所を調整するには、折り返しできそうな箇所に \allowbreak マクロを埋め込みます。

例(元々の見た目):
〜〜りんごが二    ←(「二」と「個」が泣き別れて読みにくい)
個あります。
原稿:
〜〜りんごが二個あります。
 ↓
〜〜りんごが@<embed>{|latex|\allowbreak }二個あります。
例(指定後):
〜 〜 りんごが    ←(「二」の前で改行。空いたぶんは文字間の調整で自動で埋められる)
二個あります。

後続の文字が誤って TeX マクロ名の続きとして扱われないよう、\allowbreak と後ろにスペースを入れています(TeX のコンパイラが適正に判断するので、物理的なスペースが紙面結果に入ることはありません)。

@<tt> インライン命令を使った長い等幅コード表記文字列は、1つのかたまりとして扱われるので、スカスカの段落や版面はみ出しの主因となります。これを途中で分けたいときには、インライン命令の入れ子はできないので、文字列自体を分割する必要があります。

〜〜@<tt>{LongLongLongLongLongLongLongLongLongLongLongLongLongAgo}〜〜
  ↓
〜〜@<tt>{LongLongLongLongLongLong}@<embed>{|latex|\allowbreak }@<tt>{LongLongLongLongLongLongLongAgo}〜〜

\allowbreak マクロは「そこで改行するのが妥当そう」と判断されたときに使われますが、これがうまくいかず、それでも絶対に改行したいという場合には \linebreak マクロを使いましょう。

なお、@<href> で作った URL の箇所については、re ファイルへの命令だけでは途中で分断することはできません。直接 TeX ファイルを書き換える必要があります。

要素間の間隔を調整する

図表やコードリストなど、要素どうしの組み合わせによっては、間隔の空き量が広すぎ、あるいは狭すぎになることがあります。本来はスタイルを調整すべきであり、場当たり的な対処ではあるものの、間隔を調整する指示マクロを埋め込むことができます。

//embed[latex]{
\vspace{0.5\Cvs}
//}

\vspace は垂直方向に空きを入れるマクロです。値の「0.5\Cvs」は0.5行ぶんの高さの空きを追加することを意味します。値を負の値にすれば、上方向に狭くするということになります。単位は \Cvs のほかに mmpt を指定できます。

改ページを強制する

「この見出しの手前で改ページすると綺麗になる」といったときには、\clearpage マクロを埋め込みます。

//embed[latex]{
\clearpage
//}

段落の途中でどうしても改ページしたい場合は、均等配置を保持するためにたとえば以下のように指定します。

〜〜りんごが@<embed>{|latex|\linebreak\clearpage\noindent }二個あります。

版面を伸ばす

「あともう少しだけ版面を伸ばせれば……」というときには、\enlargethispage マクロをそのページを含む箇所のどこかに設置します。たとえば5mm下方向に伸ばすには、以下の命令を re ファイル内に記します。

//embed[latex]{
\enlargethispage{5mm}
//}

一般に、版面の伸縮は避けるべきです。基本のレイアウトルールから逸脱しますし、その後ページの内容が変わったのに以前に伸縮していた箇所をそのままにしていると奇妙なはみ出しやページ送りが発生することになります。

ページ調整の最終段階で、やむを得ない場合にのみ使うようにしましょう。

フックによる TeX ファイルの変更

以下のような調整は、re ファイルへの埋め込みでは解決できず、生成される TeX ファイルを途中で変更する必要があります。

  • 長いURLの改行調整
  • 見出しの改行調整
  • 目次の調整
  • 索引の調整

これらの調整方法については、フックで LaTeX 処理に割り込む を参照してください。