Разделить библиографию по частям

Разделить библиографию по частям

(почти связано)

У меня есть один .bibфайл. Мой документ состоит из двух частей, и я хотел бы напечатать в конце каждой части библиографию столько пункты, указанные в этой части. Конечно, пересечение может быть, если элемент цитируется в обеих частях.

Никаких предпочтений, может быть bibtex, biblatexили что-то дополнительное.

МВЭ

\begin{filecontents}{mybib.bib}
@article{faa,
  title={Faa Something important},
  author={Faa Big Guy and Another Big Guy},
  journal={Prestigious Journal},
  volume={47},
  number={7},
  pages={966--978},
  year={2001},
  publisher={Institute}
}
@article{foo,
  title={Foo Something important},
  author={Foo Big Guy and Another Big Guy},
  journal={Prestigious Journal},
  volume={47},
  number={7},
  pages={966--978},
  year={2001},
  publisher={Institute}
}
\end{filecontents}

\documentclass{report}
\usepackage{filecontents}
\begin{document}
\part{Faa}
\cite{faa}

\bibliographystyle{plain}
\bibliography{mybib}

\part{Foo}
\cite{foo}

%% I tried to insert twice, but got an error
%\bibliographystyle{plain}
%\bibliography{mybib}

\end{document}

решение1

biblatexопределяет refsectionсреду. См. § 3.7.4, Разделы библиографии, стр. 88-89 в документации.

решение2

Бернардуже упоминает refsections в своем ответе.

Обратите внимание, что biblatexесть опция, называемая refsection, которая может использоваться для автоматического запуска нового refsectionв определенных командах раздела. Например, refsection=partсоздаст новый refsectionдля каждого \part. Дополнительный код не требуется.

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[style=authoryear, backend=biber, refsection=part]{biblatex}

\addbibresource{biblatex-examples.bib}

\begin{document}
\part{One}
\cite{sigfridsson,worman,knuth:ct:b}
\printbibliography

\part{Two}
\cite{sigfridsson,nussbaum,knuth:ct:c}
\printbibliography
\end{document}

Детали с рефсекциями

Вы можете начать новый refsection, который будет продолжаться до refsectionследующего

\newrefsection

Если вам нужен более тонкий контроль над refsections и их окончанием, вы можете использовать форму окружения.

\begin{refsection}

\end{refsection}

Обратите внимание, что refsections не могут быть вложенными и что все, что находится за пределами конкретного раздела, refsectionпроисходит в разделе 0.

refsections сохраняют свое содержимое полностью отдельным и независимым друг от друга. Это означает, что одна и та же запись может получить разные метки цитирования в каждом разделе или наоборот, т. е. две разные записи получат одну и ту же метку.

Если это нежелательно (или вы ищете способ создать общую библиографию в конце), вы можете взглянуть на refsegments. refsegments по сути просто отмечает запись как цитируемую в определенном сегменте вашего документа. Опять же, есть опция, которая называется , refsegmentкоторая начинает новую refsegmentдля каждой команды секционирования определенного типа.

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[style=authoryear, backend=biber, refsegment=part]{biblatex}

\addbibresource{biblatex-examples.bib}

\begin{document}
\part{One}
\cite{sigfridsson,worman,knuth:ct:b}
\printbibliography[segment=\therefsegment]

\part{Two}
\cite{sigfridsson,nussbaum,knuth:ct:c}
\printbibliography[segment=\therefsegment]

\printbibliography[title=Overall \bibname]
\end{document}

Части с рефсегментами

Как и refsection, refsegments может начинаться с

\newrefsegment

или может быть использовано как среда

\begin{refsegment}

\end{refsegment}

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