Zitieren nach den Richtlinien der DGPS mit biblatex

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


fitzz
Forum-Anfänger
Forum-Anfänger
Beiträge: 30
Registriert: Mi 31. Aug 2011, 22:56

Beitrag von fitzz »

Hi Tamara,

bei der DGPs sind sie sich entweder nicht einig, oder es fehlt bei Einigen elementares Schulwissen wie lesen, im Text schreiben sie von Komma, im Beispiel zeigen sie Komma und Semikolon; dachte erst wäre ein Tippfehler von dir gewesen. Der folgende Code verhält sich wie die Beispiele.

Der Beispielcode erzeugt eine Datei (apa-to-dgps.tex) die du in dein Dokument nach dem laden von BibLaTeX einbinden musst. Der vorherige Hack ist in der Datei auch schon enthalten. Dies empfinde ich aufgrund des nun doch umfangreichen Codes als die komfortablere und wartungsfreundlichere Variante als alles immer ins Dokument zu kopieren.

Der Rest des Beispielcodes zeigt die das Einbinden und die zusätzlichen Befehlskombinationen.
\listfiles
\begin{filecontents*}{beispiel.bib}
@Book{ bsp1,
    title = "Buchtitel1",
    author = "PVorname Author1",
    publisher = "Verlag",
    location = "Verlagsort",
    year = "2009"
}

@Book{ bsp2,
    title = "Buchtitel 2",
    author = "AVorname Author2 and BVorname Author3",
    publisher = "Verlag",
    location = "Verlagsort",
    year = "2008"
}

@Book{ bsp3,
    title = "Buchtitel 2",
    author = "BVorname Author4 and BVorname Author5 and BVorname Author6 and BVorname Author7 and BVorname Author8",
    publisher = "Verlag",
    location = "Verlagsort",
    year = "2008"
}


@Book{ bsp4,
    title = "Buchtitel 2",
    author = "BVorname Author3 and Autor4 and Autor5 and Author6 and Author7 and Author8 and Autor9 and Author10 and Author11 and Author12",
    publisher = "Verlag",
    location = "Verlagsort",
    year = "2008"
}
\end{filecontents*}
\begin{filecontents*}{apa-to-dgps.tex}
% This File is licend under GPL 2.0 and above
% AUTHOR: Gerald Goebel <fitzz in www.golatex.de Forum>
% THANKS to Audrey form TeX.SX 
% See http://tex.stackexchange.com/q/27964/4918

\NewBibliographyString{quotedon}
\DefineBibliographyStrings{ngerman}{
  quotedon = {{zitiert nach}{zit\adddotspace nach}}
}


\DeclareBibliographyCategory{quoter}
\DeclareBibliographyCategory{quotee}
\DeclareBibliographyCategory{primary}

\AtEveryCitekey{%
  \iftoggle{cbx@isquote}
    {}
    {\addtocategory{primary}{\thefield{entrykey}}%
     \global\togglefalse{cbx@iflastquote}}}


\makeatletter
\newtoggle{cbx@isquote}% Current citation quotecite?
\newtoggle{cbx@iflastquote}% Last citation quotecite?
\newtoggle{cbx@fullquote}% Print a full quotecite?

\newrobustcmd{\cbx@qcwrapper}[3]{%
  \global\toggletrue{cbx@isquote}%
  \global\togglefalse{cbx@fullquote}%
  #1#2{#3}%
  \global\togglefalse{cbx@isquote}%
  }


\DeclareMultiCiteCommand{\quotecite}
  [\cbx@qcwrapper\relax\relax]
  {\cbx@quotecite}
  {\cbx@qcdelim}

\newbool{cbx:parensinsidestart}
\newbool{cbx:parensinsidestarted}

\renewbibmacro*{cite:plabelyear+extrayear}{%
  \ifbool{cbx:parensinsidestart}%
  {\renewcommand{\nameyeardelim}{}%
    \nameyeardelim\addspace\bibopenparen}%
  {}%
  \iffieldundef{labelyear}
    {\usebibmacro{cite:noyear}}
    {\ifthenelse{\iffieldequalstr{labelyear}{inpress}\OR\iffieldequalstr{labelyear}{in press}}
      {\printtext[bibhyperref]{\bibxstring{inpress}%
       \iffieldundef{extrayear}
         {}
         {\apashortdash}%
       \printfield{extrayear}}}
      {\printtext[bibhyperref]{%
       \printfield[noformat]{origyear}\setunit*{\addslash}%
       \printfield{labelyear}\printfield{extrayear}}}}}%

