MWE

MWE

In einem Abschnitt meines Dokuments sind die Referenzen nach ihren Schlüsselwörtern in Kategorien gruppiert. Jetzt möchte ich die Bibliographie für jeden Abschnitt basierend auf der Kategorie des Zitats drucken, z. B. eine Bibliographie für Artikel mit Schlüsselwort inund eine Bibliographie mit Schlüsselwort out. Aus ästhetischen Gründen möchte ich, dass die Bibliographien fortlaufend nummeriert werden, wie in diesem Textmodell

**In**
[1-1] a. “a”. In: a (a).
[1-2] c. “c”. In: c (c).
[1-3] e. “e”. In: e (e).
**Out**
[1-4] b. “b”. In: b (b).
[1-5] d. “d”. In: d (d).

Daher verwende ich das defernumbersvon biblatex, um die Einträge fortlaufend zu nummerieren. Das Problem ist, dass dies dazu führt, dass die Nummerierung für jedes wieder bei 1 beginnt \printbibliography.

Ich möchte defernumbersacross \printbibliographyper aktivieren \refsection.

MWE

\documentclass{article}
\pagestyle{empty}
\usepackage{filecontents}
\begin{filecontents*}{test.bib}
@article{a,
  title = {a},
  author = {a},
  journal = {a},
  year = {a},
  keywords = {in}
}
@article{b,
  title = {b},
  author = {b},
  journal = {b},
  year = {b},
  keywords = {out}
}
@article{c,
  title = {c},
  author = {c},
  journal = {c},
  year = {c},
  keywords = {in}
}
@article{d,
  title = {d},
  author = {d},
  journal = {d},
  year = {d},
  keywords = {out}
}
@article{e,
  title = {e},
  author = {e},
  journal = {e},
  year = {e},
  keywords = {in}
}
\end{filecontents*}
\usepackage[
  defernumbers=true,
  citestyle=numeric,
]{biblatex}
\defbibheading{subbibliography}[\bibname]{%
  \subsubsection*{#1}
}
\addbibresource{test.bib}
\begin{document}
\section{Testing biblatex}
\refsection
\cite{a,b,c,d,e}
\printbibliography[
  title={In},
  prefixnumbers={\thesection-},
  heading=subbibliography,
  keyword=in
]
\printbibliography[
  title={Out},
  prefixnumbers={\thesection-},
  heading=subbibliography,
  keyword=out
]
\endrefsection

\section{Testing biblatex}
\refsection
\cite{a,b,c,d,e}
\printbibliography[
  title={In},
  prefixnumbers={\thesection-},
  heading=subbibliography,
  keyword=in
]
\printbibliography[
  title={Out},
  prefixnumbers={\thesection-},
  heading=subbibliography,
  keyword=out
]
\endrefsection
\end{document}

Ausgabe

Bildbeschreibung hier eingeben


Natürlich wird Kopfgeld ausgesetzt!

Antwort1

Dieses Problem ergibt sich aus einer inhärenten Funktionalität von biblatex. Wie ausandere Fragen, biblatexhat ein implizites Merkmal resetnumbers=true, das angewendet wird, wenn Sie verwenden, prefixnumbersum dem Label ein Präfix hinzuzufügen. Dies kann auf verschiedene Weise angegangen werden, aber nur durch Hacks, die das Problem entweder wirklich leicht verändern oder die Art und Weise ändern, wie das Präfix gehandhabt/angewendet wird.

Da die Absicht dieser Frage darin besteht, jede Bibliographie nach Abschnitten (oder Kapiteln usw.) zu unterteilen, ist es möglich, die prefixnumberEinstellung global auf eine andere Weise anzuwenden und das implizite zu eliminieren, resetnumbers=truedas bei jedem angewendet wird \printbibliography. Dazu definieren wir die Art und Weise, wie das Etikett gedruckt wird, neu und integrieren Folgendes \thesectionin das Format:

\DeclareFieldFormat{labelnumber}{\mkbibsecnum{#1}}
\newrobustcmd{\mkbibsecnum}[1]{\thesection-#1\relax}

Jedes Etikett wird als 1, 2, 3... gespeichert, ist aber mit der Abschnittsnummer formatiert, in der es beim Drucken erscheint. (Hinweis*: Da wir das Präfix auf diese Weise hinzufügen, \printbibliographymuss der Befehl im selben section/ refsectionwie die Zitate erscheinen. Dies bedeutet insbesondere, dass Sie diese Methode nicht verwenden können, um am Ende eine kumulative Bibliographie mit mehreren refsectiondurch s unterteilten s auszudrucken \printbibliography[section=1...].)

An dieser Stelle muss nur noch die Nummerierung an der entsprechenden Stelle (jeweils das erste Literaturverzeichnis refsection) mit neu gesetzt werden \printbibliography[...resetnumbers=true].

Ergebnis

Das Ergebnis sieht wie folgt aus:

Untergliederte Bibliographien

MWE

Ich habe einige Änderungen vorgenommen, um die Lösung effizienter zu machen als im ursprünglichen MWE.

refsection=section(könnte auch ...=part, ...=chapter, usw. sein) wird global an übergeben, um nur Referenzen in jedem Abschnitt zu sammeln. Dies kann bei Bedarf durch / biblatexersetzt werden, um die Bibliographieelemente manuell zu partitionieren.\newrefsection\endrefsection

defernumbers=truewird beibehalten, um jede Unterbibliographie sequentiell zu sortieren.

Ich habe auch einige der Zitate auskommentiert, um die Wirkung der Nummerierung und refsections hervorzuheben.

Das modifizierte MWE demonstriert diese Lösung:

\documentclass{article}
\pagestyle{empty}
\usepackage{filecontents}
\begin{filecontents*}{test.bib}
@article{a,
  title = {a},
  author = {a},
  journal = {a},
  year = {a},
  keywords = {in}
}
@article{b,
  title = {b},
  author = {b},
  journal = {b},
  year = {b},
  keywords = {out}
}
@article{c,
  title = {c},
  author = {c},
  journal = {c},
  year = {c},
  keywords = {in}
}
@article{d,
  title = {d},
  author = {d},
  journal = {d},
  year = {d},
  keywords = {out}
}
@article{e,
  title = {e},
  author = {e},
  journal = {e},
  year = {e},
  keywords = {in}
}
\end{filecontents*}
\usepackage[
  defernumbers=true,
  citestyle=numeric,
  refsection=section % Each \section{...} starts a new refsection environment
]{biblatex}

% Format the labelnumber with \thesection prefix
\DeclareFieldFormat{labelnumber}{\mkbibsecnum{#1}}
\newrobustcmd{\mkbibsecnum}[1]{\thesection-#1\relax}

\defbibheading{subbibliography}[\bibname]{%
  \subsubsection*{#1}
}
\addbibresource{test.bib}
\begin{document}

\section{Testing biblatex} % New refsection, too!
Cite a \cite{a};
Cite b \cite{b};
Cite c \cite{c};
\printbibliography[
  title={In},
  heading=subbibliography,
  keyword=in,
  resetnumbers=true % The first bibliography in each refsection needs its numbers manually reset
]
\printbibliography[
  title={Out},
  heading=subbibliography,
  keyword=out
]

\section{Testing biblatex} % New refsection, too!
Cite b \cite{b};
Cite d \cite{d};
Cite e \cite{e}.
\printbibliography[
  title={In},
  heading=subbibliography,
  keyword=in,
  resetnumbers=true % The first bibliography in each refsection needs its numbers manually reset
]
\printbibliography[
  title={Out},
  heading=subbibliography,
  keyword=out
]
\end{document}

*@Guidos Lösungdefiniert die gesamte Bibliografieumgebung neu und verwendet den Enumerate-Series-Zähler, um für bestimmte Labels weiterzuzählen, für andere jedoch nicht. Dies könnte bei diesem Problem funktionieren (und würde das Problem der kumulativen Bibliografie beheben), aber ich konnte den Code nicht mit der Abschnittsnummerierung kompilieren, wie es der OP verlangte.

verwandte Informationen