引用与 cleveref 类似的命令

引用与 cleveref 类似的命令

我想要一个命令,它可以对引用的 BibTex 条目执行与包完全相同的操作cleveref处理方程式和图形(通过命令\cref)。

这个问题被问到了这里几年前,但它只得到一个答案,它只适用于 Biblatex 并且与 BibTex 不兼容。

答案1

BibTeX 的一个简单方法是使用包\IfSubStr中的方法xstring来检查参数是否包含逗号,然后打印參考或者裁判因此。

\documentclass{article}
\usepackage{xstring}
\newcommand{\ccite}[1]{%
\IfSubStr{#1}{,}{refs.~}{ref.~}\cite{#1}%
}
\newcommand{\Ccite}[1]{%
\IfSubStr{#1}{,}{Refs.~}{Ref.~}\cite{#1}%
}
\begin{document}
See \ccite{manual-full} and \ccite{inbook-minimal,incollection-minimal}.
\Ccite{manual-full} is interesting. \Ccite{inbook-minimal,incollection-minimal} not so much.
\bibliographystyle{plain}
\bibliography{xampl}
\end{document}

在此处输入图片描述

答案2

变体Marijn 的回答没有包:我们检查参数是否是长度大于 1 的 clist(逗号分隔列表)。

\documentclass{article}

\ExplSyntaxOn
\NewDocumentCommand{\ccite}{m}
 {
  \dv_ccite:nn { r } { #1 }
 }
\NewDocumentCommand{\Ccite}{m}
 {
  \dv_ccite:nn { R } { #1 }
 }
\cs_new_protected:Nn \dv_ccite:nn
 {
  #1ef % #1 is either r or R
  \int_compare:nT { \clist_count:n { #2 } > 1 } { s } % if more than one, print s
  .\nobreakspace
  \cite{#2}
 }
\ExplSyntaxOff

\begin{document}

See \ccite{manual-full} and \ccite{inbook-minimal,incollection-minimal}.
\Ccite{manual-full} is interesting. \Ccite{inbook-minimal,incollection-minimal} not so much.

\bibliographystyle{plain}

\bibliography{xampl}

\end{document}

在此处输入图片描述

另一方面,我从未见过以“ref.”开头的引文标记。

相关内容