Используя ЛАТЕКС, как у меня может быть список ссылок в конце каждого раздела? [закрытый]

14
задан djq 24 March 2010 в 15:02
поделиться

4 ответа

Если вы используете 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, но немного поэкспериментировав, вы сможете в этом разобраться.

6
ответ дан 1 December 2019 в 13:08
поделиться

@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 ...


EDIT: хорошо, вот быстрый пример
\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 есть что-то подобное, поэтому, возможно, я отправлю его в виде мини-пакета.

2
ответ дан 1 December 2019 в 13:08
поделиться

В дополнение к

\usepackage[sectionbib]{natbib}
\usepackage{chapterbib}

вам нужно будет поместить каждый раздел в отдельный файл .tex, который затем вы \ включите . Вам нужно будет запустить bibtex для каждого файла .tex отдельно.

Примечание. Использование \ input вместо \ include позволяет избежать нежелательных разрывов страниц, но не создает файл .aux, который необходим BibTeX для работы. Я посмотрел определение \ include и не вижу, как отключить функцию разбиения страниц, кроме как полностью отключить \ clearpage . Вы можете попробовать

\let\originalclearpage=\clearpage
\def\clearpage{\relax}

сразу после вашего \ begin {document} , но вам, возможно, придется вручную добавить \ originalclearpage .

10
ответ дан 1 December 2019 в 13:08
поделиться

Я не пробовал, но, читая, он предлагает:

\usepackage[sectionbib]{natbib} % Note the option in the optional argument
\usepackage{chapterbib}

хотя я только предполагаю правильный порядок этих строк.

2
ответ дан 1 December 2019 в 13:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: