Reihenfolge von Auflage und Band ändern

Erstellung eines Literaturverzeichnisses mit BibTeX, Biber, BibLaTeX und Co.


Splendor
Forum-Anfänger
Forum-Anfänger
Beiträge: 23
Registriert: Sa 9. Apr 2011, 17:07

Reihenfolge von Auflage und Band ändern

Beitrag von Splendor »

Hallo allerseits,

ich habe folgendes Problem: in meinem Literaturverzeichnis soll bei den Einträgen "@Book" und "@Inreference" die Reihenfolge von "Auflage" und "Band" geändert werden.

Aktuell sehen die Einträge für "@Book" so aus:

Mustermann, Max (2012): Lorem Ipsum. 4. Aufl. Bd. 2. Berlin: Testverlag.

Die verlangte Form:

Mustermann, Max (2012): Lorem Ipsum. Bd. 2. 4. Aufl. Berlin: Testverlag.

Die Einträge für "@Inreference" sind momentan:

Musterfrau, Marianne (2010): [Art.] Lorem Ipsum. In: Dampf, Hans (Hrsg.): Lexikon der Testerei. 2. Aufl., Bd. 4. München: Lexikonverlag. S. 60–62.

Die verlangte Form hier:

Musterfrau, Marianne (2010): [Art.] Lorem Ipsum. In: Dampf, Hans (Hrsg.): Lexikon der Testerei. Bd. 4. 2. Aufl. München: Lexikonverlag. S. 60–62.

Bei "@Inreference" muss also auch das Komma zwischen beiden Feldern entfernt werden.

Kann mir da jemand unter die Arme greifen? Ich habe mir über die Zeit aus dem Internet diverse Sachen für meine Bibliographie zusammenkopiert und bin damit immer sehr gut ausgekommen. Leider stoße ich jetzt ein wenig an meine Grenzen.

Hier noch ein funktionierendes Minimalbeispiel inklusive meiner (kompletten) Bibliographie:
\begin{filecontents}{Literatur.bib} 
@Book{Mustermann2012,
  author		= {Max Mustermann},
  title			= {Lorem Ipsum},
  location		= {Berlin},
  year			= {2012},
  volume		= {2},
  edition		= {4},
  publisher		= {Testverlag},
}
@Inreference{Musterfrau2010,
  author	= {Marianne Musterfrau},
  title		= {Lorem Ipsum},
  pages		= {60--62},
  booktitle	= {Lexikon der Testerei},
  editor	= {Hans Dampf},
  location	= {München},
  year		= {2010},
  volume	= {4},
  edition	= {2},
  publisher	= {Lexikonverlag},
}
\end{filecontents} 

\documentclass{scrartcl}

\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}

%%%%%%%%%%%%%%%%%%%%%%%%
% Bibliographie-Anfang %
%%%%%%%%%%%%%%%%%%%%%%%%
 
% Wichtig für biber
\usepackage[babel,german=quotes]{csquotes}

% Bibliografie
\usepackage[backend=biber,
style=authoryear-ibid,
ibidpage=true, % Im Stil "authoryear-ibid" Auskommentierung entfernen
dashed=false,
maxbibnames=3,
maxcitenames=3
]{biblatex}
\bibliography{Literatur}

\DefineBibliographyStrings{ngerman}{andothers={et\addabbrvspace al\adddot}} % et al. statt u.a.

\renewcommand{\labelnamepunct}{\addcolon\addspace} % Doppelpunkt

