我想知道是否有任何方法可以让我引用\inputminted
从minted
包中使用宏导入的源代码中的行?
我的假设是,由于它是一个外部文件,这是不可能的?
我尽量避免手动复制文件内容,因为我不想意外忘记更新.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}