50
49

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

LaTeX でいろんなパッケージを usepackage する

Last updated at Posted at 2022-01-02

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}

LaTeX の「アレなデフォルト」傾向と対策 - Qiita

jlreq クラスを利用すると lmodern はデフォルトで読み込まれるため、これらは必要ないようだ。

▽ 脚注と注釈

本文の左右の余白に記載する注釈はマージンノートなどと呼ばれる。

パッケージ 概要
tablefootnote 表内で脚注を使用する
endnotes 文章末や章末に脚注を挿入する
ftnright 二段組の際に脚注を右側に寄せる
mparhack \marginpar のバグを修正 /
マージンを修正するための marginfixmarginfit もある
marginnote \marginpar コマンドの用途の広い代替手段の提供
sidenotes テキストにこだわらず、図や表なども含めることも出来る

TODO のために左右の余白を使う場合には、todonotessnaptodozebra-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 とは別にダウンロードする必要がある /
:link: https://github.com/h-kitagawa/plistings
jlisting pLaTeX 上で listings を利用する際に日本語を挿入する /
TeX Live とは別にダウンロードする必要がある /
:link: 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 さんにコメント で教えていただきました。ありがとうございます :smile:

また、画像を見比べると日本語の文字間隔が少し異なっている。この他にも違いがあると思われる。画像をよく確認すると良いだろう。

2022/07/21 追記
jlisting であっても、listings を読み込みこむことで plistings と同様の結果を得られる。
どうやら、plistings では listings が自動的に読み込まれるが、jlisting では listings を自動的に読み込まないことが原因のようだ。

plistings jlisting
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
  • amsmath パッケージのバグ修正 / 環境の拡張
  • いくつかの有用なコマンドの提供
  • showonlyrefs オプションによる相互参照された数式のみの式番号表示
empheq amsmath パッケージから提供される環境をさらに拡張
autobreak split 環境を拡張するような形で自動折り返しを実現する
breqn 数式の自動折り返しを実現する

cf.

▽ 数学記号

いくつかの数学記号やフォントを追加したい場合には、以下のようなパッケージを読み込む。

パッケージ 概要
amssymb 数学記号やフォントを提供
  • 数学記号
  • 黒板文字 (\mathbb)
  • フラクトゥール (\mathfrak)
amssymb は読み込むと amsfonts も読み込まれる
mathrsfs 花文字 (\mathscr) を提供
upgreek 立体のギリシャ文字を提供
euscript カリグラフィー体と花文字を提供
bbm 黒板太字を提供
  • アルファベット大文字小文字
  • アラビア数字の 12
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 を利用し自由度の高い行列を表現できる
  • 長い省略のためのドット
  • 行列内に線を引く
  • 行と列にラベルを付ける
  • 部分行列を挿入する
  • 色付けや行列要素を囲むなどのマークアップ
行列環境の他、表に関する NiceTabular 環境も提供している
tensor テンソル表記のためのコマンドを提供
braket Dirac の bra-ket 記法のためのコマンドを提供 /
集合論における内包的記法のためのコマンドを提供
slashed Feynman のスラッシュ記法のためのコマンドを提供 /
類似パッケージに centernot がある(これの方が汎用性が高いかも)
accents 数学記号に複数のアクセントをつける
cancel 取り消しの斜線を引く
physics xparse パッケージを利用して次のような簡易記法を提供
  • 高さが自動調整される括弧
  • ベクトル記法
  • いくつかの作用素(\sin などには続けて高さが自動調整される括弧を与えられる)
  • 挿入テキストの簡易コマンド
  • 微分記法
  • Dirac の bra-ket 記法
  • 行列の簡易記法
physics2 physics パッケージの代替 /
physics パッケージの問題が解消されている
  • 高さが自動調整される括弧
  • Dirac の bra-ket 記法
  • 行列の簡易記法
SemanTeX 意味論を重視した数式の表現

