答案1
我不知道这对你来说是否有可能,但zref-clever
可以处理以下情况:
\documentclass{article}
\usepackage{minted}
\usepackage{zref-clever}
\AddToHook{env/minted/begin}{\zcsetup{currentcounter=FancyVerbLine}}
\zcsetup{countertype={FancyVerbLine=line}}
\begin{document}
\begin{minted}[linenos,escapeinside=||]{cpp}
Hello,
world! |\label{foo}|
\end{minted}
See line no.~\ref{foo}.
See \zcref{foo}.
\end{document}
请注意,我不太了解minted
,只是快速浏览了一下,据我所知,它使用计数器FancyVerbLine
进行行号编号。此外,minted
当启用时,似乎诉诸于难以跟踪的重置行为langlinenos
。这可能会混淆上述设置,可能需要进一步调查和微调。(不过,我认为后果不会很严重。如果在同一个命令中引用两个不同语言的“第 3 行”的标签,则无法区分zref-clever
它们并将它们压缩为一个。但它们都是类型的line
,因此排版“第 3 行和第 3 行”而不是“第 3 行”会有些奇怪)。