Как исключить цитаты во вступительной части из библиографического заказа с помощью bibtex?

Как исключить цитаты во вступительной части из библиографического заказа с помощью bibtex?

В моей докторской диссертации мне нужно включить несколько страниц в , frontmatterкоторые раскрывают, что некоторые главы были опубликованы как статьи, включая ссылки на статьи. Эти ссылки затем появляются как [1], [2]и т. д., поскольку они используются первыми.

В результате в моем введении первая цитата заканчивается как [5]. Есть ли способ заставить bibtex фактически начать упорядочивать мои цитаты с введения (в mainmatter), чтобы эти цитаты начинались с [1], а те, что в , frontmatterучитывались в конце?

Я использую unsrtстиль без дополнительных пакетов и reportкласс документа.

решение1

Вы должны уметь пользоваться

{\csname @fileswfalse\endcsname\cite{aaa}}

в вашем первом номере и затем

\nocite{aaa}

в конце.

Это создает обычную ссылку там, где она вам нужна, но останавливает запись строки bibcite в файл aux. Затем вам нужно \nociteвыполнить запись в файл aux и поместить запись в сгенерированную библиографию.

решение2

Вы можете модифицировать frontmatterи mainmatterс помощью идеи Дэвида:

\documentclass{book}

\usepackage{letltxmacro}
\makeatletter
\LetLtxMacro\@citexOrig\@citex
\g@addto@macro\frontmatter{%
\def\@citex[#1]#2{\leavevmode
  \let\@citea\@empty
  \@cite{\@for\@citeb:=#2\do
    {\@citea\def\@citea{,\penalty\@m\ }%
     \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
%     \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
     \@ifundefined{b@\@citeb}{\hbox{\reset@font\bfseries ?}%
       \G@refundefinedtrue
       \@latex@warning
         {Citation `\@citeb' on page \thepage \space undefined}}%
       {\@cite@ofmt{\csname b@\@citeb\endcsname}}}}{#1}%
   \AtEndDocument{\nocite{#2}}%
  }%
}
\g@addto@macro\mainmatter{\LetLtxMacro\@citex\@citexOrig}
\makeatother

\usepackage{lipsum}
\begin{document}
\frontmatter
frontmatter Text \cite{article-full} and \cite{article-minimal}

\mainmatter
mainmatter Text \cite{book-full} and \cite{book-minimal}

\bibliography{xampl}
\bibliographystyle{unsrt}

\end{document}

Конечно, вы можете достичь того же самого, переопределив\cite

\documentclass{book}

\usepackage{letltxmacro}
\makeatletter
\LetLtxMacro\citeOrig\cite
\g@addto@macro\frontmatter{%
 \renewcommand*\cite[2][]{%
   \ifx\relax#1\relax {\@fileswfalse\citeOrig{#2}}\else {\@fileswfalse\citeOrig[#1]{#2}}\fi%
    \AtEndDocument{\nocite{#2}}%
  }%
}
\g@addto@macro\mainmatter{\LetLtxMacro\cite\citeOrig}
\makeatother

\usepackage{lipsum}
\begin{document}
\frontmatter
frontmatter Text \cite{article-full} and \cite{article-minimal}

\mainmatter
mainmatter Text \cite{book-full} and \cite{book-minimal}

\bibliography{xampl}
\bibliographystyle{unsrt}

\end{document}

Оба решения основаны на идее, предложенной Дэвидом.

Связанный контент