Mit LaTeX, wie kann ich eine Liste von Referenzen am Ende jeden Abschnitts? [geschlossen]
-
21-09-2019 - |
Frage
Ich mag die Bibliographie für jeden Abschnitt zu erzeugen, und habe es am Ende des Abschnitts. Wenn ich dies tun im Moment erzeugt er die vollständige Bibliographie und legt sie nach jedem Abschnitt.
Gibt es eine Möglichkeit, dass dies getan werden kann?
"Das chapterbib Paket enthält ein Option sectionbib das bringt die Bibliographie in einem \ section * anstatt \ Chapter *, etwas, das Sinn macht wenn es eine Bibliographie in jedem Kapitel. Diese Option wird nicht funktionieren wenn natbib wird ebenfalls geladen; stattdessen, die Möglichkeit, natbib hinzuzufügen. „
Ich verstehe nicht, was das bedeutet, und ich habe versucht, mit zu experimentieren, was ich dachte, die Optionen sind. Insbesondere was bedeutet "fügen Sie die Option natbib" mean?
Meine nachfolgende Frage (die entwickelte sich nach meinem ersten gelöst wurde) ist muss nicht Seitenumbrüche zwischen den Referenzen und der nächste Abschnitt.
Vielen Dank für Ihre Hilfe.
Lösung
Wenn Sie mit Biblatex , wie für unter Berufung auf Artikeltitel, Sie kann es verwenden, Bibliographien am Ende der Abschnitte oder Kapitel zu erzeugen, oder auch eine kombinierte Bibliographie hat, wo sie durch Kapitel / Abschnitt getrennt sind. Als Paket ist beabsichtigt, zu ersetzen "babelbib, bibtopic, bibunits, chapterbib, zitieren sie, inlinebib, mlbib, multibib, splitbib."
Sie können eine Bibliographie nach jedem Abschnitt setzen, in eine von drei Arten. Zuerst wickeln Sie den Text Ihres Abschnitts in einem \begin{refsection}
/ \end{refsection}
Paar als solches
\section{SomeSectionName}
\begin{refsection}
% your text goes here
\printbibliography
\end{refsection}
\section{NextSection}
Zweitens, nach jeder \section
Anweisung setzen Sie eine \newrefsection
Aussage, die im vorherigen Abschnitt endet und beginnt die neue. Und voraus Sie den nächsten \section
mit einer \printbibliography
Aussage wieder. Schließlich gibt es eine refsection
Paketoption, die entweder none
, part
, chapter
, section
oder subsection
als Argument. So gruppieren Sie Ihre bibliographischen Einträge pro Abschnitt in einer globalen Bibliographie Sie refsegment
stattdessen verwenden, \bibbysegment
unter Verwendung aller Segmente, um zu drucken. (\bibbysection
kann auf die gleiche Art und Weise für ref Schnitte verwendet werden, auch.)
Ich weiß nicht, wie viel Sie Ihren Text aufteilen müssen, wie pro @ Norman Antwort, aber mit ein wenig Experimentieren können Sie es herausfinden.
Andere Tipps
Neben
\usepackage[sectionbib]{natbib}
\usepackage{chapterbib}
Du musst jeden Abschnitt in einer separaten .tex-Datei setzen, die Sie dann \include
. Sie müssen separat bibtex
auf jeder .tex Datei auszuführen.
N. B. Mit \input
statt \include
unerwünschte Seitenumbrüche vermeidet, aber es wird die .aux Datei nicht erstellen, dass BibTeX seine Arbeit tun muss. Ich schaute auf der Definition von \include
, und ich sehe nicht, wie die Seite brechende Funktion außer vollständig durch die Deaktivierung \clearpage
zu deaktivieren. Sie könnten versuchen,
\let\originalclearpage=\clearpage
\def\clearpage{\relax}
direkt nach dem \begin{document}
, aber man kann einige \originalclearpage
in von Hand setzen müssen.
@celenius - wenn Sie wirklich dieses Seitenumbruch loswerden wollen, hier ist ein sehr schmutzig Trick es ...
zu tun\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
Im Grunde führen wir Operation am \include
Makro loswerden alle \clearpage
Instanzen zu bekommen, aber der sauberste Weg, dies zu tun, wie Sie sehen können, ist immer noch wirklich schmutzig. Das ist furchtbar spröde und wird wahrscheinlich nur Arbeit für die article
Klasse, also, wenn Sie eine andere \documentclass
verwenden, bist du kein Glück. Ich abgeleitet grundsätzlich diese durch Aktivierung \tracingcommands=1
und \tracingmacros=1
und greppen die .log
Datei für \clearpage
so dass ich hacken, was aufgerufen wird, bevor es eine \@noclearpage
einzufügen.
ich diese Lösung nicht empfehlen - es wäre viel besser, zu sehen, wie ich chapterbib
funktioniert und es den richtigen Weg zu beheben, ohne je nach \include
und den separaten .aux
Dateien erzeugt es ... aber ich bin sicher, das würde eine ziemlich schwierige Aufgabe sein. Ich denke, eine andere Abhilfe wäre ein Befehl zu emulieren \include
zu schreiben ist von .aux
Dateien Abwracken, ohne tatsächlich zu tun, die beinhalten ...
EDIT: Okay, hier ist eine schnelle Nummer
\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
Dann können Sie einfach \begin{auxfile}{foo}...\end{auxfile}
einfügen und es wird foo.aux
statt der normalen .aux
-Datei verwenden. Dies ist kompatibel mit chapterbib
. Ich glaube nicht, CTAN so etwas hat, so vielleicht ich es als Mini-Paket einreichen werden.
Ich habe nicht versucht, aber wie ich gelesen, dass es schon sagt:
\usepackage[sectionbib]{natbib} % Note the option in the optional argument
\usepackage{chapterbib}
obwohl ich vermute, nur in der richtigen Reihenfolge dieser Linien.