Umdefinierung der Zitierbefehle - cite; textcite & footc

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


Alex84
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Do 17. Aug 2017, 10:13

Umdefinierung der Zitierbefehle - cite; textcite & footc

Beitrag von Alex84 »

Hallo zusammen,

nach dem ich bisher jede meiner Arbeiten mit Word geschrieben und mich mit der Formatierung rumgeärgert habe, plane ich meine Diss. mit LaTeX zu schreiben.

Die Vorlage steht soweit und mit ausgiebiger Recherche konnte ich Stück für Stück für aufgetretenen Fragestellungen Lösungen finden.

Allerdings gefällt mir die Darstellung des Zitierstils (Paket zur Literaturverwaltung: biblatex) noch nicht so richtig und komme hier nicht weiter. Leider konnte ich auch mit der Paketdoku keine Lösung finden oder hab sie einfach übersehe. Daher versuche ich‘s über diesen Weg und hoffe dass mir jmd. weiterhelfen kann.

Ich tendiere derzeit zur Zitiervariante per Fußnote, betrachte aber erstmal beide Möglichkeiten (Fußnote per footcite oder direkt im Text per cite). Für den Fall das an irgendeiner Stelle das Zitieren direkt im Text die bessere Lösung darstellen sollte, versuche ich diese Variante auch schonmal zu lösen.

Mein Ziel ist, dass die Literatur-id-Tag‘s (aber nur die id-Tag‘s) immer in eckigen Klammern stehen. Bei Nutzung von pre- und postnotes werden diese allerdings auch in die eckigen-Klammern mit eingebunden, das würde ich gerne vermeiden.
Sofern direkt im Text und nicht via Fußnote zitiert wird, sollte das Gesamtkonstrukt (nur wenn auch pre- und postnotes vorhanden sind) zusätzlich in runde Klammern eingefasst werden.

Ich könnte bei den normalen Zitiervarianten \cite die pre- und postnotes natürlich manuell setzen und nicht als „option“, allerdings würde ich das gerne vermeiden. Ich finde das persönlich einfach noch übersichtlicher und will möglichst viel automatisieren und mich beim Schreiben auf das wesentliche konzentrieren und nicht noch darauf achten müssen, dass die Darstellung auch bei jeder Quelle identisch ist. Des Weiteren stellt diese manuelle Variante keine Lösung für den \textcite-Befehl dar.

Aktuell würde ich die Fußnote mit der Variante \footnote[\cite} erstellen da er bei \footcite gar keine eckigen Klammern setzt.

Zusammenfassung
Ist es möglich die Befehle cite; textcite und footcite per renewcommand etc. in der Präambel so um zu definieren, dass das gewünschte Resultat herauskommt? Ich gehe einfach mal davon aus, wenn man einen Befehl umdefinieren kann kann, geht’s auch mit den anderen befehlen auf die gleiche Weise?
Wie es eigentlich aussehen sollte:
\cite:
- Ohne pre-/postnotes: [Quelle]
- Mit pre-/postnotes: (vgl. [Quelle], S. 25)

\textcite:
- Autor (vgl. [Quelle], S. 25)

\footcite:
- vgl. [Quelle], S. 25


Hier ist ein Beispiel mit Ist/Soll-Vergleich der Darstellung. Damit wird hoffentlich deutlicher, was ich zu erreichen versuche.


\documentclass[a4paper,12pt]{scrbook}

\begin{filecontents*}{literature.bib}
	@book{Reif.2017,
		editor={Reif, Konrad},
		title={Grundlagen Fahrzeug- und Motorentechnik},
		publisher={Springer Fachmedien Wiesbaden},
		address={Wiesbaden},
		year={2017},
		series={Bosch Fachinformation Automobil},
		isbn={978-3-658-12635-3}
	}
\end{filecontents*}

\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[style=alphabetic,firstinits=true,idemtracker=false,backend=bibtex]{biblatex}
\usepackage{filecontents}

\addbibresource{literature.bib}

\begin{document}

Beispiele der Zitierweise
\\\\
Variante \textbackslash cite ohne pre- \textbackslash postnote:
\\
IST\textbackslash SOLL: \cite{Reif.2017}
\\\\
Variante \textbackslash cite mit pre- \textbackslash postnote:
\\
IST: \cite[vgl.][1]{Reif.2017}
\\
SOLL: (vgl. \cite{Reif.2017}, S.  1)
\\\\
bzw. als Fußnote, IST: \footnote{\cite[vgl.][4]{Reif.2017}}
\\
SOLL Fußnote: \footnote{vgl. [Reif17], S. 4}
\\\\\\

Variante \textbackslash textcite
\\
IST: \textcite[vgl.][2\psq]{Reif.2017} meint, dass...
\\
SOLL: Reif (vgl. \cite{Reif.2017}, S.  2 f.) meint, dass...

\newpage

Variante \textbackslash footcite:
\\
IST: \footcite[vgl.][3]{Reif.2017}
\\
SOLL: \footnote{vgl. [Reif17], S. 3}
	
\end{document}


Gast

