参考 minted 包中的源代码行

参考 minted 包中的源代码行

有人知道一个工作示例吗?其中引用了 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...

相关内容