\DeclareCiteCommand{\cbx@quotecite}
  {\usebibmacro{cite:init}%
   \usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \ifnumless{\value{multicitecount}}{2}%
    {\addtocategory{quotee}{\thefield{entrykey}}% Current entry is a quotee
      \xdef\cbx@quoteekey{\thefield{entrykey}}%
      \global\booltrue{cbx:parensinsidestart}%
      \usebibmacro{cite}%
      \csxdef{cbx@lastquoteekey}{\thefield{entrykey}}}%
    {\addtocategory{quoter}{\thefield{entrykey}}% Current entry is a quoter
      \xifinlistcs{\thefield{entrykey}}{cbx@quoterlist@\cbx@quoteekey}
        {}
        {\csxappto{cbx@quoter@\cbx@quoteekey}{\thefield{entrykey},}%
         \listcsxadd{cbx@quoterlist@\cbx@quoteekey}{\thefield{entrykey}}}%
      \ifbool{cbx:parensinsidestart}%
        {\global\boolfalse{cbx:parensinsidestart}%
         \global\booltrue{cbx:parensinsidestarted}}{}%
      \usebibmacro{cite}%
      \csxdef{cbx@lastquoterkey}{\thefield{entrykey}}}%
  }
  {}
  {\usebibmacro{textcite:postnote}%
    \ifbool{cbx:parensinsidestarted}%
      {\bibcloseparen\global\boolfalse{cbx:parensinsidestarted}}%
      {}%
}

\newrobustcmd{\cbx@qcdelim}{%
  \addcomma\space\bibstring{quotedin}\space}


\DeclareMultiCiteCommand{\parenquotecite}
  [\cbx@qcwrapper\relax\mkbibparens]
  {\cbx@parenquotecite}
  {\cbx@qcdelimparen}

\DeclareCiteCommand{\cbx@parenquotecite}
  {\usebibmacro{cite:init}%
   \usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
  \ifnumless{\value{multicitecount}}{2}%
   {\addtocategory{quotee}{\thefield{entrykey}}% Current entry is a quotee
    \xdef\cbx@quoteekey{\thefield{entrykey}}%
    \usebibmacro{cite}%
    \csxdef{cbx@lastquoteekey}{\thefield{entrykey}}}%
   {\addtocategory{quoter}{\thefield{entrykey}}% Current entry is a quoter
      \xifinlistcs{\thefield{entrykey}}{cbx@quoterlist@\cbx@quoteekey}
        {}
        {\csxappto{cbx@quoter@\cbx@quoteekey}{\thefield{entrykey},}%
         \listcsxadd{cbx@quoterlist@\cbx@quoteekey}{\thefield{entrykey}}}%
    \usebibmacro{cite}%
    \csxdef{cbx@lastquoterkey}{\thefield{entrykey}}}%
   }
  {}
  {\usebibmacro{textcite:postnote}}


\newrobustcmd{\cbx@qcdelimparen}{%
   \bibsentence\bibstring{quotedin}\space}

\defbibfilter{dgps}{category=primary or category=quoted or not category=quotee}
\makeatother
\AtBeginDocument{
  \DeclareNameFormat{apaauthor}{%
    \ifthenelse{\value{listcount}=\maxprtauth\AND\value{listcount}<\value{listtotal}}
      {\andothersdelim\bibstring{andothers}}
      {\ifthenelse{\value{listcount}>\maxprtauth}
        {}
        {\ifthenelse{\iffieldequalstr{usere}{unkauth}\OR\iffieldequalstr{usere}{unkauthdate}}
          {\mkbibbrackets{\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}?}}
          {\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}}%
        }%
      }%
    }
}
\end{filecontents*}