Beitrag von Gast »

Mir sind das ja teilweise etwas zu viele Klammern.
\documentclass[a4paper,12pt]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[style=alphabetic,firstinits=true,idemtracker=false,backend=bibtex]{biblatex}


\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
   @book{Reif.2017,
      editor={Reif, Konrad},
      title={Grundlagen Fahrzeug- und Motorentechnik},
      publisher={Springer Fachmedien Wiesbaden},
      address={Wiesbaden},
      year={2017},
      series={Bosch Fachinformation Automobil},
      isbn={978-3-658-12635-3}
   }
\end{filecontents*}
\addbibresource{\jobname.bib}

\providebool{bbx:subentry}

\DeclareCiteCommand{\cite}
  {\ifboolexpr{test {\iffieldundef{prenote}} and test {\iffieldundef{postnote}}}
     {}
     {\bibopenparen}%
   \usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite}}
  {\multicitedelim}
  {\usebibmacro{postnote}%
    \ifboolexpr{test {\iffieldundef{prenote}} and test {\iffieldundef{postnote}}}
     {}
     {\bibcloseparen}}

\renewbibmacro*{cite}{%
  \printtext[brackets]{%
    \printtext[bibhyperref]{%
      \printfield{labelprefix}%
      \printfield{labelalpha}%
      \printfield{extraalpha}%
      \ifbool{bbx:subentry}
        {\printfield{entrysetcount}}
        {}}}}

\makeatletter
\renewbibmacro*{textcite}{%
  \iffieldequals{namehash}{\cbx@lasthash}
    {\setunit{\multicitedelim}}
    {\ifnameundef{labelname}
       {\printfield[citetitle]{labeltitle}}
       {\printnames{labelname}}%
     \setunit{%
       \global\booltrue{cbx:parens}%
       \printdelim{namelabeldelim}\bibopenparen}%
     \stepcounter{textcitecount}%
     \savefield{namehash}{\cbx@lasthash}}%
  \ifnumequal{\value{citecount}}{1}
    {\usebibmacro{prenote}}
    {}%
  \printtext[brackets]{\usebibmacro{cite}}%
  \setunit{%
    \ifbool{cbx:parens}
      {\bibcloseparen\global\boolfalse{cbx:parens}}
      {}%
    \textcitedelim}}
\makeatother

\begin{document}

Beispiele der Zitierweise
\\\\
Variante \textbackslash cite ohne pre- \textbackslash postnote:
\\
IST\textbackslash SOLL: \cite{Reif.2017}
\\\\
Variante \textbackslash cite mit pre- \textbackslash postnote:
\\
IST: \cite[vgl.][1]{Reif.2017}
\\
SOLL: (vgl. \cite{Reif.2017}, S.  1)
\\\\
bzw. als Fußnote, IST: \footnote{\cite[vgl.][4]{Reif.2017}}
\\
SOLL Fußnote: \footnote{vgl. [Reif17], S. 4}
\\\\\\

Variante \textbackslash textcite
\\
IST: \textcite[vgl.][2\psq]{Reif.2017} meint, dass...
\\
SOLL: Reif (vgl. \cite{Reif.2017}, S.  2 f.) meint, dass...

\newpage

Variante \textbackslash footcite:
\\
IST: \footcite[vgl.][3]{Reif.2017}
\\
SOLL: \footnote{vgl. [Reif17], S. 3}
   
\end{document}

Alex84
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Do 17. Aug 2017, 10:13

Beitrag von Alex84 »

Vielen Dank, das hilft mir denke ich weiter.

Ich tendiere auch stark zur Fußnotenvariante und werde die cite Funktion nur im worst case verwenden um mir die runden Klammern zu sparen. Bei wörtlichen Zitaten, die sich stark in Grenzen halten werden, reicht die textcite Funktion aus.

Jetzt werde ich erstmal versuchen die Funktionen zu verstehen, soweit war ich bisher bei LaTeX noch nicht durchgestiegen. Eigentlich hatte ich gehofft das cite und textcite eigenständige Funktionen sind, aber so wie ich das nun verstehe ist textcite direkt abhängig von cite und Änderungen bei cite wirken sich direkt auch auf textcite aus. Dadurch gibt‘s dann doch eine runde Umklammerung zusätzlich zur eckigen klammer um den Tag zu viel, mal schauen ob ich die irgendwie wegbekomme.

Gast

Beitrag von Gast »

Ob die bibmacros textcite und cite unabhängig sind oder nicht, hängt vom Stil ab; bei alphabetic und numeric bietet es sich eben an.

Ich hatte vergessen, ein \printtext[brackets] zu löschen, nachdem ich die Klammern direkt in das cite-Makro verschoben hatte. Vorher hatte ich alle Aufrufe von cite in \printtext[brackets] einwickeln müssen, es ist aber einfacher, das direkt in cite zu stopfen, das spart etwas an Schreibarbeit.
\documentclass[a4paper,12pt]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[style=alphabetic,firstinits=true,idemtracker=false,backend=bibtex]{biblatex}


