LaTeXのすゝめ

はじめに

本記事はレポート論文等の執筆に役立つツールのLaTeXを紹介しますLaTeXユーザや初心者を対象としています中級者や上級者には物足りないと思います

TeX/LaTeXとは

TeXテック/テフ1スタンフォード大学の計算機科学と数学の教授であるDonald E. Knuthが自ら開発したフリーの組版システムですTeXMS Wordなどの見たままを出力するWYSIWYGソフトウェアと異なり執筆組版出力の各段階を分けて処理を行います執筆に集中でき様々なプラットフォーム上で高品質なの文書を出力することができます

LaTeXラテック/ラテフ2はコンピューター科学者のLeslie Lamportによって開発されたTeXに機能を追加し手軽に組版が行えるようになったシステムです現在ではLaTeXを使うことが一般的なのでTeXLaTeXを指すことが多いです

TeXLaTeXの特徴は次のようなことがあげられます

  • WindowsmacOSLinuxなどの多くのプラットフォームで動作する
  • テキストファイルで文書を管理できる
  • 綺麗な数式を簡単に書ける3
  • 図や表を挿入した文書を作成できる
  • 図表の番号頁番号管理などを自動的に行い参照できる

日本語TeXについて

現在日本語対応している主なTeXエンジンは3つあります

  • pTeX昔々にアスキーが開発した日本語対応のエンジンです
  • upTeXUnicode対応でpTeXの進化系のようなエンジンです
  • LuaTeXLuaが使えPDFを直接出力する最新のエンジンです

昔からの名残で学会のフォーマットにpLaTeXを採用していることがありますほぼ上位互換のupLaTeXが現在の主流であることからupLaTeXを中心に解説します最新未来の標準LuaLaTeXについてはLuaLaTeXのすゝめで解説しています

upLaTeX について

田中琢爾さんが内部コードをUnicode化したpLaTeXの拡張版ですこれにより次のようなpLaTeXの問題が解決されました

  • JIS1, 2水準の範囲内の文字しか使えないこと
  • 8bitの非英語欧文の扱いが難しいこと
  • 日本語に限られた利用しか出来なく中国語や韓国語を扱えないこと

簡単な話いわゆる環境依存文字に優しくなったpLaTeXですpLaTeXを使う理由は皆無と言ってもいいでしょうpLaTeXのフォーマットしか用意されていない学会とかがあるなら別ですが…

LaTeX開発環境

文書作成には自分のPC等にLaTeXをインストールが必要ですTeX LiveというTeXのディストリビューションがおすすめですインストール方法はOSごとに異なるためTeX Live (TeX Wiki)を参考にしてください

自分のPCに環境を構築したくない場合はWeb上のサービスをおすすめします日本ではOverleafCloud LaTeXがメジャーだと思いますどちらも無料でブラウザ上からLaTeXを使用できます

文書作成の基本手順

upLaTeXによる文書作成は執筆組版出力の3つのステップで行います4

  1. 原稿執筆にはテキストエディタを用いてTeXファイルを作成する
  2. コマンドuplatexを用いてTeXファイルからDVIファイルを作成する
  3. コマンドdvipdfmxを用いてDVIファイルからPDFファイルを作成する5

この手順により執筆したTeXソースファイルからPDFの文書ファイルを出力することができます次に作成手順について例を用いて紹介します

原稿ファイルの執筆TeXファイルの作成

テキストエディタを用いて下に示すソースファイルsample.texを作成しますソースコードの具体的な説明はTeXソースの基本構成を参照してください

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
\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を呼び出しDVIdevice independent file formatファイル6を生成しますsample.texをコンパイルする場合は次のコマンドになります

uplatex sample

次のようなメッセージが表示されたならコンパイルは成功しsample.auxsample.logsample.dviが生成されているはずです

1
2
3
...
Output written on sample.dvi (1 page, 1076 bytes).
Transcript written on sample.log.

PDFに変換

DVIファイルをPDFの文書ファイルに変換するには次のコマンドで行えます7sample.pdfが生成されると思います

dvipdfmx sample

TeXソースの基本構成

upLaTeXのソースファイルは次の基本構成となります

1
2
3
4
5
6
\RequirePackage{plautopatch}
\documentclass[uplatex,dvipdfmx]{jsarticle}
% プリアンブル
\begin{document}
% 本文
\end{document}

1行目は(u)pLaTeXLaTeXの非互換をいい感じにしてくれるヤツです(u)pLaTeXを使用する場合は何も考えずに書いてください2行目は文書の種類document classを指定する部分です参照8プリアンブルでは文書の体裁に関する宣言やコマンド等の定義を行います本文が実際に出力される文書となりますなお記号%はコメントの開始を意味します参照

