![在 cleveref 中缩写“listing”](https://linux22.com/image/434202/%E5%9C%A8%20cleveref%20%E4%B8%AD%E7%BC%A9%E5%86%99%E2%80%9Clisting%E2%80%9D.png)
有没有办法让 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
但没有相应的宏,则通过将两个参数的首字母大写来构建要使用的标签格式。可以通过提供选项来覆盖默认机制。\Crefname
cleveref
\Cref
\crefname
tcbcolorbox
Crefname={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}