该cleveref
手册指出(第 7 页):
和命令生成复数形式。
\namecrefs
和命令强制将引用名称转换为小写,以便在\nameCrefs
\lcnamecref
\lcnamecrefs
capitalise
启用该选项时使用。 [...] 请注意,所有这些命令只能传递一个引用名称;它们不接受像 这样的多重引用\cref
如果引用具有不同类型的类型,则将多个引用传递给这些命令毫无意义,如果它们具有相同的类型,则传递多个引用是多余的。)
我对最后一部分“冗余”的说法很感兴趣:这是否意味着已经有一个命令可以做到这一点?或者他们的意思是可以简单地使用\lcnamecrefs
而不是\lcnamecref
来产生复数形式?
我问是因为建议的答案这里:我试图使用它\newcommand{\lccref}[1]{\lcnamecref{#1}~\labelcref{#1}}
来自动化小写引用,但每次我有多个引用时它就会中断(显然,从手册中看到上面的内容,这是一个“功能”)。
我怎样才能改变我的命令来同时使用单个和多个参考?
平均能量损失:
\documentclass{scrreprt}
\usepackage{cleveref}
\newcommand{\lccref}[1]{\lcnamecref{#1}~\labelcref{#1}}
\begin{document}
\begin{equation}
E=mc^2\label{eq:foo}
\end{equation}
\begin{equation}
E/m=c^2\label{eq:bar}
\end{equation}
First \lccref{eq:foo}, then \lccref{eq:bar}. But don't try \lccref{eq:foo,eq:bar}.
\end{document}
答案1
您可以创建一个\lccrefs
仅将第一个参数传递给的新命令\lcnamecrefs
:
\documentclass{scrreprt}
\usepackage{cleveref}
\newcommand{\lccref}[1]{\lcnamecref{#1}~\labelcref{#1}}
\makeatletter
\def\lcfirstnamecrefs#1,#2\@nil{\lcnamecrefs{#1}}
\newcommand{\lcfirstnamecref}[1]{\lcfirstnamecrefs #1,\@nil}
\makeatother
\newcommand{\lccrefs}[1]{\lcfirstnamecref{#1}~\labelcref{#1}}
\begin{document}
\begin{equation}
E=mc^2\label{eq:foo}
\end{equation}
\begin{equation}
E/m=c^2\label{eq:bar}
\end{equation}
\begin{equation}
E = \frac{1}{2}mv^2 \label{eq:baz}
\end{equation}
First \lccrefs{eq:foo}, then \lccref{eq:bar}.
But don't try \lccrefs{eq:foo,eq:bar} or
\lccrefs{eq:foo,eq:bar,eq:baz}.
\end{document}
答案2
除了使用lcnameref
,您还可以使用 本地(即在\begingroup
/\endgroup
对内)更改标签名称\crefname
。您需要分别为每种引用类型指定名称。
梅威瑟:
\documentclass{article}
\usepackage{cleveref}
\usepackage{graphicx}
\newcommand{\smallCref}[1]{%
\begingroup%
\crefname{figure}{figure}{figures}%
\crefname{equation}{equation}{equations}%
\cref{#1}%
\endgroup%
}
\begin{document}
\begin{figure}
\centering
\includegraphics[width=0.5\linewidth]{example-image-a}
\caption{Foo\label{fig:foo}}
\end{figure}
\begin{equation}
E=mc^2\label{eq:foo}
\end{equation}
\begin{equation}
E/m=c^2\label{eq:bar}
\end{equation}
\Cref{fig:foo} shows a correct usage of \verb|\Cref{}| at the beginning of the sentence. Whereas we can see how to use \verb|\cref{}| at the end of a sentence (\cref{fig:foo}).
\par Sometimes though, one may want to reference \Cref{fig:foo} with the complete label ``figure'', but having it capitalized in the middle of a sentence is weird. How can I have that single reference in smallcaps, leaving all other references in the document in the original capitalization?
In lower case: \smallCref{fig:foo}. Abbreviated: \cref{fig:foo}.
First \smallCref{eq:foo}, then \smallCref{eq:bar}. But don't try \smallCref{eq:foo,eq:bar}.
\end{document}
结果: