Если вы используете Biblatex , как для , цитирующего названия статей , вы можете использовать его для создания библиографий в конце разделов или глав или даже для создания объединенной библиографии, где они разделены главой / разделом. Как пакет он предназначен для замены «babelbib, bibtopic, bibunits, chapterbib, cite, inlinebib, mlbib, multibib, splitbib».
Вы можете поместить библиографию после каждого раздела одним из трех способов. Сначала оберните текст раздела в пару \ begin {refsection}
/ \ end {refsection}
как таковую
\section{SomeSectionName}
\begin{refsection}
% your text goes here
\printbibliography
\end{refsection}
\section{NextSection}
Во-вторых, после каждого \ section
, вы помещаете оператор \ newrefsection
, который завершает предыдущий раздел и начинает новый. И вы снова ставите перед следующим \ section
оператор \ printbibliography
. Наконец, есть опция пакета refsection
, которая принимает либо none
, part
, chapter
, section
или подраздел
в качестве аргумента. Чтобы сгруппировать свои библиографические записи по разделам в глобальной библиографии, вы вместо этого используйте refsegment
, используя \ bibbysegment
для печати всех сегментов по порядку. ( \ bibbysection
может использоваться таким же образом и для разделов ссылок.)
Я не знаю, сколько вам придется разделить свой текст, согласно ответу @ Norman, но немного поэкспериментировав, вы сможете в этом разобраться.
@celenius - если вы действительно хотите избавиться от этого разрыва страницы, вот очень грязный трюк, чтобы сделать это ...
\makeatletter \let\O@@input@\@input@ \def\@noclearpage{\@ifnextchar\clearpage\@gobble\relax} \def\@input@#1{\O@@input@{#1}\@noclearpage} \let\O@@include\@include \def\@include{\expandafter\@noclearpage\O@@include} \let\O@include\include \def\include{\expandafter\@noclearpage\O@include} \makeatother
В основном мы проводим операцию на \ include
], чтобы избавиться от всех экземпляров \ clearpage
, но самый чистый способ сделать это, как вы можете видеть, по-прежнему на самом деле грязный. Это ужасно хрупко и, вероятно, будет работать только для класса article
, поэтому, если вы используете другой \ documentclass
, вам не повезло. Я в основном получил это, включив \ tracingcommands = 1
и \ tracingmacros = 1
и открыв файл .log
для \ clearpage
, чтобы Я мог бы взломать все, что вызывается перед этим, чтобы вставить \ @ noclearpage
.
Я не рекомендую это решение - было бы гораздо лучше посмотреть, как работает chapterbib
, и исправить это правильно, вне зависимости от \ include
и отдельного .aux
файлы, которые он генерирует ... но я уверен, что это будет довольно сложной задачей. Я предполагаю, что другим обходным путем было бы написать команду для эмуляции \ include
разбиения файлов .aux
, фактически не выполняя include ...
\makeatletter \newenvironment{auxfile}[1]{\relax \ifnum\@auxout=\@partaux \@latex@error{auxfile environments cannot be nested or \string\include d} \@eha \else\@changeaux{#1}\fi }{\immediate\closeout\@partaux\let\@auxout\@mainaux} \def\@changeaux#1{% \immediate\write\@mainaux{\string\@input{#1.aux}}% \let\@auxout\@partaux \immediate\openout\@partaux#1.aux% \immediate\write\@partaux{\relax}} \makeatother
Затем вы можете просто вставить \ begin {auxfile} {foo} ... \ end {auxfile}
, и он будет использовать foo.aux
вместо обычного файла .aux
. Это полностью совместимо с chapterbib
.Я не думаю, что в CTAN есть что-то подобное, поэтому, возможно, я отправлю его в виде мини-пакета.
В дополнение к
\usepackage[sectionbib]{natbib}
\usepackage{chapterbib}
вам нужно будет поместить каждый раздел в отдельный файл .tex, который затем вы \ включите
. Вам нужно будет запустить bibtex
для каждого файла .tex отдельно.
Примечание. Использование \ input
вместо \ include
позволяет избежать нежелательных разрывов страниц, но не создает файл .aux, который необходим BibTeX для работы. Я посмотрел определение \ include
и не вижу, как отключить функцию разбиения страниц, кроме как полностью отключить \ clearpage
. Вы можете попробовать
\let\originalclearpage=\clearpage
\def\clearpage{\relax}
сразу после вашего \ begin {document}
, но вам, возможно, придется вручную добавить \ originalclearpage
.
Я не пробовал, но, читая, он предлагает:
\usepackage[sectionbib]{natbib} % Note the option in the optional argument
\usepackage{chapterbib}
хотя я только предполагаю правильный порядок этих строк.