![Richtige Methode zum Einfügen nicht nummerierter Kapitel in eine kapitelweise Bibliographie mithilfe von Biblatex](https://rvso.com/image/254690/Richtige%20Methode%20zum%20Einf%C3%BCgen%20nicht%20nummerierter%20Kapitel%20in%20eine%20kapitelweise%20Bibliographie%20mithilfe%20von%20Biblatex.png)
Ich habe Beispiele 3.11.4
aus der biblatex
Dokumentation verwendet, um am Ende meiner Arbeit eine Bibliographie für die einzelnen Kapitel zu erstellen. Das funktioniert prima, bis ich versuche, meine Einleitung in ein unnummeriertes Kapitel zu verwandeln. Dann erscheint die Einleitung nicht in der Bibliographie. Hier ist ein MWE:
\documentclass{book}
\usepackage[sorting = none, style = numeric, refsegment = chapter, cite reset = chapter]{bib latex}
\usepackage{nameref}
\defbibheading{bibintoc}{%
\addcontentsline{toc}{chapter}{\bibname}%
\section*{References for Chapter \ref{refsegment:\therefsection\therefsegment} - \nameref{refsegment:\therefsection\therefsegment}}}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{A01,
author = {Author, A.},
year = {2001},
title = {Alpha},
}
@misc{B02,
author = {Buthor, B.},
year = {2002},
title = {Bravo},
}
@misc{C03,
author = {Cuthor, C.},
year = {2003},
title = {Charlie},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\chapter*{Introduction}
\cite{A01}
\chapter{Chapter 1}
\cite{A01,B02}
\backmatter
\printbibheading
\bibbysegment[heading = bibintoc]
\end{document}
Ich habe eine Problemumgehung gefunden, indem ich einen Verweisabschnitt für die nicht nummerierte Einführung verwende. Hier ist ein MWE der Problemumgehung:
\documentclass{book}
\usepackage[sorting = none, style = numeric, refsegment = chapter, cite reset = chapter]{bib latex}
\usepackage{nameref}
\defbibheading{bibintoc}{%
\addcontentsline{toc}{chapter}{\bibname}%
\section*{References for Chapter \ref{refsegment:\therefsection\therefsegment} - \nameref{refsegment:\therefsection\therefsegment}}}
\defbibheading{bibintoc2}{%
\addcontentsline{toc}{chapter}{\bibname}%
\section*{References for the \nameref{refsection:\therefsection}}}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{A01,
author = {Author, A.},
year = {2001},
title = {Alpha},
}
@misc{B02,
author = {Buthor, B.},
year = {2002},
title = {Bravo},
}
@misc{C03,
author = {Cuthor, C.},
year = {2003},
title = {Charlie},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\chapter*{Introduction}
\begin{refsection}
\cite{A01}
\end{refsection}
\chapter{Chapter 1}
\cite{A01,B02}
\backmatter
\printbibheading
\printbibliography[section=1,heading=bibintoc2]
\bibbysegment[heading = bibintoc]
\end{document}
Damit war ich zufrieden, bis ich eine unnummerierte Schlussfolgerung mit Zitaten hinzugefügt habe. Dann bricht der Code zusammen und biblatex
gibt einen nested refsections
Fehler zurück. Hier ist das MWE dafür:
\documentclass{book}
\usepackage[sorting = none, style = numeric, refsegment = chapter, cite reset = chapter]{bib latex}
\usepackage{nameref}
\defbibheading{bibintoc}{%
\addcontentsline{toc}{chapter}{\bibname}%
\section*{References for Chapter \ref{refsegment:\therefsection\therefsegment} - \nameref{refsegment:\therefsection\therefsegment}}}
\defbibheading{bibintoc2}{%
\addcontentsline{toc}{chapter}{\bibname}%
\section*{References for the \nameref{refsection:\therefsection}}}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{A01,
author = {Author, A.},
year = {2001},
title = {Alpha},
}
@misc{B02,
author = {Buthor, B.},
year = {2002},
title = {Bravo},
}
@misc{C03,
author = {Cuthor, C.},
year = {2003},
title = {Charlie},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\chapter*{Introduction}
\begin{refsection}
\cite{A01}
\end{refsection}
\chapter{Chapter 1}
\cite{A01,B02}
\chapter*{Conclusion}
\begin{refsection}
\cite{C03}
\end{refsection}
\backmatter
\printbibheading
\printbibliography[section=1,heading=bibintoc2]
\bibbysegment[heading = bibintoc]
\end{document}
Irgendwelche Ideen, wie man das lösen kann? Oder noch besser, wie man es \chapter*
mit dem Beispiel 3.11.4
des biblatex
Dokuments richtig implementiert?
Vielen Dank im Voraus für die Hilfe!
Antwort1
Sie können die folgenden Kapitel auch manuell aufrufen \newrefsegment
und ausführen:\citereset
\chapter*{Introduction}
\newrefsegment
\citereset
aber die Titel der Bibliographiesegmente können nicht einheitlich formatiert werden. Es gibt verschiedene Möglichkeiten, dies zu umgehen. Hier behandeln wir alles mit Patches für \chapter
und \chapter*
.
\documentclass{book}
\usepackage[sorting=none,refsegment=chapter,citereset=chapter]{biblatex}
\usepackage{nameref}
\makeatletter
% Extend biblatex's \chapter patch to \chapter* and save data for titles
\def\blx@refpatch@chapter#1{%
\ifundef\chapter
{\blx@err@nodocdiv{chapter}}
{\pretocmd\@makechapterhead
{#1%
\csdef{subbib:\therefsection\therefsegment}{%
Chapter~\ref{refsegment:\therefsection\therefsegment}}}
{}{\blx@err@patch{\string\@makechapterhead}}%
\pretocmd\@makeschapterhead
{#1%
\csdef{subbib:\therefsection\therefsegment}{%
\nameref{refsegment:\therefsection\therefsegment}}}
{}{\blx@err@patch{\string\@makeschapterhead}}}}
\makeatother
\defbibheading{subbibliography}{%
\section*{References for \csuse{subbib:\therefsection\therefsegment}}}
\addbibresource{biblatex-examples.bib}
\begin{document}
\tableofcontents
\chapter*{Introduction}
\cite{reese}
\chapter{First chapter}
\cite{companion}
\chapter*{Unnumbered chapter}
\cite{glashow,weinberg}
\chapter{Second chapter}
\cite{glashow}
\chapter*{Conclusion}
\cite{reese}
\printbibheading[heading=bibintoc]
\bibbysegment[heading=subbibliography]
\end{document}
Dieser Ansatz funktioniert auch für kapitelweise Referenzabschnitte.
\documentclass{book}
\usepackage[sorting=none,refsection=chapter]{biblatex}
\usepackage{nameref}
\makeatletter
% Extend biblatex's \chapter patch to \chapter*, save data for titles
\def\blx@refpatch@chapter#1{%
\ifundef\chapter
{\blx@err@nodocdiv{chapter}}
{\pretocmd\@makechapterhead
{#1\csdef{subbib:\therefsection}{Chapter~\ref{refsection:\therefsection}}}
{}{\blx@err@patch{\string\@makechapterhead}}%
\pretocmd\@makeschapterhead
{#1\csdef{subbib:\therefsection}{\nameref{refsection:\therefsection}}}
{}{\blx@err@patch{\string\@makeschapterhead}}}}
\makeatother
\defbibheading{subbibliography}{\section*{References for \csuse{subbib:\therefsection}}}
\addbibresource{biblatex-examples.bib}
\begin{document}
...
\printbibheading[heading=bibintoc]
\bibbysection[heading=subbibliography]
\end{document}
Antwort2
Mit müssen Sie \endrefsegment
den letzten Abschnitt vor dem nicht nummerierten Kapitel „Fazit“ manuell beenden.
\documentclass{book}
\usepackage[sorting = none, style = numeric, refsegment = chapter, cite reset = chapter]{bib latex}
\usepackage{nameref}
\defbibheading{bibintoc}{%
\addcontentsline{toc}{chapter}{\bibname}%
\section*{References for Chapter \ref{refsegment:\therefsection\therefsegment} - \nameref{refsegment:\therefsection\therefsegment}}}
\defbibheading{bibintoc2}{%
\addcontentsline{toc}{chapter}{\bibname}%
\section*{References for the \nameref{refsection:\therefsection}}}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{A01,
author = {Author, A.},
year = {2001},
title = {Alpha},
}
@misc{B02,
author = {Buthor, B.},
year = {2002},
title = {Bravo},
}
@misc{C03,
author = {Cuthor, C.},
year = {2003},
title = {Charlie},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\chapter*{Introduction}
\begin{refsection}
\cite{A01}
\end{refsection}
\chapter{Chapter 1}
\cite{A01,B02}
\endrefsegment
\chapter*{Conclusion}
\begin{refsection}
\cite{C03}
\end{refsection}
\backmatter
\printbibheading
\printbibliography[section=1,heading=bibintoc2]
\bibbysegment[heading = bibintoc]
\printbibliography[section=2,heading=bibintoc2]
\end{document}
Dies löst zwar Ihr unmittelbares Problem, aber Ihre Problemumgehung, bei der Sie s für die Einleitung und den Schluss verwenden, refsection
führt zu völlig unabhängigen Bibliografiebezeichnungen für diese Kapitel (beachten Sie, dass der Arbeit von C. Cuthor im Schluss die Bezeichnung „1“ zugewiesen wird). Die folgende Lösung funktioniert nur mit refsegment
s (und erreicht dadurch für das gesamte Dokument eindeutige Bezeichnungen):
Verwenden Sie nicht die mit Sternchen markierte Version
\chapter*
, sondern\chapter
Auchfür die Einleitung und das Fazit. Dadurchrefsegment
werden den Kapiteln (positiv) Nummern zugewiesen und die jeweiligen Verweise können mit ausgedruckt werden\bibbysegment
.Verwenden Sie und
\frontmatter
, um Einleitung und Schluss zu nicht nummerierten Kapiteln zu machen. (Verwenden Sie eigentlich anstelle von , um die Umstellung auf römische Seitennummerierung zu vermeiden.)\mainmatter
\backmatter
\boolfalse{@mainmatter}
\frontmatter
Deklarieren Sie neue Zähler, um die Werte
\therefsegment
nach dem Vorspann bzw. Hauptteil zu speichern, und verwenden Sie diese Zähler in einer neuen Definition derbibintoc2
Überschrift, um das unterschiedliche Format für Vorspann-/Haupt-/Nachspann-Referenzen zu erreichen.
\documentclass{book}
\usepackage[sorting=none,style =numeric,refsegment=chapter,citereset=chapter]{biblatex}
\usepackage{nameref}
\newcounter{segmentendfront}
\newcounter{segmentendmain}
\defbibheading{bibintoc2}{%
\addcontentsline{toc}{chapter}{\refname}%
\section*{\refname\ for
\ifnumgreater{\therefsegment}{\value{segmentendfront}}{%
\ifnumgreater{\therefsegment}{\value{segmentendmain}}{%
the
}{%
Chapter~\ref{refsegment:\therefsection\therefsegment} --
}%
}{%
the
}%
\nameref{refsegment:\therefsection\therefsegment}%
}%
}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{A01,
author = {Author, A.},
year = {2001},
title = {Alpha},
}
@misc{B02,
author = {Buthor, B.},
year = {2002},
title = {Bravo},
}
@misc{C03,
author = {Cuthor, C.},
year = {2003},
title = {Charlie},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\boolfalse{@mainmatter}% instead of \frontmatter, which would also switch
%to Roman page numbering
\chapter{Introduction}
\cite{A01}
\mainmatter
\setcounter{segmentendfront}{\therefsection\therefsegment}
\chapter{First chapter}
\cite{A01,B02}
\chapter{Second chapter}
\cite{B02}
\backmatter
\setcounter{segmentendmain}{\therefsection\therefsegment}
\chapter{Conclusion}
\cite{C03}
\printbibheading
\bibbysegment[heading=bibintoc2]
\end{document}
Antwort3
Ich denke, Sie können Folgendes tun:
\chapter*{Introduction}
\begin{refsegment}
\cite{A01}
\end{refsegment}
Edit: Das Problem mit dem Refsegment zum Abschluss ist nicht, dass es ein zweites Refsegment gibt, sondern dass bei der Option refsegment=chapter
a- \chapter
Kommando ein \begin{refsegment}
(oder etwas analoges) eingefügt wird und dieses nicht durch `\chapter* abgeschlossen wird.
Man könnte diesen Abschnitt auch vor dem Schluss abbrechen:
\endrefsegment
\chapter*{Conclusion}
(Eine bessere Lösung wäre, \chapter*
auch einen Patch zu verwenden).