在 cleveref 中缩写“listing”

在 cleveref 中缩写“listing”

有没有办法让 cleveref 将“listing”缩写为“lis.”,除了在句子开头之外?换句话说,让它表现得像“equation”?

\documentclass{book}
\usepackage{cleveref}
\usepackage[listings]{tcolorbox}

\newtcblisting[auto counter,number within=chapter,crefname={listing}{listings}]{labelboxcode}[3][]{%
    listing options={language=Java,#1},
    listing and comment,
    comment={Listing~\thetcbcounter: #3},
    label=#2
}

\begin{document}
\chapter{A chapter}
\begin{labelboxcode}{foo}{Class \texttt{Foo}.}
class Foo {}
\end{labelboxcode}

\Cref{foo} is class \verb;Foo; (\cref{foo}).
\end{document}

我希望\cref{foo}生产lis. 1.1而不是listing 1.1

答案1

您需要做的就是替换单个选项

crefname={listing}{listings}

具有以下选项:

crefname={lis.}{listings}
Crefname={Listing}{Listings}

这是因为该crefname={lis.}{listings}选项会生成 LaTeX 代码\crefname{listing}{lis.}{listings}以供包使用cleveref。默认情况下,如果运行了\crefname但没有相应的宏,则通过将两个参数的首字母大写来构建要使用的标签格式。可以通过提供选项来覆盖默认机制。\Crefnamecleveref\Cref\crefnametcbcolorboxCrefname={Listing}{Listings}


完整的 MWE;hyperref包和 cleverefnameinlink选项仅用于突出显示\Cref和的各自输出\cref

在此处输入图片描述

\documentclass{book}
\usepackage[colorlinks,allcolors=blue]{hyperref}
\usepackage[nameinlink]{cleveref}
\usepackage[listings]{tcolorbox}

\newtcblisting[auto counter,
               number within=chapter,
               crefname={lis.}{listings},  % was: {listing}{listings}
               Crefname={Listing}{Listings}% <-- new
              ]
              {labelboxcode}[3][]{%
               listing options={language=Java,#1},
               listing and comment,
               comment={Listing~\thetcbcounter: #3},
               label=#2}

\begin{document}

\chapter{A chapter}

\begin{labelboxcode}{foo}{Class \texttt{Foo}.}
   class Foo {}
\end{labelboxcode}

\noindent
\Cref{foo} is class \verb;Foo; (\cref{foo}).

\end{document}

相关内容