![引用顺序不正确](https://linux22.com/image/324507/%E5%BC%95%E7%94%A8%E9%A1%BA%E5%BA%8F%E4%B8%8D%E6%AD%A3%E7%A1%AE.png)
我正在准备一份双栏格式的草稿,但不幸的是,我遇到了一个大问题:我在一个单独的文本文件中写了我的参考文献,并称之为art-bib
,我也使用了
\begin{thebibliography}{}
\include{art-bib}
\end{thebibliography}
用于传票。
虽然它调用了参考文献,但是在这样的安排下参考文献中已经写好的文件并没有按调用它们的顺序排列。例如:
The first sentence~\cite{ref5} and after that the second sentence~\cite{ref10} and so on..
它写给我的是:
The first sentence [5] and after that the second sentence [10] and so on..
我希望我有:
The first sentence [1] and after that the second sentence [2] and so on..
答案1
如果你编译以下示例
\documentclass{article}
\begin{document}
\cite{ugly} and \cite{good} followed by \cite{bad}
\begin{thebibliography}{3}
\bibitem{good} C. Eastwood, \emph{A good paper}, Journal \textbf{42} (2015), pp.~1--2.
\bibitem{bad} L. Van Cleef, \emph{A bad paper}, Journal \textbf{42} (2015), pp.~3--4.
\bibitem{ugly} E. Wallach, \emph{An ugly paper}, Journal \textbf{42} (2015), pp.~5--6.
\end{thebibliography}
\end{document}
LaTeX 生产
使用\input{art-bib}
,其中art-bib.tex
包含书目数据,效果相同。\include
无论如何都不要调用这个:这是错误的。
LaTeX 根本不进行排序。您能无需使用 BibTeX 即可执行此操作,只要添加一些宏并以不同的方式输入书目数据即可。
\documentclass{article}
\makeatletter
\renewcommand{\citation}[1]{%
\g@addto@macro{\citation@list}{,#1}%
}
\newcommand*{\citation@list}{} % initialize
\newcommand{\sortbibitem}[2]{%
\global\@namedef{bibitem@#1}{%
\bibitem{#1} #2
}%
}
\newcommand{\sort@bibitems}{%
\@for\next:=\citation@list\do{%
\@nameuse{bibitem@\next}%
\global\@namedef{bibitem@\next}{}%
}%
}
\expandafter\def\expandafter\endthebibliography\expandafter{%
\expandafter\sort@bibitems\endthebibliography
}
\makeatother
\begin{document}
\cite{ugly} and \cite{good} followed by \cite{bad}
Again \cite{good}
\begin{thebibliography}{3}
\sortbibitem{good}{C. Eastwood, \emph{A good paper}, Journal \textbf{42} (2015), pp.~1--2.}
\sortbibitem{bad}{L. Van Cleef, \emph{A bad paper}, Journal \textbf{42} (2015), pp.~3--4.}
\sortbibitem{ugly}{E. Wallach, \emph{An ugly paper}, Journal \textbf{42} (2015), pp.~5--6.}
\end{thebibliography}
\end{document}
LaTeX 内核不提供此功能,因为 BibTeX 在这方面更胜一筹。准备一个art-bib.bib
包含以下内容的文件
@article{good,
author={Eastwood, C.},
title={A good paper},
journal={Journal},
volume={42},
year=2015,
pages={1-2},
}
@article{bad,
author={Van Cleef, L.},
title={A bad paper},
journal={Journal},
volume={42},
year=2015,
pages={3-4},
}
@article{ugly,
author={Wallach, E.},
title={An ugly paper},
journal=Journal},
volume={42},
year=2015,
pages={5-6},
}
然后你的文档就可以
\documentclass{article}
\begin{document}
\cite{ugly} and \cite{good} followed by \cite{bad}
\bibliographystyle{unsrt}
\bibliography{art-bib}
\end{document}
假设您的主文件名为myarticle.tex
。使用 进行编译后pdflatex myarticle
,您bibtex myarticle
再次运行 和pdflatex
(如果终端提示,则运行两次)。
输出基本相同。最大的优点是art-bib.bib
是可重复使用的有几种不同的格式,如您使用命令选择的参考书目样式所指定\bibliographystyle
。
请注意,上述排序方式仅可按引用顺序进行。按作者字母顺序排序只能通过 BibTeX 或其后继者biblatex
/Biber 实现。