如何使用 namecref 获取完整形式,否则获取缩写形式?

如何使用 namecref 获取完整形式,否则获取缩写形式?

继续cleveref——同时使用缩写和完整形式的引用?\namecref,如何获得和的完整形式的输出,同时像往常一样\nameCref保持和的缩写形式?\cref\Cref

例子:

\documentclass[ngerman]{article}
\pagestyle{empty}
\usepackage[ngerman]{babel}
\usepackage[ngerman,capitalize]{cleveref}
\begin{document}
\begin{figure}
  Irgendein Diagramm% German for “Some diagram”
  \caption{Bezeichnung des Diagramms}% German for “name of the diagram”
  \label{fig}
\end{figure}
Betrachen wir \cref{fig}. %%% German for “Let us consider Fig. 1.”, which is fine.
Diese \namecref{fig} beschreibt \ldots %%% German for “This Fig./Figure describes …”. We'd like to have an unabbreviated form here: “Diese Abbildung beschreibt …” (German for “This figure describes …”). “Diese Abb. beschreibt …” (German for “This Fig. describes …”) looks strange.
\end{document}

生产

我们尊敬的 Abb。 1. 这个阿姨。描述…

我们希望有一个更愉快的

我们尊敬的 Abb。 1. 本图片说明…

反而。

如果可能的话,我们不想更改部分\begin{document}…\end{document},即所使用的命令的名称,例如\namecref\cref和其他,因为这样会形成一个庞大的 LaTeX 文档——一本厚厚的书。理想情况下,唯一的变化应该发生在序言中,或者,在最坏的情况下,\namecref可以用其他内容替换,因为书中只有少数几个例子\namecref(而不是很多例子\crefCref)。

答案1

您可以暂时切换到长格式:

\documentclass[ngerman]{article}
\pagestyle{empty}
\usepackage[ngerman]{babel}
\usepackage[ngerman,capitalize]{cleveref}

\makeatletter
\DeclareRobustCommand{\namecref}[1]{%
  \begingroup
  \crefname{figure}{Abbildung}{Abbildungen}%
  \crefname{subfigure}{Abbildung}{Abbildungen}%
  \@setnamecref{cref}{#1}{}{}%
  \endgroup
}%
\makeatother

\begin{document}
\begin{figure}
  Irgendein Diagramm
  \caption{Bezeichnung des Diagramms}\label{fig}
\end{figure}
Betrachen wir \cref{fig}. %%% “Betrachen wir Abb. 1.” is fine.

Diese \namecref{fig} beschreibt \ldots %%% We'd like to have an unabbreviated form here: “Diese Abbildung beschreibt …”. “Diese Abb. beschreibt …” looks strange.

Betrachen wir \cref{fig}. %%% “Betrachen wir Abb. 1.” is fine.
\end{document}

相关内容