lcnameref 具有多个引用

lcnameref 具有多个引用

cleveref手册指出(第 7 页):

和命令生成复数形式。\namecrefs和命令强制将引用名称转换为小写,以便在\nameCrefs\lcnamecref\lcnamecrefscapitalise启用该选项时使用。 [...] 请注意,所有这些命令只能传递一个引用名称;它们不接受像 这样的多重引用\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}

结果:

在此处输入图片描述

相关内容