latex中代码高亮显示宏包minted用法

latex中代码高亮显示宏包minted用法

前提

使用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=