使用该cite
包时,如何才能阻止对一条引文进行自动排序?在
\documentclass{article}
\usepackage[nocompress,space]{cite}
\usepackage{hyperref}
\begin{document}
Sort this: \cite{2,3,1}. %print "[1, 2, 3]"
Do not sort this: \cite{2,3,1}. %print "[2, 3, 1]"
Sort this: \cite{2,3,1}. %print "[1, 2, 3]"
\begin{thebibliography}{9}
\bibitem{1}
\bibitem{2}
\bibitem{3}
\end{thebibliography}
\end{document}
我希望中间的引用打印为“[2, 3, 1]”,但第一个和最后一个引用打印为“[1, 2, 3]”。另外,我知道我将使用包hyperref
以及nocompress
和space
选项cite
。
编辑:仅供参考,查看cite.sty
,我尝试定义一个\citenosort
命令并将其用于我不想排序的引用:
\documentclass{article}
\usepackage[nocompress,space]{cite}
\usepackage{hyperref}
\makeatletter
\newcommand{\citenosort}[1]{\begingroup\def\@addto@cite@list{\@cite@dump@now}\cite{#1}\endgroup}
\makeatother
\begin{document}
Sort this: \cite{2,3,1}. %print "[1, 2, 3]"
Do not sort this: \citenosort{2,3,1}. %print "[2, 3, 1]"
Sort this: \cite{2,3,1}. %print "[1, 2, 3]"
\begin{thebibliography}{9}
\bibitem{1}
\bibitem{2}
\bibitem{3}
\end{thebibliography}
\end{document}
在我的示例中,它似乎有效,但我不知道它可能有什么副作用。显然我的命令不能有可选参数。
答案1
您似乎希望原始\cite
命令可用;这需要一些技巧。
\documentclass{article}
\makeatletter % save the original \@citex command
\let\latex@citex\@citex
\makeatother
\usepackage[nocompress,space]{cite}
\usepackage{hyperref}
\makeatletter % define \citenosort as the original \cite
\DeclareRobustCommand{\citenosort}{%
\@ifnextchar[{\@tempswatrue\latex@citex}{\@tempswafalse\latex@citex[]}%
}
\begin{document}
Sort this: \cite{2,3,1}. %print "[1, 2, 3]"
Do not sort this: \citenosort{2,3,1}. %print "[2, 3, 1]"
Sort this: \cite{2,3,1}. %print "[1, 2, 3]"
\begin{thebibliography}{9}
\bibitem{1}
\bibitem{2}
\bibitem{3}
\end{thebibliography}
\end{document}
答案2
单独打印引用:
\documentclass{article}
\usepackage[nocompress,space]{cite}
\usepackage{hyperref}
\begin{document}
Sort this: \cite{2,3,1}. %print "[1, 2, 3]"
Do not sort this: \citeleft\citen{2}\citepunct\citen{3}\citepunct\citen{1}\citeright. %print "[2, 3, 1]"
Sort this: \cite{2,3,1}. %print "[1, 2, 3]"
\begin{thebibliography}{9}
\bibitem{1}
\bibitem{2}
\bibitem{3}
\end{thebibliography}
\end{document}