如何教导 \cref 引用“minted”环境内的行?

如何教导 \cref 引用“minted”环境内的行?

这是我的代码:

\documentclass{article}
\usepackage{minted}
\usepackage{cleveref}
\begin{document}
\begin{minted}[linenos,escapeinside=||]{cpp}
Hello,
world! |\label{foo}|
\end{minted}
See line no.\ref{foo}.
See \cref{foo}.
\end{document}

它呈现:

在此处输入图片描述

怎么修?

答案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 行”会有些奇怪)。

相关内容