アクセント記号と特殊文字

\'e と打てば é、\"o と打てば ö。LaTeX のアクセント記号——アキュート、ウムラウト、チルダ、ハーチェク——の命令は、名前が たった一文字、しかもその一文字が '" という記号そのものだという、ほかに例のない書式をしています。これは é を直接打てないキーボードしかなかった時代の設計で、実体は Knuth が plain TeX に書いた \accent プリミティブです。このページは、16 個のテキスト用アクセント命令、アクセントではない文字(\ss\ae\oe\aa\l)、点のない \i\j、そして数式用の \hat\bar\vec\dotそれぞれ何を出すか を引くための一覧です。あわせて、表には出てこない話——fontenc を T1 にするかどうかで、出せる記号だけでなく アクセント付きの単語がハイフネーションされるかどうかまで変わる ——も実測で示します。

16 個のアクセント命令と、それぞれが出す字

テキストモードのアクセントは 16 種類あり、すべて 一文字を引数に取る命令 です。\'o のように直接続けても、\'{o} のように中括弧で囲んでも同じ字が出ます。上に乗る 11 個(アキュート、グレイブ、サーカムフレックス、ウムラウト、チルダ、マクロン、上点、ブレーヴェ、ハーチェク、ダブルアキュート、リング)は Knuth の plain TeX にそのまま入っていて、\accent プリミティブで組まれます。下に付く \c(セディーユ)・\d(下点)・\b(下線)と、二文字にまたがる \t(タイ)、そして \k(オゴネク)だけが別系統です。

