参考书目排序 - 忽略条目

参考书目排序 - 忽略条目

我正在使用 BibTeX 和natbib。我的样式文件按文章引用的顺序排列参考书目。但有时,我希望\cite为了参考书目顺序而忽略 ,但在其他方面完全正常工作。

最小工作示例:

\documentclass{article}
\usepackage[square,numbers,sort]{natbib}
\begin{document}
\cite{c} % Want to cite, but ignore for purpose of bibliography order.
\cite{a}
\cite{b}
\cite{c}
\bibliographystyle{unsrt}
\bibliography{ex}
\end{document}

与 ex.bib 一起:

@article{a, author="a"}
@article{b, author="b"}
@article{c, author="c"}

结果是:

在此处输入图片描述

正如预期的那样。我想用新命令替换第一个引用,比如说,\ignorecite顺序是a,b,c,主文档中的顺序是3,1,2,3

答案1

您所要做的就是删除向文件写入引用的功能.aux。这可以通过暂时设置来实现\@fileswfalse

\newcommand{\ignorecite}[1]{{\@fileswfalse\cite{#1}}}%

整个\cite命令仍然完好无损,超链接和格式化功能照常运行。

在此处输入图片描述

\documentclass{article}

% Write bibliography items to file
\usepackage{filecontents}% http://ctan.org/pkg/filecontents
\begin{filecontents*}{ex.bib}
@article{a, author="a"}
@article{b, author="b"}
@article{c, author="c"}
\end{filecontents*}

\makeatletter
\newcommand{\ignorecite}[1]{{\@fileswfalse\cite{#1}}}%
\makeatother
\usepackage[square,numbers,sort]{natbib}% http://ctan.org/pkg/natbib
\usepackage{hyperref}% http://ctan.org/pkg/hyperref
\begin{document}
\ignorecite{c} % Want to cite, but ignore for purpose of bibliography order.
\cite{a}
\cite{b}
\cite{c}
\bibliographystyle{unsrt}
\bibliography{ex}
\end{document}

答案2

与沃纳的回答类似,这个Frank Mittelbach 提出了一个接受引用调用本身的命令:

\makeatletter
\def\ignorecitefornumbering#1{%
     \begingroup
         \@fileswfalse
         #1%                     % do \cite comand
    \endgroup
}
\makeatother

相关内容