コンテンツへスキップ
Topos Uranos

要約

この回では、LaTeX のソースファイルをその部品に分解する。プリアンブルと本文を区別し、それぞれに何を書いてよいか、またその理由を説明する。命令について、二種類の名前、必須引数とオプション引数、星付きの形を述べ、命令の名前がどこで終わるかを正確に示す。グループが宣言の有効範囲をどのように限るかを示す。環境と、入れ子を誤ったときに出るエラーを紹介する。十個の予約文字について、それぞれの働きと出力のしかたを順に見る。コメントを、コードを無効にする手段として説明する。最後に、パッケージとドキュメントクラスおよびそのオプションを簡単に紹介する。これらは文書の構造を扱う単元で詳しく取り上げる。

学習目標

  1. プリアンブルと本文を区別し、命令の働きに応じてそれをどこに書くべきかを判断する。
  2. 命令の名前、必須引数とオプション引数、星付きの形を見分け、名前がどこで終わるかを予測する。
  3. グループや環境の中での宣言の有効範囲を予測し、意図した文字だけに作用するように書く。
  4. 環境を正しく入れ子にし、入れ子を誤ったときのエラーを読み解く。
  5. 十個の予約文字をそれぞれ出力し、保護しなかったときに各文字が何をするかを説明する。

ソースファイルの二つの部分

LaTeX のソースファイルはどれも同じ形をしている。最初はドキュメントクラスを宣言する \documentclass である。そこから \begin{document} までがプリアンブルであり、ここでパッケージを読み込み、文書全体に通用する決定を行うが、何も組版しない。\begin{document} と \end{document} の間が本文であり、文字が組版される唯一の場所である。\end{document} の後に書いたものはすべて無視される。

この区分は書き方の慣習ではなく、LaTeX の動作のしかたから来ている。\begin{document} に達すると、LaTeX は設定を締めくくる。この時点で、どのパッケージがあるか、どの書体・言語・用紙サイズが有効かが確定し、ここから組版が始まる。ここから二つの規則と、二つのエラーが導かれる。第一に、パッケージはプリアンブルでしか読み込めない。すでに適用された決定を変えてしまうおそれがあるからである。本文に \usepackage を書くと「Can be used only in preamble」というエラーになる。第二に、プリアンブルでは何も組版しない。\begin{document} より前に書いた文章、節見出し、目次は「Missing \begin{document}」というエラーになる。

両者の中間に、何かを定義したり保存したりするだけで組版はしない命令がある。新しい命令を定義する \newcommand や、\maketitle が出力するまで表題を保存しておく \title がそうである。これらはどちらの部分でも動くが、プリアンブルに書く。そうすれば最初から有効になり、ソースを読む人も一か所にまとまったものを見つけられるからである。

例各部分に印をつけた文書

% で始まるコメントが各部分を示している。組版エンジンはコメントを無視する。\end{document} の後に書いた最後の行も、結果には現れない。

LaTeX コード
\documentclass{article}      % ドキュメントクラス\usepackage{luatexja-fontspec} % プリアンブル:パッケージ\setmainjfont{Noto Serif CJK JP}\title{読書レポート}         % プリアンブル:保存されるデータ\author{鈴木遥}\date{}​\begin{document}             % 本文の始まり\maketitle\section{問題の設定}本文は、文字が組版される唯一の場所である。\end{document}               % 本文の終わりこの行は結果に現れない。
結果
結果

引数を空にした \date{} によって、\maketitle は日付を出力しなくなる。書かなければコンパイルした日の日付が出る。2 行目と 3 行目は日本語のための設定である。luatexja-fontspec パッケージは fontspec に日本語組版の機能を加え、\setmainjfont は和文を含む書体(ここでは Noto Serif CJK JP)を選ぶ。既定の書体(Latin Modern)には和文の文字が含まれないからである。実際の日本語文書では、ltjsarticle や jlreq のような日本語用のドキュメントクラスもよく使われる。