Изменение порядка библиографии с помощью moderncv и заявления renewenvironment

Изменение порядка библиографии с помощью moderncv и заявления renewenvironment

Некоторое время назад я скопировал и вставил следующий код из интернета, чтобы классифицировать публикации.

Теперь я понимаю, что порядок публикации не соответствует порядку, который я определил в библиографии. Какую команду мне нужно добавить в \renewenvironment{thebibliography}блок, чтобы мой порядок был несортированным. Простая установка bibliographystyle не работает с этим настроенным кодом.

Я пытался \renewcommand{\bibliographystyle}{\unsrt}, но я полный новичок в LaTeX и не понимаю, что я вообще делаю.

Я использую multibib, moderncvи Overleaf.

Вот мой код:

\makeatletter\renewcommand*{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}\makeatother

\makeatletter
\renewenvironment{thebibliography}[1]%
  {%
    \subsection{\refname}%
    \small%
    \begin{list}{\bibliographyitemlabel}%
      {%
        \setlength{\topsep}{0pt}%
        \setlength{\labelwidth}{\hintscolumnwidth}%
        \setlength{\labelsep}{\separatorcolumnwidth}%
        \leftmargin\labelwidth%
        \advance\leftmargin\labelsep%
        \@openbib@code%
        \usecounter{enumiv}%
        \let\p@enumiv\@empty%
        \renewcommand\theenumiv{\@arabic\c@enumiv}}%
        \sloppy\clubpenalty4000\widowpenalty4000%
  }%
  {%
    \def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
    \end{list}%
  }
\makeatother
\usepackage{multibib}
\newcites{journal,preprint,bthesis}{{Journals},{Technical Reports \& Pre-prints},{Bachelor Thesis}}

решение1

Вы не показали нам компилируемый MWE, поэтому я просто использовал более короткий пример шаблона, который вы можете найти с классом moderncv, версия 2.0.0, текущая. Если вы используете более старую версию, предлагаю обновить! Или сообщите нам версию, которую вы используете в своем вопросе. Вы также не показали нам, как и какие записи bib вы цитировали в каком порядке, и вы не показали нам используемые файлы bib. В следующий раз, пожалуйста, сделайте свой вопрос как можно более полным.

Далее я просто использовал данные moderncv, поставляемые с версией 2.0.0.

Соответствующую часть для цитирования и построения библиографии вы можете увидеть в следующем фрагменте кода:

%in your preamble:
\newcites{book,misc}{{Books},{Others}} % <==============================

% in your code:
% Publications from a BibTeX file using the multibib package
\section{Publications}
\nocitebook{book1,book2}
\bibliographystylebook{unsrt} % unsrt plain <=================================
\bibliographybook{publications}                   % 'publications' is the name of a BibTeX file
\nocitemisc{misc1,misc2,misc3}
\bibliographystylemisc{unsrt} % unsrt plain <=================================
\bibliographymisc{publications}                   % 'publications' is the name of a BibTeX file

Команда \nocitebook{book1,book2}cites first book1, then book2. С помощью команды \bibliographystylebook{unsrt}вы выбираете стиль библиографии, в данном случае unsrt, это означает показывать записи bib в библиографии в порядке, используемом для цитирования. То же самое для второго multibib, вам нужно сделать это в третий раз для вашего третьего multibib.

Использование multibibизменило обычную цепочку компиляции. С двумя показанными выше multibibs вам нужно скомпилировать с помощью:

  1. pdflatex mwe.tex, предположим, что ваше резюме хранится в файле mwe.tex. После компиляции резюме вы найдете два файла book.auxи misc.auxв том же каталоге, что и mwe.tex. В вашем случае вы должны найти три файла journal.aux, preprint.auxи bthesis.aux.
  2. bibtex bookсоздать первую многобиблиографическую библиографию.
  3. bibtex miscдля создания второй библиографии.
  4. pdflatex mwe.texдважды, чтобы получить правильные номера страниц, оглавление и т. д., как обычно.

