特殊文字
次の10文字は、LaTeXのソース中で特別な意味を持ちます。これらは特殊文字と呼ばれます。
# $ % & ~ _ ^ \ { }
空白
LaTeXのソースに空白文字を書いても、字句解析の段階で無視される場合があります。
複数の連続した空白文字は、圧縮されます(2文字目以降が無視されます)。
行頭の空白文字は無視されます。
「バックスラッシュ + アルファベット数文字」の形のコマンド名の直後の空白は無視されます。
改行
改行は空白文字として扱われます。
ただし、pTeXの場合は、和文文字の直後の改行は無視されます。
空行(連続した改行)は、 \par コマンド(改段落)として扱われます。空白文字のみからなる行も、空行として扱われます。
コメント
行の先頭もしくは途中に % を書くと、その後ろの部分はコメントとなり、動作に影響を与えません。ただし、直前にバックスラッシュがある場合は除きます(\% はコマンド名となります)。また、\verb コマンドや verbatim 環境のように、「特殊文字を無効化する」場合は除きます。
コメント行の末尾の改行もコメントの一部として無視されるので、改行が空白文字として扱われるのを防ぎたい場合に % を置くことができます。
複数行にまたがるコメントを書きたい場合は、 comment 環境を使うと良いでしょう。
コマンド名
コマンド名には、以下の3通りがあります。
- バックスラッシュ (\) + アルファベット。例:\section
- バックスラッシュ (\) + 記号等1文字。例:\!
- 半角チルダ ~ (これは、特殊文字の一種なのでした)
半角チルダは、通常は「改行しない空白」の意味です。やろうと思えば、半角チルダを \renewcommand によって上書きすることができます。
半角チルダ ~ はコマンド名ですが、一方で、半角ハイフンを並べたもの(--
, ---
)はコマンド名ではありません。これらがダッシュとして処理されるのは、展開・実行の段階ではなくて、もっと後の、リガチャーの段階です。
いくつかのコマンド、例えば \section は、コマンド名の直後にアスタリスク * を置くことによってコマンドの意味が変わる場合があります(例: \section と \section*)。しかし、この場合の * はコマンド名の一部ではなく、あくまで「\section コマンドの直後に * を置いたもの」です。\section と \section* とで意味が変わるのは、 \section コマンドが * の有無を判断しているからに過ぎません。なので、自分でコマンドを定義する際に
\newcommand{\foo}{}
\newcommand{\foo*}{}
とすることはできません。(というか、 * の有無で挙動を変えるコマンドは \newcommand では作れません。どうしても * の有無で挙動を変えるコマンドを作りたい場合は、 LaTeX の沼に足を踏み入れることを覚悟で、 \@ifstar について調べてください)