
Ich weiß, dass ich Bibliografien nach Stichworten gruppieren kann. Aber das ist nicht der Fall, denn wenn ich keine alphabetische Sortierung und keinen numerischen Stil verwende, kann ich die Bibliografie nach Stichworten aufteilen. Aber wenn ich eine sortierte Bibliografie und eine numerische Nummerierung möchte und versuche, sie aufzuteilen, werde ich die Nummerierung unterbrechen. Was ich brauche, ist, Bibliografieeinträge einer Sprache vor Einträgen einer anderen Sprache zu haben. Beispiel:
\documentclass[a4paper]{article}
\usepackage{fontspec}
\usepackage[english,greek,russian]{babel} % English please
\setmainfont[
BoldFont={DeJavu Serif Bold},
ItalicFont={DeJavu Serif Italic},
BoldItalicFont={DeJavu Serif BoldItalic}
]{DeJavu Serif}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@Book{AlKarapan,
author = {Καραπαναγοπούλου, Αλέξανδρος Κ.},
title = {Η Μεγάλη Σύνοδος της Ορθοδόξου Ανατολικής Εκκλησίας},
publisher = {auto-édition},
date = {1990/1998},
volumes = {6},
address = {Αθήνα},
langid={greek},
}
@Inbook{CypinIstorijaRPC,
author = {Владислав Цыпин},
title = {История Русской Церкви 1917--1997},
chapter = {VIII},
publisher = {Издательство Спасо-Преображенского Валаамского монастыря},
address = {Москва},
date = {1997},
urldate = {2010-10-25},
url = {http://old.pravoslavie.by/podpod.asp?id=135&Session=10},
langid={russian},
}
@Inbook{authorrus,
author = {Другой Автор},
title = {Название},
chapter = {VIII},
publisher = {Издательство},
address = {Москва},
date = {1997},
urldate = {2010-10-25},
langid={russian},
}
@article{baez/article,
author = {Baez, John C. and Lauda, Aaron D.},
title = {Higher-Dimensional Algebra {V}: 2-Groups},
journaltitle = {Theory and Applications of Categories},
date = 2004,
volume = 12,
pages = {423-491},
version = 3,
eprint = {math/0307200v3},
eprinttype = {arxiv},
langid = {english},
langidopts = {variant=american},
annotation = {An \texttt{article} with \texttt{eprint} and
\texttt{eprinttype} fields. Note that the arXiv reference is
transformed into a clickable link if \texttt{hyperref} support
has been enabled. Compare \texttt{baez\slash online}, which
is the same item given as an \texttt{online} entry},
hyphenation={english},
}
@article{another,
author = {Another,Author and One more, Author},
title = {Title},
journaltitle = {Journal},
date = 2004,
volume = 12,
pages = {423-491},
version = 3,
eprint = {math/0307200v3},
eprinttype = {arxiv},
langid = {english},
langidopts = {variant=american},
hyphenation={english},
}
\end{filecontents*}
\usepackage[russian,greek,english]{babel}
\usepackage[natbib=true,
style=numeric,
isbn=true,
url=true,
defernumbers=false,
sorting=nyt,
firstinits=true,
backend=biber,
language=auto,
autolang=other]{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
\cite{AlKarapan,CypinIstorijaRPC,baez/article}
\nocite{*}
\printbibliography
\end{document}
Die Ausgabe lautet: Einträge in Englisch, dann in Griechisch und in Russisch. Wenn ich die BBL-Datei bearbeite, verschiebe ich nur russische Einträge am Anfang, dann griechische Einträge und den letzten englischen Eintrag undlauf nicht, Biberzitieren Sie einfach die Einträge und führen Sie lualatex oder xelatex aus, alles wird gut.
Biblatex/Biber sortiert Bibliographien und ich verschiebe Einträge manuell für eine bestimmte Sprache in der BBL-Datei. Ich erhalte Einträge, die für eine bestimmte Sprache und in der gewünschten Sprachenreihenfolge sortiert sind.
Frage: Kann ich diese Art der Bestellung durchführen, ohne die BBL-Datei zu bearbeiten?
das ist es, was ich versuche zu bekommen
Ich kann nicht mehrere Startnummern verwenden, da ich eine fortlaufende Nummerierung benötige
Antwort1
Natürlich kann man auch einfach ein \sort{\field{langid}}
in das Sortierverfahren einfügen, aber dadurch werden die Sprachen lexikografisch sortiert, so dass zuerst Englisch, dann Griechisch und dann Russisch erscheint, was nicht gerade das ist, was man möchte.
Aber übrigens, wenn wir sortierenabsteigendlexikografisch erhalten wir die gewünschte Reihenfolge im MWE.
\DeclareSortingScheme{lnyt}{
\sort{
\field{presort}
}
\sort[final]{
\field{sortkey}
}
\sort[direction=descending]{\field{langid}}
\sort{
\field{sortname}
\field{author}
\field{editor}
\field{translator}
\field{sorttitle}
\field{title}
}
\sort{
\field{sortyear}
\field{year}
}
\sort{
\field{sorttitle}
\field{title}
}
\sort{
\field[padside=left,padwidth=4,padchar=0]{volume}
\literal{0000}
}
}
Das liegt natürlich nur daran, dass die von Ihnen gewünschte Sortierreihenfolge mit der umgekehrten lexikografischen Reihenfolge der Sprachnamen übereinstimmt.
Jetzt benutzen sorting=lnyt
.
Eine anpassbarere, aber etwas kompliziertere Lösung verwendet das presort
Feld und die Sourcemapping-Funktion von Biber.
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=langid, match=\regexp{\Arussian\Z}, final]
\step[fieldset=presort, fieldvalue=1]
}
\map{
\step[fieldsource=langid, match=\regexp{\Agreek\Z}, final]
\step[fieldset=presort, fieldvalue=2]
}
\map{
\step[fieldsource=langid, match=\regexp{\Aenglish\Z}, final]
\step[fieldset=presort, fieldvalue=3]
}
}
}
Jede Sprache wird einfach einer Nummer zugeordnet, die in das presort
Feld geschrieben wird. Das presort
Feld wird vor den anderen Sortierfeldern berücksichtigt.
Dadurch sind Sortierreihenfolgen möglich, die keiner lexikografischen Reihenfolge folgen.
MWE
\documentclass[a4paper]{article}
\usepackage{fontspec}
\usepackage[english,greek,russian]{babel} % English please
\setmainfont[
BoldFont={DeJavu Serif Bold},
ItalicFont={DeJavu Serif Italic},
BoldItalicFont={DeJavu Serif BoldItalic}
]{DeJavu Serif}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@Book{AlKarapan,
author = {Καραπαναγοπούλου, Αλέξανδρος Κ.},
title = {Η Μεγάλη Σύνοδος της Ορθοδόξου Ανατολικής Εκκλησίας},
publisher = {auto-édition},
date = {1990/1998},
volumes = {6},
address = {Αθήνα},
langid={greek},
}
@Inbook{CypinIstorijaRPC,
author = {Владислав Цыпин},
title = {История Русской Церкви 1917--1997},
chapter = {VIII},
publisher = {Издательство Спасо-Преображенского Валаамского монастыря},
address = {Москва},
date = {1997},
urldate = {2010-10-25},
url = {http://old.pravoslavie.by/podpod.asp?id=135&Session=10},
langid={russian},
}
@Inbook{authorrus,
author = {Другой Автор},
title = {Название},
chapter = {VIII},
publisher = {Издательство},
address = {Москва},
date = {1997},
urldate = {2010-10-25},
langid={russian},
}
@article{baez/article,
author = {Baez, John C. and Lauda, Aaron D.},
title = {Higher-Dimensional Algebra {V}: 2-Groups},
journaltitle = {Theory and Applications of Categories},
date = 2004,
volume = 12,
pages = {423-491},
version = 3,
eprint = {math/0307200v3},
eprinttype = {arxiv},
langid = {english},
langidopts = {variant=american},
annotation = {An \texttt{article} with \texttt{eprint} and
\texttt{eprinttype} fields. Note that the arXiv reference is
transformed into a clickable link if \texttt{hyperref} support
has been enabled. Compare \texttt{baez\slash online}, which
is the same item given as an \texttt{online} entry},
hyphenation={english},
}
@article{another,
author = {Another,Author and One more, Author},
title = {Title},
journaltitle = {Journal},
date = 2004,
volume = 12,
pages = {423-491},
version = 3,
eprint = {math/0307200v3},
eprinttype = {arxiv},
langid = {english},
langidopts = {variant=american},
hyphenation={english},
}
\end{filecontents*}
\usepackage[russian,greek,english]{babel}
\usepackage[natbib=true,
style=numeric,
isbn=true,
url=true,
defernumbers=false,
sorting=nyt,
firstinits=true,
backend=biber,
language=auto,
autolang=other]{biblatex}
\addbibresource{\jobname.bib}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=langid, match=\regexp{\Arussian\Z}, final]
\step[fieldset=presort, fieldvalue=1]
}
\map{
\step[fieldsource=langid, match=\regexp{\Agreek\Z}, final]
\step[fieldset=presort, fieldvalue=2]
}
\map{
\step[fieldsource=langid, match=\regexp{\Aenglish\Z}, final]
\step[fieldset=presort, fieldvalue=3]
}
}
}
\begin{document}
\cite{AlKarapan,CypinIstorijaRPC,baez/article}
\nocite{*}
\printbibliography
\end{document}
Antwort2
Es folgt eine vereinfachte Version der Antwort von Moewe.
Eine BibTeX-Quelldatei
Die folgende BibTeX-Datei ist im Format .xml gespeichert ~/TestBib.bib
.
@book{shakespeare,
author = {William Shakespeare},
title = {Hamlet},
year = {1600},
langid = {english}
}
@book{homer,
author = {Homer},
title = {Illiad \& Oddysey},
year = {8th century BC},
langid = {greek}
}
@book{tolstoy,
author = {Leo Tolstoy},
title = {War and Peace},
year = {1869},
langid = {russian}
}
Ein einfaches LaTeX-Dokument mit einer Bibliographie
\documentclass{article}
\usepackage{biblatex}
\addbibresource{TestBib.bib}
\begin{document}
\cite{shakespeare}\cite{homer}\cite{tolstoy}
\printbibliography
\end{document}
Das Ergebnis des Laufens
> cd ~
> lualatex Test
> biber Test
> lualatex Test
Ist
Zuerst Englisch, dann die anderen in der Standardreihenfolge
\documentclass{article}
\usepackage{biblatex}
\DeclareSourcemap {
\maps {
\map {
\step [
fieldsource=langid,
match=english,
fieldset=presort,
fieldvalue=a
]
}
}
}
\addbibresource{TestBib.bib}
\begin{document}
\cite{shakespeare}\cite{homer}\cite{tolstoy}
\printbibliography
\end{document}
Zuerst Englisch, dann Russisch
Wir werden nun eine Quellenzuordnung hinzufügen, um die bibliographischen Einträge so zu ordnen, dass der englische Eintrag an erster Stelle und der russische an zweiter Stelle steht.
\documentclass{article}
\usepackage{biblatex}
\DeclareSourcemap {
\maps {
\map {
\step [
fieldsource=langid,
match=english,
fieldset=presort,
fieldvalue=a
]
\step [
fieldsource=langid,
match=russian,
fieldset=presort,
fieldvalue=b
]
}
}
}
\addbibresource{TestBib.bib}
\begin{document}
\cite{shakespeare}\cite{homer}\cite{tolstoy}
\printbibliography
\end{document}
Die Ausgabe ist:
Anmerkungen
datatype=bibtex
Es ist nicht erforderlich, die Option an zu übergeben\maps
(wie in der Antwort von moewe), da diesbibtex
der Standardwert derdatatype
Option ist. Siehe S. 199 desbiblatex
Handbuchs, Version 3.18b, 12. Juli 2022.Es ist nicht nötig, reguläre Ausdrücke einzuschließen
\regexp
(wie in Moewes Antwort), es sei denn, sie enthalten Zeichenfolgen, die auch gültige TEX-Befehle sind. Siehe S. 204 des Handbuchs.Der Datentyp des Wertes des
presort
Spezialfelds wird vonbiblatex
als Zeichenfolge und nicht als Zahl interpretiert. (Siehe S. 31 des Handbuchs.) Die Reihenfolge, die für die Werte gilt, ist daher lexikografisch und nicht numerisch. Daher ist es meiner Meinung nach am besten, die Zuweisung von Zahlen zu diesem Feld zu vermeiden (wie in moewes Antwort), um nicht intuitive Konsequenzen zu vermeiden. Wenn ich beispielsweise in meinem Beispiel „Englisch zuerst, Russisch danach“ dem englischen Eintrag denpresort
Wert2
und dem russischen Eintrag denpresort
Wert zugewiesen hätte10
, wäre der russische Eintrag in der Bibliografie vor dem englischen Eintrag erschienen.Sofern nicht ausdrücklich angegeben, wird das Feld eines bibliographischen Eintrags
presort
automatisch auf gesetztmm
. (Siehe den zweiten Absatz von Abschnitt 3.6 „Sortieroptionen“ auf S. 83 des Handbuchs.) Wenn Sie also genau drei verschiedene Werte vonlangid
sortieren möchten, müssen Sie nicht denpresort
Wert aller drei explizit angeben (wie in der Antwort von moewe). Es reicht aus, den expliziten Wert von nur zwei davon anzugebenpresort
und sicherzustellen, dass beide lexikografisch kleiner als sindmm
.Dies ist auch eine nützliche Information, wenn Sie möchten, dass bestimmte Einträge oben in der Bibliografie erscheinen, Sie aber die relative Reihenfolge der übrigen Einträge nicht festlegen möchten, wie ich es in meinem Beispiel „Zuerst Englisch, die anderen gemäß der Standardreihenfolge“ getan habe.
Beachten Sie, dass die Quellzuordnungen erfolgen, bevor eine Sortiervorlage angewendet wird, einschließlich der standardmäßig integrierten Vorlagen, die in den Anhängen C1-C3 des Handbuchs beschrieben sind. (Siehe den zweiten Absatz von Abschnitt 4.5.3 „Dynamische Datenänderung“ auf S. 199 des Handbuchs.) Wenn Sie also eine der Standardsortiervorlagen verwenden, d. h.
nty
welche die standardmäßig verwendete Sortiervorlage ist, wenn Sie keine Sortiervorlage explizit angeben (siehe Abschnitt 3.1.2.1 „Paketoptionen/Präambeloptionen/Allgemeines“ auf S. 48 des Handbuchs), ist die Reihenfolge der Einträge innerhalb jederpresort
Gruppe wie erwartet, d. h. wie von der Vorlage vorgeschrieben.Bei umsichtiger Anordnung kann die Anzahl der
step
s undmap
s erheblich reduziert werden, und die Anzahl derfinal
s kann reduziert oder sogar eliminiert werden. Vergleichen Sie Moewes Antwort mit meinem Beispiel „Erst Englisch, dann Russisch“.Zur Semantik von
final
consultdiese Antwort von moewe, da das Handbuch diesbezüglich unklar und sogar irreführend ist.