Mit LaTeX, wie kann ich eine Liste von Referenzen am Ende jeden Abschnitts? [geschlossen]

StackOverflow https://stackoverflow.com/questions/2503555

  •  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?

Der Rat sagt

  

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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top