はじめに
LaTeXに関しては様々な情報がいろいろなところに散逸しており、過去のバージョンに起因するバッドノウハウが未だに継承されていたりします。この記事では個人的に収集してきた今風なLaTeXの書き方をつらつらとまとめます。
LaTeX環境
TeX Live
様々なバッドノウハウから脱出するため、とりあえず最新のTeX Liveを使いましょう。毎年6月〜7月頃にその年のTeX Liveがリリースされるので、そのタイミングでインストールし直すとよいでしょう。2018年12月5日時点では、TeX Live 2018が最新版です。この記事も、Tex Live 2018の使用を大前提にしています。
アップデート
LaTeXのライブラリが多数収録されたCTANには、ほぼ毎日ライブラリのアップデートが降ってきます。こちらのライブラリも、できるだけ最新にしておくことを心がけましょう。MacTeXやLinuxに自力でTeX Liveを導入した環境では、以下のコマンドでアップデートできます。ディストリビューションの公式リポジトリにあるTeX Liveを用いる際は、各ディストリビューションの通常のアップデートとして降ってきますので、それを代わりに利用してください。
$ sudo tlmgr update --self --all
TeXエンジン
たいていの場合はuplatex
を使えば良いでしょう。内部的にUnicodeを使用するため、かつては別のパッケージが必要であった特殊な文字(①など)もそのまま利用可能です1。uplatexでは不都合な場合だけ、platexを使うとよいでしょう。
また、最近ではLuaTeXやXeTeX界隈も盛り上がってきています。LuaLaTeXをデフォルトエンジンにしたビルドツールllmkも発表、開発され、ますます使いやすくなっていますので、こちらの利用も検討してみると良いでしょう。
コンパイル
コンパイルはlatexmkを用いて自動化します。uplatexで必要に応じて複数回コンパイルした後、dvipdfmxでPDFに変換するまでをtexファイルを保存するたびに実行してくれます。$HOME/.latexmkrc
を設定すれば使えるようになります。詳しくはこちらのサイトをご覧ください。TeX Liveにデフォルトで含まれているため、PATHを通しておけば使えるようになります。あとは以下のコマンドで一発です。
$ latexmk -pvc test.tex
簡易的には、ptex2pdfコマンドを利用するとよいでしょう。複数回のコンパイルは実行してくれないため画像番号が出力されなかったりしますが、とりあえずの確認には使えます。uplatexの場合は、以下のコマンドでコンパイル可能です。
$ ptex2pdf -u -l test.tex
LaTeXの記述
ドキュメントクラス
ドキュメントクラスには、どのエンジンでも利用することができるbxjsclsを用います2。platexにおけるドキュメントクラスとの対応は、以下の通りです。用途に合わせて選びます。
platex | bxjscls | 説明 |
---|---|---|
jsarticle | bxjsarticle | 章がないレポートとか |
jsarticle + slide | bxjsslide | スライド |
jsbook | bxjsbook | 背中で綴じる書籍 |
jsbook + report | bxjsreport | 章のある論文やレポート |
また、どのエンジンにも対応できるようautodetect-engine
オプションと、必要な場合にのみdvipdfmxを利用するようdvipdfmx-if-dvi
オプションを有効にしておきます3。
さらに、日本語文章の標準設定を利用するためにja=standard
オプションを、用紙サイズとフォントサイズを指定するためにそれぞれa4paper
オプションと12pt
オプションを利用しています。この3つのオプションは、場合に応じて変更します。
\documentclass[autodetect-engine,dvipdfmx-if-dvi,ja=standard,a4paper,12pt]{bxjs....}
\begin{document}
〜文章〜
\end{document}
なお、jarticle
などのs
が入らないレターサイズ用の設定を利用してはいけません。A4用紙に印刷すると、奇妙な余白が生まれます。bxjsclsが利用できない環境でも、せめてjsarticle
などのドキュメントクラスを利用します。
図
イラストはPNG、写真はJPG、ベクタ画像にはPDFを直接利用します。間違ってもEPS画像を利用してはいけません4。コンパイル速度が著しく低下しますし、変換する手間もかかります。bxjsclsを利用する場合には、graphix
パッケージをオプションなしで読み込んでおくだけでOKです。
また、図表のセンタリングにはcenter環境を利用してはいけません。これは文章のセンタリングに用いるもので、図表のセンタリングに用いると不自然な空白が生じます。代わりに\centering
命令を用います。以下にサンプルを記載します。
\documentclass[autodetect-engine,dvipdfmx-if-dvi,ja=standard,a4paper,12pt]{bxjsarticle}
\usepackage{graphicx}
\begin{document}
\begin{figure}[htb]
\centering
\includegraphics[scale=0.5]{test.png}
\caption{キャプション}
\label{fig:test}
\end{figure}
\end{document}
文字装飾
太字や斜体などには\text◦◦
系命令を使います。{\◦◦ ナントカ}
のスタイルは古い形式5なので利用しないようにします。一例を示します。
% 古いスタイル
{\bf アレ}
% 新しいスタイル
\textbf{アレ}
ソースコードの掲載
ソースコードの掲載にはminted
パッケージを、必要に応じてlisting
パッケージと組み合わせて用います。listing+jlistingという手段もありますが、日本語で書かれたコメントの扱いに難があるため、またjlistingは自力での導入が必要になるためおすすめしません。mintedはフルパッケージ版には標準で含まれています。
簡易的にはverbatim
とitembox
等を利用することも可能ですが、自動的に改ページされなかったり、ソースコードのシンタックスハイライトを利用できなかったりするため、mintedの使用をお勧めします。手前味噌ですが、詳しくはこちらのページを参照してください。
おわりに
こうしてまとめてみると、LaTeXも日々進化しており、昔から積み上げられてきた様々なバッドノウハウはもう必要なくなりつつあることが改めてわかってきました。
なるべく古いやり方に苦しめられず、新しく楽なやり方でLaTeXを楽しみましょう!