特殊文字

LaTeX には、そのまま打っても文字として出てこない記号が 10 個 あります。# $ % & _ { } ~ ^ \ の 10 文字で、それぞれが「コメント」「数式の開始」「命令の始まり」といった特別な役目を持っているからです。このページでは、各文字が何をするのかと、文字そのものを印字する方法をまとめます。

10 個の予約文字

まず「予約文字(reserved characters)」とは、LaTeX が構文の一部として使っているために、地の文へそのまま書くと別の働きをしてしまう文字のことです。たとえば % と打つと、その行の残りがまるごとコメントとして消えます。$ と打てば、そこから数式モードが始まります。こうした文字を 文字として 紙面に出すには、少し手を加える必要があります。

それぞれの役目を整理すると次のとおりです。# はマクロ定義で引数を表し、$ は数式モードの開始・終了、% はコメントの開始(その行の残りを無視)、& は表や整列環境で列(セル)を区切ります。_^ は数式中で下付き・上付き文字を導入し、{} は引数やグループの範囲を区切ります。~ は改行で切れない空白(連結スペース)を作り、\(バックスラッシュ)はすべての命令の先頭に立ちます。

文字特別な役目
#マクロ定義での引数(#1, #2 …)
$数式モードの開始・終了
%コメント開始(その行の残りを無視)
&表・整列環境での列(セル)区切り
_数式中の下付き文字
^数式中の上付き文字
{引数・グループの開始
}引数・グループの終了
~改行で切れない空白(連結スペース)
\命令(コマンド)の先頭

文字そのものを印字する

10 個のうち 7 個 は簡単で、前にバックスラッシュを 1 つ付けるだけです。すなわち \#, \$, \%, \&, \_, \{, \}。たとえば \$1.23 と書けば $1.23 と印字されます。バックスラッシュは「次の 1 文字は命令ではなく、その文字自身だ」という合図になるわけです。

残る 3 個 はもう少し厄介です。~\textasciitilde(または \~{})、^\textasciicircum(または \^{})で出します。\~\^ を単独で書くとアクセント命令と解釈され、直後の文字の上にチルダや山形が乗ってしまうため、空の {} を添えて「乗せる相手のいないアクセント」=記号そのものにします。

最後にバックスラッシュ自身。これは \textbackslash で印字します。**\\ を使ってはいけません** — それはバックスラッシュ 2 個ではなく、改行(行送り)の命令だからです。ここはとても間違えやすい落とし穴です。

入力出力備考
\##バックスラッシュを 1 つ前置
\$$同上
\%%同上
\&&同上
\__同上
\{{同上
\}}同上
\textasciitilde~\~{} も可。\~ 単独はアクセント
\textasciicircum^\^{} も可。\^ 単独はアクセント
\textbackslash\\\ は改行命令なので不可

なお \textbackslash\textasciitilde\textasciicircum は現在の LaTeX カーネルに含まれており、追加パッケージなしで使えます(かつては textcomp パッケージが必要でした)。ただし欧文フォントによっては、本文用の字形にチルダや山形(キャレット)の独立した記号を持たないものがあり、その場合はこれらのテキスト記号命令を使うのが確実です。

実例

100% & $5 cost #1 のように、予約文字を多く含む一文を印字してみましょう。%&$# はいずれもバックスラッシュ前置で逃がします。

latex
100\% \& \$5 cost \#1

% backslash, tilde and caret need their own commands:
A path: C:\textbackslash Users \\
Math symbols out of math: \textasciitilde{} and \textasciicircum{}

1 行目は 100% & $5 cost #1 と組まれます。続く部分では、Windows 風のパスにバックスラッシュ(\textbackslash)を、独立したチルダと山形に \textasciitilde{}\textasciicircum{} を使っています(行末の \\ は出力を改行するための命令で、バックスラッシュの印字ではありません)。

たくさんの記号・URL を出すとき

予約文字が密集したコード片や記号列を 1 つずつ逃がすのは骨が折れます。そんなときは 逐語(verbatim) の仕組みが便利です。行内なら \verb|...| のように、本文に現れない 1 文字(ここでは |)で囲むと、その中身はタイプライタ体でそのまま印字され、予約文字の意味も消えます。複数行なら verbatim 環境を使います。

latex
Use \verb|a_b^c & d%| to show specials literally.

\begin{verbatim}
foo_bar = 100% & #1   % all printed as-is
\end{verbatim}

URL のように ~#%_ を含みがちな文字列には、url(または hyperref)パッケージの \url{...} が向いています。中の予約文字を自動で処理し、等幅で組み、適切な位置で折り返してくれるので、手作業のエスケープが要りません。

latex
\usepackage{hyperref}
% ...
See \url{https://example.com/path?id=1#sec_2~ok}

まとめると、単発の記号は表のとおりに逃がし、コード片や記号の塊は \verbverbatim、URL は \url{} に任せる、と覚えておけば十分です。記法そのものの考え方は「記法のルール」、本文で使える各種の記号は「テキスト記号」のページで詳しく扱います。