自動挿入されるスペース

欧文を組むとき、TeX は文末のピリオドの後に、語間より少し広いスペースを自動で入れます。「いま打ったピリオドは文の終わりか、それとも略語か」を TeX は文字の大小で見分けますが、この推測は時に外れます。このページでは、その仕組みと、外れたときに直す \ \@、そして広い文末スペースそのものを止める \frenchspacing を見ていきます。

文末の余分なスペース

英語・米国の組版の伝統では、文の終わりのスペースは語と語の間のスペースより少し広く とります(俗に「ダブルスペース」とも呼ばれます)。LaTeX も既定でこれにならい、文末の .?! の後に余分な空きを足します。たとえば 10 ポイントの Computer Modern では、語間が約 3.33 pt なのに対し、文末ではそこへさらに約 1.11 pt を加えます。しかも文末スペースは行を両端揃えするときに 伸び縮みしやすく 設定されており、語間より優先して引き伸ばされます。

内部では、各文字に 「スペースファクタ(space factor)」 という値が結びついています。ふつうの文字の後は 1000 で、これが標準の語間です。一方 .?! の後は 3000 に跳ね上がり、TeX は「スペースファクタが 2000 以上なら、次のスペースに余分な空きを足す」という規則で文末スペースを作ります。日本語(和文)の文字どうしの間隔はこれとは別の仕組みで決まるため、ここで扱う文末スペースの話は基本的に 欧文の話 だと考えてください。

文末か略語かの見分け方

ところが「. の後はいつも文末」とすると、Mr. Smithetc. のような 略語のピリオド まで広い空きになってしまいます。そこで TeX は 直前の文字の大小 で推測します。ピリオドの直前が 小文字 なら「文の終わり」とみなして広いスペースを入れ、大文字 なら「略語や頭文字(イニシャル)だろう」とみなして普通の語間にします。

この大文字の例外は、先ほどのスペースファクタで実装されています。大文字のスペースファクタは 999(1000 ではない)と決められているため、大文字に続くピリオドはスペースファクタを 3000 に上げられず、結果として余分な空きが付きません。「大文字+ピリオド=略語」という経験則が、たいていの英文ではうまく働きます。

けれど経験則である以上、二通りの取りこぼし が起こります。ひとつは「文末でない小文字+ピリオド」が広い空きをもらってしまう場合(Fig. 5etc. and)。もうひとつは「文末なのに大文字で終わる」場合で、略語と誤判定されて空きが足りなくなります(...in the USA.)。次の節で、それぞれの直し方を見ます。

誤判定を直す(\ と \@)

(1) 略語の後(小文字+ピリオドだが文末でない)。 余分な空きを消すには、ピリオドの後に バックスラッシュ+スペース \ を置きます。これは「明示的な、伸び縮みしない普通の語間」を入れる命令で、Fig.\ 5 と書けば Fig. の後がちょうど語間になります。あるいは ~ を使うと、空きを語間にしたうえで その位置で改行されない(非改行スペース)ようにできます。Mr.~SmithFig.~5 のように、略語と数字・人名を行末で離したくないときに向きます。

(2) 大文字で終わる文末。 略語と誤判定されて空きが足りないので、ピリオドの **直前に \@** を置いて「ここは文末だ」と教えます。\@ は実質「見えない小文字」のように働き、続くピリオドのスペースファクタを 3000 に戻して、正しい文末スペースを取り戻します。\@ は閉じ括弧や引用符をまたいでも効くので、(\dots etc.\@) のような形でも使えます。

覚え方は 「位置が逆」 です。文末でない大文字略語は ピリオドの後ろ\ を、文末の大文字は ピリオドの前\@ を置きます。下の例文をそのまま組むと、一文目では etc.USA. の後がきちんと整います。

latex
We cite Fig.\ 5 and Mr.~Smith here.
Use etc.\ and so on, mid-sentence.
The rocket was built in the USA\@. It then flew.

なお、これらは **既定の \nonfrenchspacing(文末を広くとる)** のときにだけ意味を持ちます。次の節の \frenchspacing を使えば、文末も語間と同じ幅になるので、この種の手当てはほぼ不要になります。

広い文末スペースを止める(\frenchspacing)

\frenchspacing は、文末を含む すべての句読点の後のスペースを、語間と同じ一定の幅** にそろえる命令です。これを宣言すると、ピリオドの大小判定そのものが問題にならなくなり、Fig. 5USA. も自然な空きになります。逆に既定へ戻すのが **\nonfrenchspacing** です。ふつうはプリアンブルに一度書いて文書全体に効かせますが、{ ... } のグループ内に書けばその範囲だけに限定できます。

document.tex
\documentclass{article}
\frenchspacing
\begin{document}
No extra space after this period. Or this one.
\end{document}

「フレンチ」の名は、フランスをはじめ 英語圏の外では文末を特に広げない 組版習慣に由来します。和文を主とする文書でも、欧文部分の文末スペースのばらつきを避けるため \frenchspacing を選ぶことがあります。現代の文書では、\@ などで個別に直す手間を嫌って **最初から \frenchspacing にしてしまう** 書き手も多く、これは十分に妥当な選択です。なお、言語を指定するパッケージ(たとえば babel)を使うと、その言語の習慣に合わせて文末スペースの扱いが自動調整されることもあります。

命令働き
\nonfrenchspacing既定。文末の後を語間より広くとる(default) wider space after sentence-ending punctuation
\frenchspacingすべての句読点の後を語間と同じ幅にそろえるuniform interword-width space after all punctuation
\ 明示的な普通の語間。略語の後の誤った広い空きを消す(例 Fig.\ 5)explicit interword space; cancels wrong wide space after an abbreviation
~非改行の語間。略語と数字・人名を離さない(例 Mr.~Smith)non-breaking interword space; keeps abbreviation with its number/name
\@ピリオドの前に置き、大文字で終わる文を文末扱いにする(例 USA\@.)placed before a period; forces sentence spacing after a capital