PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : chapterbib und bibunits



Festus
02-11-2008, 13:29
Hi,

ich hab ein größeres Problem mit meinen Literaturverzeichnissen. Ich möchte ein Verzeichnis pro Kapitel. Da die sowieso alle in einzelnen Dateien liegen, die ich mit \include ins Dokument aufnehme, bietet sich natürlich chapterbib an, aber es funktioniert nicht. Hier erst mal mein Minimalbeispiel


\documentclass[a4paper, 12pt, DIV12, twoside, BCOR1cm]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{chapterbib}
\usepackage[german]{babel}
\usepackage{textcomp}

\begin{document}

\include{Teil1}
\include{Teil2}

\end{document}

Die beiden Teile in den \include-Befehlen sehen so aus


\chapter{Titel}
\label{sec:Titel1}

\medskip

\begin{center}
\large{\textsc{Autor}}
\end{center}


Text \cite{Test1}

\bibliographystyle{plain}
\bibliography{lit}


\chapter{Titel}
\label{sec:Titel2}

\medskip

\begin{center}
\large{\textsc{Autor}}
\end{center}

Text \cite{Test2}

\bibliographystyle{plain}
\bibliography{lit}

Dazu gibts noch eine Literaturdatenbank, die ich mit JabRef erstellt habe (im Anhang)

Ich arbeite mit dem TeXnic-Center. Wenn ich nun die Datei kompiliere liest Latex scheinbar die Datenbank nicht richtig ein, oder so; jedenfalls wird eine .bbl-Datei erzeugt, in der die richtigen Einträge stehen, die aber in Dokument nicht aufgelöst werden!

Ich hab's auch schon alternativ mit bibunits versucht, dabei treten aber andere Probleme auf:

1. müsste ich dann die bu.aux-Dateien per Hand in der Eingabeaufforderung von Windows über "bibtex bu1" usw. in .bbl-Dateien umwandeln, was unschön wäre aber noch akzeptabel (hätte dazu schon mal jemand eine Idee?).

2. funktioniert das nach meinen Versuchen nicht mehr, wenn die Kapitel in einzelnen Dateien und/oder einzelnen Ordnern liegen, was ich aber schon gern so belassen würde. Dazu müsste ich auch wissen, in welchem Ordner müsste denn dann ggf. die .bbl für den jeweiligen Teil gepackt werden: In den Ordner, in dem der Teil liegt, oder in den Ordner, in dem das Hauptdokument liegt?

3. hätte ich nach dem, was ich gelesen habe sowieso Probleme weil ich mehrere Kapitel über \include in das Hauptdokument holen müsste und bibunits wohl für jedes Dokument mit der Nummerierung der bu.aux-Dateien wieder neu beginnt? Dann würde mir jeder neue eingebaute Teil doch die alten bu-Dateien, und damit die Literatureinträge, überschreiben, oder?

Man sieht, es ist ein längeres Problem. Wie gesagt würde sich chapterbib bei mir wegen der Dokumentstruktur anbieten, aber letztlich ist es mir egal mit welchem Paket ich Erfolg habe, Hauptschache ich krieg das verdammte Literaturverzeichnis pro Kapitel hin.

Danke schon mal, Gruß, Festus

ANHANG

lit.bib


@BOOK{Test1,
title = {Test 1},
publisher = {Test-Verlag},
year = {2008},
author = {Anton Tester},
owner = {MWeinkauf},
timestamp = {2008.11.02}
}

@BOOK{Test2,
title = {Test 2},
publisher = {Proben-Verlag},
year = {2009},
author = {Thomas Erprober},
owner = {MWeinkauf},
timestamp = {2008.11.02}
}


Hauptdok.aux

