如何在给定的代码中获得结果 Refs. [1,2-4]?

如何在给定的代码中获得结果 Refs. [1,2-4]?

我正在使用此代码进行引用

\documentclass[12pt]{article}
\usepackage{cite}

\begin{document}

Refs. \cite{a,b-d}
   
\begin{thebibliography}{}

\bibitem{a}
a

\bibitem{b}
b

\bibitem{c}
c

\bibitem{d}
d
\end{thebibliography}
\end{document} 

但它给了我这个结果

在此处输入图片描述

我如何才能得到结果参考[1,2-4]?

答案1

您可以从中获得“[1-4]” \cite{a,b,c,d},但我不知道有没有简单的方法可以从压缩功能中“排除”某些条目。

您可以使用\citenum临时构建所需的输出

\documentclass[12pt]{article}
\usepackage{cite}

\begin{document}
Refs.~\cite{a,b,c,d}

Refs.~\citeleft\citenum{a}\citepunct\citenum{b,c,d}\citeright

\begin{thebibliography}{4}

\bibitem{a}
a

\bibitem{b}
b

\bibitem{c}
c

\bibitem{d}
d
\end{thebibliography}
\end{document}

参考文献 [1–4] 参考文献 [1,2–4]

这是一个命令的实现\cites,它允许您分离没有压缩的引用“块”。

\documentclass[12pt]{article}
\usepackage{cite}

\ExplSyntaxOn
\bool_new:N \g__mtwentytwentyone_firstitem_bool

\NewDocumentCommand{\cites}{ >{ \SplitList {;} } m }
  {
    \citeleft
    \bool_gset_true:N \g__mtwentytwentyone_firstitem_bool
    \ProcessList { #1 } { \citesprocess }
    \citeright
  }

\NewDocumentCommand{\citesprocess}{m}
  {
    \bool_if:NTF \g__mtwentytwentyone_firstitem_bool
      { \bool_gset_false:N \g__mtwentytwentyone_firstitem_bool } 
      { \citepunct }
    \citenum{#1}
  }
\ExplSyntaxOff

\begin{document}
Refs.~\cites{a;b,c,d;e}

Refs.~\cites{a;b,c,d}

Refs.~\cites{a,b,c,d}

\begin{thebibliography}{4}

\bibitem{a}
a

\bibitem{b}
b

\bibitem{c}
c

\bibitem{d}
d

\bibitem{e}
e
\end{thebibliography}
\end{document}

参考文献 [1,2–4,5] 参考文献 [1,2–4] 参考文献 [1–4]

请注意,这需要一个相当新的 LaTeX 或\usepackage{xparse}

相关内容