1

I have to use a very specific citation style for my thesis. Since verbose is the closest I can find to this style, I decided to customize it with a biblatex.cfg file.

A MWE for tex is:

\documentclass{article}
\usepackage[backend=biber, style=verbose]{biblatex}
\addbibresource{\jobname.bib}
\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@book{alexyRechtVernunftDiskurs1995,
  title = {Recht, Vernunft, Diskurs: Studien zur Rechtsphilosophie},
  shorttitle = {Recht, Vernunft, Diskurs},
  author = {Alexy, Robert},
  date = {1995},
  edition = {1},
  volume = {2}
}
\end{filecontents}

\begin{document}
\footcite{alexyRechtVernunftDiskurs1995}  
\printbibliography    
\end{document}

In the next step I would like to get the citation of books right. With the above MWE, verbose outputs:

Alexy, Robert. Recht, Vernunft, Diskurs: Studien zur Rechtsphilosophie. 1st ed. Vol. 2. 1995

What I want is:

Alexy, Recht, Vernunft, Diskurs: Studien zur Rechtsphilosophie II¹ (1995).

If there is no volume it should display:

Alexy, Recht, Vernunft, Diskurs: Studien zur Rechtsphilosophie¹ (1995).

I already changed the volume and edition to Roman numerals and superscript with:

\DeclareFieldFormat{volume}{\RN{#1}}
\DeclareFieldFormat{edition}{\textsuperscript{#1}}

This however results in

Alexy, Robert. Recht, Vernunft, Diskurs: Studien zur Rechtsphilosophie. ¹. II. 1995.

Now the only thing that's missing is to change the order of volume and edition and to omit the space and delimiter before the edition and the delimiter before the volume. How can I achieve this?

moewe
  • 175,683

1 Answers1

3

I thought we already discussed this? See the MWE at the end of my answer to your question Customize verbose citation style.

Basically your style is so different from what the standard styles do that it is simplest to write your own bibliography drivers. That makes it easier to control not only the field format but also the order of fields and the punctuation in between. Below are the drivers for @book and @collection.

Many of the command are discussed already over at Customize verbose citation style (or at Guidelines for customizing biblatex styles). Compare the code of the drivers with the definition in standard.bbx. I left as much of it intact as possible and only modified the bits that needed changing. Since your desired style ignores quite a few fields that standard biblatex would print, the driver gets a bit shorter.

\documentclass[naustrian]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber,
  style=verbose,
  citepages=suppress,
  autocite=footnote,
  dashed=false,
]{biblatex}

\renewcommand*{\newunitpunct}{\addcomma\space}

\DeclareNameFormat{family}{%
  \usebibmacro{name:family}
    {\namepartfamily}
    {\namepartgiven}
    {\namepartprefix}
    {\namepartsuffix}%
  \usebibmacro{name:andothers}}

\DeclareNameWrapperFormat{family}{\mkbibemph{#1}}

\DeclareNameAlias{default}{family}
\DeclareNameAlias{sortname}{default}
\DeclareNameAlias{labelname}{default}

\DeclareNameWrapperAlias{default}{family}
\DeclareNameWrapperAlias{sortname}{default}
\DeclareNameWrapperAlias{labelname}{default}

\DeclareDelimFormat{multinamedelim}{\slash}
\DeclareDelimAlias{finalnamedelim}{multinamedelim}
\DeclareDelimFormat[textcite]{multinamedelim}{\addcomma\space}
% not sure if a no-breaking space is the best choice here,
% so I'd probably prefer \addspace over \addnbspace
\DeclareDelimFormat[textcite]{finalnamedelim}{\addspace\bibstring{and}\space}


\DeclareFieldFormat{pages}{#1}
\DeclareFieldFormat{postnote}{\mknormrange{#1}}
\DeclareFieldFormat{multipostnote}{\mknormrange{#1}}

\renewcommand*{\subtitlepunct}{\addcolon\space}

\DeclareFieldFormat*{title}{#1}
\DeclareFieldFormat*{booktitle}{#1}
\DeclareFieldFormat*{citetitle}{#1}
\DeclareFieldFormat*{journaltitle}{#1}

\DeclareFieldFormat{volume}{\RN{#1}}

\DeclareFieldFormat{date}{\mkbibparens{#1}}

\DeclareFieldFormat{superedition}{\mkbibsuperscript{#1}}

\DeclareBibliographyDriver{book}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/editor}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{maintitle+title}%
  \setunit{\space}%
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \setunit{}%
  \printfield[superedition]{edition}%
  \setunit{\addspace}\newblock
  \usebibmacro{date}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{collection}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{editor}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{maintitle+title}%
  \setunit{\space}%
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \setunit{}%
  \printfield[superedition]{edition}%
  \setunit{\addspace}\newblock
  \usebibmacro{date}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

\renewcommand*{\finentrypunct}{}

\begin{filecontents}{\jobname.bib}
@book{alexyRechtVernunftDiskurs1995,
  title      = {Recht, Vernunft, Diskurs},
  subtitle   = {Studien zur Rechtsphilosophie},
  author     = {Alexy, Robert},
  date       = {1995},
  edition    = {1},
  publisher  = {Suhrkamp},
  location   = {Frankfurt am Main},
  isbn       = {978-3-518-28767-5},
  langid     = {german},
  note       = {OCLC: 243802548},
  number     = {1167},
  pagetotal  = {292},
  series     = {Suhrkamp"=Taschenbuch Wissenschaft},
  volume     = {2},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Lorem \autocite{alexyRechtVernunftDiskurs1995}
ipsum \autocite{alexyRechtVernunftDiskurs1995}

\printbibliography
\end{document}

Alexy, Recht, Vernunft, Diskurs: Studien zur Rechtsphilosophie II^1 (1995).

moewe
  • 175,683
  • Yes, but I was having trouble creating a new driver and getting it to work. That's why I was experimenting with this again. Thanks a lot for the example new driver, that's clear now. – philipp_th May 24 '20 at 10:04