Minted とは
ソースコードにいい感じに色をつけてくれるパッケージである。
使い方は上の公式ドキュメントにすべて書いてあるので読むべし。そのため、以下は蛇足である。
セットアップ
- 必要なら CTAN から minted をダウンロードする
- 大抵のLaTeXディストリビューションには同梱されているのでこの手順は不要
python -m pip install Pygmentspygmentizeへパスが通っていない場合は通す
注意点としてタイプセット時に LaTeX エンジンへ-shell-escapeフラグを渡す必要がある。
使い方(基本)
プリアンプルに書くもの
\usepackage{minted}
Document 環境に書くもの
\begin{minted}{c}
int main() {
printf("hello world\n");
return 0;
}
\end{minted}
出力

\begin{minted}[オプション]{言語} の形式でオプションが指定できる
インライン
\usepackage{minted}
Lorem ipsum dolor sit amet, qui minim \mintinline{python}{print("power of x is", x**2)}labore adipisicing minim sint cillum sint consectetur cupidatat.

\mintinline[オプション]{言語}{コード}
他のファイルを取り込む
\usepackage{minted}
\inputminted[オプション]{言語}{ファイル名}
言語の種類について
Pygmentsの対応言語一覧 | site-hhs を参照。
プレーンなテキストは text である。
スタイルを変える
プリアンプルに
\usemintedstyle[言語]{スタイル}
言語を省略した場合はすべての言語に適用される。スタイルの一覧は https://pygments.org/demo/ または pygmentize -L styles を参照。
Floating環境(\labelと\refで参照する)
\usepackage{minted}
\begin{listing}
\begin{minted}{c}
int main() {
print("hello\n");
}
\end{minted}
\caption{helloと表示するプログラム}
\label{hogehoge}
\end{listing}
リスト\ref{hogehoge}はhelloと表示します。

オプションを指定する
よく使うやつのみ。詳細は公式ドキュメントの5章参照。
パッケージにつけるオプション
\usepackage[ここ]{minted}に書くやつ
draft=true- 一部の機能をオフにしてタイプセットを高速にする。下書き用
マクロにつけるオプション
\begin{minted}[ここ][language]とか\inputminted[ここ]{language}{file}に書くやつ
linenos=true- 行番号。デフォルトはfalsebreaklines=true- 長い行を折り返す。デフォルトはfalsefirstnumber=数字- 最初の行の行番号。デフォルトは1fontfamily=フォント-tt(デフォルト)、courier、helveticaの3択fontsize- フォントサイズ。0.5\footnotesizeなどframe- 枠。none(デフォルト) |leftline|topline|bottomline|lines|singlefirstline=数字,lastline=数字- 表示する行の範囲を指定する。\inputmintedと組み合わせると便利
ショートカットを定義する
毎回長いオプションを書くのは大変なのでショートカットを定義することができる。
\newminted
\newminted[名前]{言語}{オプション}で名前を定義する。以下のように使う
\begin{名前}
コード
\end{名前}
これと同義:
\begin{minted}[オプション]{言語}
コード
\end{minted}
[名前] を省略すると言語名+code になる
\newmintinline
\newmintinline[名前]{言語}{オプション}
\名前{コード}
これと同義:
\mintinline[オプション]{言語}{コード}
[名前]を省略すると言語名+inline になる
\newmintedfile
\newmintedfile[名前]{言語}{オプション}
\名前{ファイル名}
これと同義:
\inputminted[オプション]{言語}{ファイル名}
[名前]を省略すると言語名+file になる