卒論/修論/博論のためのモダンな LaTeX の書き方
古い環境や、非推奨のコマンド・パッケージ・書式で LaTeX を書いていませんか?モダンな LaTeX で美しい卒業論文/修士論文/博士論文を書く方法を紹介します。
古いコマンド・パッケージ・書式を新しいものに書き換えるのはもちろん、ドキュメントクラスや処理系をよりモダンなものにすると、LaTeX ファイルの構造的な(セマンティックな、コードとしての)美しさや PDF ファイルの見た目の美しさを磨くことができます。
注意事項
まだ LaTeX をインストールしていない人、LaTeX をインストールして1年以上経った人は、最新の LaTeX をインストールしましょう。
- 本記事は、上記のサイトでも紹介しているような W32TeX による TeX の環境で、卒業論文や修士論文などの和文論文を書く人を対象としています。
- LaTeX ファイルの基本的な書き方は、LaTeX の教科書である「LaTeX2e 美文書作成入門」(とそのサポートページ)を読みましょう。2015年現在、2013年に出版された改訂第6版が最新版です。3、4年ごとに改訂版が出版されているので、当書を購入される場合は最新版が出版されていないか確認しましょう。
- 書式(エンコーディングやドキュメントクラスなど)が指定されている大学/大学院や学会もあります。本記事で推奨している書式と異なる場合は、指定されている書式に素直に従いましょう。
モダンな LaTeX 環境の構築
モダンな LaTeX 環境を構築するために、エンコーディングを UTF-8 に、ドキュメントクラスを jsclasses に、処理系を e-upTeX にします。
エンコーディング:UTF-8
LaTeX ファイルを書き始める前に、任意のテキストエディタでファイルのエンコーディングを UTF-8 にしましょう。日本では、エンコーディングを Shift_JIS にしている人が多いです。しかし、よりモダンな LaTeX ファイルを書くために、エンコーディングは UTF-8 にしましょう。
TeXworks の既定のエンコーディングは UTF-8 なので、何もする必要はありません。念のため、メニューの「編集」→「設定」をクリックして「TeXworksの設定」ダイアログを開き、「エディタ」タブの「エンコーディング」が「UTF-8」になっていることを確認してください。
メモ帳、サクラエディタなどの(特に日本製の)テキストエディタでは、既定のエンコーディングが Shift_JIS になっています。これらのテキストエディタでは、エンコーディングを UTF-8 に変更する必要があります。
ドキュメントクラス:jsclasses
LaTeX ファイルは、ファイルの冒頭にドキュメントクラスが指定されます。以下の例では、jarticle というドキュメントクラスを指定しています。
\documentclass{jarticle}
日本では、ドキュメントクラスとして jarticle や jreport が広く用いられています。しかし、より美しい PDF ファイルを生成するために、ドキュメントクラスには jsclasses を指定しましょう。
jsclasses とは、冒頭で紹介した「LaTeX2e 美文書作成入門」の著者の1人である奥村氏が作成された新ドキュメントクラスです。jsclasses には jsarticle/jsreport/jsbook という3つのドキュメントクラスが含まれています1。これらは、LaTeX 標準のドキュメントクラスである jarticle/jreport/jbook に数多くの改良がなされたものです。
jsclasses | 用途・論理構造 |
---|---|
jsarticle | 記事、論文用のドキュメントクラスです。 部、節、小節、小々節、段落、小段落からなります。 |
jsreport | レポート、報告書用のドキュメントクラスです。 部、章、節、小節、小々節、段落、小段落からなります。 |
jsbook | 書籍用のドキュメントクラスです。 部、章、節、小節、小々節、段落、小段落からなります。 |
jsclasses の内 jsbook は書籍用のドキュメントクラスであり、論文を書くためには jsarticle か jsreport のどちらかを使用します。上記の表のように、jsarticle と jsreport の論理構造における違いは章(\chapter{}
コマンド)が含まれているか否かという点です。そこで、章を用いずとも(短めの)論文を書ける場合は jsarticle を、章を用いて(長めの)論文を書く場合は jsreport を指定します。卒業論文や修士論文などは文章量が多いので、jsreport を指定することになると思います。
ドキュメントクラスに jsarticle を指定する場合は、LaTeX ファイルの冒頭に以下のように記述します。
\documentclass{jsarticle}
ドキュメントクラスに jsreport を指定する場合は、LaTeX ファイルの冒頭に以下のように記述します2。
\documentclass[report]{jsbook}
処理系:e-upTeX
LaTeX ファイルをコマンドプロンプトなどでタイプセット(コンパイル)するとき、以下のように platex
コマンドを入力している人も多いかと思います。
$ platex sample.tex
この platex
は、e-pTeX という処理系を用いて LaTeX ファイルをタイプセット(コンパイル)するというコマンドです。試しにコマンドプロンプトなどで以下のように入力すると、処理系として e-pTeX を用いていることが分かります。
$ platex -version e-pTeX 3.14159265-p3.7-150805-2.6 (sjis) (TeX Live 2015/W32TeX) kpathsea version 6.2.1 ptexenc version 1.3.3 Copyright 2015 D.E. Knuth. There is NO warranty. Redistribution of this software is covered by the terms of both the e-pTeX copyright and the Lesser GNU General Public License. For more information about these matters, see the file named COPYING and the e-pTeX source. Primary author of e-pTeX: Peter Breitenlohner.
日本では、処理系に e-pTeX が広く用いられています。しかし、よりモダンな LaTeX ファイルを書くために、処理系に e-upTeX を指定しましょう。
e-upTeX とは、e-pTeX などの従来の処理系の上位互換に当たるものです。e-upTeX のメリットの例として、以下のようなものがあります。
- 組版品質の向上
- エンコーディングが UTF-8 である LaTeX ファイルの取り扱いが可能
- 内部文字コードを Unicode にすることで、従来の処理系では扱えなかった一部の日本語も扱えることが可能
TeX の処理系については、以下のサイトが参考になります。
このサイトでも、
pTeX系の中ではUnicode対応などで e-upTeX がオススメ感があります。 jsclasses など日本語組版に必要なパッケージも e-upTeX に対応しているので、e-upTeXがいいのではないでしょうか。
と述べられています。
処理系に e-upTeX を用いるためには、LaTeX ファイルのドキュメントクラスを指定する箇所に uplatex
オプションを付けなければなりません。ドキュメントクラスに jsarticle を、処理系に e-upTeX を指定する場合は、以下のように記述します。
\documentclass[uplatex]{jsarticle}
ドキュメントクラスに jsreport を、処理系に e-upTeX を指定する場合は、以下のように記述します。
\documentclass[uplatex, report]{jsbook}
LaTeX ファイルをタイプセット(コンパイル)する
ここまでで、モダンな LaTeX 環境を整えたので、試しに LaTeX ファイルをタイプセット(コンパイル)してみましょう。まず、任意のテキストエディタで以下のような UTF-8 の sample.tex
を作成してください。
% sample.tex \documentclass[uplatex,report]{jsbook} \begin{document} % 表紙 \title{平成27年度 卒業論文\\ ポラーノの広場} \author{宮沢賢治} \date{2016年 3月} \maketitle % 本文 \chapter{序論} \section{はじめに} あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモリーオ市、郊外のぎらぎらひかる草の波。 \section{目的} あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモリーオ市、郊外のぎらぎらひかる草の波。 \section{章構成} あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモリーオ市、郊外のぎらぎらひかる草の波。 \end{document}
この sample.tex
を TeXworks でタイプセットする場合と、コマンドプロンプトでタイプセットする場合の2通りを紹介します。
TeXworks でタイプセットする
TeXworks でタイプセットするためには、準備が必要です。
- メニューの「編集」→「設定」をクリックして、「TeXworksの設定」ダイアログを開きます。
「タイプセット」タブをクリックして、「タイプセットの方法」の右下にある + ボタンをクリックします。
- 「タイプセットの方法を設定する」ダイアログが開かれるので、以下のように設定して「OK」をクリックします。
- 名前:upLaTeX(ptex2pdf)
- プログラム:ptex2pdf
- 引数:右下の + ボタンをクリックして、表示された「新しい引数」に以下の引数をそれぞれ追加します。
- -l
- -u
- -ot
- $synctexoption
- $fullname
- 「実行後、PDFを表示する」のチェックは入れたままにします。
- 「TeXworks の設定」ダイアログに戻ったら、「OK」をクリックします。
以上で、準備は完了です。あとは、TeXworks の左上にあるプルダウンメニューから「upLaTeX(ptex2pdf)」を選択し、緑色のタイプセットボタンをクリックすればタイプセットすることができます。
コマンドプロンプトでタイプセットする
コマンドプロンプトでタイプセットするためには、uplatex
コマンドを用います。cd
コマンドなどを用いて sample.tex
があるフォルダに移動し、以下のように入力します。
$ uplatex sample.tex This is e-upTeX, Version 3.14159265-p3.7-u1.20-150805-2.6 (utf8.uptex) (TeX Live 2015/W32TeX) (preloaded format=uplatex) restricted \write18 enabled. entering extended mode (./sample.tex(guessed encoding: UTF-8 = utf8) pLaTeX2e <2011/05/07u00>+0 (based on LaTeX2e <2015/10/01> patch level 2) Babel <3.9m> and hyphenation patterns for 79 languages loaded. (c:/w32tex/share/texmf-dist/tex/uplatex/jsclasses-utf8/jsbook.cls(guessed encoding: UTF-8 = utf8) Document Class: jsbook 2014/02/07 okumura ) No file sample.aux. ・・・1・・・ [1] (./sample.aux(guessed encoding: UTF-8 = utf8)) ) Output written on sample.dvi (1 page, 1272 bytes). Transcript written on sample.log.
以上のようにタイプセットが成功すると、sample.tex
と同じフォルダに sample.aux
と sample.dvi
と sample.log
の3つのファイルが生成されます.続いて、以下のように dvipdfmx
コマンドを入力すると、sample.tex
と同じフォルダに sample.pdf
が生成されます。
$ dvipdfmx sample.dvi sample -> sample.pdf [1] 22353 bytes written
非推奨のコマンド・パッケージ・書式
LaTeX ファイルを書くためのモダンな環境が整ったので、あとは適切な書式で LaTeX ファイルを書いていくだけです。しかし、現在では非推奨とされているコマンド・パッケージ・書式を用いないように気をつけなければなりません。過去問やテンプレート、インターネットで得られた情報の中には、今となってはバッドノウハウとなっている情報もあるかもしれません。以下のサイトなどを参考にして、正しいコマンド・パッケージ・書式を用いるようにしましょう。
- 古い情報 - TeX Wiki
- 使ってはいけない LaTeX のコマンド・パッケージ・作法 - Ichiro Maruta Homepage
- 日本人のための LaTeX タブー集 ~画像読込編~ - Qiita
- 日本語 LaTeX を使うときに注意するべきこと
- The history of TeX and its recent advances
- これから卒業論文などでLaTeXを使う人へ向けて - hak7a3が書き残す何か
- 数学の常識・非常識—由緒正しい TEX 入力法
以上のサイトでも紹介されているバッドノウハウの中から、代表的な(よく使われがちな)ものを4つだけ紹介します。ここで紹介するバッドノウハウがなぜ Bad なのか、などの詳細は以上のサイトを熟読しましょう。
太字や斜字など
# Bad `{\bf ...}` や `{\it ...}` など
# Good `\textbf{...}` や `\textit{...}` など
数式
# Bad
$$ ... $$
# Good `\[ ... \]` や `\begin{align} … \end{align}` など
中央揃え
# Bad \begin{figure} \begin{center} \includegraphics{...} \end{center} \end{figure}
# Good \begin{figure} \centering \includegraphics{...} \end{figure}
EPS 画像
# Bad EPS 画像
# Good PDF, PNG or JPG etc.
余談
多くの人が古いコマンドをいまだに使っている理由の1つとして、「latex コマンド」などの検索キーワードで検索すると上位に表示されるLaTeXコマンド集というサイトの影響が考えられます。このサイトには、このページで紹介した Bad なコマンドがいまだに掲載されています。
検索結果の上位に掲載されているからといって、正しい(新しい)情報とは限らないということが改めて分かりますね。
参考サイト
- インストール
- 新ドキュメントクラス jsclasses
- upLaTeX
- TeXworks
- ptex2pdf
-
正確に述べると、jsclasses に jsreport というドキュメントクラスはなく、jsclasses は jsarticle と jsbook の2つのドキュメントクラスからなります。↩
-
なぜ \documentclass{jsreport} と書かないのかというと、jsreport 用のスタイルファイル jsreport.sty が用意されていないためです。jsarticle と jsbook には、それぞれ jsarticle.sty と jsbook.sty というスタイルファイルが用意されています。jsbook.sty に report オプションを指定することで、jsreport 相当のドキュメントクラスを指定することができます。↩