LaTeX でいろんなパッケージを usepackage する
LaTeX を利用するときには多くのパッケージを利用する。LaTeX のパッケージが集められている CTAN を見てみると、およそ 6,000 以上のパッケージを見ることが出来る。これらから必要かつ適切なパッケージを選んで利用することはかなり難しい。
パッケージの存在を知らなければ、TeX や LaTeX を駆使して問題を解決するように頑張る人もいるが、労力に見合った対価を得られるか分からない。
そこで、本記事では筆者が知っているだけパッケージを書き出してみたい。よく目にしているが使ったことのないパッケージも含まれている。
これらの情報は筆者が知る 2021 年 12 月時点での情報です。
もしも古い情報があった場合は教えてください。
複数のパッケージを利用する場合、互換性や組み合わせ、読み込み順序などの問題を生じることがありますが、ここでは取り上げていません。使い方などの詳細はパッケージガイドを参照してください。(パッケージ名には CTAN のリンクを貼り付けてあります)
紹介するパッケージは基本的に TeX Live などのディストリビューションに含まれています。含まれていない場合にはダウンロード出来るリポジトリリンクを参照しています。
いくつかのパッケージには、類似パッケージも提示している。しかしながら、実際にどちらの方が優位なパッケージであるかは分からない。
そのため、パッケージ名で適当に検索するなどして使いやすいものを利用すると良いと思われる。
■ エンジンに依るもの
日本語を LaTeX する場合には、以下の 2 通りが挙げられる。
- upLaTeX + dvipdfmx
- LuaLaTeX
上の 2 つの方法で利用可能なパッケージを挙げてみたい。
▽ upLaTeX 専用のパッケージ
パッケージ | 概要 |
---|---|
plautopatch | upLaTeX のためのパッチパッケージを自動補完する |
janapese-otf | 外字などのフォントの追加と多書体化 |
pxchfon | 和文フォントの変更 |
PXrubrica | ルビ振りと圏点を提供 |
jlreq-deluxe | 多書体化を提供 / jlreq を利用時に japanese-otf パッケージから deluxe オプションを有効にすると jlreq の期待する組版が得られなくなるため必要になる |
plautopatch パッケージは文書の先頭で以下のように読み込むことが推奨されている。
\RequirePackage{plautopatch}
\documentclass[uplatex, dvipdfmx]{jlreq}
# 新常識 (1) plautopatch は必ず読み込もう - 日本語 LaTeX の新常識 2021 - Qiita
また、いくつかのパッケージは DVI ドライバに依存するので、ドキュメントクラスで指定しておくと良い。
▽ LuaLaTeX 専用のパッケージ
パッケージ | 概要 |
---|---|
luatex-ja | 日本語で LuaLaTeX するには必ず必要 |
luatexja-otf | LuaLaTeX 用の OTF パッケージ |
luatexja-fontspec | 和文フォントの変更 / luatexja-preset でプリセットが用意されている |
fontspec | 英文フォントの変更 / XeLaTeX でも使用可能 |
luatexja-ruby | ルビ振りと圏点を提供 |
luacode | Lua コードを利用する |
luacolor | LuaLaTeX 用の color パッケージ |
cf.
▽ 一般的な文書クラス
文書クラスは次のようなものを利用すると良いだろう。
パッケージ | 概要 |
---|---|
jlreq | デフォルトは article スタイル / report や book スタイルはオプションで指定する / 縦書きにも対応 |
jsclasses | jclasses を拡張した upLaTeX 用の文書クラスバンドル / jsarticle、jsreport、jsbook と学会用と紀要用がある / slide オプションがある |
ltjsclasses | jsclasses を LuaLaTeX にも対応させた文書クラス |
BXjscls | upLaTeX や LuaLaTeX、XeLaTeX に対応した文書クラス / bxjsarticle、bxjsreport、bxjsbook と学会用と紀要用がある |
beamer | TikZ と同じ PGF ベースで作られているプレゼンテーション用の文書クラス |
基本的には (u)pLaTeX でも LuaLaTeX でも jlreq を利用すれば良いと思われる。
jlreq では \sidenote
や \endnote
などを備えている。使う前には 20 ページ程度のドキュメントを一読しておくと良いと思われる。
スライドには beamer を利用することになるが、日本語をするにはフォントメトリックなど気にする必要があるらしい。
■ 一般
geometry パッケージは特に重要なパッケージになる。
パッケージ | 概要 |
---|---|
geometry | 余白調整をより容易に / 訳も分からず \setlength するよりも良いと思われる |
fancyhdr | ヘッダーとフッターの編集 |
abstract | アブストラクトのカスタマイズを簡単にする |
appendix | 付録の追加制御 |
tocloft | 目次のカスタマイズ / 新しい目次の定義 |
xcolor | 文字などの色付け |
comment | 複数行をコメントアウトする comment 環境を提供 / 新たなコメント環境を定義することも可能 / comment 環境のインデントに注意が必要 |
comment パッケージではインデントに気を付ける必要がある。
\begin{comment}
や \end{comment}
をインデントしてはいけないことに注意しておきたい。
\begin{comment}
↑
インデントしない
↓
\end{comment}
▽ フォント
和文フォントに関しては LaTeX エンジンによって利用するパッケージが異なるが、欧文フォントはどのエンジンであっても以下のようなパッケージを利用することが出来る。
パッケージ | 概要 |
---|---|
lmodern | Latin Modern フォント |
newpxtext | Palatino 系フォント / PXfonts は newpxtext と newpxmath に分けられている |
newtxtext | Times 系フォント / TXfonts は newtxtext と newtxmath に分けられている |
Computer Modern のままだと少しだけフォントの取り扱いがアレなため、少なくとも以下のようにしておくと良いようだ。
\usepackage[T1]{fontenc}
\usepackage{lmodern}
jlreq クラスを利用すると lmodern はデフォルトで読み込まれるため、これらは必要ないようだ。
▽ 脚注と注釈
本文の左右の余白に記載する注釈はマージンノートなどと呼ばれる。
パッケージ | 概要 |
---|---|
tablefootnote | 表内で脚注を使用する |
endnotes | 文章末や章末に脚注を挿入する |
ftnright | 二段組の際に脚注を右側に寄せる |
mparhack |
\marginpar のバグを修正 / マージンを修正するための marginfix や marginfit もある |
marginnote |
\marginpar コマンドの用途の広い代替手段の提供 |
sidenotes | テキストにこだわらず、図や表なども含めることも出来る |
TODO のために左右の余白を使う場合には、todonotes や snaptodo、zebra-goodies を利用すると良い。
LuaLaTeX を使う場合には luatodonotes もある。
▽ ドラフト
ドラフト段階で使えそうなパッケージに以下のようなものがある。
パッケージ | 概要 |
---|---|
lineno | 出力する PDF に行番号を表示させる / 数式環境には上手く対応できない模様 |
linoamsmath | amsmath に対応して、数式環境にも式番号を付与することが出来る |
showkeys | 相互参照のラベル名を PDF に表示 / 類似パッケージに showlabels がある |
ifdraft | ドラフトと清書を制御 |
▽ PDF について
パッケージ | 概要 |
---|---|
pdfpages | PDF をページとして直接挿入する / PDF のページを切り貼りするよりも楽になる |
BXpdfver | PDF のバージョンと圧縮レベルを指定 / ごく稀に必要になることがある |
■ リスト環境と定理環境
リスト環境や定理環境はデフォルトでも定義することが出来るが、パッケージを利用した定義の方がカスタマイズしやすい。
パッケージ | 概要 |
---|---|
enumitem | itemize 環境、enumerate 環境、description 環境をカスタマイズ / 新しいリスト環境の定義 |
amsthm | 定理環境を AMS ライクにカスタマイズ |
ntheorem | 定理環境を高度にカスタマイズ |
cf.
■ 画像と表と浮動体
画像を挿入するには graphicx パッケージを利用すれば良い。
また、表には tabular 環境を利用すれば良いが、これらをサポートするさまざまなパッケージによってカスタマイズすることが出来る。
パッケージ | 概要 |
---|---|
graphicx | 画像を挿入する \includegraphics を提供 / graphics パッケージの拡張 / 画像は PDF 形式で挿入することが推奨されている |
array | array 環境と tabular 環境の拡張 |
booktabs | 表の上部、中、下部に応じた太さの罫線を提供 |
arydshln | 破線を引く |
longtable | ページをまたぐ表の作成 |
multirow | セルの縦方向を結合 / 横方向はデフォルトの \multicolmun を利用すれば結合できる |
dcolumn | 縦方向に並べられた数値の小数点 . で整列させる / siunitx パッケージによる S でも同じことが出来る |
colortbl | 表の色付け |
diagbox | セル内に斜線を引く / 類似パッケージに slashbox がある |
array パッケージや arydshln パッケージは array 環境にも利用することが出来る。
▽ 浮動体
一般的な文書では、画像は figure 環境に、表は table 環境に挿入する。これらの環境は浮動体 (floating body) と呼ばれる。
パッケージ | 概要 |
---|---|
float | 浮動体のカスタマイズや新たな浮動体の定義 / H 指定子の提供(here パッケージを吸収している) |
lscape | 浮動体を回転 / 類似パッケージに rotfloat がある |
subcaption | 表や画像を横並びに / minipage 環境を利用するよりも綺麗にできる |
wrapfig | 表や画像の周りに文字を回り込ませる / wrapfigure 環境と wraptable 環境を提供 |
endfloat | 表や画像をドキュメントの最後に移動させる |
caption | キャプションのカスタマイズ / 浮動体外で利用するためのキャプション \captionof を提供 |
subcaption パッケージと同様な subfig や subfigure があるが、これらは古いとされている。ただし、互換性はない。
余談だが、特定の場所に画像や表を指定したい場合には浮動体に含めず、そのまま挿入した方が簡単。
そもそも、浮動体は文章から独立し且つページ分割のされないコンテンツを取り扱うための環境なので、特定の場所に配置したい場合には不向き。
■ ソースコード
ソースコードの挿入は verbatim 環境を利用せずに、以下のようなパッケージを利用して挿入すると良い。
パッケージ | 概要 |
---|---|
listings | ソースコードの挿入 / シンタックスハイライトの付与 |
plistings | pLaTeX 上で listings を利用する際に日本語を挿入する / TeX Live とは別にダウンロードする必要がある / https://github.com/h-kitagawa/plistings |
jlisting | pLaTeX 上で listings を利用する際に日本語を挿入する / TeX Live とは別にダウンロードする必要がある / https://osdn.net/projects/mytexpert/releases/p6275 |
minted | Pygments を利用したソースコードの挿入 / シンタックスハイライトの付与 |
PygmenTeX | Pygments を利用したソースコードの挿入 / シンタックスハイライトの付与 |
algorithmicx | 疑似コードの挿入 |
あまり知られていないが listing 内で Unicode を利用するための listingsutf8 もある。
※ .bz2 は $ bzip2 -d [file name].bz2
で解凍できる。
cf.
listings 内に日本語を含む場合の plistings と jlisting ではどちらの方が良いのだろう。
ちなみに、LuaLaTeX では LuaTeX-ja によって listings のパッチ (lltjp-listings) を利用することが出来るため、plistings や jlisting は必要ない。
2022/02/07 追記
plistings は日本語の文字色を変更できるのに対し、jlisting は日本語の文字色を変更できない。@pepper_kyaon2 さんにコメント で教えていただきました。ありがとうございます
また、画像を見比べると日本語の文字間隔が少し異なっている。この他にも違いがあると思われる。画像をよく確認すると良いだろう。
2022/07/21 追記
jlisting であっても、listings を読み込みこむことで plistings と同様の結果を得られる。
どうやら、plistings では listings が自動的に読み込まれるが、jlisting では listings を自動的に読み込まないことが原因のようだ。
plistings | jlisting |
---|---|
画像のソース(折りたたみ)
plistings レポジトリの test2.tex を一部改変して利用しました。これを pdfcrop でトリミングしています。
\documentclass[uplatex, dvipdfmx]{jsarticle}
% \usepackage{plistings}
\usepackage{jlisting}
%% jlisting を使う場合、plistings と同様の結果を得るには、以下のように先に listings を読み込めば良い。
%% \usepackage{listings, jlisting}
\usepackage{xcolor}
\usepackage{lmodern}
\usepackage{showexpl}
\lstset{
language=C, frame=trbl, framesep=5pt,
commentstyle=\color{green!50!black},
basicstyle=\ttfamily, basewidth=0.5em,
keywordstyle=\bfseries\color{blue},
}
\pagestyle{empty}
\begin{document}
\begin{lstlisting}
#define N 6
#define ARSZ 2*N
#define ARY unsigned int
/* 1 次元配列 ARY data[ARSZ] をテーブルだと思う */
/* ARY は 32bit 符号なし整数と仮定。すると各行 1 変数で済む */
/* 読みだし */
inline ARY read(const ARY data[], const int row, const int col) {
return data[row] & ((ARY)1)<<col;
}
/* 書き込み */
inline void mark(ARY data[], const int row, const int col) {
data[row] |= ((ARY)1)<<col;
}
unsigned long long counter;
/* 「次に探索」 */
int next_pos_x, next_pos_y;
/* pos_history[i][k] は、i 番の短冊の (k-1) 番目の cell の位置を
pack(row, col) = (row << 8) + col という 16 ビット整数として管理する。*/
int pos_history[(N*N)<<2];
#define pack(x, y) ((x)<<8)+(y)
\end{lstlisting}
\end{document}
■ 数式
equnarray 環境、displaymath 環境、$$
は使わずに、amsmath パッケージから提供された環境を利用すべき。
パッケージ | 概要 |
---|---|
amsmath | 基本的な数式環境を提供 |
mathtools |
|
empheq | amsmath パッケージから提供される環境をさらに拡張 |
autobreak | split 環境を拡張するような形で自動折り返しを実現する |
breqn | 数式の自動折り返しを実現する |
cf.
▽ 数学記号
いくつかの数学記号やフォントを追加したい場合には、以下のようなパッケージを読み込む。
パッケージ | 概要 |
---|---|
amssymb | 数学記号やフォントを提供
|
mathrsfs | 花文字 (\mathscr ) を提供 |
upgreek | 立体のギリシャ文字を提供 |
euscript | カリグラフィー体と花文字を提供 |
bbm | 黒板太字を提供
|
mathbbol | 黒板太字を提供
|
esint | さまざまなスタイルの積分記号を提供 |
wasysym | 男性、女性の記号や惑星記号を提供 / ただし、地球を表す丸十字 🜨 は含まれていない(mathabx を利用すれば良いかもしれない) |
cf.
PXfonts や TXfonts 等に変更している場合には追加する必要がないものもあるため注意が必要。
▽ 数学フォント
筆者はデフォルトの Computer Modern で満足しているので特段変更したことはないが、以下のような数学フォントが有名だと思われる。
上 3 つはかなり有名。
パッケージ | 概要 |
---|---|
newpxmath | Palatino 系フォント / PXfonts は newpxtext と newpxmath に分けられている |
newtxmath | Times 系フォント / TXfonts は newtxtext と newtxmath に分けられている |
eulervm | オイラーフォント |
STIX2 OTF | STIX フォント(stix は廃止されている)/ 類似パッケージに STIX2-Type1 がある |
XITS | 理系のための Times 系の数学フォント |
mathabx | Computer Modern と AMS fonts の上位互換を目指したフォント |
mathpazo | Palatino 系フォント |
unicode-math | fontspec の数式フォント版 / LuaLaTeX と XeLaTeX のみに対応している |
特に :=
などの文字は mathtools から提供されなくとも、これらのフォントパッケージからも提供されていることがある。注意深くパッケージガイドを確認しておきたい。
また、beamer でスライドを作成する際には数式フォントはサンセリフ体になるが、これらにもさまざまなパッケージがある。
あまり詳しくないため、適当に列挙するのみに留めておく。
▽ 数学記法
さまざまな数学記法を簡略的にすることが出来る。
パッケージ | 概要 |
---|---|
mleftright |
\left ~\right で調整された括弧の左右の空白を調整した \mleft ~\mright を提供 / \mleftright によって \left ~\right に再定義することも可能 |
diffcoeff | 微分記法を提供 / 類似パッケージとして derivative などもある |
esvect | 矢線ベクトル表記のバリエーションを提供 / 下付き文字のためのコマンドを提供 |
bm | ベクトルなどで利用する太字斜体用コマンド \bm を提供 / amsmath から提供される \boldsymbol よりも一般的で堅牢な実装となっているらしい |
nicematrix | PGF を利用し自由度の高い行列を表現できる
|
tensor | テンソル表記のためのコマンドを提供 |
braket | Dirac の bra-ket 記法のためのコマンドを提供 / 集合論における内包的記法のためのコマンドを提供 |
slashed | Feynman のスラッシュ記法のためのコマンドを提供 / 類似パッケージに centernot がある(これの方が汎用性が高いかも) |
accents | 数学記号に複数のアクセントをつける |
cancel | 取り消しの斜線を引く |
|
|
physics2 | physics パッケージの代替 / physics パッケージの問題が解消されている
|
SemanTeX | 意味論を重視した数式の表現 |
より自然な記法を目的とした nath や自動的に記号のスタイルを変更する smart-eqn などもあるが、実用に耐えるのか分からない。
cf.
physics パッケージの問題点と、その代替パッケージととなりうる physics2 パッケージについては以下の記事を参照してください。
■ 多言語
多言語文書を作成するためのパッケージ。
パッケージ | 概要 |
---|---|
babel | 多言語文書を作成する |
polyglossia | LuaLaTeX と XeLaTeX のための babel 代替パッケージ |
利用したことはないので分からないが、おそらくロゼッタストーン Wikipedia を書くことが出来る。
■ 相互参照
相互参照に関するいくつかのパッケージ。
パッケージ | 概要 |
---|---|
hyperref | ハイパーリンクを埋め込む / URL を挿入したい場合には \url や \nolinkurl を利用すると良い |
prettyref |
\prettyref{format:name} とすることで相互参照の種類を識別する |
cleveref | 相互参照をより簡単にする / mathtools の showonlyrefs オプションとの併用が出来ない |
autonum | 参照している数式のみに式番号を付与する / よく cleveref の利用時に利用される / 対応している数式環境は amsmath から提供されているものに限る |
xr | ファイルをまたぐ相互参照を可能に |
xr-hyper | xr パッケージにハイパーリンクの埋め込みを追加 |
zref | 新たな相互参照システムを提供 / 11 のモジュールが提供されている zref-user , zref-abspage , zref-lastpage , zref-nextpage , zref-totpages , zref-pagelayout , zref-perpage , zref-titleref , zref-dotfill , zref-env , zref-xr
|
zref-check | zref を利用した柔軟な相互参照のインターフェースを提供 |
zref-clever | zref を利用した cleveref に似た賢い相互参照の提供 |
cf.
これと同じような実装として次のような記事も見つけることが出来た。
■ 文献リスト
文献リストは BibTeX を利用すると比較的簡単に作成できる。
パッケージ | 概要 |
---|---|
natbib |
\cite のスタイルをカスタマイズ |
multibib | 複数の文献リストを作成 |
biblatex | natbib や multibib のような機能を一手に引き受けることが出来る
|
cf.
■ お絵描きとグラフ
絵を描いたりグラフを描いたりも出来る。
パッケージ | 概要 |
---|---|
TikZ/PGF | グラフや図形を描く / TikZ では多くあるライブラリを利用する |
tcolorbox | PGF を利用して色付けた枠を作成 |
gnuplottex | gnuplot を利用してグラフを作成する |
gnuplot-lua-tikz | gnuplot を利用してグラフを作成する / sty ファイルは gnuplot から導入 |
cf.
tcolorbox は PGF を利用した枠を組むことが出来るが、これはかなり多岐にわたる。ドキュメントも TikZ/PGF と負けず劣らずのページ数を誇っている。
カスタマイズ性が高いことに起因するドキュメント量だが、tcolorbox さえあれば書けない枠はないと思わせられるほどさまざまなスタイルの枠を作ることが出来る。同様のパッケージに mdframed などもあるが、これらの比にならないだろう。
tcolorbox に関する記事
もはや文章中の枠を作るという枠組みを超えて、表やスライドまで作成できてしまう。ここにはないが、listings などと連携して tcolorbox 内にソースコードを挿入することも出来る。
また、tcolorbox を利用してピカチュウを模したものを作っている人もいる。
▽ TikZ/PGF について
PGF は "Portable Graphics Format" の略、TikZ は "TikZ ist kein Zeichenprogramm" の略。
TikZ を利用することで TeX から直接ベクター画像を作成することが出来る。これは LaTeX から提供されている picture 環境よりも高度に記述することが出来る。
cf. TikZ - TeX Wiki
TikZ & PGF のマニュアルは、広大な大魔境となっている。前半のチュートリアルは良いかもしれない。ある程度 TikZ が使えるようになってから読むと良いだろう。
したがって、TikZ の基本的な使い方は以下のような記事を参照して学習すると良いだろう。
また、TikZ/PGF の機能を絞ったパッケージは多数存在する。
以下の記事ではこれらの機能を絞ったパッケージを紹介しているので、参照すると良いだろう。
tcolorbox パッケージはこのような TikZ の機能を絞ったパッケージの 1 つになる。
■ 新しい環境やコマンドの定義
新しい環境やコマンドを定義する場合、\newenvironment
や \newcommand
を利用する。しかしながら、これらによる定義では表現に限界がある。
次のようなパッケージを利用することでより表現の広い定義をすることが出来るようになる。
また、使っていないつもりでも、これらのパッケージを利用して作成されているパッケージも多い。
パッケージ | 概要 |
---|---|
xparse | オプション引数付きのコマンドを定義 |
ifthen | 条件分岐と反復処理を可能に |
xkeyval | key-value 形式によるコマンドの定義を可能に / 類似パッケージに l3keys2e がある |
etoolbox | 様々なツールを提供 |
calc | レイアウトなどのコマンドに演算を行うことが出来る |
cf.
xparse と ifthen を利用して時間微分と空間微分のコマンドを作成した例を紹介しておく。
\newcommand
では出来ないオプション引数を利用できるので、定義するコマンドの幅が広がる。
ちなみに、新たにパッケージやドキュメントクラスを作成する場合には、expl3 を利用すると良いようだ。
■ ファイル分割
ファイルを分割して親ファイルで子ファイルを読み込むには、子ファイルを \input
や \include
すれば良いが、このときの子ファイルにはプリアンブルを挿入することが出来ない。
そのため、子ファイルの個別のタイプセットが不可能になっている。これを解消することが出来る。
パッケージ | 概要 |
---|---|
docmute | もっともシンプルなファイル分割 |
subfiles | プリアンブルを共有したファイル分割 |
standalone | 表や TikZ などの分割 / standalone クラスは余白のない PDF を作るために使われがち |
cf.
standalone では文書そのものではなく、表や TikZ などのコンテンツを分割することを目的としている。
本来あるべき使い方を記述するような記事を見つけることは出来なかった。
また、これらのパッケージを利用せずに分割する方法もある。
■ 絵文字
パッケージ | 概要 |
---|---|
twemojis | twemoji を利用することが出来る / byo-twemojis から絵文字を作成することも出来る |
BXcoloremoji | カラーの絵文字を使う / TeX Live などとは別途にダウンロードが必要 / https://github.com/zr-tex8r/BXcoloremoji / 類似パッケージに emoji、coloremoji がある |
emoji | LuaLaTeX 用の emoji |
emo | カラーの絵文字 |
■ その他
特定の分野に専門的な人が使いそうなパッケージたち。
パッケージ | 概要 |
---|---|
askmaps | カルノー図を描く |
tikz-cd | TikZ で可換図式を描く / 簡単な可換図式であれば amsmath の CD 環境でも描ける / 類似パッケージに commutative-diagrams がある |
siunitx | 単位を立体文字で書く / dcolumn パッケージに似た小数点を揃えた表を作成することも出来る |
causets | 因果集合 (causal sets) や Hasse 図を描く |
tikz-feynman | TikZ で Feynman ダイアグラムを描く / ローエンド版の TikZ-FeynHand もある |
simpler-wick | Wick の縮約記法を提供 |
mhcem | H2O などの化学記号を書く / 化学反応式なども書くことが出来る |
chemfig | TikZ を利用して構造式を描く |
lipsum | 英文用のダミーテキスト / QA サイトで質問する際によく使われている印象 |
BXjalipsum | 和文用のダミーテキスト |
PythonTeX | TeX ファイル内でコードを実行する / 対応している言語は次のものである Bash, JavaScript, Julia, Octave, Perl, Python, R, Raku (Perl 6), Ruby, Rust 類似パッケージに runcode がある |
longdivision | 筆算による割り算の途中式を含めた計算結果を記述することが出来る / 途中で止めることも可能 |
witharrows | align 環境等で下に続く数式の右側に式変形などの説明を付した矢印を描く |
systeme | 連立方程式において、変数ごとに整列 / ドキュメントはフランス語のみ |
eqexpl | 変数の一覧を書く / MakeIndex を利用した nomencl もある |
numerica | 計算式とともに数値計算の結果を表示 |
numerica-tables | 数表を自動的に作成 / 対数表や三角関数表を自動的に作成できる |
cascade | 推論 |
termsim | 各 OS の代表的なターミナルを tcolorbox で再現 |
sankey | 工程の流量を表現する sankey 図を描く |
gitver | Git のバージョンタグを PDF に出力 |
ceo | 「大学への数学」などで使われているフォントとマクロ集 / TeX Live などとは別途にダウンロードが必要 / http://hocsom.com/links.html |
emath | tDB こと大熊一弘が開発した LaTeX 上で使う初等数学プリント作成マクロ集 / TeX Live などとは別途にダウンロードする必要がある / http://emath.s40.xrea.com |
他にも、dynkin-diagrams で Dynkin 図形を描いたり、braids で組み紐の模式図を描いたりすることが出来る。
cf.
PythonTeX ではさまざまなスクリプトを実行することが出来るようになっている。その中には R も含まれている。R Markdown を利用して LaTeX 経由で PDF に変換するよりも、TeX ファイル内で R を実行出来た方が楽なようにも思われるが、どうなのだろうか。(Markdown ですぐに見ることが出来ると利便性が高いのかしら)
各 OS の代表的なターミナルを模した termsim パッケージがあるなら、Twitter のツイート表示を模したパッケージが出てきても良さそう(妄言)
■ 有用なツール
パッケージの他に、LaTeX ではさまざまなツールが開発されている。
ツール | 概要 | Repository |
---|---|---|
latexindent | formatter / tabular 環境などの整形 |
cmhughes/latexindent.pl - GitHub |
chktex | LaTeX の構文を静的解析 | sharelatex/chktex - GitHub |
lacheck | LaTeX の構文を静的解析 | mitchmoser/LACheck - GitHub |
latexdiff | 2 つのファイルの差分をマークアップ / 差分 TeX ファイルは PDF にできる |
ftilmann/latexdiff - GitHub |
git-latexdiff | Git による差分をマークアップ / 差分 TeX ファイルは PDF にできる |
git-latexdiff/Git Latexdiff - GitLab |
latexpand | 分割したファイルの統合 | latexpand/Latexpand - GitLab |
TeXcount | TeX ファイル内に含まれる単語数をカウントする / ガイドを見ると Japanese オプションから日本語のカウントも可能のようだ |
https://app.uio.no/ifi/texcount/ |
余談
本記事で 180 程度のパッケージを紹介しているらしい。(それでも全体の約 3% しかない)
さすがにありすぎる。把握しきれない。
この他にも igo や chessboard、crossword や sudoku でボードゲーム、パズルを記述できる。また、coffee stains でコーヒーでできた染みを作ることも出来る。
ハロウィンには halloweenmath でハロウィン な数式を出力できるし、雪の日には scsnowman で雪だるま を作れるし、いつでも bearwear でテディベア の着せ替えで遊ぶことも randomwalk でランダムウォークすることも出来る。なんだってできちゃうすごい!
LaTeX で困ったことがあれば一度パッケージを探してみると良いだろう。まだまだパッケージは眠っているので、時間があるときに CTAN の森でさまよってみてはどうだろうか。
他に、オススメのパッケージが紹介されているページは次ようなものもある。
-
CTAN: Package docsurvey [PDF]
特に
Useful classes, packages, and programs
を参照 -
Documentation - Overleaf, Online LaTeX Editor
Overleaf のドキュメント(
残念なことに日本語によるドキュメントは展開されていない)
トピックから探す
CTAN では各パッケージにトピックがタグ付けのようにされており、これを元に同じようなパッケージを探すことが出来る。
一部例を示しておく。
例えば、回路図を描きたい場合には Circuit Diagram を参照すれば良いだろう。
パッケージを探すときの注意点として、別のパッケージが後継になっておりサポートされていないが、後方互換のために残っているパッケージも多い。
例えば、here パッケージは後方互換のためだけに残っている。また、caption パッケージでは、caption と caption2 があるものの、現在最新のバージョン 3 は caption で利用することが出来る。かなりややこしい。パッケージのドキュメントを読んだり最終更新日を確認したりしておくべきだろう。
追記
- 2022/02/07 : plistings と jlisting の違いについて追記。いくつかのパッケージを追加
- 2022/05/11 : いくつかのパッケージの説明を追加。軽微修正。
- 2022/07/21 : 多言語について追加。ソースコードについて追記。軽微修正。
- 2023/05/30 : physics パッケージと physics2 パッケージについて追記。軽微修正。