Heavy Watal

TeX

基本操作

Mac OS X にインストール

とにかく動く環境が欲しい人は、素直にフルのMacTeXをインストールするだけ。 ただし2GB以上の大きなインストーラをダウンロードする必要があるので注意。

BibDesk, LaTeXiT, TeX Live Utility, TeXShop などのGUIアプリが不要で、 必要なパッケージをコマンドラインからインストールできる人は下記の手順で小さくインストールできる。

  1. http://www.tug.org/mactex/ から BasicTeX.pkg (mactex-basic.pkg) をダウンロードしてインストール。 あるいは:

    % brew cask install basictex
    
  2. /Library/TeX/texbin/ にパスを通す。 基本的には /etc/paths.d/TeX 越しに自動的に設定されるはず。

  3. sudo tlmgr update --self --all で諸々アップデート

TeXをPDFにコンパイル

  1. ソースコードを書く

    \documentclass{article}
    \begin{document}
    Hello, World!
    \end{document}
    
  2. ターミナルからコンパイル:

    % pdflatex hello.tex
    % open hello.pdf
    

MacTeXに含まれるTeXShopというアプリを使えば、 原稿書きからコンパイルまで面倒を見てもらえるので、 ターミナルにコマンドを打ち込む必要はないらしい。

tlmgr でパッケージ管理

BasicTeXの場合は最小限のパッケージしか含まれていないので、 大抵いくつか別途インストールする必要がある。 “By default, installing a package ensures that all dependencies of this package are fulfilled” と言っているが嘘で、実際には依存パッケージも手動でインストールする必要がある。

% sudo tlmgr update --self --all
% tlmgr search --global japanese
% tlmgr search --global --file zxxrl7z
% tlmgr info --list newtx
% sudo tlmgr install chktex

管理者権限不要の --usermode も用意されているが、 必要に迫られない限り素直に sudo したほうがよい。

パッケージをアンインストールしようと思って tlmgr uninstall some-package などとするとTeX Live全体が消えてしまうので注意。 正しくは tlmgr remove some-package

基本要素

数式

とりあえず Short Math Guide for LaTeX (PDF)を読むべし。

通常LaTeXではプリアンブルで \usepackage[dvipdfmx,final]{graphicx} と宣言。 XeTeXでは不要っぽい。

\begin{figure}[htbp]
\includegraphics[width=100mm]{great.pdf}
\caption{some description
}\label{fig:great}
\end{figure}

[hb] のようにして場所を指定できるが、 結局はいろんな兼ね合いでコンパイラが位置を決める。 デフォルトは [tbp]。 複数指定した場合、どの順序で書いても下記の順に優先される。

h here: ソースと同じ位置に
t top: 上部に
b bottom: 下部に
p float page: 図だけを含む独立したページに

ひとつの領域に複数の図を貼るには {subfig}\subfloat[caption]{filename} を用いる。

キャプションをカスタマイズするには {caption}\captionsetup{...} を用いる。

ラベル \label{}\caption{} 直後が良いらしく、 スペースさえもchktex警告対象なので波カッコ前で改行するという苦肉の策。

\usepackage{epstopdf} でEPSを取り込もうとすると(e.g., PLOS)、 ファイルもパッケージも揃ってるはずなのに ! Package pdftex.def Error: File '*-eps-converted-to.pdf' not found. というエラーが出る。 変換プログラム本体である ghostscript をHomebrewか何かで入れる必要がある。

https://en.wikibooks.org/wiki/LaTeX/Tables

キャプションやラベルなどをまとめるのが table 環境、 表本体が tabular 環境

\begin{table}
\caption{Parameters
}\label{table:parameters}
\begin{tabular}{rl}
  \toprule
  Symbol & Description \\
  \midrule
  $\mu$ & mutation rate per division \\
  $N_0$ & initial population size \\
  \bottomrule
\end{tabular}
\end{table}

罫線は標準の \hline だと上下スペースが狭苦しいので、 {booktabs}toprule, midrule, bottomrule を使う。

ページに合わせて幅をうまいことやるには {tabulary}

複数ページにまたがる表を作るには標準 {longtable} やその派生。

箇条書き

{enumitem} を使うといろいろなオプションが設定可能になる。

\usepackage{enumitem}
%%%

\begin{itemize}
  \item Judas Priest
  \item Iron Maiden
\end{itemize}

\begin{enumerate}[nosep,leftmargin=*]
  \item Judas Priest
  \item Iron Maiden
\end{enumerate}

\begin{description}[nextline]
  \item[key1] value1
  \item[key2] value2
\end{description}

http://konoyonohana.blog.fc2.com/blog-entry-58.html

引用

https://en.wikibooks.org/wiki/LaTeX/More_Bibliographies

  1. Bibdesk などの文献管理アプリでbibtex形式の文献リストを作る。 e.g., mybibdata.bib
  2. コマンドにcite keyを入れて本文に挿入。 このとき標準の \cite ではなく {natbib} のものを使う。

    \usepackage[authoryear,round,sort&compress]{natbib}
    %%%
    
    \citet{hudson1987g}         # Hudson et al. (1987)
    \citep{hudson1987g}         # (Hudson et al. 1987)
    \citep*{hudson1987g}        # (Hudson, Kreitman and Aguadé, 1987)
    \citep[eq. 5]{hudson1987g}  # (Hudson et al. 1987, eq. 5)
    \citep[see][]{hudson1987g}  # (see Hudson et al. 1987)
    
  3. 最後の方に文献リストを挿入

    \bibliographystyle{abbrvnat}
    \bibliography{mybibdata}
    

    スタイルを規定するのは bst ファイル

  4. 元の tex をコンパイルして aux を生成

  5. bibtexaux を渡して bbl を生成

  6. 再び tex をコンパイルすると bbl が取り込まれて文献リストができる (でもまだなぜか引用部分がハテナ?のまま)

  7. さらにもう1回コンパイルして完成