\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
   @book{Reif.2017,
      editor={Reif, Konrad},
      title={Grundlagen Fahrzeug- und Motorentechnik},
      publisher={Springer Fachmedien Wiesbaden},
      address={Wiesbaden},
      year={2017},
      series={Bosch Fachinformation Automobil},
      isbn={978-3-658-12635-3}
   }
\end{filecontents*}
\addbibresource{\jobname.bib}

\providebool{bbx:subentry}

% Änderung gegenüber Standard-cite:
% - kein [\mkbibparens] als Wrapper
% - stattdessen manuelle runde Klammern mit Abfrage für pre- und postnote
% - die eckigen Klammern leben jetzt im bibmacro cite
\DeclareCiteCommand{\cite}
  {\ifboolexpr{test {\iffieldundef{prenote}} and test {\iffieldundef{postnote}}}
     {}
     {\bibopenparen}%
   \usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite}}
  {\multicitedelim}
  {\usebibmacro{postnote}%
    \ifboolexpr{test {\iffieldundef{prenote}} and test {\iffieldundef{postnote}}}
     {}
     {\bibcloseparen}}

% das \printtext[brackets] ist neu
\renewbibmacro*{cite}{%
  \printtext[brackets]{%
    \printtext[bibhyperref]{%
      \printfield{labelprefix}%
      \printfield{labelalpha}%
      \printfield{extraalpha}%
      \ifbool{bbx:subentry}
        {\printfield{entrysetcount}}
        {}}}}

% hier nur runde statt eckigen Klammern
% i.e. \bibopenparen statt \bibopenbracket
\makeatletter
\renewbibmacro*{textcite}{%
  \iffieldequals{namehash}{\cbx@lasthash}
    {\setunit{\multicitedelim}}
    {\ifnameundef{labelname}
       {\printfield[citetitle]{labeltitle}}
       {\printnames{labelname}}%
     \setunit{%
       \global\booltrue{cbx:parens}%
       \printdelim{namelabeldelim}\bibopenparen}%<- hier
     \stepcounter{textcitecount}%
     \savefield{namehash}{\cbx@lasthash}}%
  \ifnumequal{\value{citecount}}{1}
    {\usebibmacro{prenote}}
    {}%
  \usebibmacro{cite}%
  \setunit{%
    \ifbool{cbx:parens}
      {\bibcloseparen\global\boolfalse{cbx:parens}}
      {}%
    \textcitedelim}}
\makeatother

\begin{document}

Beispiele der Zitierweise
\\\\
Variante \textbackslash cite ohne pre- \textbackslash postnote:
\\
IST\textbackslash SOLL: \cite{Reif.2017}
\\\\
Variante \textbackslash cite mit pre- \textbackslash postnote:
\\
IST: \cite[vgl.][1]{Reif.2017}
\\
SOLL: (vgl. \cite{Reif.2017}, S.  1)
\\\\
bzw. als Fußnote, IST: \footnote{\cite[vgl.][4]{Reif.2017}}
\\
SOLL Fußnote: \footnote{vgl. [Reif17], S. 4}
\\\\\\

Variante \textbackslash textcite
\\
IST: \textcite[vgl.][2\psq]{Reif.2017} meint, dass...
\\
SOLL: Reif (vgl. \cite{Reif.2017}, S.  2 f.) meint, dass...

\newpage

Variante \textbackslash footcite:
\\
IST: \footcite[vgl.][3]{Reif.2017}
\\
SOLL: \footnote{vgl. [Reif17], S. 3}
   
\end{document}
sollte besser passen.

Es wäre theoretisch sogar möglich in \cite zu erkennen, ob wir in einer Fußnote sind und dort immer die Klammern zu unterdrücken, auch wenn es pre- und postnotes gibt. Das würde ich aber nicht machen, da \footcite hier eh angebrachter ist.

Wenn Du besser verstehen möchtest, was hier passiert, vergleiche die veränderten Makros mit dem Standard in alphabetic.cbx.

Alex84
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Do 17. Aug 2017, 10:13

Beitrag von Alex84 »

Super, vielen Dank. Genauso hab ich‘s mir vorgestellt.
Anonymous hat geschrieben:
Es wäre theoretisch sogar möglich in \cite zu erkennen, ob wir in einer Fußnote sind und dort immer die Klammern zu unterdrücken, auch wenn es pre- und postnotes gibt. Das würde ich aber nicht machen, da \footcite hier eh angebrachter ist.
Möchte ich auch so machen, ich finde es so übersichtlicher und einfacher, als über ein Konstrukt mittels footnote oder ähnlich den cite Befehl in die Fußnote zu setzen.

Anonymous hat geschrieben: Wenn Du besser verstehen möchtest, was hier passiert, vergleiche die veränderten Makros mit dem Standard in alphabetic.cbx.
Danke für den Hinweis, werde ich machen. Ich versuche gerade derartige Anpassungen von Befehlen möglichst gut zu verstehen und zu dokumentieren, um ggf. selbst schnell Änderungen vornehmen zu können, sollten kurzfristig Änderungen her.

Antworten