\DeclareFieldFormat{title}{{#1}}
\DeclareFieldFormat[article]{title}{{#1}}
\DeclareFieldFormat[article]{journal}{{#1}}
\DeclareFieldFormat[article]{journaltitle}{{#1}}
\DeclareFieldFormat[book]{title}{{#1}}
\DeclareFieldFormat[incollection]{title}{{#1}}
\DeclareFieldFormat[incollection]{booktitle}{{#1}}
\DeclareFieldFormat[inbook]{title}{{#1}}
\DeclareFieldFormat[inbook]{booktitle}{{#1}}
\DeclareFieldFormat[misc]{title}{{#1}}

\renewbibmacro*{byeditor+others}{% %Hg. bzw Hgg. in Klammern hinter Herausgeber, statt davor
 \ifnameundef{editor}
 {}
 {\printnames[byeditor]{editor}%
 \setunit{\addspace}%
 \usebibmacro{editor+othersstrg}%
 \clearname{editor}%
 \newunit}%
 \usebibmacro{byeditorx}%
 \usebibmacro{bytranslator+others}}

\DefineBibliographyStrings{german}{%
 andothers = {et\ al\adddot}, % et al. statt u.a.
 editor = {\mkbibparens{Hrsg\adddot}}, % Hier kann Hrsg. im Singular geändert werden
 editors = {\mkbibparens{Hrsg\adddot}}, % Hier kann Hrsg. im Plural geändert werden
 byeditor = {\mkbibparens {Hrsg\adddot}},
 jourvol = {{Jahrgang}}, % "Jahrgang" statt "Jg."
 number = {{Heft}}, % "Heft" statt "Nr."
}

% [Art.] und Leerzeichen vor Titel des Lexikonartikels in @Inreference
\DeclareFieldFormat[inreference]{title}{[Art.]\space#1}

% Name des Lexikons in @Inreference nicht kursiv
\DeclareFieldFormat[inreference]{booktitle}{#1}

% Punkt nach "journaltitle" in "@Article" und Anpassung von "volume" und "number"
\DeclareFieldFormat[article]{volume}{\bibstring{jourvol}~#1} % Reihenfolge "volume" und zugehörige Zahl: "Jahrgang X"
%\DeclareFieldFormat[article]{volume}{~#1\adddot\space\bibstring{jourvol}} % Reihenfolge "volume" und zugehörige Zahl: "X. Jahrgang"
\DeclareFieldFormat[article]{number}{\bibstring{number}~#1} % Reihenfolge "number" und zugehörige Zahl
\renewbibmacro*{journal+issuetitle}{% 
  \usebibmacro{journal}% 
  %\setunit*{\adddot}% % Wenn oben "X. Jahrgang" gewählt wurde
  \setunit*{\adddot\space}% 
  \iffieldundef{series} 
    {} 
    {\newunit 
     \printfield{series}% 
     \setunit{\adddot\space}}% 
  \printfield{volume}% 
  \setunit*{\adddot\space}% 
  \printfield{number}% 
  \setunit{\adddot\space}% 
  \printfield{eid}% 
  \setunit{\addspace}% 
  \usebibmacro{issue+date}% 
  \setunit{\addcolon\space}% 
  \usebibmacro{issue}% 
  \newunit}

% Kein Komma zwischen Namen und (Hrsg.) bei Büchern, die keinen Autor haben, sondern nur einen Herausgeber; funktioniert in @Book und @Collection
\makeatletter 
\renewbibmacro*{bbx:editor}[1]{% 
  \ifthenelse{\ifuseeditor\AND\NOT\ifnameundef{editor}} 
    {\ifthenelse{\iffieldequals{fullhash}{\bbx@lasthash}\AND 
                 \NOT\iffirstonpage\AND 
         \(\NOT\boolean{bbx@inset}\OR 
           \iffieldequalstr{entrysetcount}{1}\)} 
       {\bibnamedash} 
       {\printnames{editor} % 
    \setunit{\addspace} %statt "`\addcomma\space"' nur "`\addspace"' 
    \usebibmacro{bbx:savehash}}% 
     \usebibmacro{#1}% 
     \clearname{editor}% 
     \setunit{\addspace}}% 
    {\global\undef\bbx@lasthash 
     \usebibmacro{labeltitle}% 
     \setunit*{\addspace}}% 
  \usebibmacro{date+extradate}} 
\makeatother

\usepackage{xpatch}

\xpatchbibdriver{inbook}{%
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%
}%
  {%
  \usebibmacro{byeditor+others}%
  \setunit{\addcolon\space}\newblock
  \usebibmacro{maintitle+booktitle}%
  }%
  {}{}%

\xpatchbibdriver{inbook}{%
 \newunit\newblock
 \usebibmacro{chapter+pages}%
}%
{%
\adddot\space
 \usebibmacro{chapter+pages}%
}%
{}{}

\xpatchbibdriver{inbook}{%
  \newunit
  \iffieldundef{maintitle}
}%
{%
  \setunit{\addcomma\space}
  \iffieldundef{maintitle}
}%
{}{}

\xpatchbibdriver{incollection}{%
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%
}%
  {%
  \usebibmacro{byeditor+others}%
  \setunit{\addcolon\space}\newblock
  \usebibmacro{maintitle+booktitle}%
  }%
  {}{}%

\xpatchbibdriver{incollection}{%
 \newunit\newblock
 \usebibmacro{chapter+pages}%
}%
{%
\adddot\space
 \usebibmacro{chapter+pages}%
}%
{}{}

\xpatchbibdriver{incollection}{%
  \newunit
  \iffieldundef{maintitle}
}%
{%
  \setunit{\addcomma\space}
  \iffieldundef{maintitle}
}%
{}{}

% Kein Komma vor Seitenzahl im Literaturverzeichnis
\renewcommand*{\bibpagespunct}{\addperiod\space}

\AtBeginBibliography{% 
  \renewcommand*{\mkbibnamefamily}[1]{\textsc{#1}}%
  \renewcommand*{\mkbibnameprefix}[1]{\textsc{#1}}%
} % Nur Kapitälchen der Autoren-Nachnamen im Literaturverzeichnis; im Text normal

% \renewcommand*{\mkbibnamefamily}{\textsc} % Alle Autoren-Nachnamen in Kapitälchen

% Nachname, Vorname
\DeclareNameAlias{default}{last-first}

% Nur im Literaturverzeichnis:
% Schrägstrich statt "und" bei mehreren Autoren/Herausgebern
\AtBeginBibliography{% 
  \renewcommand*{\multinamedelim}{\addslash}
  \renewcommand*{\finalnamedelim}{\multinamedelim}
}

% Nachname, Vorname auch bei mehreren Autoren
\DeclareNameAlias{sortname}{last-first}
 
%%%%%%%%%%%%%%%%%%%%%%
% Bibliographie-Ende %
%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua (vgl.~\cite[12]{Mustermann2012}). At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet (vgl.~\cite[60]{Musterfrau2010}).

\printbibliography

\end{document}
Ich würde mich über jeden Tipp sehr freuen!

Vielen Dank und liebe Grüße
Splendor :D

Gast

Beitrag von Gast »

Bei mehrbändigen Werken bietet sich häufig maintitle an. Wenn ich es richtig sehe, ist dann keine Änderung am Stil mehr erforderlich.

Ich habe mir mal erlaubt, Deinen Code auf den neusten Stand zu bringen, ihn dabei etwas zu vereinfachen und durch die Nutzung von biblatex-ext noch etwas einfacher zu gestalten.
%\RequirePackage{filecontents}
\begin{filecontents}{Splendor.bib}
@Book{Mustermann2012,
  author    = {Max Mustermann},
  maintitle = {Lorem Ipsum},
  location  = {Berlin},
  year      = {2012},
  volume    = {2},
  edition   = {4},
  publisher = {Testverlag},
}
@Inreference{Musterfrau2010,
  author    = {Marianne Musterfrau},
  title     = {Lorem Ipsum},
  pages     = {60--62},
  maintitle = {Lexikon der Testerei},
  editor    = {Hans Dampf},
  location  = {München},
  year      = {2010},
  volume    = {4},
  edition   = {2},
  publisher = {Lexikonverlag},
}
\end{filecontents}

\documentclass{scrartcl}

\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}

\usepackage[babel,german=quotes]{csquotes}

\usepackage[backend=biber,
style=ext-authoryear-ibid,
innamebeforetitle=true,% biblatex-ext-Option
ibidpage=true,
dashed=false,
maxbibnames=3,
maxcitenames=3
]{biblatex}
\addbibresource{Splendor.bib}
\addbibresource{biblatex-examples.bib}

\DeclareDelimFormat[bib,biblist]{nametitledelim}{\addcolon\addspace}

% Wenn alle Titel ohne Anführungszeichen und Kursivschrift auskommen sollen, geht es so schneller
\DeclareFieldFormat*{title}{#1}
\DeclareFieldFormat[inreference]{title}{[Art.]\space#1}
\DeclareFieldFormat{journaltitle}{#1}
\DeclareFieldFormat{booktitle}{#1}
\DeclareFieldFormat{maintitle}{#1}

\DefineBibliographyStrings{german}{%
  andothers = {et\addabbrvspace al\adddot},
  jourvol   = {Jahrgang},
  number    = {Heft},
}

\DeclareFieldFormat[article,periodical]{volume}{\bibstring{jourvol}~#1}
\DeclareFieldFormat[article,periodical]{number}{\bibstring{number}~#1}

% dieser Block ist bihblatex-ext-spezifisch
\renewcommand*{\jourvoldelim}{\addperiod\space}
\renewcommand*{\volnumdelim}{\addperiod\space}

% "Hrsg." in Klammern und ohne Komma davor
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}
\DeclareFieldFormat{translatortype}{\mkbibparens{#1}}
\DeclareDelimFormat{translatortypedelim}{\addspace}

\renewcommand*{\bibpagespunct}{\addperiod\space}

\DeclareNameAlias{default}{family-given}
\DeclareNameAlias{sortname}{default}

\AtBeginBibliography{%
  \renewcommand*{\mkbibnamefamily}[1]{\textsc{#1}}%
  \renewcommand*{\mkbibnameprefix}[1]{\textsc{#1}}%
}

\DeclareDelimFormat{multinamedelim}{\addslash}
\DeclareDelimAlias{finalnamedelim}{multinamedelim}

\begin{document}
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua \parencite[vgl.][12]{Mustermann2012}. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet \parencite[vgl.][60]{Musterfrau2010}

\cite{sigfridsson,kant:kpv}

\printbibliography
\end{document}

Splendor
Forum-Anfänger
Forum-Anfänger
Beiträge: 23
Registriert: Sa 9. Apr 2011, 17:07

Beitrag von Splendor »

Liebe Gast,

wer immer Du auch bist: herzlichen Dank für die Lösung des Problems und die "Modernisierung" des Codes!

Funktioniert jetzt ganz ausgezeichnet. Ich bin schwer begeistert.

Beste Grüße und Dir ein schönes Wochenende
Splendor

Antworten