はじめに
本記事はレポート・論文等の執筆に役立つツールの LaTeX を紹介します。非 LaTeX ユーザや初心者を対象としています。中級者や上級者には物足りないと思います。
TeX / LaTeX とは
TeX(テック / テフ)1は,スタンフォード大学の計算機科学と数学の教授である Donald E. Knuth が自ら開発したフリーの組版システムです。TeX は MS Word などの見たままを出力する WYSIWYG ソフトウェアと異なり,執筆・組版・出力の各段階を分けて処理を行います。執筆に集中でき,様々なプラットフォーム上で高品質なの文書を出力することができます。
LaTeX(ラテック / ラテフ)2はコンピューター科学者の Leslie Lamport によって開発された,TeX に機能を追加し手軽に組版が行えるようになったシステムです。現在では LaTeX を使うことが一般的なので,「TeX」で LaTeX を指すことが多いです。
TeX,LaTeX の特徴は次のようなことがあげられます。
- Windows,macOS,Linux などの多くのプラットフォームで動作する。
- テキストファイルで文書を管理できる。
- 綺麗な数式を簡単に書ける3。
- 図や表を挿入した文書を作成できる。
- 章・節,式,図表の番号,頁番号管理などを自動的に行い,参照できる。
日本語 TeX について
現在,日本語対応している主な TeX エンジンは 3 つあります。
- pTeX:昔々にアスキーが開発した日本語対応のエンジンです。
- upTeX:Unicode 対応で pTeX の進化系のようなエンジンです。
- LuaTeX:Lua が使え,PDF を直接出力する最新のエンジンです。
昔からの名残で学会のフォーマットに pLaTeX を採用していることがあります。ほぼ上位互換の upLaTeX が現在の主流であることから upLaTeX を中心に解説します。最新(未来の標準)の LuaLaTeX については,LuaLaTeX のすゝめで解説しています。
upLaTeX について
田中 琢爾さんが内部コードを Unicode 化した pLaTeX の拡張版です。これにより次のような pLaTeX の問題が解決されました。
- JIS 第 1, 2 水準の範囲内の文字しか使えないこと。
- 8bit の非英語欧文の扱いが難しいこと。
- 日本語に限られた利用しか出来なく,中国語や韓国語を扱えないこと。
簡単な話,いわゆる環境依存文字に優しくなった pLaTeX です。pLaTeX を使う理由は皆無と言ってもいいでしょう。(pLaTeX のフォーマットしか用意されていない学会とかがあるなら別ですが...)
LaTeX 開発環境
文書作成には自分の PC 等に LaTeX をインストールが必要です。TeX Live という TeX のディストリビューションがおすすめです。インストール方法は OS ごとに異なるため,TeX Live (TeX Wiki) を参考にしてください。
自分の PC に環境を構築したくない場合は Web 上のサービスをおすすめします。日本では Overleaf と Cloud LaTeX がメジャーだと思います。どちらも無料でブラウザ上から LaTeX を使用できます。
文書作成の基本手順
upLaTeX による文書作成は執筆・組版・出力の 3 つのステップで行います4。
- 原稿執筆にはテキストエディタを用いて TeX ファイルを作成する。
- コマンド(
uplatex
)を用いて TeX ファイルから DVI ファイルを作成する。 - コマンド(
dvipdfmx
)を用いて DVI ファイルから PDF ファイルを作成する5。
この手順により執筆した TeX ソースファイルから PDF の文書ファイルを出力することができます。次に作成手順について例を用いて紹介します。
原稿ファイルの執筆(TeX ファイルの作成)
テキストエディタを用いて下に示すソースファイル(sample.tex
)を作成します。ソースコードの具体的な説明は TeX ソースの基本構成を参照してください。
\RequirePackage{plautopatch}
\documentclass[uplatex,dvipdfmx]{jsarticle}
\title{{\LaTeX}のすゝめ}
\author{Daiji}
\begin{document}
\maketitle
\section{はじめに}
{\TeX}は組版システムです。
{\TeX}を使いやすくするために,{\LaTeX}が開発されました。
p{\TeX}は日本語対応の{\TeX}です。
up{\TeX}はUnicode対応のp{\TeX}です。
\end{document}
組版(コンパイル)
upLaTeX を呼び出し,DVI(device independent file format)ファイル6を生成します。sample.tex
をコンパイルする場合は,次のコマンドになります。
uplatex sample
次のようなメッセージが表示されたなら,コンパイルは成功し,sample.aux
,sample.log
,sample.dvi
が生成されているはずです。
...
Output written on sample.dvi (1 page, 1076 bytes).
Transcript written on sample.log.
PDF に変換
DVI ファイルを PDF の文書ファイルに変換するには次のコマンドで行えます7。sample.pdf
が生成されると思います。
dvipdfmx sample
TeX ソースの基本構成
upLaTeX のソースファイルは次の基本構成となります。
\RequirePackage{plautopatch}
\documentclass[uplatex,dvipdfmx]{jsarticle}
% プリアンブル
\begin{document}
% 本文
\end{document}
1 行目は (u)pLaTeX と LaTeX の非互換をいい感じにしてくれるヤツです。(u)pLaTeX を使用する場合は何も考えずに書いてください。2 行目は文書の種類(document class)を指定する部分です(参照)8。プリアンブルでは文書の体裁に関する宣言やコマンド等の定義を行います。本文が実際に出力される文書となります。なお,記号 %
はコメントの開始を意味します(参照)。
本文の執筆の基本ルール
- 英文は単語の区切りで,和文は任意の場所で改行されます。
- 段落を区切るには,空行を入れる。
- 2 文字以上の半角空白文字,タブ文字は 1 文字の半角文字とみなされる。
- 段落のはじめのインデントは TeX が自動的に入ります。全角スペースによるインデントは推奨されません。
- 次の記号は,TeX のキーワード扱いになるので,そのままでは出力できません(参照)。
#
,$
,%
,&
,_
,{
,}
,<
,>
,\
,^
,|
,~
- 記号
%
以降,行末まではコメントになります。 - 記号
\
ではじまる文字列はコマンドまたは環境です。環境とは\begin{環境名}
と\end{環境名}
のような対になっている命令で,それ以外のものがコマンドです。 -
\\
により強制改行ができます。安易な使用はお勧めしません。
コマンド
ここでは主要な一部のコマンド等の紹介を行います。
タイトル
文章のタイトルは次のように指定します。
\title{表題}
\author{著者}
\date{日付}
\maketitle
見出し
\part{部}
\chapter{章} % jsarticle クラスには用意されていない
\section{節}
\subsection{項}
\subsubsection{目}
\paragraph{段落}
\subparagraph{小段落}
\section*{節}
のように,*
をつけることで,番号をつけないようにできます。
文字サイズ変更
文字サイズを変更するには次のコマンドが利用できます。サイズはデフォルトの値になっています。コマンド以降のフォントが全て変更されます。{\Large 文章}
のようにすることで一部が変更できます。(Qiita では \footnotesize
が使えないため, \small
で代用しています。)
コマンド | サイズ |
---|---|
\tiny |
$\tiny 5\,\mathrm{pt}$ |
\scriptsize |
$\scriptsize 7\,\mathrm{pt}$ |
\footnotesize |
$\small 8\,\mathrm{pt}$ |
\small |
$\small 9\,\mathrm{pt}$ |
\normalsize |
$\normalsize 10\,\mathrm{pt}$ |
\large |
$\large 12\,\mathrm{pt}$ |
\Large |
$\Large 14.4\,\mathrm{pt}$ |
\LARGE |
$\LARGE 17.28\,\mathrm{pt}$ |
\huge |
$\huge 20.74\,\mathrm{pt}$ |
\Huge |
$\Huge 24.88\,\mathrm{pt}$ |
これら以外の文字サイズに変更したい場合には \fontsize
コマンドを使用します。文字サイズと行送りを指定して使用します。
\fontsize{10.5pt}{15pt}\selectfont
フォントスタイル変更
フォントスタイルを変更するには次のコマンドが利用できます9。日本語用の明朝体やゴシック体にするコマンド \textmc
,\textgt
も存在します。(Qiita では sl
,sc
が使えないため,it
,rm
で代用しています。)
入力 | 出力 |
---|---|
\textrm{Roman} |
$\mathrm{Roman}$ |
\textbf{Boldface} |
$\mathbf{Boldface}$ |
\texttt{Typewriter} |
$\mathtt{Typewriter}$ |
\textit{Italic} |
$\mathit{Italic}$ |
\textsf{SansSerif} |
$\mathsf{Sans~Serif}$ |
\textsl{Slanted} |
$\mathit{Slanted}$ |
\textsc{SmallCaps} |
$\mathrm{S\scriptsize MALL}~\mathrm{C\scriptsize APS}$ |
記号
キーワード扱いの文字や一部の特殊文字を出力するためには次のコマンドなどが利用できます。
入力 | 出力 |
---|---|
\# |
$\text{#}$ |
\$ |
$\text{\$}$ |
\% |
$\text{%}$ |
\& |
$\text{&}$ |
\_ |
$\text{_}$ |
\{ |
$\{$ |
\} |
$\}$ |
- |
$\text{-}$(ハイフン) |
-- |
$\text{–}$(エヌダッシュ) |
--- |
$\text{—}$(エムダッシュ) |
$-$ |
$-$(マイナス) |
`` |
$\text{``}$(開きダブルクォーテーション) |
'' |
$\text{''}$(閉じダブルクォーテーション)10 |
改ページ
改ページを行なうコマンドには,\pagebreak
,\newpage
,\clearpage
などがあります。コマンドごとに細かな使用が異なりますが基本的に改ページに用いられます。
環境
ここでは主要な一部の環境の紹介を行います。
箇条書き
箇条書きのための環境として,番号なし箇条書き(itemize
),番号付き箇条書き(enumerate
),見出し付き箇条書き(description
)が用意されています。次のように使用してください。
\begin{itemize}
\item 項目1
\item 項目2
\end{itemize}
揃え
文字揃えは左揃え(flushleft
),中央揃え(center
),右揃え(flushright
)が指定できます。次のように使用してください。
\begin{flushleft}
文字列1\\
文字列2
\end{flushleft}
ドキュメントクラス
1 行目のドキュメントクラス指定は次のように記述します。
\documentclass[オプション]{ドキュメントクラス}
jsclasses
互換クラス次の通りです。jarticle
等は JIS 組版規則に合わないのでお勧めできません。現在は日本語組版処理の要件に準拠した jlreq
が注目を浴びています。詳しくは jlreq (GitHub) で説明されています。
種類 | ドキュメントクラス | 内容 |
---|---|---|
article | jsarticle |
論文・レポート用 |
book | jsbook |
書籍用 |
一部のオプションは次の通りです。
オプション | 内容 |
---|---|
11pt, 12pt | 本文の文字サイズ(11pt,12pt) |
landscape | 横長 |
twocolumn | 2 段組 |
fleqn | 数式を左揃え |
titlepage | 独立したタイトルページ |
a4paper | 用紙サイズを A4 に指定 |
b5paper | 用紙サイズを B5 に指定 |
目次 / 相互参照
LaTeX には自動で節やキャプションの参照が行えます。文書の一部を書き直すときも自動で変更してくれるのでとても便利です。
目次
目次を出力するには,挿入したい場所に \tableofcontents
と書き,TeX ファイルを 3 回コンパイルしてください。同様に図や表の目次を出力したい場所には \listoffigures
,\listoftables
と書いてください。
相互参照
節や図表の表題,式の後に \label{ラベル}
を書くことで,その番号を参照したいところで \ref{ラベル}
とすれば,対応する番号を参照できます。また,\pageref{ラベル}
とすればページ番号が参照できます。相互参照を使う場合には,TeX ファイルを 2 回コンパイルする必要があります。
本研究で用いた試験材料の外観を図\ref{fig:test}に示す。
\begin{figure}
....
\caption{実験装置の外観}
\label{fig:test}
\end{figure}
温度特性は,式(\ref{eq:test})で近似できる。
\begin{align}
y = \exp(x) + c. \label{eq:test}
\end{align}
数式
本文中の数式
本文中に $f(x) = ax + b$ のように数式を書くには次のように $
で挟むことでできます。
本文中に$f(x) = ax + b$のように数式を書くには次のように\verb|$|で挟むことでできます。
別行立て数式
別行立て数式は,
\begin{align}
f(x) &= ax + b\\
g(x) &= cx^{2} + dx + e
\end{align}
のように環境 align
により書くことができます11。他の数式環境の eqnarray
も有名だが amsmath.sty
ではサポートしていないので推奨できない。
別行立て数式は,
\begin{align}
f(x) &= ax + b\\
g(x) &= cx^{2} + dx + e
\end{align}
のように環境により書くことができます。
おわりに
今回は,(u)pLaTeX を中心に LaTeX のごく一部を紹介をしました。本記事では以下に示すような紹介できてないです。
- 数式モード中でのコマンドなど
- 表
- 図(特に EPS とか PDF の話)
今後暇を見付けて記事のアップデートしていきたいと思います。楽しい LaTeX ライフを願っています。
文献
-
$\def\FN#1{\style{font:100% Helvetica, sans-serif}{#1}}\def\FS#1{\style{font:80% Helvetica, sans-serif}{#1}}\def\TeX{\FN{T}\kern-.15em\lower.19em{\FN{E}}\kern-.09em\FN{X}}\def\LaTeX{\FN{L}\kern-.19em\lower-.14em{\FS{A}}\kern-.08em\TeX}\TeX$ のように書くことが望ましいです。難しい場合は TeX にしましょう。この記事では統一のために TeX にしています。 ↩
-
$\def\FN#1{\style{font:100% Helvetica, sans-serif}{#1}}\def\FS#1{\style{font:80% Helvetica, sans-serif}{#1}}\def\TeX{\FN{T}\kern-.15em\lower.19em{\FN{E}}\kern-.09em\FN{X}}\def\LaTeX{\FN{L}\kern-.19em\lower-.14em{\FS{A}}\kern-.08em\TeX}\LaTeX$ のように書くことが望ましいです。難しい場合は LaTeX にしましょう。 ↩
-
TeX の数式記法は現在一般的に使用されています。 ↩
-
(u)pLaTeX のようなレガシー LaTeX は DVI を経由して PDF を作成します。pdfLaTeX,LuaLaTeX などのモダン LaTeX は直接 PDF を出力するので 2 つのステップ(執筆と出力)になります。 ↩
-
他のソフト(コマンド)により PDF ファイル以外の PS ファイルを出力場合などもあります。 ↩
-
レイアウト情報を埋め込んだファイルのことです。 ↩
-
古い
dvipdfm
という DVI ウェアもあるが今は使えません。 ↩ -
uplatex
はこのソースファイルが upLaTeX 用であることを明示するためにあります。また,dvipdfmx
はgraphicx
やcolor
パッケージのドライバ指定用です。グローバルオプションとして全てのパッケージに適用されます。 ↩ -
\bf
や\it
のようなフォントスタイルを変更するコマンドは古く使ってはいけない。現在は\bfseries
等の使用が推奨される。 ↩ -
TeX では 1 キーで入力するダブルクォーテーション「"」の使用は推奨されない。 ↩
-
Qiita では式番号が表示されないが,実際の TeX では表示されます。また,TeX で式番号を表示しない場合は環境を
align*
とします。 ↩