要約
この講義では、数式モードに入り、そこから適切に出る方法を学ぶ。数式モードではテキストと比べて何が変わるのかを説明する。文字は変数としてイタリックで組まれ、ソースの空白は数えられず、エンジンは各記号の間隔をその種類に応じて計算し、空行は禁止され、二つのモードの一方にしか存在しない記号がある。変数を \textit で書かない理由と、LuaLaTeX でモードの外に書いた数式記号がどうなるかも示す。続いて、$…$ と \(…\) による本文中の数式、その高さの制限、数式内での改行、チルダと句読点を扱い、\[…\] と equation、equation* 環境による別行立て数式を、句読点をつけるべき文の一部として扱う。$$…$$ を使わない理由と、その前に空行を置かない理由も述べる。さらに、\label、\eqref、\numberwithin、\tag による番号づけ、\text と \mathrm による数式中のテキストと明示的な空白、数式モードでの小数点とコンマ、数値と単位のための siunitx パッケージを取り上げる。最後に、ログファイルに現れる典型的なエラーと、避けるべきことをまとめる。
学習目標
- 数式モードではテキストと比べて何が変わるかを説明し、誤ったモードで書いた変数、単語、記号の結果を予測する。
- 本文中の数式と別行立て数式を選び分け、それぞれを句読点つきの文の一部として、不適切な空行なしに書く。
- 別行立て数式に
equationで番号をつけ、\eqrefで参照し、\numberwithinと\tagによる番号を予測する。 - 日本の理工系文書の慣行に従って小数と単位つきの量を書き、数式モードが小数点とコンマをどう扱うかを理解する。
- ログファイルからエラー「
Missing $ inserted」「Bad math environment delimiter」「Missing character」を診断し、ソース中の原因を特定する。
二つの組版モード
ここまでエンジンが組んできたのはテキストである。空白で区切られた単語が、行と段落に配分される。数式は別の規則に従うので、LaTeX は数式を独立した数式モードで組み、区切りによってこのモードに入り、また出る。入ったときに変わることは多く、区切りを見る前にそれを列挙しておく価値がある。この講義の助言のほとんどはそこから導かれるからである。
- 文字は専用のイタリック、すなわち変数のイタリックで組まれる。その幅と間隔は、単語としてではなく記号として読まれるように設計されている。
- ソースの空白は数えられない。
$x=a-b$と$x = a - b$はまったく同じ結果になる。間隔はエンジンが各記号の種類に応じて計算する。通常の記号(文字、数字)、二項演算子(+、-)、関係子(=、<)、句読点(コンマ)、開き括弧と閉じ括弧である。 - 空行は許されない。空行は段落を終わらせるが、数式は段落の終わりで開いたままでいてはならない。
- 二つのモードの一方にしか存在しない記号がある。上付き・下付き添字を作る
^と_、\alphaなどのギリシャ文字は数式の記号であり、アクセントつきのラテン文字(é など)はテキストの文字である。漢字や仮名は luatexja のもとではどちらのモードでも組まれるが、数式モードの中でも変数ではない。
2行目と3行目は、ソースが異なるにもかかわらず同一である。$x=a-b$ のマイナスは両側に被演算子があるので二項演算子であり、中程度の間隔を受ける。$y=-b$ の等号の後では左側に被演算子がないので、単項の記号として扱われ、b に密着する。テキストとして組んだ1行目は何も区別しない。ハイフンはハイフンであり、等号の両側に間隔はない。
変数を textit で書かない理由
以上から、テキストのイタリックと数式モードのイタリックは別物であることがわかる。\textit{x} はテキストのイタリックの文字であり、エンジンが記号に与える間隔をもたない。また、数式モードで書いたラテン文字の単語は単語ではなく、掛け合わされた変数の列であり、それぞれが自分の間隔をもつ。
1行目の間隔は著者が入力した空白だけであり、記号は本文のフォントのものである。文字もテキストのイタリックで、数式の文字とは字形が異なる。数式の中では、エンジンが等号と不等号の両側に関係子の間隔を入れる。3行目の「GDP」は三つの変数の積として読まれ、文字の間隔は不揃いになる。漢字や仮名の場合は事情が違う。luatexja は数式モードの中の和文文字もそのまま組むので、$費用 = 価格 - 割引$ は一見問題なく見える。しかしこれは luatexja の便宜であって数式モード本来の振る舞いではなく、数式中の語句はやはり \text に入れるべきである。amsmath パッケージの \text 命令は、この講義の後半で扱う。
モードの外の数式記号
pdfLaTeX では、本文に \alpha と書くとエラー「Missing $ inserted」になる。この講座のエンジンである LuaLaTeX ではエラーにならない。ギリシャ文字はエラーなしに組まれるが、結果は予測できない。文書中でまだ数式が一つも組まれていなければ文字は消え、すでに数式が組まれていれば、数式フォントから取られて次の語に密着して現れる。命令の後の空白が失われるからである。
1番目の文は目に見える警告なしに文字を失い、3番目の文はたまたま文字を保つが、「は」に密着し、数式と和文の間にあるべき間隔がない。唯一の痕跡はログファイルにあり、しかも1番目の文についてだけである。
Missing character: There is no ^^K (U+000B) in font nullfont!ソースで \alpha の後の空白は命令名を終わらせ、そのまま読み捨てられる。この空白は省略できない。LuaLaTeX では漢字や仮名も英字と同じく文字とみなされるので、\alphaは は未定義の命令名として読まれてしまう。したがって、LuaLaTeX ではモードの外に書いた数式記号は報告されない。必ず区切りの間に書き、文書を完成とみなす前にログで「Missing character」を検索するのがよい。
コンテンツを読み込んでいます…