使用“\inputminted”时可以引用源代码中的行吗?

使用“\inputminted”时可以引用源代码中的行吗?

我想知道是否有任何方法可以让我引用\inputmintedminted包中使用宏导入的源代码中的行?

我的假设是,由于它是一个外部文件,这是不可能的?

我尽量避免手动复制文件内容,因为我不想意外忘记更新.tex文件中的代码。所以如果有人有任何建议,我很乐意听取!

谢谢。

梅威瑟:

\documentclass{report}

\usepackage{minted}
\setminted{
    linenos
}

\begin{document}
% Report contents
In \hyperref[code.m:30]{Line 30} we can find \dots

% Appendix
\inputminted{MATLAB}{code.m}
% The following LaTeX code is only for illustration purposes
\label{code.m:30}
\end{document}

答案1

\label您需要在输入文件中添加。

\begin{filecontents*}[overwrite]{\jobname.m}
Line
Line
Line
Line |\phantomsection\label{thisline}|
Line
Line
\end{filecontents*}

\documentclass{article}

\usepackage{minted}
\usepackage{hyperref}

\begin{document}

In \hyperref[thisline]{Line~\ref*{thisline}} we can find \dots

\clearpage

\inputminted[linenos,escapeinside=||]{MATLAB}{\jobname.m}

\end{document}

在此处输入图片描述

如果您打算使用-标签,或者可能被错误解释的其他字符minted,则可以使用解决方法。

\begin{filecontents*}[overwrite]{\jobname.m}
Line
Line
Line
Line |\mintedlabel{this-line}|
Line
Line
\end{filecontents*}

\documentclass{article}

\usepackage{minted}
\usepackage{hyperref}

\newcommand{\mintedlabel}[1]{\phantomsection\label{\detokenize{#1}}}

\begin{document}

In \hyperref[this-line]{Line~\ref*{this-line}} we can find \dots

\clearpage

\inputminted[linenos,escapeinside=||]{MATLAB}{\jobname.m}

\end{document}

相关内容