本文の執筆の基本ルール

  • 英文は単語の区切りで和文は任意の場所で改行されます
  • 段落を区切るには空行を入れる
  • 2文字以上の半角空白文字タブ文字は1文字の半角文字とみなされる
  • 段落のはじめのインデントはTeXが自動的に入ります全角スペースによるインデントは推奨されません
  • 次の記号はTeXのキーワード扱いになるのでそのままでは出力できません参照
    #$%&_{}<>\^|~
  • 記号%以降行末まではコメントになります
  • 記号\ではじまる文字列はコマンドまたは環境です環境とは\begin{環境名}\end{環境名}のような対になっている命令でそれ以外のものがコマンドです
  • \\により強制改行ができます安易な使用はお勧めしません

コマンド

ここでは主要な一部のコマンド等の紹介を行います

タイトル

文章のタイトルは次のように指定します

1
2
3
4
\title{表題}
\author{著者}
\date{日付}
\maketitle

見出し

1
2
3
4
5
6
7
\part{}
\chapter{} % jsarticle クラスには用意されていない
\section{}
\subsection{}
\subsubsection{}
\paragraph{段落}
\subparagraph{小段落}

\section*{節}のように*をつけることで番号をつけないようにできます

文字サイズ変更

文字サイズを変更するには次のコマンドが利用できますサイズはデフォルトの値になっていますコマンド以降のフォントが全て変更されます{\Large 文章}のようにすることで一部が変更できます9

コマンド サイズ
\tiny \tiny 5\,\mathrm{pt}\tiny 5\,\mathrm{pt}
\scriptsize \scriptsize 7\,\mathrm{pt}\scriptsize 7\,\mathrm{pt}
\footnotesize 8\,\mathrm{pt}8\,\mathrm{pt}
\small \small 9\,\mathrm{pt}\small 9\,\mathrm{pt}
\normalsize \normalsize 10\,\mathrm{pt}\normalsize 10\,\mathrm{pt}
\large \large 12\,\mathrm{pt}\large 12\,\mathrm{pt}
\Large \Large 14.4\,\mathrm{pt}\Large 14.4\,\mathrm{pt}
\LARGE \LARGE 17.28\,\mathrm{pt}\LARGE 17.28\,\mathrm{pt}
\huge \huge 20.74\,\mathrm{pt}\huge 20.74\,\mathrm{pt}
\Huge \Huge 24.88\,\mathrm{pt}\Huge 24.88\,\mathrm{pt}

これら以外の文字サイズに変更したい場合には\fontsizeコマンドを使用します文字サイズと行送りを指定して使用します

1
\fontsize{10.5pt}{15pt}\selectfont

フォントスタイル変更

フォントスタイルを変更するには次のコマンドが利用できます1011日本語用の明朝体やゴシック体にするコマンド\textmc\textgtも存在します

入力 出力
\textrm{Roman} \mathrm{Roman}\mathrm{Roman}
\textbf{Boldface} \mathbf{Boldface}\mathbf{Boldface}
\texttt{Typewriter} \mathtt{Typewriter}\mathtt{Typewriter}
\textit{Italic} \mathit{Italic}\mathit{Italic}
\textsf{SansSerif} \mathsf{Sans~Serif}\mathsf{Sans~Serif}
\textsl{Slanted} \mathrm{Slanted}\mathrm{Slanted}
\textsc{SmallCaps} \mathrm{S\scriptsize MALL}~\mathrm{C\scriptsize APS}\mathrm{S\scriptsize MALL}~\mathrm{C\scriptsize APS}

記号

キーワード扱いの文字や一部の特殊文字を出力するためには次のコマンドなどが利用できます12

入力 出力
\# \#\#
\$ \$\$
\% \%\%
\& \&\&
\_ \_\_
\{ \{\{
\} \}\}
- \text{-}\text{-}ハイフン
-- \text{–}\text{–}エヌダッシュ
--- \text{—}\text{—}エムダッシュ
$-$ --マイナス
`` \text{“}\text{“}開きダブルクォーテーション
'' \text{"}\text{"}閉じダブルクォーテーション13

改ページ

改ページを行なうコマンドには\pagebreak\newpage\clearpageなどがありますコマンドごとに細かな使用が異なりますが基本的に改ページに用いられます

環境

ここでは主要な一部の環境の紹介を行います

箇条書き

箇条書きのための環境として番号なし箇条書きitemize番号付き箇条書きenumerate見出し付き箇条書きdescriptionが用意されています次のように使用してください

1
2
3
4
\begin{itemize}
	\item 項目1
	\item 項目2
\end{itemize}

揃え

文字揃えは左揃えflushleft中央揃えcenter右揃えflushrightが指定できます次のように使用してください

1
2
3
4
\begin{flushleft}
	文字列1\\
	文字列2
\end{flushleft}

ドキュメントクラス

1行目のドキュメントクラス指定は次のように記述します

1
\documentclass[オプション]{ドキュメントクラス}

