即使更改了 minted 的列表环境标题名称,Cleveref 也不会更改其字符串

即使更改了 minted 的列表环境标题名称,Cleveref 也不会更改其字符串

我正在使用该minted包的listing环境来排版 MATLAB 源代码。

正如手册中所述minted,我已使用\SetupFloatingEnvironment{listing}{name=Program code}选项将标题从默认更改listingProgram code。这成功更新了标题。但是,在文本中交叉引用源代码时,cleveref仍然使用 这个词listing

这里有一个MWE

\documentclass{article}
\usepackage[newfloat=true]{minted}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage[nameinlink]{cleveref}
\SetupFloatingEnvironment{listing}{name=Program code}

\begin{document}

The code for computing mass-energy relationship is given in~\cref{code:massenergy}.

\begin{listing}
    \begin{minted}[autogobble,frame=single]{matlab}
    clear; close all; clc;
    e = m*c^2;
    \end{minted}
    \caption{Mass-Energy Relationship}
    \label{code:massenergy}
\end{listing}

\end{document}

以下是产生的输出

cleveref 对 minted 源代码的交叉引用字符串有误

我怎样才能cleveref在文本中生成预期的交叉引用字符串?

答案1

newfloat包不会将新名称传递给cleveref;无论如何,您还需要复数形式。

添加

\crefname{listing}{Program code}{Program codes}

在该\SetupFloatingEnvironment行之后。

你可以通过以下方式避免代码重复

\crefname{listing}{\listingname}{\listingname s}

相关内容