LaTeXの便利なパッケージ

※こちらは，会社の技術ブログとのクロスポスト記事です．元の記事は[こちら](https://www.timedia.co.jp/tech/20221208-tech)

LaTeXは，外部パッケージを利用できます．
パッケージを利用すると，より良い文書を書くことができます．
この記事では，LaTeXの便利なパッケージを紹介します．

# パッケージの使い方
texファイルの先頭で外部パッケージの利用を宣言します．以下は一例です．
```latex:main.tex
\documentclass[twocolumn, 11pt]{jsarticle}
\usepackage{balance}
\usepackage{amsmath, amssymb, bm}
\usepackage[all, warning]{onlyamsmath}
\usepackage{booktabs, multirow}
```
パッケージが存在しない場合，[CTAN](https://ctan.org)やその関連サイトからダウンロードできます．
CTANでは，TeXに関連するファイルやソフトウェアが多数公開されています．
一部のパッケージは，パッケージ間に依存関係があります．
他のパッケージの設定を上書きする場合があるので，記述の順番に注意が必要です．

# balance
これは，2カラムの論文を書く場合に利用するパッケージです．
使い方は，参考文献の前で`\balance`と書くだけです．
balanceの導入前後で，論文の最終ページは以下のように変わります．
|![tex02-1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308259/725aab7b-6ac7-301d-3e11-854dd578cb42.png)|![tex02-2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308259/9fd989c9-657c-9a44-4ca5-aaac312f701b.png)|
|:---:|:---:|

balanceを導入することで，文章の高さを揃えることができます．

# amsmath, amssymb, bm (, onlyamsmath)
これは，数式環境に関するパッケージです．例を示します．
```latex:main.tex
非推奨の数式
\begin{eqnarray}
	\mbox{Vector: } & \boldsymbol{x} = (x_1, x_2, \ldots, x_d) \in {\rm I\!R}^d\\
	\mbox{Vector: } & \vec{x} = (x_1 ,x_2, \dotsc, x_d) \in \mathbf{R}^d
\end{eqnarray}
推奨する数式
\begin{align}
	\text{Vector: } & \bm{x} = (x_1, x_2, \dots, x_d) \in \mathbb{R}^d
\end{align}
以上．
```
![tex02-3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308259/53f73b14-0538-4423-efe9-b0eaa7f02dd3.png)
$d$次元の実数値ベクトルを記述する場合，式(3)の書き方を推奨します．
`eqnarray ⇒ align`，`mbox ⇒ text`，`boldsymbol, vec ⇒ bm`, `ldots, dotsc ⇒ dots`，`{\rm I\!R}, mathbf ⇒ mathbb`です．
`onlyamsmath`は，`amsmath`でない数式環境を検知して警告やエラーを出せます．
ここでは，パッケージの紹介に留め，細かな違いの言及は避けます．

# booktabs, multirow
これは，表環境に関するパッケージです．例を示します．
```latex:main.tex
\begin{table}
    \begin{center}
        \setlength{\tabcolsep}{3pt}
        \small
        \caption{非推奨の表}
        \begin{tabular}{cccc} \hline
        & 要素A1個 & 要素A2個 & 要素A3個 \\ \hline
        要素Bあり & a & b & c \\
        要素Bなし & x & y & z \\ \hline
        \end{tabular}
    \end{center}
\end{table}
\begin{table}
    \centering
    \caption{推奨する表}
    \begin{tabular}{ccccc} \toprule
        & & \multicolumn{3}{c}{要素A} \\ \cmidrule{3-5}
        & & 1個 & 2個 & 3個 \\ \midrule
        \multirow{2}{*}{要素B} & あり & a & b & c \\
        & なし & x & y & z \\ \bottomrule
    \end{tabular}
\end{table}
```
![tex02-4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308259/98e3cc22-e446-aa65-69be-a33653137b5b.png)
`begin{center}...end{center} ⇒ centering`，`hline ⇒ toprule, midrule, bottomrule`です．
重複する単語を書かず，`multicolumn`や`multirow`でまとめると良いです．
表に縦の罫線を書くのは非推奨です．
上の項目名を2段に分け，間に罫線を引くと，横の項目名と中身の境界がわかりやすいです．

2カラム論文の横幅は狭いため，表1の横幅を今より大きくすると警告が出ました．
`tabcolsep`で横の余白を調整できます．
文字サイズを変更する`small`や`footnotesize`も有効です．
`resizebox`や`scalebox`を利用する手もあります．

# その他
その他，便利なパッケージをまとめて紹介します．
* `algorithm`, `algpseidcode`: プログラムコード，疑似コードが書ける
* `cite`: 高機能な文献参照ができる
* `enumerate` or `enumitem`: 高機能な箇条書きができる
* `geometry`: 高機能な文書レイアウトの変更ができる
* `hyperref`: ハイパーリンク付きの文書が書ける
* `pxjahyper`: `hyperref`の機能を拡張する
* `subcaption`: 複数の図を並べる
* `url`: LaTeXの特殊文字を含むurlが簡単に書ける
* `xcolor`: 高機能な色変更ができる

# 終わりに
この記事は，LaTeXの便利なパッケージを紹介しました．LaTeXは，日々進化しています．
素のLaTeXや，最初に学んだLaTeXを使い続けるのは辞めて，新しいLaTeXを積極的に利用しましょう．