より自然な記法を目的とした nath や自動的に記号のスタイルを変更する smart-eqn などもあるが、実用に耐えるのか分からない。

cf.

physics パッケージの問題点と、その代替パッケージととなりうる physics2 パッケージについては以下の記事を参照してください。

■ 多言語

多言語文書を作成するためのパッケージ。

パッケージ 概要
babel 多言語文書を作成する
polyglossia LuaLaTeX と XeLaTeX のための babel 代替パッケージ

利用したことはないので分からないが、おそらくロゼッタストーン Wikipedia を書くことが出来る。

Babel - TeX Wiki

■ 相互参照

相互参照に関するいくつかのパッケージ。

パッケージ 概要
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 のような機能を一手に引き受けることが出来る
  • 処理には Unicode 対応した biber を利用(BibTeX ではない)
  • 文献リストのスタイル
  • \cite のスタイルをカスタマイズ
  • 複数の文献リストを作成

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 を利用してピカチュウを模したものを作っている人もいる。

tcolorbox でピカチュウフレーム - hohei’s diary

▽ TikZ/PGF について

PGF は "Portable Graphics Format" の略、TikZ は "TikZ ist kein Zeichenprogramm" の略。
TikZ を利用することで TeX から直接ベクター画像を作成することが出来る。これは LaTeX から提供されている picture 環境よりも高度に記述することが出来る。

cf. TikZ - TeX Wiki

TikZ & PGF のマニュアルは、広大な大魔境となっている。前半のチュートリアルは良いかもしれない。ある程度 TikZ が使えるようになってから読むと良いだろう。
したがって、TikZ の基本的な使い方は以下のような記事を参照して学習すると良いだろう。

LaTeX で図を直接描ける TikZ の使い方 1 | 基本的な描線

また、TikZ/PGF の機能を絞ったパッケージは多数存在する。
以下の記事ではこれらの機能を絞ったパッケージを紹介しているので、参照すると良いだろう。

私家版:PGF/TikZ を利用したパッケージ一覧 - Qiita

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 などのコンテンツを分割することを目的としている。
本来あるべき使い方を記述するような記事を見つけることは出来なかった。

また、これらのパッケージを利用せずに分割する方法もある。

効率的な LaTeX ファイル分割術 - Qiita

■ 絵文字

パッケージ 概要
twemojis twemoji を利用することが出来る /
byo-twemojis から絵文字を作成することも出来る
BXcoloremoji カラーの絵文字を使う /
TeX Live などとは別途にダウンロードが必要 /
:link: https://github.com/zr-tex8r/BXcoloremoji /
類似パッケージに emojicoloremoji がある
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 などとは別途にダウンロードが必要 /
:link: http://hocsom.com/links.html
emath tDB こと大熊一弘が開発した LaTeX 上で使う初等数学プリント作成マクロ集 /
TeX Live などとは別途にダウンロードする必要がある /
:link: 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/

cf.
latexindent の使い方 - Gist

余談

本記事で 180 程度のパッケージを紹介しているらしい。(それでも全体の約 3% しかない)
さすがにありすぎる。把握しきれない。

この他にも igochessboardcrosswordsudoku でボードゲーム、パズルを記述できる。また、coffee stains でコーヒーでできた染みを作ることも出来る。
ハロウィンには halloweenmath でハロウィン :jack_o_lantern: な数式を出力できるし、雪の日には scsnowman で雪だるま :snowman: を作れるし、いつでも bearwear でテディベア :bear: の着せ替えで遊ぶことも randomwalk でランダムウォークすることも出来る。なんだってできちゃうすごい!

LaTeX で困ったことがあれば一度パッケージを探してみると良いだろう。まだまだパッケージは眠っているので、時間があるときに CTAN の森でさまよってみてはどうだろうか。

他に、オススメのパッケージが紹介されているページは次ようなものもある。

トピックから探す

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 パッケージについて追記。軽微修正。
50
49
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
50
49

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?