\relax
\catcode`"\active
\gdef\@extra@binfo{@-1}\@writefile{toc}{\gdef \the@ipfilectr{@-1}}\@writefile{lof}{\gdef \the@ipfilectr{@-1}}\@writefile{lot}{\gdef \the@ipfilectr{@-1}}
\@input{Teil1.aux}
\select@language{german}
\@writefile{toc}{\select@language{german}}
\@writefile{lof}{\select@language{german}}
\@writefile{lot}{\select@language{german}}
\gdef\@extra@binfo{}\@writefile{toc}{\gdef \the@ipfilectr{}}\@writefile{lof}{\gdef \the@ipfilectr{}}\@writefile{lot}{\gdef \the@ipfilectr{}}
\gdef\@extra@binfo{@-2}\@writefile{toc}{\gdef \the@ipfilectr{@-2}}\@writefile{lof}{\gdef \the@ipfilectr{@-2}}\@writefile{lot}{\gdef \the@ipfilectr{@-2}}
\@input{Teil2.aux}
\gdef\@extra@binfo{}\@writefile{toc}{\gdef \the@ipfilectr{}}\@writefile{lof}{\gdef \the@ipfilectr{}}\@writefile{lot}{\gdef \the@ipfilectr{}}


Teil1.aux

\relax
\citation{Test1}
\bibstyle{plain}
\bibdata{lit}
\@writefile{toc}{\contentsline {chapter}{\numberline {1}Titel}{1}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{sec:Titel1}{{1}{1}}
\@setckpt{Teil1}{
\setcounter{page}{2}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{0}
\setcounter{mpfootnote}{0}
\setcounter{part}{0}
\setcounter{chapter}{1}
\setcounter{section}{0}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{0}
\setcounter{table}{0}
}

Hauptdok.bbl

\begin{thebibliography}{1}

\bibitem{Test2}
Thomas Erprober.
\newblock {\em Test 2}.
\newblock Proben-Verlag, 2009.

\bibitem{Test1}
Anton Tester.
\newblock {\em Test 1}.
\newblock Test-Verlag, 2008.

\end{thebibliography}

rais
02-11-2008, 21:14
Moin moin,

Ich möchte ein Verzeichnis pro Kapitel. Da die sowieso alle in einzelnen Dateien liegen, die ich mit \include ins Dokument aufnehme, bietet sich natürlich chapterbib an, aber es funktioniert nicht.

auch bei chapterbib mußt Du BibTeX mehrmals aufrufen ... oder was versteh' ich nicht?




\usepackage[german]{babel}

Schreibst Du wirklich nach alter Regelung? Vllt besser ngerman-option ...


2. funktioniert das nach meinen Versuchen nicht mehr, wenn die Kapitel in einzelnen Dateien und/oder einzelnen Ordnern liegen, was ich aber schon gern so belassen würde. Dazu müsste ich auch wissen, in welchem Ordner müsste denn dann ggf. die .bbl für den jeweiligen Teil gepackt werden: In den Ordner, in dem der Teil liegt, oder in den Ordner, in dem das Hauptdokument liegt?

Von bibunits steht in Deinem Code nix, hier aber ein Beispiel mit chapterbib:


\begin{filecontents}{Kapitel/Teil1.tex}
\chapter{Titel}
\label{sec:Titel1}

\medskip

\begin{center}
\large{\textsc{Autor}}
\end{center}


Text \cite{Test1}

\bibliographystyle{plain}
\bibliography{Literatur/lit}
\end{filecontents}
\begin{filecontents}{Kapitel/Teil2.tex}
\chapter{Titel}
\label{sec:Titel2}

\medskip

\begin{center}
\large{\textsc{Autor}}
\end{center}

Text \cite{Test2}

\bibliographystyle{plain}
\bibliography{Literatur/lit}
\end{filecontents}
\begin{filecontents}{Literatur/lit.bib}
@BOOK{Test1,
title = {Test 1},
publisher = {Test-Verlag},
year = {2008},
author = {Anton Tester},
owner = {MWeinkauf},
timestamp = {2008.11.02}
}

@BOOK{Test2,
title = {Test 2},
publisher = {Proben-Verlag},
year = {2009},
author = {Thomas Erprober},
owner = {MWeinkauf},
timestamp = {2008.11.02}
}
\end{filecontents}
\documentclass[a4paper, 12pt, DIV12, twoside, BCOR1cm]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc} %latin9
\usepackage{chapterbib}
\usepackage[ngerman]{babel}
\usepackage{textcomp}

\begin{document}

\include{Kapitel/Teil1}
\include{Kapitel/Teil2}

\end{document}

Nachdem Du das Teil in einem Verzeichnis Deiner Wahl abgelegt hast, ich gehe mal von `foo.tex' aus, mußt Du zunächst die entsprechenden Ordner anlegen -- musste ich zumindest -- dazu (und für die folgenden Befehle) machst Du erstmal eine Konsole (cmd) auf, dort


