LaTeX: библиография на главу - PullRequest
28 голосов
/ 04 мая 2010

Я помогаю коллеге с его докторской диссертацией, и мы должны представить библиографию в конце каждой главы.

Вопрос: есть ли у кого-нибудь минимальный рабочий пример для этого случая, использующий латекс + bibtex?

Текущая структура документа, которую мы используем, следующая:

main.tex
chap1.tex
chap2.tex
...
chapn.tex
biblio.bib

Где main.tex содержит пакеты, объявления документов, макросы и \include s для каждой главы. biblio.bib - это только файл bibtex (я думаю, что все цитаты в одном месте проще).

Мы искали и пробовали разные латексные пакеты, читая и следуя их документации. В частности, bibitems и chapterbib.

bibitems успешно создает файлы bu*.aux, но при запуске bibtex для каждого из них возникает ошибка, поскольку в файле .aux отсутствует элемент \bibdata.

chapterbib также создает файл .aux, но bibtex завершает работу с ошибкой, вызванной использованием нескольких \bibliography{file} в файлах .tex (по одному на главу).

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

Мы хотели бы продолжить иметь эту структуру документа, если это возможно. Так что, если кто-то может пролить свет на эту проблему, мы будем благодарны.

Спасибо.


Обновление: MWE найдено Спасибо Хаби за помощь, вот рабочий пример:

С упомянутой выше структурой документа:

% main.tex
\documentclass{report}
\usepackage{url}
\usepackage{natbib}
\usepackage{chapterbib}

\begin{document}

\include{chap1}
\include{chap2}
% other chapters ...

\end{document}

% chap1.tex
\chapter{one chapter}
text~\cite{paper1}
text~\cite{paper2}
% don't forget:
\bibliographystyle{plainnat}
\bibliography{biblio}

% chap2.tex
\chapter{another chapter}
text~\cite{paper2, paper3}
% don't forget, again:
\bibliographystyle{plainnat}
\bibliography{biblio}

% biblio.bib
@Article{paper1,
  author =       {John Smith},
  title =        {A title},
  journal =      {A Journal},
  year =         {2010}
}
@Article{paper2,
  author =       {John Doe},
  title =        {A paper},
  journal =      {Another journal},
  year =         {2009}
}
@Article{paper3,
  author =       {Yuppie Networking},
  title =        {My paper},
  journal =      {The best journal},
  year =         {2000}
}

Наконец, для генерации документа:

#!/bin/bash
latex main.tex
for auxfile in chap*.aux
do
    bibtex `basename $auxfile .aux`
done
latex main.tex
latex main.tex

Ответы [ 2 ]

11 голосов
/ 04 мая 2010

некоторое время назад я быстро записал некоторые заметки на главу они тебе помогают?

http://wiki.davidhaberthuer.ch/latex#chapterbib

2 голосов
/ 04 мая 2010

Это элемент TeX FAQ :

Отдельная библиография для каждой «главы» документа может быть предоставляется с пакетом chapterbib (который поставляется с кучей другие хорошие библиографические вещи). Пакет позволяет вам другой библиография для каждого \included файла (т. е. несмотря на название, наличие библиографии связано с компонентом исходные файлы документа, а не главы, которые логически структурировать документ). [...]

...