Gibt es eine Möglichkeit, bei biblatex \postnotedelim flexibel zu verwenden? Standardmäßig gibt \postnotedelim ein Komma und ein Leerzeichen aus. Für eine konkrete Textstelle ist das auch optimal:

Open in writeLaTeX
Vgl. Doe, Buch, S. 15. Anmerkung zur Literaturangabe.

Möchte ich aber ein Werk im Allgemeinen oder eine Gesetzesnorm in der Fußnote zitieren und eine Anmerkung dazu machen, ist das nicht mehr optimal, da immer ein Komma dabei ist:

Open in writeLaTeX
Vgl. Doe, Buch,. Anmerkung zur Literaturangabe.
Art. 1 GG,: »Die Würde des Menschen ist unantastbar«.

Ein Punkt oder Doppelpunkt als \postnotedelim würde dann besser passen:

Open in writeLaTeX
Vgl. Doe, Buch. Anmerkung zur Literaturangabe.
Art. 1 GG: »Die Würde des Menschen ist unantastbar«.

Möglich wäre natürlich vor \autocite ein \renewcommand{\postnotedelim}{\adddot\addspace} und danach wieder \renewcommand{\postnotedelim}{\adcomma\addspace}, aber das scheint mir sehr unpraktikabel zu sein. Daher die Frage: Lässt sich das flexibler gestalten?

Minimalbeispiel:

Open in writeLaTeX
\documentclass[fontsize=12pt,paper=a4,titlepage,twoside=false,headings=normal,numbers=noendperiod]{scrartcl}

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

\begin{filecontents}{Bibliographie.bib}
    @BOOK{Doe14,
      author = {Doe, John},
      title = {Buch},
      year = {2014},
      location = {Ort},
    }
    @BOOK{Joe14,
      author = {Joe, Dohn},
      title = {Anti-Buch},
      year = {2014},
      location = {Ort},
    }
}
\end{filecontents}

\usepackage[style=authortitle,
            language=ngerman,
            sorting=nyt,
            date=short,
            backend=biber]{biblatex}
\bibliography{Bibliographie.bib}

\usepackage[style=german,
            german=guillemets,
            parthreshold=true,
            autopunct=true]{csquotes}

\parskip2ex
\parindent0em

\begin{document}
Text mit konkreter Textstelle.\autocite[Vgl.][1]{Doe14} Text mit konkreter Textstelle und Anmerkung.\autocite[(Korrekt) Vgl.][\pno~1. Es muss aber die Mindermeinung von X, Y und Z beachtet werden]{Doe14} Text, bei dem am Ende ein Gesamtes Werk angegeben wird.\autocite[(Unschön) Vgl.][es muss aber die Mindermeinung von X, Y und Z beachtet werden]{Doe14} Dabei ist ein Komma eher unpassend, da es sich um einen eigenen Satz handelt -- es müsste also mit Punkt getrennt werden. Dies ist wegen \texttt{\textbackslash postnotedelim\{\textbackslash addcomma\textbackslash addspace\}} nicht möglich: Text.\autocite[(Fehlerhaft) Vgl.][. Es muss aber die Mindermeinung von X, Y und Z beachtet werden]{Doe14} Eine umständliche Lösung wäre: \texttt{\textbackslash renewcommand\{\textbackslash postnotedelim\}}:

\texttt{\textbackslash renewcommand\{\textbackslash postnotedelim\}\{\textbackslash adddot\textbackslash addspace\}}\\
\renewcommand{\postnotedelim}{\adddot\addspace}
Text, bei dem am Ende ein Gesamtes Werk angegeben wird.\autocite[(Korrekt) Vgl.][Es muss aber die Mindermeinung von X, Y und Z beachtet werden]{Doe14} Diese Lösung ist bei \texttt{\textbackslash autocites} nicht möglich.\autocites[(Korrekt) Vgl.][Es muss aber die Mindermeinung von X, Y und Z beachtet werden]{Doe14}[S. insb. die Position bei][\pno~1 (Fehlerhaft)]{Joe14}
\renewcommand{\postnotedelim}{\addcomma\addspace}\\
\texttt{\textbackslash renewcommand\{\textbackslash postnotedelim\}\{\textbackslash addcomma\textbackslash addspace\}}

\printbibliography
\end{document}

In der Definition, welche die Ausgabe der Fußnoten/Literaturangaben regelt, müsste somit bei dem Teil, der das optionale postnote-Argument ausgibt, geprüft werden, ob das Argument mit einem Satzzeichen(, ; . : [evtl. auch ? und !] startet und dann die Ausgabe von \postnotedelim unterdrücken. Diese Lösung ist insofern der Lösung mit \renewcommand vorzuziehen, als bei \autocites u.U. mehrere unterschiedliche Trennzeichen benötigt werden.

gefragt 17 Jul '14, 13:29

kurztipp's gravatar image

kurztipp
6316
Akzeptiert: 33%

bearbeitet 17 Jul '14, 18:16


Ich benutze expl3 um zu prüfen, ob das erste Zeichen der postnote eines von .,?! ist. Ist dies der Fall wird postnotedelim unterdrückt. Dabei reicht es nicht, dass das erste Zeichen von postnote auf eines der oben genannten expandiert. So liefert zum Beispiel

Open in Online-Editor
\def\dot{.}
\autocite[\dot\ postnote]{Doe14}

nicht das gewünschte Verhalten.

Open in Online-Editor
\begin{filecontents}{\jobname.bib}
@BOOK{Doe14,
  author = {Doe, John},
  title = {Buch},
  year = {2014},
  location = {Ort},
}
@BOOK{Joe14,
  author = {Joe, Dohn},
  title = {Anti-Buch},
  year = {2014},
  location = {Ort},
}
\end{filecontents}
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}

\usepackage[style=authortitle,backend=biber]{biblatex}
\addbibresource{\jobname.bib}

\usepackage{xparse}

\ExplSyntaxOn

\cs_generate_variant:Nn \tl_head:N { c }
\cs_generate_variant:Nn \tl_if_in:nnF { nx }

\newbibmacro*{postnote}{%
  \iffieldundef{postnote}
    {}
    {% Test if the postnote starts with any of .,?!
     % If not, set postnote
      \tl_if_in:nxF { .,?! }
       { \tl_head:c { abx@field@postnote } }
       { \setunit{\postnotedelim} }
      \printfield{postnote}}}

\ExplSyntaxOff

\begin{document}

\autocite[. postnote]{Doe14}
\autocite[, postnote]{Doe14}
\autocite[? postnote]{Doe14}
\autocite[! postnote]{Doe14}
\autocite[postnote]{Doe14}
\def\dot{.}
\autocite[\dot\ postnote]{Doe14}

\printbibliography
\end{document}

alt text

Permanenter link

beantwortet 12 Jul, 04:29

Henri's gravatar image

Henri
10.1k31730

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×127
×18

Frage gestellt: 17 Jul '14, 13:29

Frage wurde angeschaut: 1,230 Mal

Zuletzt aktualisiert: 12 Jul, 04:29