![Библиография в обратном порядке входа в .bib](https://rvso.com/image/266401/%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F%20%D0%B2%20%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%BC%20%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B5%20%D0%B2%D1%85%D0%BE%D0%B4%D0%B0%20%D0%B2%20.bib.png)
Когда я печатаю:
@ARTICLE{article1,
author = {AAA},
title = {New Method1},
year ={2013},
journal = {SuperJournal},
}
@ARTICLE{article2,
author = {BBB},
title = {New Method2},
year ={2013},
journal = {SuperJournal},
}
Желаемый порядок:
[1] BBB, Статья2,...
[2] ААА, Статья1,..
Другими словами, я хочу противоположного тому, что \bibliographystyle{unsrt}
мне дают. Кто-нибудь?
EDIT. Я расширяю вопрос, добавляя больше информации. Я хочу импортировать файлы из publications.bib с помощью пакета multibib.
documentclass[11pt,a4paper,sans]{moderncv}
\moderncvstyle{classic}
\moderncvcolor{blue}
\makeatletter
\renewcommand*{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}
\makeatother
\renewcommand*{\bibliographyitemlabel}{[\arabic{enumiv}]}
% bibliography with mutiple entries
\usepackage{multibib}
\newcites{article}{{Articles}}
.
.
.
\section{Publications}
\nocitearticle{article1, article2}
\bibliographystylearticle{unsrt}
\bibliographyarticle{publications}
\end{document}
решение1
Вы можете использовать стиль библиографии plain
. Этапы компиляции показаны по правилам arara
.
% arara: pdflatex
% arara: bibtex
% arara: pdflatex
% arara: pdflatex
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@ARTICLE{article1,
author = {AAA},
title = {New Method1},
year ={2013},
journal = {SuperJournal},
}
@ARTICLE{article2,
author = {BBB},
title = {New Method2},
year ={2013},
journal = {SuperJournal},
}
\end{filecontents}
\begin{document}
\cite{article2} and \cite{article1}
\bibliography{\jobname}
\bibliographystyle{plain}
\end{document}
В результате:
решение2
Если в .bib
файле нет ничего странного, то есть он содержит только записи @article
или @book
(поддерживаются все виды записей, кроме @STRING
или @COMMENT
), то следует сделать следующее.
Мы считываем .bib
файл, составляем список ключей в обратном порядке, затем выдаем соответствующую \nocite
команду.
\begin{filecontents*}{\jobname.bib}
@ARTICLE{article1,
author = {AAA},
title = {New Method1},
year ={2013},
journal = {SuperJournal},
}
@ARTICLE{article2,
author = {BBB},
title = {New Method2},
year ={2013},
journal = {SuperJournal},
}
@ARTICLE{article3,
author = {CCC},
title = {New Method2},
year ={2013},
journal = {SuperJournal},
}
@ARTICLE{article4,
author = {DDD},
title = {New Method2},
year ={2013},
journal = {SuperJournal},
}
@ARTICLE{article5,
author = {EEE},
title = {New Method2},
year ={2013},
journal = {SuperJournal},
}
\end{filecontents*}
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\readbib}{ m }
{
\makaroni_readbib:n { #1 }
}
\clist_new:N \g_makaroni_keys_clist
\group_begin:
\char_set_catcode_active:n { `\^^A }
\cs_new_protected:Npn \makaroni_readbib:n #1
{
\group_begin:
\char_set_catcode_active:n { `\@ }
\group_begin:
\char_set_lccode:nn { `\^^A } { `\@ }
\tl_to_lowercase:n
{
\group_end:
\cs_set_eq:NN ^^A \__makaroni_active_at:w
}
\input{#1.bib}
\group_end:
\exp_args:Nx \nocite { \g_makaroni_keys_clist }
}
\group_end:
\cs_new_protected:Npn \__makaroni_active_at:w #1#
{
\__makaroni_process_entry:n
}
\cs_new_protected:Npn \__makaroni_process_entry:n #1
{
\__makaroni_add_key:w #1 \q_stop
}
\cs_new_protected:Npn \__makaroni_add_key:w #1 , #2 \q_stop
{
\clist_gput_left:Nn \g_makaroni_keys_clist { #1 }
}
\ExplSyntaxOff
\begin{document}
\readbib{\jobname}
\bibliographystyle{unsrt}
\bibliography{\jobname}
\end{document}
Окружение filecontents*
нужно лишь для того, чтобы сделать пример самодостаточным.
Метод похож на тот, который используется в usebib.sty
. @
Активируется и определяется для чтения до первой скобки; затем вызывается другой макрос, который поглощает всю запись и вызывает другой, который изолирует ключ, добавляя его слева от переменной списка запятых. Затем, после завершения файла для чтения, \nocite
выдается команда с (расширенным) содержимым clist в качестве аргумента.