cd wo/Du/das/Teil/gelassen/hast

d. h., da Du TeXnicCenter verwendest, mußt Du vermutlich `\' statt `/' verwenden; dann


mkdir Kapitel
mkdir Literatur
, um erstmal die entsprechenden Verzeichnisse anzulegen. Nun hast Du in diesem Deinem Verzeichnis eine Datei `foo.tex', sowie die beiden Unterordner `Kapitel' und `Literatur', die derzeit beide noch leer sind -- hast sie ja gerade erst angelegt.
Nach


latex foo.tex

bekommst Du im Unterverzeichnis Kapitel zunächst die beiden Teil1.tex und Teil2.tex, im Unterverzeichnis Literatur die lit.bib (durch die jeweiligen filecontents-Umgebungen) und durch den weiteren LaTeX-Lauf auch Kapitel/Teil{1|2}.aux. Nach


bibtex Kapitel/Teil1
bibtex Kapitel/Teil2
bekommst Du auch noch Kapitel/Teil{1|2}.bbl hinzu (sowie entsprechende .blg).
Nach


latex foo.tex
latex foo.tex

solltest Du eigentlich eine foo.dvi erhalten (bzw. foo.pdf, wenn Du gleich pdflatex statt latex in den Aufrufen verwendest), in der es zwei getrennte Literaturverzeichnisse gibt ... wie Du die Befehle etwas direkter via TeXnicCenter verarbeiten kannst, dazu muß ein Anderer etwas sagen, aber ist das auch genügend `aufgeräumt'? ;)

MfG

Festus
03-11-2008, 15:00
Danke rais, hab das Problem gelöst :) War bloß 'ne Kleinigkeit aber ohne deine Antwort wär ich nich so schnell drauf gekommen.

Für jeden den's interessiert: CHAPTERBIB MIT DEM TEXNIC-CENTER RICHTIG BENUTZEN

Das Problem is einfach, dass das chapterbib-Paket zwar für die jeweiligen Teil-Files, die man mit \include{} ins Dokument holt eine eigene .aux-Datei anlegt, die in ihr enthaltenen Literaturverweise aber in die Datei Hauptdokument.bbl statt in Teil.bbl schreibt, weshalb die Literaturverweise natürlich nicht richtig aufgelöst werden können.

Ich hab mir jetzt so beholfen, dass ich die Datei Teil.aux in der Eingabeaufforderung per "bibtex Teil" manuell in eine Teil.bbl umgewandelt habe, und siehe da, ich krieg mein Literaturverzeichnis.

Das blöde is natürlich, dass man diesen manuellen Schritt dann erst sinnig ausführen kann, wenn man alle Literaturverweise in die entsprechende Datei Teil.tex eingebaut hat. An sich nicht schlimm aber erstens schleppt man dadurch beim kompilieren zwischendurch 'n Haufen Warnmeldungen mit und jedesmal, wenn man was an den Zitaten im Text ändert, muss man DRAN DENKEN den Vorgang zu wiederholen. Wenn jemand eine elegantere Lösung weiß, wie man dem TeXnic-Center beibringen kann die Literaturverweise aus Teil.aux in Teil.bbl statt Hauptdokument.bbl zu schreiben wär es schön wenn Die- oder Derjenige ihre/seine Lösung hier noch posten könnte. Ich werd auch noch ein bisschen rumprobieren.

P.S. Wenn ihr für die Literaturverzeichnisse Abschnitts- statt Kapitelüberschriften haben wollt nehmt die sectionbib-Option vom chapterbib-Paket; die vom natbib-Paket bleibt ohne Wirkung.