С текущей версией moderncv(2.0.0) вам не нужно копировать \renewenvironment{thebibliography}[1]%блок в ваш код. Конечно, вам нужно определить используемые вами multibibs \newcites{journal,preprint,bthesis}{{Journals},{Technical Reports \& Pre-prints},{Bachelor Thesis}}в преамбуле (как я сделал для двух файлов bib в этом примере).

С помощью следующего скомпилированного MWE (используя файл bib publication.bibиз moderncvшаблона):

% pdflatex mwe.tex
% bibtex book
% bibtex misc
% pdflatex mwe.tex
% pdflatex mwe.tex
\documentclass[11pt,a4paper,sans]{moderncv}

\moderncvstyle{casual}
\moderncvcolor{blue}

\usepackage[scale=0.75]{geometry}

\name{John}{Doe}
\title{Resumé title}
\address{street and number}{postcode city}{country}
\phone[mobile]{+1~(234)~567~890}
\phone[fixed]{+2~(345)~678~901}
\phone[fax]{+3~(456)~789~012}
\email{[email protected]}
\homepage{www.johndoe.com}
\social[linkedin]{john.doe}
\social[twitter]{jdoe}
\social[github]{jdoe}
\extrainfo{additional information}
\photo[64pt][0.4pt]{example-image-golden-upright}
\quote{Some quote}

\setlength{\footskip}{70pt}

\makeatletter
\renewcommand*{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}
\makeatother

\usepackage{multibib}
\newcites{book,misc}{{Books},{Others}} % <==============================


\begin{document}

\makecvtitle

\section{Education}
\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}  % arguments 3 to 6 can be left empty
\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}

\section{Master thesis}
\cvitem{title}{\emph{Title}}
\cvitem{supervisors}{Supervisors}
\cvitem{description}{Short thesis abstract}

\section{Extra 2}
\cvlistdoubleitem{Item 1}{Item 4}
\cvlistdoubleitem{Item 2}{Item 5\cite{book1}}
\cvlistdoubleitem{Item 3}{Item 6. Like item 3 in the single column list before, this item is particularly long to wrap over several lines.}

\section{References}
\begin{cvcolumns}
  \cvcolumn{Category 1}{\begin{itemize}\item Person 1\item Person 2\item Person 3\end{itemize}}
  \cvcolumn{Category 2}{Amongst others:\begin{itemize}\item Person 1, and\item Person 2\end{itemize}(more upon request)}
  \cvcolumn[0.5]{All the rest \& some more}{\textit{That} person, and \textbf{those} also (all available upon request).}
\end{cvcolumns}

% Publications from a BibTeX file using the multibib package
\section{Publications}
\nocitebook{book1,book2}
\bibliographystylebook{unsrt} % unsrt plain <=================================
\bibliographybook{publications}                   % 'publications' is the name of a BibTeX file
\nocitemisc{misc1,misc2,misc3}
\bibliographystylemisc{unsrt} % unsrt plain <=================================
\bibliographymisc{publications}                   % 'publications' is the name of a BibTeX file

\end{document}

вы получаете результат:

результирующая библиография

Чтобы убедиться, вы можете протестировать мой MWE, вот пример файла bib publication.bib:

%% start of file `publications.bib'.
%% Copyright 2006-2012 Xavier Danaux (xdanaux at gmail.com).
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License version 1.3c,
% available at http://www.latex-project.org/lppl/.


@BOOK{book1,
  author = {John Doe and Author 1},
  title = {Title},
  publisher = {Publisher},
  edition = {edition},
  year = {year},
}

@BOOK{book2,
  author = {John Doe and Author 2},
  title = {Title},
  publisher = {Publisher},
  edition = {edition},
  year = {year},
}

@MISC{misc1,
  author = {John Doe},
  title = {Title},
  year = {year},
}

@MISC{misc2,
  author = {John Doe and Author 3},
  title = {Title},
  year = {year},
}

@MISC{misc3,
  author = {John Doe},
  title = {Title},
  year = {year},
}


%% end of file `publications.bib'.

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