¿Cómo excluir citas al principio del pedido de bibliografía usando bibtex?

¿Cómo excluir citas al principio del pedido de bibliografía usando bibtex?

En mi tesis doctoral tengo que incluir algunas páginas que frontmatterrevelen que algunos capítulos se han publicado como artículos, incluidas las citas de los artículos. Estas citas aparecen entonces como [1], [2], etc. ya que son las primeras en utilizarse.

Como resultado, en mi introducción, la primera cita termina como [5]. ¿Hay alguna manera de obligar a bibtex a comenzar a ordenar mis citas desde la introducción (en mainmatter) para que estas citas comiencen en [1]y las del frontmatterse cuenten al final?

Estoy usando el unsrtestilo sin paquetes adicionales y la reportclase de documento.

Respuesta1

Deberías poder utilizar

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

en tu frente y luego

\nocite{aaa}

al final.

Esto hace una cita normal donde la necesita pero evita que escriba la línea bibcite en el archivo auxiliar. luego necesita más \nocitetarde para escribir en el archivo auxiliar y colocar la entrada en la bibliografía generada.

Respuesta2

Puedes modificar frontmattery mainmattercon la idea de David:

\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}

Por supuesto que puedes llegar a lo mismo con una redefinición de\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}

Ambas soluciones basadas en la idea proporcionada por David.

información relacionada