Seitenzahlen im Postnote-Feld erkennen

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


ElEsido
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mi 22. Jul 2009, 14:36

Seitenzahlen im Postnote-Feld erkennen

Beitrag von ElEsido »

Hallo zusammen

Wenn man eine Quelle mit \footcite[23]{mueller} angibt, erkennt Biblatex ja, ob im Feld <postnote> eine Seitenzahl steht. Dies kann mit der Eingabe \pno oder \ppno forciert werden, z.B\footcite[\pno 3b]{<kürzel>} oder \footcite[\ppno 3b-4c]{<kürzel>}. Eine Abfrage irgendwo in Biblatex prüft, ob eine Seitenzahl steht oder forciert wird und setzt falls ja ein S. vorne daran.

Ich möchte diese Abfrage in einem Stil verwenden und je nach dem die Original-Seitenzahl des zitierten Werks in Klammern setzten oder nicht. (Bsp: "Müller, ZietschriftX 2008 (S. 203-215), S. 212." Bzw. "Müller, ZietschriftX 2008 S. 203-215 mit weiteren Hinweisen.")

Kann mir jemand helfen, den Code, der den Seitenzahl-Check macht, in meinem Stil-Makro zu verwenden?

Der Code, der dies steuert ist _vermutlich_ (ich kann so kompakt geschriebene Befehle leider nicht deuten) im File biblatex.sty ab Zeile 2194:
\long\def\blx@mkpageprefix#1#2{%
\blx@imc@ifnumeral{#2}
{\blx@imc@bibstring{#1}\ppspace#2}
{\blx@imc@ifnumerals{#2}
{\blx@imc@bibstring{#1s}\ppspace#2}
{\begingroup
\def\pno{\blx@imc@bibstring{#1}}%
\def\ppno{\blx@imc@bibstring{#1s}}%
#2\endgroup}}}
Dieses Minimalbeispiel zeigt, worum es geht (Glossaries ist eingebunden, da ich dieses im Originaldokument auch verwende und es bei einem andern Lösungsansatz bereits ausschlaggebend war.)
\documentclass[11pt, ngerman,oneside]{scrbook} 
\usepackage[T1]{fontenc} 
\usepackage[latin1]{inputenc} 
\usepackage[ngerman]{babel} 
\usepackage[style=authortitle-ibid]{biblatex}
\usepackage[babel,german=guillemets]{csquotes} 
\bibliography{faelle}
\usepackage[acronym=true]{glossaries}
\makeglossaries
\newacronym{ff}{ff.}{fortfolgende}
\newacronym{rpw}{RPW}{Recht und Politik des Wettebwerbs}
\glsunset{ff}

\begin{filecontents}{faelle.bib}
@jurisdiction{coop-carr,
Author = {Wettbewerbskommission},
Date = {2008.03.17},
Institution = {Weko},
Journaltitle = {\gls{rpw}},
Number = {4},
Pages = {593 ff.},
Title = {Coop\slash Carre\-four},
Titleaddon = {Ver\-f{\"u}\-gung der Wett\-be\-werbs\-kom\-mis\-sion vom 17.~M{\"a}rz 2008},
Year = {2008}}

@jurisdiction{test,
Author = {Wettbewerbskommission},
Date = {2004.03.17},
Institution = {Weko},
Journaltitle = {\gls{rpw}},
Number = {3},
Pages = {22 ff.},
Title = {Testfall},
Titleaddon = {Testentscheid},
Year = {2004}}
\end{filecontents}

% Es folgt die Anpassung des Biblatex-Stils. 

% Nachfolgend das Makro, das die verschiedenen Felder des Bib-Datensatzes darstellt

\newbibmacro{footcite-jurisdiction}{%
\iffieldundef{shorttitle}{\printfield{title}}{\printfield{shorttitle}}\addcomma\addspace
\iffieldundef{howpublished}{%
\printfield{journaltitle}\addspace%
\printfield{year}\addslash
\iffieldundef{issue}{}{\thefield{issue}}%
\iffieldundef{number}{}{\thefield{number}}%
}{\printfield{howpublished}}%
%%Hier käme die Abfrage, ob im Postnote-Feld eine Sietenzahl setht oder mit \pno der \ppno forciert worden ist
\iffieldundef{postnote}{\addspace\printfield{pages}}{%
%%Hier käme die Abfrage, ob im Postnote-Feld eine Sietenzahl setht oder mit \pno der \ppno forciert worden ist}%
% Wenn Seitenzahlen stehen, dann {\addspace(\thefield{pages})}
% Wenn keine Seitenzahl steht, dann {\addspace\printfield{pages}}
}}


% Hier die Re-Definition des Befehls \footcite: Einträge des Typs jurisdiction werden ausgesondert und dem obigen Makro zugewiesen. 
\DeclareCiteCommand%
{\footcite}% command
[\mkbibfootnote]%wrapper
{\bibsentence
\usebibmacro{prenote}}%precode
{\usebibmacro{citeindex}%
\ifthenelse{\equal{\thefield{entrytype}}{jurisdiction}}{\usebibmacro{footcite-jurisdiction}}{\usebibmacro{cite}}}%loopcode
{\multicitedelim}%sepcode
{\usebibmacro{cite:postnote}}%postcode


\begin{document} 

Dies ist der Fall ohne postnote-Feld\footcite{coop-carr}\\
\\
Dies ist der Fall mit einer Seitenzahl im postnote-Feld\footcite[\pno 600 \protect\gls{ff}]{coop-carr}. \\
\\
Dies ist der Fall mit einer Seitenzahl im postnote-Feld\footcite[600]{test}. \\
\\
Dies ist der Fall mit mehreren Seitenzahlen im postnote-Feld\footcite[600-602]{coop-carr}. \\
\\
Dies ist der Fall mit einer Nicht-Seitenzahl im postnote-Feld\footcite[Erwägung 3]{coop-carr}. \\
\end{document}
Ich bin für jede Hilfe dankbar.
Schöne Grüsse
ElEsido

P.S. ich verwende
biblatex 2009/07/04 v0.8e und
csquotes 2009/07/04 v4.4a
[quote][/quote]

ElEsido
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mi 22. Jul 2009, 14:36

Beitrag von ElEsido »

Philipp Lehman, der Autor von Biblatex, hat den folgenden Code als Test vorgeschlagen:
\iffieldundef{postnote}
 {POSTNOTE UNDEFINED}
 {\savefield{postnote}{\bbx@tempa}%
  \expandafter\ifnumerals\expandafter{\bbx@tempa}
    {POSTNOTE IS A PAGE OR PAGE RANGE}
    {POSTNOTE IS OTHER TEXT}}
Allerdings prüft dieses Code-Stück nicht, ob das postnote-Feld mit einem \pno oder \ppno beginnt. Weiss jemand, wie der Code um diese Prüfung ergänzt werden könnte?[/code]

Antworten