マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

じゃあ\parの抜き打ちテストの解説やるぞー

前回の\parの抜き打ちテスト」の解説。

解説

  • ①はどちらかというと「TeXの常識問題」。「\parで改段落する」が機能するためには水平モードである必要があるとともに「水平ボックスの中などの改行できない場所」であってはいけない。この「改行できない場所」のモードの名前は何か、という問題。
  • ②~④がこの問題のメインであり、「\par実行時に段落末尾に適用される“加工”」について問われている。「何のために“加工”をしているのか」が把握できていれば答えは推測できるはず。
    • ②はTeXで普通に文章を書いていると生じている1はずの「段落末尾にある水平空き」を消すための処理。
    • ③はよく見ると、④のような「現在の……パラメタの値」の記述ではなく「……の値」と書かれているので定数値(恐らく10000か0か−10000)が入るはず。次の④の行と合わせて考えると「ペナルティ→水平グルー」と並ぶことになり、もし仮に③のペナルティで行分割が起こると④の「わざわざ挿入した水平グルー」が消えてしまうことになり具合が悪い。従ってここでは「行分割を禁止するためのペナルティ」が必要である。
    • ④は純粋に暗記問題🙃 まあ\parに関する重要なパラメタなので、\par芸人を目指す人なら当然覚えているはずだよね🤯
  • ⑤もどちらかというと「TeXの常識問題」で、「段落の外形に関するパラメタ」を1つ答えればよい。TeX on LaTeXにおいて「LaTeXの管理下にある\par」ではなくて「プリミティブ2\@@par」を敢えて使うのであれば、この「段落外形パラメタのリセット」への留意が必要になるため、\par芸人を目指す人なら答えられて当然だよね🤯🤯
  • ⑥も(ry 前の方で「段落ビルダー」に言及されていて、また「外部垂直リスト」という前提がついているので、強いTeX言語者であれば推測できるはず🤯🤯🤯

正解

  • 限定水平(“restricted horizontal [mode]”の訳語)
  • \unskip
  • 10000
  • \parfillskip
  • \parshape または \hangindent または \hangafter
  • ページビルダー(“page builder”の訳語)

  1. 段落末尾のソース行の行末の改行文字が空白トークンとして実行されるため。まあpTeX系の和文文書の場合は生じないこともあるのだが。
  2. イマドキのLaTeXでは\@@parも「プリミティブの\par」ではなくなっているのだが。