铸造交叉参考线

铸造交叉参考线

我以前经常使用,listingsminted+pygmentize输出效果非常好。但是,有一些功能在 中listings很难找到minted,比如在右侧显示行号。

有没有办法在minted这样的环境中交叉引用线路listings

答案1

我知道这是一个“古老”的问题,但我愿意回答它来帮助那些像我一样来到这里的人。:)

mintednows 提供了一个名为的宏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}

上的例子背页

希望这可以帮助。 :)

相关内容