
У меня есть один .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
Бернардуже упоминает refsection
s в своем ответе.
Обратите внимание, что 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
Если вам нужен более тонкий контроль над refsection
s и их окончанием, вы можете использовать форму окружения.
\begin{refsection}
\end{refsection}
Обратите внимание, что refsection
s не могут быть вложенными и что все, что находится за пределами конкретного раздела, refsection
происходит в разделе 0.
refsection
s сохраняют свое содержимое полностью отдельным и независимым друг от друга. Это означает, что одна и та же запись может получить разные метки цитирования в каждом разделе или наоборот, т. е. две разные записи получат одну и ту же метку.
Если это нежелательно (или вы ищете способ создать общую библиографию в конце), вы можете взглянуть на refsegment
s. refsegment
s по сути просто отмечает запись как цитируемую в определенном сегменте вашего документа. Опять же, есть опция, которая называется , 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
, refsegment
s может начинаться с
\newrefsegment
или может быть использовано как среда
\begin{refsegment}
\end{refsegment}