В моей докторской диссертации мне нужно включить несколько страниц в , 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}
Оба решения основаны на идее, предложенной Дэвидом.