要約
この課は、LaTeX のはじめの一歩を扱う本講座の第一単元を締めくくる。組版から文書のデバッグに至る概念と手順の連鎖を組み立て直し、各環でどの原理が使われ、それがどの課で確立されるかを示す。達成したことを講座の計画に照らして位置づけ、軽く触れただけで後の単元に残る問題を明らかにする。終了テストでは開始テストの技能を繰り返す。そして各課の問題より難しい六つの挑戦課題で終わる。そこでは複数の課の道具を組み合わせて、失敗する文書を診断すること、あるいは説明から文書を計画することが求められる。
学習目標
- 単元の概念と手順の順序を組み立て直し、それぞれが依拠する原理を特定する。
- ソースを読む規則、ソースの解剖、ログのメッセージがどう関係するかを説明する。
- 単元が確立したことと、予告しただけで後の単元が展開することとを区別する。
- 複数の原因で同時に失敗する文書を診断し、ログに従って修正の順序を決める。
- 文書に含めるべき内容の説明から、そのプリアンブルと本文を計画する。
単元で達成したこと
この単元は、LaTeX を一度も使ったことのない人を、短い文書を自分で書き、コンパイルし、修正できるところまで導くことを目指した。その目的は、導入で最初から断っておいた一つの留保を除いて達成された。その留保とは、コンピューターでのファイルとフォルダの扱いを既知としたことである。この留保のもとで、たどってきた道は四つの区間からなる一本の連鎖として読むことができ、そこでは各概念や手順が先行するものによりかかっている。
LaTeX とは何か
LaTeX とは何かの課は、組版、すなわち一字一字、一行一行、一ページ一ページの配置を決める判断の総体と、学術的な文章に特有の要求から出発した。そこからマークアップ言語の利点を導いた。著者は各要素が何であるかを宣言し、それがどう見えるかは文書のクラスが決める。これが内容と形式の分離であり、単元全体を通じて繰り返し現れる。続いて三つのエンジンを区別し、Unicode を読みシステムのフォントを読み込む LuaLaTeX を選んだ。エンジンがソースを読む三つの規則(連続する空白は一つと数え、空行は段落を終え、パーセント記号はコメントを始める)を定め、書き、コンパイルし、読むという循環を、コンパイルのたびに残るログと補助ファイルとともに記述した。
作業環境
作業環境の課は、その記述を実際のインストールに変えた。ディストリビューション(TeX Live、MiKTeX、MacTeX)とそのパッケージマネージャ、LuaLaTeX でコンパイルし、UTF-8 で保存し、ソースと PDF を同期するよう設定した Texmaker、そしてプロジェクトごとに既定のコンパイラを変更しなければならない Overleaf である。さらに、一つのプロジェクトに一つのフォルダという規則、著者が書くものとコンパイルが作り直すものとの区別、そして PDF が変わらないことがある三つの原因を確立した。PDF の書き出しを妨げる重大なエラー、ファイルをロックするか再読み込みしないビューア、そして別のファイルのコンパイルである。
文書の解剖
文書の解剖の課は、最小の文書がレシピとして与えていたものを一つずつ説明した。プリアンブルは設定し、本文は組む。\begin{document} に来たところで設定が閉じるからである。命令は制御語と制御記号に分かれる。制御語の名前は文字でない最初の文字で終わり、続く空白を消費する。制御記号は空白を消費しない。命令は波括弧で必須引数を、角括弧でオプション引数を受け取り、アスタリスク付きの形をもつものもある。宣言はそれを含むグループの終わりまで有効であり、グループである環境は、開いたのと逆の順序で閉じなければならない。十個の予約文字は出力される代わりに何かを行い、それぞれに独自の出力方法がある。パッケージとクラス、およびそのオプションが構造を完成させる。
コンパイルとエラーの修正
コンパイルとエラーの修正の課は、それまでのすべてをまとめた。エンジンはパスごとに働くので、相互参照と目次は次のパスで完成し、latexmk はパスを自動で繰り返すことを説明した。エラーを、感嘆符の行、行番号、そして読んだ部分とまだ読んでいない部分を分ける切れ目から読むことを教えた。必ず直すべきエラーを、警告やボックスに関する通知から区別した。最もよく出るメッセージをその原因と結びつけたが、その原因はほとんどの場合ソースの解剖に対する違反である。そして戦略を示した。まず最初のエラーを読み、ソースを半分ずつに分け、問題を最小例に縮め、補助ファイルを消し、メッセージで検索する。
次の図は、四つの区間を一本の連鎖にまとめたものである。列の各節点は概念か手順で、互いによりかかる順に番号が付き、用いる前の環と弧で結ばれている。そのまわりに浮かぶのが支え、すなわち連鎖が何度も立ち返る原理であり、それぞれはよりかかる環と実線で、確立される環と点線で結ばれる。ただし学ばずに前提とするものは輪として描かれる。支えを押すと、それを使うすべての環が強調され、各環はそれを学ぶ課へのリンクになっている。
鎖の支え
- Aファイルとフォルダ. コンピューターでのファイルとフォルダの日常的な扱い。作り、名前を付け、見つけ、コピーし、拡張子で見分けること。導入の時点から既知とされる。 この単元では証明なしに認める。
- B内容と形式. 著者は各要素が何であるかを宣言し、それがどう見えるかは文書のクラスとプリアンブルが決める。 確立される環: 2. マークアップ言語.
- CUnicode とフォント. LuaLaTeX は UTF-8 で保存されたソースを Unicode で読み、システムのフォントを読み込む。フォントにない文字はコンパイルを止めないが、PDF からは抜け落ちる。 確立される環: 3. エンジンと LuaLaTeX.
- Dログ. コンパイルのたびに、行ったことがエラーや警告とともにログに記録される。何かが失敗したとき最初に読むのがこれである。 確立される環: 5. ソース、コンパイル、PDF.
- Eグループと有効範囲. 宣言はそれを含むグループの終わりまで有効である。波括弧と環境はグループを開き、それは開いたのと逆の順序で閉じなければならない。 確立される環: 12. グループと環境.
- F予約文字. 十個の文字は出力される代わりに何かを行う。本文にそのまま書くと、エラーか気づかれない効果を生む。 確立される環: 13. 予約文字.
- G最初のエラー. エラーから立ち直るためにエンジンは推測し、その推測が新しいエラーを生むことがある。確実にソースに対応するのは最初のエラーだけである。 確立される環: 16. エラーを読む.
第 1 区間 LaTeX とは何か
- 組版とは何か、なぜ学術的な文章がそれを必要とするかを説明する。
- マークアップ言語によって内容を形式から分離する。
- 言語、文字体系、フォントに応じてエンジンを選び、LuaLaTeX を選ぶ理由を説明する。
- 空白、段落、コメントの規則に従って、ソースが何を生むかを予測する。
組版. 組むとは、各文字がどこに置かれ、各行がどこで終わり、各ページがどこで切れるかを決めることである。数式、相互参照、脚注、複数の言語を含む学術的な文章は、それをより強く求める。
証明される授業: LaTeX とは何か.
マークアップ言語. TeX の上に書かれたマクロの集まりである LaTeX では、著者はプレーンテキストのファイルで内容をマークアップし、形式はクラスとプリアンブルから導かれる。
使う結果: 1. 組版. 証明される授業: LaTeX とは何か.
エンジンと LuaLaTeX. pdfLaTeX、XeLaTeX、LuaLaTeX は同じ LaTeX を理解するが、Unicode を読みシステムのフォントを読み込むのは後の二つだけである。講座は LuaLaTeX を使う。
使う結果: 2. マークアップ言語. 証明される授業: LaTeX とは何か.
空白、段落、コメント. 複数の空白は一つと数え、改行は空白一つと数える。空行は段落を終える。パーセント記号は行の残りを改行ごとコメントにする。
使う結果: 2. マークアップ言語. 証明される授業: LaTeX とは何か.
ソース、コンパイル、PDF. ソースを書き、エンジンがそれをコンパイルし、PDF を読む。その横にログと補助ファイルが残る。
使う結果: 3. エンジンと LuaLaTeX. 支え: A (ファイルとフォルダ). 証明される授業: LaTeX とは何か.
第 2 区間 作業環境
- システム、容量、回線に応じてディストリビューションとインストールの種類を選ぶ。
- Texmaker と Overleaf を LuaLaTeX でコンパイルするよう設定する。
- 各プロジェクトをそのフォルダにまとめ、どのファイルを保存するか決める。
- 修正後に PDF が変わらないことがある理由を説明する。
ディストリビューションとパッケージ. ディストリビューションは、エンジン、パッケージ、フォント、そして足りないものをインストールするマネージャをまとめたものである。TeX Live、MiKTeX、MacTeX があり、完全版と基本版がある。
使う結果: 3. エンジンと LuaLaTeX. 支え: A (ファイルとフォルダ). 証明される授業: 作業環境.
Texmaker と Overleaf. Texmaker は LuaLaTeX でコンパイルし、UTF-8 で保存し、ソースと PDF を同期するよう設定する。Overleaf ではプロジェクトごとに LuaLaTeX を選ぶ。
使う結果: 5. ソース、コンパイル、PDF, 6. ディストリビューションとパッケージ. 支え: C (Unicode とフォント). 証明される授業: 作業環境.
フォルダと補助ファイル. 文書ごとにフォルダを設ける。著者が書いたものや用意したものは保存し、コンパイルが作り直す補助ファイルは消してよい。
使う結果: 5. ソース、コンパイル、PDF, 7. Texmaker と Overleaf. 支え: A (ファイルとフォルダ). 証明される授業: 作業環境.
変わらない PDF. PDF が変わらないなら、コンパイルがそれを書き出さなかったか、ビューアがロックしているか再読み込みしていないか、別のファイルをコンパイルしたかである。ログと PDF の時刻がそれを決める。
使う結果: 8. フォルダと補助ファイル, 7. Texmaker と Overleaf. 支え: D (ログ). 証明される授業: 作業環境.
第 3 区間 文書の解剖
- プリアンブルと本文を区別し、各命令をどこに置くか決める。
- 命令の各部分を見分け、その名前がどこで終わるかを予測する。
- 宣言の有効範囲を予測し、環境を正しく入れ子にする。
- 十個の予約文字を出力し、保護しないとそれらが何をするかを説明する。
プリアンブルと本文. プリアンブルはパッケージを読み込み、何も組まずに決定を下す。本文は組版が行われる唯一の場所である。定義や保存だけをするものはどちらにも置けるが、プリアンブルに置くのがよい。
使う結果: 5. ソース、コンパイル、PDF. 支え: B (内容と形式). 証明される授業: 文書の解剖.
命令. 制御語は文字でない最初の文字で終わり、続く空白を消費する。制御記号は一文字だけで、空白を消費しない。引数は波括弧か角括弧に入れる。
使う結果: 4. 空白、段落、コメント. 証明される授業: 文書の解剖.
グループと環境. 宣言はそのグループの終わりまで有効である。環境はグループであり、別の環境の中で開いたものはそれより先に閉じる。
予約文字. バックスラッシュ、波括弧、パーセント、ドル、アンパサンド、シャープ、アンダースコア、サーカムフレックス、チルダは、出力される代わりに何かを行い、それぞれ独自の方法で出力される。
使う結果: 11. 命令, 4. 空白、段落、コメント. 証明される授業: 文書の解剖.
パッケージとクラス. パッケージは LaTeX にできることを広げ、プリアンブルでのみ読み込まれる。クラスはそのオプションとともに文書の全体的な形を定める。
使う結果: 10. プリアンブルと本文, 6. ディストリビューションとパッケージ. 支え: B (内容と形式). 証明される授業: 文書の解剖.
第 4 区間 コンパイルとエラーの修正
- 相互参照と目次がもう一度のパスを必要とする理由を説明し、latexmk でコンパイルする。
- ログのエラーを読む。そのメッセージ、その行、検出された箇所である。
- よく出るエラーをその考えられる原因と結びつける。
- 順序立った戦略でエラーの本当の原因を突き止め、どの警告に対処すべきか判断する。
パスと latexmk. パスのたびに、エンジンは次のパスが使う番号や見出しを補助ファイルに書き込む。latexmk は何も変わらなくなるまでパスを繰り返す。
使う結果: 8. フォルダと補助ファイル. 支え: D (ログ). 証明される授業: コンパイルとエラーの修正.
エラーを読む. エラーは感嘆符の行で見分ける。l. で始まる行はソースの行番号を示し、その行は読んだ部分とまだ読んでいない部分に分かれている。
使う結果: 9. 変わらない PDF, 11. 命令. 支え: D (ログ). 証明される授業: コンパイルとエラーの修正.
よくあるエラー. 未定義の命令や環境、開かれていない数式、対応しない波括弧、見つからないファイル、プリアンブル中の文字列。どのメッセージも、ソースの解剖のいずれかの規則への違反を物語っている。
使う結果: 16. エラーを読む, 10. プリアンブルと本文, 12. グループと環境, 13. 予約文字, 14. パッケージとクラス. 支え: E (グループと有効範囲), F (予約文字). 証明される授業: コンパイルとエラーの修正.
デバッグの戦略. 最初のエラーを読み、グループや環境を断ち切らずに本文を半分ずつに分け、最小例に縮め、補助ファイルを消し、メッセージで検索する。
使う結果: 17. よくあるエラー, 4. 空白、段落、コメント, 8. フォルダと補助ファイル. 支え: D (ログ), E (グループと有効範囲), G (最初のエラー). 証明される授業: コンパイルとエラーの修正.
警告. 警告はコンパイルを止めないが、対処を要するものもある。未定義の参照、再コンパイルの要求、はみ出した行、欠けた文字である。
使う結果: 15. パスと latexmk, 16. エラーを読む. 支え: C (Unicode とフォント), D (ログ). 証明される授業: コンパイルとエラーの修正.
テキストへ. 連鎖は、最小の文書ではもう足りなくなるところで止まる。言語、文字体系、脚注、引用をもつテキストそのものが、次の単元の対象である。
コンテンツを読み込んでいます…