使用minted需要安装python环境,以及Pygments模块,因为minted依赖于该模块提供超过300种语言的语法高亮。
latex编译时也需要添加选项-shell-escape,因为它需要调用Pygments程序,所以要通过该选项告诉tex编译器。
\begin{minted}{}
\end{minted}
一个完整的例子是这样的:
\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{minted}{c}
int main() {
printf("hello, world");
return 0;
}
\end{minted}
\end{document}
除了可以使用minted环境外,也可以使用\mint
命令来代替该环境,比如:
\mint{python}|import this|
另外,也可以在行内使用,比如:
words\mintinline{python}{print(x**2)}words
也可以通过文件来输入需要高亮的代码:
\inputminted[]{}{}.
minted宏包也提供了listing浮动体环境,用于代码的浮动显示。比如:
\begin{listing}[H]
\mint{cl}/(car (cons 1 '(2)))/
\caption{Example of a listing.}
\label{lst:example}
\end{listing}
还可以利用\listoflistings
生成代码listing的目录。
minted使用选项的方式可以用key=value
方式给出,而仅给出key
则使用默认的选项。另外也可以针对文档中同一语言的所有代码显示设置相同的选项,
行间和行内代码分别用命令\setminted
和\setmintedinline
设置。
下面介绍一些常用的选项:
langlinenos 选项可以使得不同语言的高亮代码的行数连续计数。
autogobble 选项可以去掉最前面的空格
baselinestretch 选项设置行距的比例值
beameroverlays 选项可以使得在beamer中实现overlay功能,比如使用\only<1>{...}
breakafter 选项可以指定行内代码的可以换行在其后换行的字符,
字符集则是一个字符串,比如breakafter=-/d
\begin{minted}[breaklines, breakafter=d]{python}
some_string = 'SomeTextThatGoesOnAndOnForSoLongThatItCouldNeverFitOnOneLine'
\end{minted}
breakaftergroup 选项默认为true,表示当使用breakafter选项时,若断行字符有相邻的相同字符,则在最后一个字符后断行。
breakaftersymbolpre和breakaftersymbolpost 选项用于指定断行前后时添加的字符。
breakanywhere 选项用于行间代码环境中,当breaklines=true
时,可以在任意字符处断行。
breakanywheresymbolpre和breakanywheresymbolpost 与breakaftersymbolpre和breakaftersymbolpost 选项类似。
breakautoindent 选项用于设置断行后的行的自动缩进。
breakbefore 类似于breakafter。
breakbeforegroup 类似于breakaftergroup。
breakbeforesymbolpre,breakbeforesymbolpost也类似于breakaftersymbolpre和breakaftersymbolpost。
breakbytoken 选项阻止在记号内部断行。
breakbytokenanywhere 选项阻止在记号内部断行,但允许在记号间断行。
breakindent 选项用于设置断行后接续的行的缩进距离,比如1em
breakindentnchars 选项可以将缩进距离设置成单字符宽度的倍数,比如2倍。
breaklines 选项允许代码的断行。
breaksymbol等价于breaksymbolleft,用于设置断行后接续行前面加入的字符。
breaksymbolright 用于设置断行处右侧的字符。
breaksymbolindent 等价于breaksymbolindentleft,设置breaksymbolleft字符的缩进距离
breaksymbolindentnchars 等价于 breaksymbolindentleftnchars,设置breaksymbolleft字符的缩进距离,用字符宽度倍数表示。
breaksymbolindentright 是右侧额外的缩进距离,用于给breaksymbolright提供空间。
breaksymbolindentrightnchars 是右侧额外的缩进距离,用于给breaksymbolright提供空间。用字符宽度倍数表示。
breaksymbolsep 等同breaksymbolsepleft,设置breaksymbolleft和相邻文本的间距。
breaksymbolsepnchars 等同breaksymbolsepleftnchars,设置breaksymbolleft和相邻文本的间距。用字符宽度倍数表示。
breaksymbolsepright,设置breaksymbolright和相邻文本的间距。
breaksymbolseprightnchars ,设置breaksymbolright和相邻文本的间距。用字符宽度倍数表示。
bgcolor 设置背景颜色。如果要使用更高级的颜色设置,可以将minted环境放置在mdframed或tcolorbox这样的环境中,若使用tcolorbox,则可以设置\tcbuselibrary{minted}
。然后直接使用tcblisting环境,比如:
\begin{tcblisting}{,
minted language=,
minted style=