レッスン 4

文書の論理構造

このレッスンでは「見た目」の変更を行う基本的なコマンドと「論理マークアップ」を行うコマンドを比較します.その上で,見出しや箇条書きの作り方を見ていきます.

LaTeX は文書の「見た目」を直接いじるだけでなく,「論理構造」に集中するためのしくみをいくつも備えています.ほとんどの場合,そうした論理構造に関わる機能を用いた方が,別の目的に文書ソースを再利用したり,後から見た目を変更したりといったことをする際に遥かに有利となります.

構造と見た目

まずは LaTeX で最も一般的な論理マークアップである \emph コマンドの例から考えていきます.このコマンドは,日本語の書体を太字に変更します.印刷物においては,これは本文を強調する一般的な手法です.(訳注:ただし,多くの日本語向け文書クラスでは,日本語の書体をゴシック体にする一方で欧文書体をイタリックにするため,このデフォルト設定ではちぐはぐで見栄えがしません.)

\documentclass{jsarticle}
\begin{document}
これが\emph{強調されたテキストと\emph{さらに入れ子にされたテキスト}}です.

これが\textbf{太字にされたテキストと\textbf{されに入れ子にされたテキスト}}です.
\end{document}

\textbf はテキストを太字にするコマンドですが,これは常に中身を太字にするものなので,入れ子にしても効果がありません.一方で \emph の例を見ると,こちらは入れ子にした場合も効果があります.さらに,状況によって強調を太字以外の方法で表現する場合もあります.例えば,プレゼンテーション用のスライドでは文字色を変更するということが一般によく行われます.論理的なマークアップを利用すれば,本文執筆時にそのような見た目のことをそれほど気にしなくて済むという利点があります.

後ほど手動で文字の見た目を変更する方法についても説明しますが,今のところはもう1つ \textit を紹介しておきましょう.これは欧文の書体をイタリックに変更するコマンドです.

見出しコマンド

皆さんはワード・プロセッサを用いたことがあると思いますが,そうしたソフトウェアでは多くの人は「まず見出しのテキストを入力し,それを単純に大きくし,さらに太字に変更して,それから次の行を始める」ということを行います.LaTeX においては,論理マークアップの方が手でフォーマットをいじるよりもむしろ簡単に利用できます.具体的には \section というコマンドを用います.このコマンドは,フォント変更,垂直方向のスペーシングをはじめ様々なことを処理し,文書全体を通して一貫性のある出力を保ちます.

\documentclass{jsarticle}
\begin{document}
はじめまして!

これがはじめての文書です.

\section{最初のセクションの見出し}

最初のセクションのテキスト.セクションは日本語では「節」です.

2つ目の段落.

\subsection{最初のセクションのサブセクション}

サブセクションのテキスト.サブセクションは日本語では「小節」と呼ばれます.

\section{2つ目のセクション}

2つ目のセクションのテキスト.

\end{document}

標準的な jsarticle クラスの設定を用いている場合,LaTeX はセクションやサブセクションに番号を振り,その番号を見出しに含めるとともにボールド体で出力します.こうしたデザインを変更する方法については次のレッスンで少し見ていきます.

LaTeX ではドキュメントをいくつもの階層に分けることができます.

さらに小さな階層も存在します.小々節の「次」には \paragraph というものがありますが,ほとんどの場合ここまで使うのは「やりすぎ」です.(わかりにくいですが \paragraph はセクショニングのコマンドです.段落を開始する命令ではありません!)

ここまで聞くと,ドキュメントのタイトル(表題)についてどうするのか気になるかもしれませんね.タイトル向けには,いくつか特別な命令がありますが,必ずしもすべてのドキュメントがそれらを利用しているわけではありません.そのため,タイトル向けのコマンドについてはこのレッスンの追加解説で扱います

箇条書き

論理マークアップが便利な別のケースとして,箇条書きが挙げられます.LaTeX 標準では2種類の一般的な箇条書きが用意されています.

\documentclass{jsarticle}
\begin{document}

順序付き
\begin{enumerate}
  \item 第1の項目
  \item 第2の項目
  \item 第3の項目
\end{enumerate}

順序なし
\begin{itemize}
  \item 第1の項目
  \item 第2の項目
  \item 第3の項目
\end{itemize}

\end{document}

お気付きの通り,各項目を開始するのには \item を用います.このコマンドは,自動的に各箇条書きの種類に合ったラベル(マーカもしくは番号)を追加してくれます.

練習問題

いくつかの階層の見出しを作成してみましょう.\documentclass{jsarticle} の代わりに \documentclass{jsreport} を利用して \chapter コマンドも試してみましょう.どのような見出しが出力されましたか? さらに \paragraph\subparagraph も試してみましょう.デフォルトでは,これらには番号は振られません.

箇条書きリストを作り,さらに別のリストをその中に入れ子にしてみましょう.ラベルの見た目はどう変化しましたか? LaTeX の標準機能では4段階目までしか入れ子にすることができません.しかし,そもそも5段階以上に深くネストされたリストはそもそも良いリストとは言えない場合が多いです!