jsclasses互換クラス次の通りですjarticle等はJIS組版規則に合わないのでお勧めできません現在は日本語組版処理の要件に準拠したjlreqが注目を浴びています詳しくはjlreq (GitHub)で説明されています

種類 ドキュメントクラス 内容
article jsarticle 論文レポート用
book jsbook 書籍用

一部のオプションは次の通りです

オプション 内容
11pt, 12pt 本文の文字サイズ11pt12pt
landscape 横長
twocolumn 2段組
fleqn 数式を左揃え
titlepage 独立したタイトルページ
a4paper 用紙サイズをA4に指定
b5paper 用紙サイズをB5に指定

目次/相互参照

LaTeXには自動で節やキャプションの参照が行えます文書の一部を書き直すときも自動で変更してくれるのでとても便利です

目次

目次を出力するには挿入したい場所に\tableofcontentsと書きTeX ファイルを3回コンパイルしてください同様に図や表の目次を出力したい場所には\listoffigures\listoftablesと書いてください

相互参照

節や図表の表題式の後に\label{ラベル}を書くことでその番号を参照したいところで\ref{ラベル}とすれば対応する番号を参照できますまた\pageref{ラベル}とすればページ番号が参照できます相互参照を使う場合にはTeXファイルを2回コンパイルする必要があります

1
2
3
4
5
6
本研究で用いた試験材料の外観を図\ref{fig:test}に示す
\begin{figure}
	....
	\caption{実験装置の外観}
	\label{fig:test}
\end{figure}
1
2
3
4
温度特性は(\ref{eq:test})で近似できる
\begin{align}
	y = \exp(x) + c. \label{eq:test}
\end{align}

数式

本文中の数式

本文中にf(x) = ax + bf(x) = ax + bのように数式を書くには次のように$で挟むことでできます

1
本文中に$f(x) = ax + b$のように数式を書くには次のように\texttt{\$}で挟むことでできます

別行立て数式

別行立て数式は

\begin{align} f(x) &= ax + b\\ g(x) &= cx^{2} + dx + e \end{align}\begin{align} f(x) &= ax + b\\ g(x) &= cx^{2} + dx + e \end{align}

のように環境alignにより書くことができます14他の数式環境のeqnarrayも有名だがamsmath.styではサポートしていないので推奨できません

1
2
3
4
5
6
別行立て数式は
\begin{align}
	f(x) &= ax + b\\
	g(x) &= cx^{2} + dx + e
\end{align}
のように環境により書くことができます

おわりに

今回は(u)pLaTeXを中心にLaTeXごく一部を紹介をしました本記事では以下に示すような紹介できてないです

  • 数式モード中でのコマンドなど
  • 特にEPSとかPDFの話

今後暇を見付けて記事のアップデートしていきたいと思います楽しいLaTeXライフを願っています

文献

  1. 改訂第8LaTeX2e美文書作成入門
  2. TeX Wiki
  3. Overleaf
  4. Cloud LaTeX
  5. LuaLaTeXのすゝめ
  6. jlreq (GitHub)
  7. LaTeXのすゝめ(Qiita)

  1. TeXのように書くことが望ましいです難しい場合はTeXにしましょうこの記事では統一のためにTeXにしています ↩︎

  2. LaTeXのように書くことが望ましいです難しい場合はLaTeXにしましょう ↩︎

  3. TeXの数式記法は現在一般的に使用されています ↩︎

  4. (u)pLaTeXのようなレガシーLaTeXDVIを経由してPDFを作成しますpdfLaTeXLuaLaTeXなどのモダンLaTeXは直接PDFを出力するので2つのステップ執筆と出力になります ↩︎

  5. 他のソフトコマンドによりPDFファイル以外のPSファイルを出力する場合などもあります ↩︎

  6. レイアウト情報を埋め込んだファイルのことです ↩︎

  7. 古いdvipdfmというDVIウェアもあるが今は使えません ↩︎

  8. uplatexはこのソースファイルがupLaTeX用であることを明示するためにありますまたdvipdfmxgraphicxcolorパッケージのドライバ指定用ですグローバルオプションとして全てのパッケージに適用されます ↩︎

  9. MathJaxでは\footnotesizeが使えないのでHTMLfont-size: 80%で代用しています ↩︎

  10. \bf\itのようなフォントスタイルを変更するコマンドは古く使ってはいけません現在は\bfseries等の使用が推奨されます ↩︎

  11. MathJaxではslscが使えないためHTMLskewX(-10deg)\scriptsizeで代用しています ↩︎

  12. MathJaxでは一部うまく出力できないので他の方法で妥協してあります ↩︎

  13. TeXでは1キーで入力するダブルクォーテーション"の使用は推奨されません ↩︎

  14. このブログでは式番号が表示されないが実際のTeXでは表示されますまたTeXで式番号を表示しない場合は環境をalign*とします ↩︎