1. Qiita
  2. Items
  3. LaTeX

今風なLaTeXに関するメモ

  • 19
    Like
  • 0
    Comment

はじめに

LaTeXに関しては様々な情報がいろいろなところに散逸しており、過去のバージョンに起因するバッドノウハウが未だに継承されていたりします。この記事では個人的に収集してきた今風なLaTeXの書き方をつらつらとまとめます。

LaTeX環境

TeX Live

様々なバッドノウハウから脱出するため、とりあえず最新のTeX Liveを使いましょう。毎年6月〜7月頃にその年のTeX Liveがリリースされるので、そのタイミングでインストールし直すとよいでしょう。2017年1月9日時点では、TeX Live 2016が最新版です。この記事も、Tex Live 2016の使用を大前提にしています。

アップデート

LaTeXのライブラリが多数収録されたCTANには、ほぼ毎日ライブラリのアップデートが降ってきます。こちらのライブラリも、できるだけ最新にしておくことを心がけましょう。MacTeXやLinuxに自力でTeX Liveを導入した環境では、以下のコマンドでアップデートできます。ディストリビューションの公式リポジトリにあるTeX Liveを用いる際は、各ディストリビューションの通常のアップデートとして降ってきますので、それを代わりに利用してください。

$ sudo tlmgr update --self --all

TeXエンジン

たいていの場合はuplatexを使えば良いでしょう。内部的にUnicodeを使用するため、かつては別のパッケージが必要であった特殊な文字(①など)もそのまま利用可能です1。uplatexでは不都合な場合だけ、platexを使うとよいでしょう。

フォントに対する柔軟性を求めるのであれば、LuaTeXやXeTeXの利用も検討します。LuaTeXは名前の通りLuaによる拡張も可能で、柔軟な運用が必要な場合に利用できます。ただし情報が少ないなどいろいろな困難2が伴います。

コンパイル

コンパイルはlatexmkを用いて自動化します。uplatexで必要に応じて複数回コンパイルした後、dvipdfmxでPDFに変換するまでをtexファイルを保存するたびに実行してくれます。$HOME/.latexmkrcを設定すれば使えるようになります。詳しくはこちらのサイトをご覧ください。TeX Liveにデフォルトで含まれているため、PATHを通しておけば使えるようになります。あとは以下のコマンドで一発です。

$ latexmk -pvc test.tex

簡易的には、ptex2pdfコマンドを利用するとよいでしょう。複数回のコンパイルは実行してくれないため画像番号が出力されなかったりしますが、とりあえずの確認には使えます。uplatexの場合は、以下のコマンドでコンパイル可能です。

$ ptex2pdf -u -l test.tex

LaTeXの記述

ドキュメントクラス

ドキュメントクラスには、どのエンジンでも利用することができるbxjsclsを用います3。platexにおけるドキュメントクラスとの対応は、以下の通りです。用途に合わせて選びます。

platex bxjscls 説明
jsarticle bxjsarticle 章がないレポートとか
jsarticle + slide bxjsslide スライド
jsbook bxjsbook 背中で綴じる書籍
jsbook + report bxjsreport 章のある論文やレポート

また、どのエンジンにも対応できるようautodetect-engineオプションと、必要な場合にのみdvipdfmxを利用するようdvipdfmx-if-dviオプションを有効にしておきます4

さらに、日本語文章の標準設定を利用するために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画像を利用してはいけません5。コンパイル速度が著しく低下しますし、変換する手間もかかります。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◦◦系命令を使います。{\◦◦ ナントカ}のスタイルは古い形式6なので利用しないようにします。一例を示します。

% 古いスタイル
{\bf アレ}
% 新しいスタイル
\textbf{アレ}

ソースコードの掲載

ソースコードの掲載にはmintedパッケージを、必要に応じてlistingパッケージと組み合わせて用います。listing+jlistingという手段もありますが、日本語で書かれたコメントの扱いに難があるため、またjlistingは自力での導入が必要になるためおすすめしません。mintedはフルパッケージ版には標準で含まれています。

簡易的にはverbatimitembox等を利用することも可能ですが、自動的に改ページされなかったり、ソースコードのシンタックスハイライトを利用できなかったりするため、mintedの使用をお勧めします。手前味噌ですが、詳しくはこちらのページを参照してください。

おわりに

こうしてまとめてみると、LaTeXも日々進化しており、昔から積み上げられてきた様々なバッドノウハウはもう必要なくなりつつあることが改めてわかってきました。

なるべく古いやり方に苦しめられず、新しく楽なやり方でLaTeXを楽しみましょう!

参考文献と注釈


  1. upTeX,upLaTeX - TeX Wiki 

  2. LuaTeXはコンパイル速度がかなり遅いとか... 

  3. BXjscls - TeX Wiki 

  4. uplatexはdvipdfmxを通してPDFに変換されますが、LuaTeXやXeTeXはいきなりPDFに変換されるため、dvipdfmxは不要です。 

  5. EPS画像を埋め込む際に、画像が出現するたびにGhostscriptを起動し、画像を処理し、終了します。画像が多くなるとそのオーバーヘッドはすさまじいことになります。 

  6. 使ってはいけない LaTeX のコマンド・パッケージ・作法 - Ichiro Maruta Homepage