我以前经常使用,listings
但minted+pygmentize
输出效果非常好。但是,有一些功能在 中listings
很难找到minted
,比如在右侧显示行号。
有没有办法在minted
这样的环境中交叉引用线路listings
?
答案1
我知道这是一个“古老”的问题,但我愿意回答它来帮助那些像我一样来到这里的人。:)
minted
nows 提供了一个名为的宏escapeinside
(对于 LaTeX 也texcl
提供texcomments
了注释,请查看文档了解更多信息):
escapeinside(字符串)(默认值:⟨none⟩)
在 (string) 中指定的两个字符之间转义为 LaTeX。两个字符之间的所有代码都将被解释为 LaTeX 并进行相应的排版。这允许进行额外的格式化。转义字符不必相同。当特殊 LaTeX 字符用作转义字符时,必须对其进行转义(例如
escapeinside=\#\%
)。需要 Pygments 2.0+。转义在字符串和注释中不起作用(对于注释,有
texcomments
)....
文档中给出的一个例子是:
\begin{minted}[escapeinside=||]{py}
def f(x):
y = x|\colorbox{green}{**}|2
return y
\end{minted}
我试过了。我们还可以使用以下命令\label{refname}
创建线引用:esacpeinside
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{minted}
\begin{document}
\begin{minted}[escapeinside=||,linenos,gobble=0]{c}
void hello() |\label{line:hello_start}|
{
printf("Hello minted!\n");
} |\label{line:hello_end}|
int main()
{
hello(); |\label{line:invoke}|
return 0;
}
\end{minted}
The code at Line~\ref{line:invoke} invokes a function defined
between Line~\ref{line:hello_start} and Line~\ref{line:hello_end}.
\end{document}
上的例子背页。
希望这可以帮助。 :)