命令出る字名前備考
\'oóアキュート(鋭音)OT1・T1 とも可
\`oòグレイブ(重音)バックスラッシュ+バッククォート
\^oôサーカムフレックス(曲折)フランス語の â ê î ô û
\"oöウムラウト/トレマドイツ語 ä ö ü、フランス語 ë ï
\~nñチルダ(波記号)スペイン語 ñ、ポルトガル語 ã õ
\=oōマクロン(長音符)ローマ字の長音、辞書の発音表記
\.oȯ上点ポーランド語 ż、リトアニア語
\u oŏブレーヴェ(短音符)ルーマニア語 ă、韻律記号
\v cčハーチェク(カロン)チェコ語 č š ž
\H oőダブルアキュートハンガリー語 ő ű。「ハンガリアン・ウムラウト」
\r oリング(上丸)\r a は å。\aa と同じ字
\c cçセディーユ(下)フランス語 ç、トルコ語 ç ş
\d o下点合成で作られ、フォントの一字ではない
\b o下線(バー)同じく合成。転写や音声表記に
\t ooo͡oタイ(二字にまたがる弧)唯一 TS1/OML から取る。二文字を引数にする
\k aąオゴネク(下の尾)T1 でのみ使える。ポーランド語 ą ę
latex
% braces are optional for a single letter, required for a command
r\'esum\'e, na\"ive, se\~nor, G\"odel, \c{c}a va, \H{o}r\'an
% two-letter argument: the tie accent
t\t{oo}k

Command \k unavailable in encoding OT1. と言われたら

このエラーは、要求したアクセントが いま使っている文字エンコーディングに存在しない ことを意味します。pdfLaTeX の既定は 1980 年代の OT1 エンコーディングで、\k(オゴネク)はそこにありません。直し方は一行、プリアンブルに \usepackage[T1]{fontenc} を足すだけです。OT1 で同じエラーになる命令はほかにもあり、TeX Live 2024 で実際に試すと \dj\DJ(クロアチア語の đ)、\th\TH(アイスランド語の þ)、\dh\DH(ð)、\ng\NG(ŋ)がすべて同じ文言で止まります。

document.tex
\documentclass{article}
\usepackage[T1]{fontenc}   % without this, \k \dj \th \dh \ng all error
\begin{document}
Polish: j\k{e}zyk. \quad Croatian: \dj\ \quad Icelandic: \th\ \dh
\end{document}

ただし本当の代償は、エラーになる記号ではなく エラーにならない記号のほう です。OT1 には é の一字がないので、LaTeX は \accent で「アキュートを e の上に置く」という合成を組みます。ところが \accent は TeX にとって、そこで連綴(リガチャ・カーニング)の連鎖が切れる区切りです。実測すると、OT1 で AV は 13.8889pt、\'AV(Á のあと V)は 15.00003pt——A と V のあいだの 1.11113pt の詰めが丸ごと消えています。T1 では Á が一字のグリフなので、AV\'AV も同じ 13.8855pt に収まります。

ハイフネーションではもっとはっきりします。\showhyphens{universit\'e r\'esum\'e} を走らせると、OT1 では uni-ver-sité résumé と出て、résumé には分割点がひとつも立ちません。同じ入力を T1 でコンパイルすると uni-ver-sité ré-sumé になります。アクセント付きの語が多い文書——フランス語、ポーランド語、チェコ語、あるいは人名だけ欧文の英語論文——で行末が不格好に空くとき、原因はたいていここです。逆に言えば、pdfLaTeX で欧文を組むなら \usepackage[T1]{fontenc} は装飾ではなく必需品ということになります。

点なしの \i\j が本当に要るのは、16 命令のうち 7 つだけ

結論から言うと、\"{\i} と書く必要はほとんどありません。ot1enc.deft1enc.def を読むと、アキュート・グレイブ・サーカムフレックス・ウムラウト・上点の 5 つについては、LaTeX が引数の i を自動で点なし i に差し替える 宣言(\DeclareTextComposite\DeclareTextCompositeCommand)が入っています。実際 TeX Live 2024 で \"i\"{\i} を組むと、どちらも幅 3.33252pt でまったく同じ ï になります。手で \i を書かないといけないのは、残りの \~\=\u\v\H\r\k の 7 つです。

latex
% the dot is removed automatically for these five
na\"ive \quad \'idem \quad \`ile \quad \^ile \quad \.i
% here you must ask for the dotless letter yourself
\v{\i} \quad \u{\i} \quad \={\i} \quad \~{\i} \quad \H{\j}

\i\j はアクセントの一部ではなく、それ自体が一つの文字 です。OT1 では 16 番・17 番、T1 では 25 番・26 番の位置にあり、単独で \i と書けば ı(点なし i)が出ます。トルコ語のように点なし i が独立した文字として存在する言語では、これは装飾ではなく綴りの一部になります。なお数式モードで同じことをしたいときの命令は \imath\jmath で、名前も別、モードも別です。

\ss \ae \oe \o \aa \l ——アクセントではなく「文字」

この一群は引数を取りません。ß や æ、ø、ł はアクセント付きの母音ではなく、それぞれの言語で 独立した一文字 だからです。大文字版は先頭を大文字にするだけ(\AE\OE\O\AA\L)。ただし \SS だけは例外で、TeX Live 2024 の OT1 でも T1 でも ß の大文字ではなく「SS」の二文字が出ますlatex.ltx の既定が \DeclareTextCommandDefault{\SS}{SS})。ドイツ語の大文字エスツェット ẞ が欲しいときは、その文字を持つフォントを Unicode エンジンで使うのが確実です。

命令出る字使う言語備考
\ssßドイツ語\SS は ẞ ではなく SS の 2 文字
\aeæデンマーク語・古英語大文字は \AE
\oeœフランス語cœur、sœur。大文字は \OE
\oøデンマーク語・ノルウェー語大文字は \O。数式の \emptyset とは別物
\aaåスウェーデン語・ノルウェー語\r a と同じ字。大文字は \AA
\lłポーランド語OT1 では作画。T1 で初めて本物の一字になる
\djđクロアチア語・ベトナム語T1 が必要。大文字は \DJ
\thþアイスランド語T1 が必要\dh は ð、\ng は ŋ
\ijijオランダ語ij の合字。大文字は \IJ

\l の扱いは、この章で唯一 PDF の中身にまで響く 差です。OT1 の \l は本物の ł ではなく、l の上に短い斜線を重ねて描いた合成で、TeX Live 2024 で組んだ PDF を pdftotext に通すと ただの l として抽出されます。T1 なら 170 番に本物の ł があるので、検索もコピーも正しく通ります。同じことは下付きの \d\b にも起こり、\d o(ọ)は o. として抜けてきます。論文の本文なら見た目が合っていれば済みますが、書誌データや検索対象になる語では効いてきます。

本文に \hat{x} と書くと ! Missing $ inserted. ——数式アクセントは別系統

テキスト用と数式用のアクセントは、名前も実装も完全に別です。境界を越えると両方向でエラーになり、しかも文言が違うので原因の切り分けに使えます。本文に \hat{x} と書けば ! Missing $ inserted.、逆に数式のなかに $\'e$ と書けば ! Please use \mathaccent for accents in math mode. が出ます(いずれも TeX Live 2024 で確認)。前者は TeX が親切に数式モードを開こうとして失敗しているだけ、後者は「そのアクセントはテキスト用だ」と名指しで教えてくれています。

命令見た目典型的な用途備考
\hat{x}山形(サーカムフレックス)推定量、単位ベクトル幅に伸びる版は \widehat
\tilde{x}近似値、変換後の量伸びる版は \widetilde
\bar{x}短い横棒標本平均、複素共役式全体に渡すなら \overline
\vec{v}小さな右向き矢印ベクトル量\vec{AB} は伸びない。\overrightarrow を使う
\dot{x}点 1 つ時間微分(1 階)ニュートン以来の力学の記法
\ddot{x}点 2 つ時間微分(2 階)加速度
\dddot{x}点 3 つ時間微分(3 階)amsmath が必要\ddddot は点 4 つ
\acute{x}アキュート言語学、まれに数式テキストの \' と同じ形
\grave{x}グレイブ言語学、まれに数式テキストのグレイブと同じ形
\check{x}v 字(ハーチェク)幾何・代数の記号付けČech コホモロジーの Č など
\breve{x}椀形(ブレーヴェ)幾何・代数の記号付け\check と対にして使うことが多い
\mathring{x}小さな丸幾何の記号、内部(開核)\r の数式版にあたる
latex
\usepackage{amsmath}   % \dddot, \ddddot
\[
  \dot{x}, \quad \ddot{x}, \quad \bar{x}, \quad \hat{p},
  \quad \tilde{a}, \quad \vec{v}, \quad \check{s}, \quad \mathring{r},
  \quad \hat{\imath}, \quad \vec{\jmath}
\]

実務上の注意が二つあります。第一に、\hat{\vec{x}} のようにアクセントを二段重ねると、上の印が浮いたり中心からずれたりして、きれいには積み上がりません。点を増やしたいだけなら \ddot\dddot\ddddot を使い、本当に重ねたいなら次ページの \overset で明示的に組むほうが安全です。第二に、amsmath の \dddot添字のなかで縮みません。実測すると $x^{\ddot a}$ が 10.55292pt なのに対し $x^{\dddot a}$ は 16.21565pt で、三点が本文サイズのまま上付きに載っています。この症状に当たったら mathdots パッケージを読み込むと直ります。

\'e と打つか、é と直接打つか

T1 を読み込んでいるなら、どちらでも出力は同じです。 実測でも \'e\'{e}・直接入力の é は三つとも幅 4.44336pt で、同じ一字のグリフに落ちます(LaTeX は 2018 年から UTF-8 入力を既定にしたので、inputenc の指定も要りません)。読みやすい原稿を書きたいなら直接入力が有利です。それでも命令記法が残るのは、主に三つの場面です——ASCII でのやり取りを求める投稿規定、.bib ファイルの人名、そして tabbing 環境。tabbing では \' が「タブ位置に戻る」命令に奪われているため、アクセントには専用の \a' を使います(\a を前に付けるだけです)。

latex
% inside tabbing, \' means "go to a tab stop" — use \a' for the accent
\begin{tabbing}
  caf\a'e \= au lait \\
  th\a'e   \> vert
\end{tabbing}
  • pdfLaTeX で欧文を組むなら \usepackage[T1]{fontenc} を必ず入れる。 ハイフネーション・カーニング・PDF の検索性がまとめて直る
  • 本文は直接入力、.bib は投稿先の規定に合わせる。 一つのプロジェクトのなかで両方式を混ぜないこと
  • \i を書くのは \~ \= \u \v \H \r \k の 7 つだけ。 残りの 5 つは LaTeX が自動で処理する
  • \SS は ẞ ではなく SS。 大文字エスツェットが要るなら Unicode エンジンとそれを持つフォントへ
  • \hat は数式、\^ はテキスト。 エラー文言(! Missing $ inserted.! Please use \mathaccent … か)でどちら側にいるか判別できる