Help us understand the problem. What is going on with this article?

Texpadでmintedパッケージを使ってpythonコードをsyntax highlightして挿入

環境

macOS Sierra
TeXLive 2017
Texpad 1.8.7
pLaTeX→dvipdfmx

mintedとは

texドキュメント中でいい感じにソースコードを表示してくれるパッケージです。
listingsパッケージよりお手軽にsyntax highlightが使えます。

使い方についてはOverleafの解説が丁寧です。
https://www.overleaf.com/learn/latex/Code_Highlighting_with_minted

インストール

まずは何はともあれmintedを入れます。
https://ctan.org/pkg/minted からzipを落として解答、そのディレクトリでmakeすると
minted.styが出てくるので、texmfとかスタイルファイル置き場に入れます。
僕はとりあえずソースと同じディレクトリに置いときました。

これに加えてpythonのpygmentizeパッケージも必要ですが、Anacondaでpythonを導入した場合は最初から入ってるはず。
必要に応じてインストールしてください

shell escapeを許可する

texpadの画面左上の設定ボタン(Tweak typeset setting..)からタイプセット設定画面を開き、
Generalの下の方にあるEnable--shell-escapeにチェックを入れる。
スクリーンショット 2019-01-19 19.01.29.png

pymintedシンボリックリンクを貼る

このままだとtexpadがpygmentizeを見つけられないので、
texと同じディレクトリにpygmentizeのシンボリックリンクを置く。
まずターミナルからwhich pygmentize でpygmentizeの場所を調べましょう。
場所がわかったらシンボリックリンクを張ります。僕の場合は
sudo ln -s /Users/resnant/anaconda/bin/pygmentize /Library/TeX/texbin

「中間ファイルを隠す」をオンにしてる場合はプリアンブルに次を追記

これを忘れて、エラーは出ないけどドキュメントの該当部分に何も表示されずしばらくハマりました。
\usepackage[outputdir=.texpadtmp]{minted}

キャッシュを無効にする

Package minted Error: Missing Pygments output; \inputminted was~

とか怒られた場合は、プリアンブルでcache=falseオプションを追記します
\usepackage[cache=false]{minted}
あるいは中間ファイルを隠してる場合は
\usepackage[cache=false, outputdir=.texpadtmp]{minted}

おしまい

お疲れ様でした。楽しい$\TeX$ライフを!

最後に例も示しておきます。

text.tex
\documentclass{jsarticle}
\usepackage[cache=false, outputdir=.texpadtmp]{minted}

\begin{document}
\begin{minted}{python}
import numpy as np
print('hello world')
def dummyfunc():
    pass
\end{minted}
\end{document}

出力例↓
スクリーンショット 2019-01-19 19.30.54.png

ちなみに、プリアンブルで\usemintedstyle{monokai}とかやればカラースキームも変えられます。
黒背景のほうが見やすい場合もあると思うので、その時はminted環境を宣言する時にbgcolorオプションを付けます。
\begin{minted}[bgcolor=Black]{python}

詳しくはoverleafの解説をどうぞ
https://www.overleaf.com/learn/latex/Code_Highlighting_with_minted
https://www.overleaf.com/learn/latex/Using_colours_in_LaTeX

困っている点

僕の環境ではなぜかpythonコード中のtabが^^Iと出力されてしまいますが、原因がよくわかってないので今のところ未解決です。。

参考

https://qiita.com/la_float/items/2884a4d80a54ffa89a34
http://muscle-keisuke.hatenablog.com/entry/2015/11/06/182214

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away