\documentclass{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[german=quotes]{csquotes}
\usepackage[style=apa, backend=biber]{biblatex}
\DeclareLanguageMapping{ngerman}{ngerman-apa}

\input{apa-to-dgps}

\bibliography{beispiel}

\begin{document}

\parenquotecite{bsp1}{bsp2}

\parenquotecite{bsp1}[\textbf{post}]{bsp2}

\parenquotecite{bsp1}[25]{bsp2}

\parenquotecite{bsp1}[\textbf{prä}][\textbf{post}]{bsp2}

\parenquotecite[\textbf{post}]{bsp1}{bsp2}

\parenquotecite[25]{bsp1}{bsp2}

\parenquotecite[\textbf{prä}][\textbf{post}]{bsp1}{bsp2}

\parenquotecite[\textbf{prä}][\textbf{post}]{bsp1}[\textbf{post}]{bsp2}

\parenquotecite[\textbf{prä}][\textbf{post}]{bsp1}[\textbf{prä}][]{bsp2}

\parenquotecite[\textbf{prä}][]{bsp1}[\textbf{prä}][\textbf{post}]{bsp2}

\parenquotecite[\textbf{prä}][\textbf{post}]{bsp1}[\textbf{prä}][\textbf{post}]{bsp2}

\parenquotecite(\textbf{POST})[\textbf{prä}][\textbf{post}]{bsp1}[\textbf{prä}][\textbf{post}]{bsp2}

\parenquotecite(\textbf{PRÄ})(\textbf{POST})[\textbf{prä}][\textbf{post}]{bsp1}[\textbf{prä}][\textbf{post}]{bsp2}

\quotecite{bsp1}{bsp2}

\quotecite{bsp1}[\textbf{prä}][\textbf{post}]{bsp2}

\quotecite{bsp1}[25]{bsp2}

\quotecite[\textbf{post}]{bsp1}{bsp2}

\quotecite[25]{bsp1}{bsp2}

\quotecite[\textbf{prä}][\textbf{post}]{bsp1}{bsp2}

\quotecite[\textbf{prä}][\textbf{post}]{bsp1}[\textbf{post}]{bsp2}

\quotecite[\textbf{prä}][\textbf{post}]{bsp1}[\textbf{prä}][]{bsp2}

\quotecite[\textbf{prä}][]{bsp1}[\textbf{prä}][\textbf{post}]{bsp2}

\quotecite[\textbf{prä}][\textbf{post}]{bsp1}[\textbf{prä}][\textbf{post}]{bsp2}

\quotecite(\textbf{POST})[\textbf{prä}][\textbf{post}]{bsp1}[\textbf{prä}][\textbf{post}]{bsp2}

\quotecite(\textbf{PRÄ})(\textbf{POST})[\textbf{prä}][\textbf{post}]{bsp1}[\textbf{prä}][\textbf{post}]{bsp2}

\textcite{bsp4}

\nocite{*}

\printbibliography[category=quoter]
\printbibliography[category=quotee]
\printbibliography[category=primary]
\printbibliography[filter=dgps]
\printbibliography
\end{document}
Die fünf
\printbibliography
-Befehle am Schluss erzeugen folgende Literaturverzeichnisse (in obiger Reihenfolge):
1.) nur Literatur die zitiert (hast du gelesen): Sekundärliteratur
2.) nur Literatur die zitiert wird (hast du nicht gelesen): Primärliteratur
3.) nur Literatur die du zitierst und die nicht unter obige fällt (hast du gelesen): Primärliteratur
4.) nur Literatur die du gelesen hast: Teil der Primärliteratur und komplette Sekundärliteratur
5.) alle Literatur Primär- wie Sekundärliteratur

Für dich ist wohl die 4. Variante oben (filter=dgps) die Entscheidende. Du kannst aber jederzeit, wenn erwünscht, ohne zusätzlichen Aufwand ein Verzeichnis mit sekundär zitierter Literatur erzeugen.

Ich hoffe das hilft dir.

lg
Gerald

Tamaracha
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Mi 21. Jul 2010, 13:21

Beitrag von Tamaracha »

Hi Gerald,
fitzz hat geschrieben:bei der DGPs sind sie sich entweder nicht einig, oder es fehlt bei Einigen elementares Schulwissen wie lesen, im Text schreiben sie von Komma, im Beispiel zeigen sie Komma und Semikolon; dachte erst wäre ein Tippfehler von dir gewesen. Der folgende Code verhält sich wie die Beispiele.
Ja, das ist komisch. Bei Amazon beklagt sich aber auch ein Kunde über viele formale Fehler in diesem Werk, wo es doch um formale Gestaltung geht. Warum die DGPS unbedingt extra einen eigenen Ableger der APA-Richtlinien braucht, ist mir ja auch nicht ersichtlich. Da verwundern weitere Unklarheiten auch nicht mehr so sehr. Immerhin kann man so bei beiden Versionen (komma oder Semikolon) sagen, es sei korrekt, denn es stehe ja so in den Richtlinien.
fitzz hat geschrieben:Der Beispielcode erzeugt eine Datei (apa-to-dgps.tex) die du in dein Dokument nach dem laden von BibLaTeX einbinden musst. Der vorherige Hack ist in der Datei auch schon enthalten. Dies empfinde ich aufgrund des nun doch umfangreichen Codes als die komfortablere und wartungsfreundlichere Variante als alles immer ins Dokument zu kopieren.
So ähnlich hatte ich das auch schon eingerichtet, nur dass die Datei einfach nur „dgps.tex“ heißt und in meinem nutzerspezifischen texmf-Baum liegt, so dass sie immer gefunden wird. Habe einfach deinen Code da hineinkopiert.
fitzz hat geschrieben:Ich hoffe das hilft dir.
Ja, diese Lösung funktioniert wunderbar und der Ansatz gefällt mir auch sehr gut. Gerade in einer zentralen bib-Datei, wie ich sie verwende, wäre es sehr unpraktisch, Beziehungen zwischen Werken zu definieren, die nicht prinzipiell gelten, sondern nur situationsabhängig. Die Filtermöglichkeiten für das Literaturverzeichnis sind natürlich auch sehr schön. Also vielen Dank für die schönen hacks.

Grüße
Tamara

Antworten