![参考 minted 包中的源代码行](https://linux22.com/image/239417/%E5%8F%82%E8%80%83%20minted%20%E5%8C%85%E4%B8%AD%E7%9A%84%E6%BA%90%E4%BB%A3%E7%A0%81%E8%A1%8C.png)
有人知道一个工作示例吗?其中引用了 minted 中的源代码行?到现在为止,我还没有找到任何关于如何做到这一点的帮助?
\begin{minted}[linenos=true]{c++}
bla bla bla bla ; \label{myline}
\end{minted}
不幸的是,上述方法不起作用,没有commandchars
或只有用于数学的乳胶命令?
谢谢你的帮助!!
答案1
使用mathescape
,然后将您的\label
数学模式放入注释中:
\begin{minted}[linenos=true, mathescape]{c++}
i = i + 1 ;
j = j + 1 ; // The important line $\label{myline}$
k = k + 1 ;
\end{minted}
The important line is line \ref{myline}.
答案2
@Ant 的答案很棒,但要求你\label
进入将出现在渲染代码中的注释。你可以通过使用escapeinside
而不是来解决这个问题mathescape
:
\begin{minted}[linenos=true, escapeinside=!!]{c++}
i = i + 1 ;
j = j + 1 ; !\label{myline}!
k = k + 1 ;
\end{minted}
The important line is line \ref{myline}.
答案3
如果您乐意从 更改为 ,minted
那么listings
这是可能的,正如本例所示:
\documentclass{article}
\usepackage{listings}
\lstset{basicstyle=\ttfamily,
escapeinside={(*}{*)},
numbers=left
}
\begin{document}
\begin{lstlisting}
def foo
while do bar(*\label{line}*)
end
\end{lstlisting}
As we can see in line \ref{line}
\end{document}
不幸的是,这意味着要做更多的工作才能获得漂亮的彩色语法高亮。escapeinside
定义一种逃离逐字环境并获取其中内容(*
并由*)
TeX 实际读取的方法……
答案4
我认为您无法引用一行代码。但是,您可以将minted
调用嵌入到环境中listing
并引用该列表:
\begin{listing}
\begin{minted}[linenos=true]{c++}
bla bla bla bla ; \label{myline}
\end{minted}
\caption{My nice listing}
\label{lst:nice_listing}
\end{listing}
In line~2 of listing \ref{lst:nice_listing}, we can see that...