[Minted] LaTeX で色付きのソースコードを載せる方法

追加日時:    更新日時:   


Minted とは

ソースコードにいい感じに色をつけてくれるパッケージである。

使い方は上の公式ドキュメントにすべて書いてあるので読むべし。そのため、以下は蛇足である。

セットアップ

  1. 必要なら CTAN から minted をダウンロードする
    • 大抵のLaTeXディストリビューションには同梱されているのでこの手順は不要
  2. python -m pip install Pygments
  3. pygmentizeへパスが通っていない場合は通す

注意点としてタイプセット時に LaTeX エンジンへ-shell-escapeフラグを渡す必要がある。

使い方(基本)

プリアンプルに書くもの

\usepackage{minted}

Document 環境に書くもの

\begin{minted}{c}
int main() {
   printf("hello world\n");
   return 0;
}
\end{minted}

出力

色付きの hello world ソースコード

\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.

インラインで色付きの python コード

\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 - 行番号。デフォルトはfalse
  • breaklines=true - 長い行を折り返す。デフォルトはfalse
  • firstnumber=数字 - 最初の行の行番号。デフォルトは1
  • fontfamily=フォント - tt(デフォルト)、courierhelveticaの3択
  • fontsize - フォントサイズ。0.5\footnotesizeなど
  • frame - 枠。none(デフォルト) | leftline | topline | bottomline | lines| single
  • firstline=数字, lastline=数字 - 表示する行の範囲を指定する。\inputmintedと組み合わせると便利

ショートカットを定義する

毎回長いオプションを書くのは大変なのでショートカットを定義することができる。

\newminted

\newminted[名前]{言語}{オプション}名前を定義する。以下のように使う

\begin{名前}
コード
\end{名前}

これと同義:

\begin{minted}[オプション]{言語}
コード
\end{minted}

[名前] を省略すると言語名+code になる

\newmintinline

\newmintinline[名前]{言語}{オプション}

\名前{コード}

これと同義:

\mintinline[オプション]{言語}{コード}

[名前]を省略すると言語名+inline になる

\newmintedfile

\newmintedfile[名前]{言語}{オプション}

\名前{ファイル名}

これと同義:

\inputminted[オプション]{言語}{ファイル名}

[名前]を省略すると言語名+file になる