latexmk を利用するか、 適切な Makefile を書いて自動化するべし。

文字の修飾

\emph{emphasis}
\textit{italic}
\textbf{bold}
\texttt{monospace}
{\huge huge text}

\tiny, \scriptsize, \footnotesize, \small, \normalsize, \large, \Large, \LARGE, \huge, \Huge

\usepackage[normalem]{ulem}  % \uline{}, \sout{}
\usepackage{color}           % \textcolor{}
\usepackage{soul}            % \hl{} using {color}
%%%

\uline{underlined text}
\sout{strikethrough}

\textcolor{red}{colored text}
{\text{red} colored text}

\hl{highlighted text}

{ulem}[normalem] オプションを付けて読まないと \emph が下線に変更されてしまうので注意。

ドライバを指定して \usepackage[dvipdfmx]{color} としないと graphicx がおかしくなってPNG図が空白になる、謎。 http://qiita.com/zr_tex8r/items/442b75b452b11bee8049

{soul} のドキュメントによれば \hl{環境}$数式$ を入れられるはずだが “Extra }, or forgotten $” というエラーで弾かれる。

Tips

ダメな使い方を警告してもらう

いろんなパッケージを使ったいろんな書き方がネット上にあふれているが、 中には古すぎたりするため避けたほうがよいものもある。 ファイルの先頭で nag を読み込むことで、 コンパイル時にそういうのを警告してもらえる。

\RequirePackage[l2tabu, orthodox]{nag}

\documentclass{article}  % これよりも前

chktex コマンドを使えばコンパイルよりも手軽にチェックできる。 Atomlinter-chktex を入れれば編集中のファイルの警告箇所を随時ハイライトしてもらえる。

ligature問題

表示の美しさという点でリガチャは素晴らしいけど、 PDF内の検索やPDFからのコピペ時に問題が発生する。 例えば fi が合字になるため definition が検索でひっかからない。 definition をコピペすると de nition になってしまう。

次のコードをプリアンブルの頭の方に記述するといいらしいが、うまく機能しない。。。

\input{glyphtounicode.tex}
\pdfgentounicode=1
% あるいは
\usepackage{mmap}

日本語を使う

LuaLaTeX

XeLaTeX

upLaTeX

フォント

Computer Modern
Knuth先生が作ったデフォルトフォント。
\usepackage{lmodern} — Latin Modern
Computer Modern の改良版。
\usepackage{times}
ローマンとサンセリフにそれぞれ Times と Helvetica を割り当てる。 数式は Computer Modern のまま。
\usepackage{txfonts}
times の改良版? 数式も Times にする。 既にメンテナンスは放棄されている。
newtx
txfonts の後継で現役。 本文と数式を別々に指定できる。 \usepackage[libertine]{newtxmath} とすると Libertine を数式に使える。 インストールするときは newtx だけでなく txfontsboondox も入れないと Unable to find TFM file と怒られる。
newpx
newtxと同等の機能を美しいPalatinoで。 palatino, pxfonts, tex-gyre-pagella, tex-gyre-math-pagella も入れておく。 TeX Gyre Pagella はOpenType志向のPalatinoクローン。
libertine — Linux Libertine
印刷用途でも通用するよう作られた美しいフリーフォント。 fontaxes もインストールする必要がある。

XeTeX なら OS のフォントをフルネームで指定して使える

\usepackage{amsthm, amsmath} % must be called ahead of mathspec
\usepackage[all, warning]{onlyamsmath}
\ifxetex
  \usepackage[libertine]{newtxmath}
  \usepackage[scr=rsfso]{mathalfa}  % for \mathrm
  \usepackage{bm}                   % for \mathbf
  \usepackage{mathspec} % must be called ahead of fontspec
  \usepackage[math-style=TeX,bold-style=TeX]{unicode-math}
  \usepackage[no-math]{fontspec}
  \usepackage{libertine}
  \usepackage{xeCJK}
  \setCJKmainfont[Scale=0.9,BoldFont=Hiragino Mincho ProN W6]
                                    {Hiragino Mincho ProN W3}
  \setCJKsansfont[Scale=0.9,BoldFont=Hiragino Kaku Gothic ProN W6]
                                    {Hiragino Kaku Gothic ProN W3}
  \setCJKmonofont[Scale=0.9,BoldFont=Hiragino Kaku Gothic ProN W6]
                                    {Hiragino Kaku Gothic ProN W3}
\else
  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
  \usepackage{libertine}
  \usepackage[libertine]{newtxmath}
  \usepackage[uplatex,deluxe,jis2004]{otf}
  \usepackage{textcomp}
\fi

フォント関連をいじったあと明示的にマップを更新するには sudo updmap-sys