答案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}
这是一个命令的实现\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}
请注意,这需要一个相当新的 LaTeX 或\usepackage{xparse}
。