Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

biblatex - Zitierbefehl textcite anpassen

224 views
Skip to first unread message

Ray Weg

unread,
Nov 26, 2016, 12:52:58 PM11/26/16
to
Hallo in die Runde,

ich benutze BibLaTeX mit der aktuellen MiKTeX-Version 2.9 unter Win7
64x. Ich habe bereits meine Bibliographie nach meinen Wünschen angepaßt
und mir deshalb mit viel Mühe und Internetwissen eigene bbx- und
cbx-Dateien erstellt, die auch funktionieren.

Leider scheitere ich daran, den Zitierbefehl "textcite" nach meinen
Wünschen anzupassen. Momentan wird bei Aufruf der Autor in Normalschrift
und danach in runden Klammern das shorthand-Kürzel in Kapitälchen
ausgegeben.
Bsp.: "\textcite{mueller.2000}" ergibt im Text "Müller (MÜLLER 2000)".

Ich bräuchte jedoch im Text "MÜLLER (2000)", also nur 1x den Autor und
nur das Jahr in Klammern.

Ich weiß, daß dies wahrscheinlich über die Anpassung der cbx-Datei gehen
müßte und ich wohl die Abschnitte "\newbibmacro*{textcite}" und/oder
"\DeclareCiteCommand{\textcite}" verändern müßte. Allerdings kenne ich
mich mit BibLaTeX und auch der LaTeX-Programmierung nicht genügend aus
und die Dokumentation verstehe ich nicht so recht.

Vielleicht kann mir jemand weiterhelfen?
Gruß,
Raymond

+++
Hier meine bisherige cbx-Datei:
+++

\ProvidesFile{authoryear-rw.cbx}%[2011/01/10 v1 biblatex citation style]
[\abx@cbxid $Id: authoryear-rw.cbx,v 1.0 2010/11/19 16:16:35 lehman
stable $]

\ExecuteBibliographyOptions{labelyear,uniquename,uniquelist,autocite=inline}
\newbool{cbx:parens}

\newbibmacro*{cite}{%
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}}
{\usebibmacro{cite:shorthand}}}

\newbibmacro*{citeyear}{%
\iffieldundef{shorthand}
{\iffieldundef{labelyear}
{\usebibmacro{cite:label}}
{\usebibmacro{cite:labelyear+extrayear}}}
{\usebibmacro{cite:shorthand}}}

\newbibmacro*{textcite}{%
\ifnameundef{labelname}
{\iffieldundef{shorthand}
{\usebibmacro{cite:label}%
\setunit{%
\global\booltrue{cbx:parens}%
\addspace\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
\usebibmacro{cite:labelyear+extrayear}}
{\usebibmacro{cite:shorthand}}}
{\printnames{labelname}%
\setunit{%
\global\booltrue{cbx:parens}%
\addspace\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
\usebibmacro{citeyear}}}

\newbibmacro*{cite:shorthand}{%
\printtext[bibhyperref]{\printfield{shorthand}}}

\newbibmacro*{cite:label}{%
\iffieldundef{label}
{\printtext[bibhyperref]{\printfield[citetitle]{labeltitle}}}
{\printtext[bibhyperref]{\printfield{label}}}}

\newbibmacro*{cite:labelyear+extrayear}{%
\iffieldundef{labelyear}
{}
{\printtext[bibhyperref]{%
\printfield{labelyear}%
\printfield{extrayear}}}}

\newbibmacro*{textcite:postnote}{%
\iffieldundef{postnote}
{\ifbool{cbx:parens}
{\bibcloseparen}
{}}
{\ifbool{cbx:parens}
{\setunit{\postnotedelim}}
{\setunit{\addspace\bibopenparen}}%
\printfield{postnote}\bibcloseparen}}

\DeclareCiteCommand{\cite}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{postnote}}

\DeclareCiteCommand*{\cite}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{citeyear}}
{\multicitedelim}
{\usebibmacro{postnote}}

\DeclareCiteCommand{\parencite}[\mkbibparens]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{postnote}}

\DeclareCiteCommand*{\parencite}[\mkbibparens]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{citeyear}}
{\multicitedelim}
{\usebibmacro{postnote}}

\DeclareCiteCommand{\footcite}[\mkbibfootnote]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{postnote}}

\DeclareCiteCommand{\footcitetext}[\mkbibfootnotetext]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{postnote}}

\DeclareCiteCommand{\smartcite}[\iffootnote\mkbibparens\mkbibfootnote]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{postnote}}

\DeclareCiteCommand{\textcite}
{\boolfalse{cbx:parens}}
{\usebibmacro{citeindex}%
\usebibmacro{textcite}}
{\ifbool{cbx:parens}
{\bibcloseparen\global\boolfalse{cbx:parens}}
{}%
\multicitedelim}
{\usebibmacro{textcite:postnote}}

\endinput

Herbert Voss

unread,
Nov 27, 2016, 4:14:58 AM11/27/16
to
Am 26.11.2016 um 18:52 schrieb Ray Weg:

> Leider scheitere ich daran, den Zitierbefehl "textcite" nach meinen
> Wünschen anzupassen. Momentan wird bei Aufruf der Autor in Normalschrift
> und danach in runden Klammern das shorthand-Kürzel in Kapitälchen
> ausgegeben.
> Bsp.: "\textcite{mueller.2000}" ergibt im Text "Müller (MÜLLER 2000)".
>
> Ich bräuchte jedoch im Text "MÜLLER (2000)", also nur 1x den Autor und
> nur das Jahr in Klammern.

Das ist doch die Standardausgabe für Autor-Jahr:

\documentclass[paper=16.5cm:24cm,headinclude]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[style=authoryear]{biblatex}
\addbibresource{biblatex-examples.bib}

\begin{document}
\textcite{angenendt}
\printbibliography

\end{document}

Selbst mit deinen Anpassungen ändert sich daran nichts.

Herbert

Ray Weg

unread,
Nov 27, 2016, 9:45:44 AM11/27/16
to
Hallo Herbert,

erst einmal vielen Dank für Deine Antwort.

>> Leider scheitere ich daran, den Zitierbefehl "textcite" nach meinen
>> Wünschen anzupassen. Momentan wird bei Aufruf der Autor in Normalschrift
>> und danach in runden Klammern das shorthand-Kürzel in Kapitälchen
>> ausgegeben.
>> Bsp.: "\textcite{mueller.2000}" ergibt im Text "Müller (MÜLLER 2000)".
>> Ich bräuchte jedoch im Text "MÜLLER (2000)", also nur 1x den Autor und
>> nur das Jahr in Klammern.
>
> Das ist doch die Standardausgabe für Autor-Jahr:
> Selbst mit deinen Anpassungen ändert sich daran nichts.

Hier liegt wohl ein Mißverständnis vor. Ich habe meine cbx-Datei bisher
nicht für eine andere textcite-Ausgabe angepaßt, weil ich nicht weiß
wie. Bisher habe ich nur eine angepaßte bbx-Datei gebraucht, um mein
Literaturverzeichnis an meine Wünsche anzupassen. Da ich dachte, es
braucht für einen eigenen bib-Stil auch eine cbx- und lbx-Datei, habe
ich diese großteils mit den Normaleinstellungen übernommen.

Die Anpassungen in der bbx-Datei waren einfacher zu verstehen, bei der
cbx-Datei verstehe ich aber nur Bahnhof... Deshalb meine Frage an die
Newsgroup, ob mir jemand bei der Erstellung der entsprechenden Passagen
helfen kann.

Ich möchte am Ende folgendes Ergebnis beim Befehl \textcite im Fließtext
stehen haben:
"AUTOR (JAHR)"
d.h. nur 1x (nicht 2x) Ausgabe des Autorennamens, das Jahr getrennt
davon in runden Klammern dahinter

Die textcite-Ausgabe sollte in Kapitälchen sein. Momentan habe ich meine
bbx-Datei dahingehend angepaßt, daß bei allen Zitierbefehlen als Kürzel
mein shorthand (="AUTOR JAHR") ausgegeben wird. Damit das shorthand in
Kapitälchen ausgegeben wird, habe ich die bbx-Datei wie folgt angepaßt:
"\DeclareFieldFormat{shorthand}{\textsc{#1}}"

Ich hoffe, mein Problem ist nun ein wenig klarer geworden? Für jede
Hilfe wäre ich sehr dankbar!

Gruß,
Raymond

Ekkart Kleinod

unread,
Dec 5, 2016, 9:49:11 AM12/5/16
to
On 27.11.2016 15:45, Ray Weg wrote:

>>> Bsp.: "\textcite{mueller.2000}" ergibt im Text "Müller (MÜLLER 2000)".
>>> Ich bräuchte jedoch im Text "MÜLLER (2000)", also nur 1x den Autor und
>>> nur das Jahr in Klammern.
>>
>> Das ist doch die Standardausgabe für Autor-Jahr:
>> Selbst mit deinen Anpassungen ändert sich daran nichts.
>
> Hier liegt wohl ein Mißverständnis vor. Ich habe meine cbx-Datei bisher
> nicht für eine andere textcite-Ausgabe angepaßt, weil ich nicht weiß
> wie.

Hast Du denn das Beispiel von Herbert mal übersetzt?

Wenn Du mehr Hilfe brauchst, mach aufbauend auf Herberts Beispiel ein
Minimalbeispiel mit Deinem Problem, dann kommt die Hilfe schneller.

Gruß, Ekkart.

Ray Weg

unread,
Dec 7, 2016, 11:41:53 AM12/7/16
to
Hallo Ekkart,

leider hat es mit meiner Antwort ein wenig gedauert, weil mir einige
Termine dazwischenkamen. Inzwischen habe ich nochmals mehrere Tests
durchlaufen lassen. Dabei stellte sich leider heraus, daß mein BibLaTeX
anscheinend nicht sauber installiert war. Das habe ich erst einmal
behoben und alles läuft jetzt gut. Auch das Beispiel von Herbert gibt
nun mit dem textcite-Befehl genau das aus, was es soll, nämlich:
"Angenendt (2002)"

Mit meinem angepaßten Bib-Style "authoryear-rw" klappte es dagegen
nicht. Erst dachte ich, die Dateien sind fehlerhaft, da mir nun ein
Fehler betreffend keyval und meinen lbx-File ausgegeben wurde. Diesen
konnte ich vorerst beheben, indem ich folgenden Passus im bbx-File
herausgenommen habe:
"\DeclareLanguageMapping{german}{german-rw}"
Leider wird zwar nun die Standard-lbx-Datei verwendet, aber um das
Problem kümmere ich mich später.

Nachdem ich dann nochmals den Standard authoryear-Stil und auch meinen
Stil habe durchlaufen lassen, gab mein Stil immer noch nicht die
korrekte Ausgabe aus.
Inzwischen weiß ich auch, woran es liegt: Sobald in den
Literatureinträgen der bib-Datei shorthand-Einträge dabei sind, gibt der
textcite-Befehl einen anderen Text aus. Als Beispiel habe ich bereits
verwendeten Eintrag "angenendt" um den shorthand-Eintrag "Angenendt
2002" ergänzt. Mit textcite kommt daraufhin folgende Ausgabe:
"Angenendt (Angenendt 2002)"

Das shorthand-Feld scheint auch den normalen authortitle-Stil
auszuhebeln, so daß sich die Ausgabe nicht ändert, das shorttitle-Feld
also nicht benutzt wird.Hier ein Minimalbeispiel auf Basis von Herbert
Beispiel:

--->

\begin{filecontents*}{examples.bib}
@Article{angenendt,
hyphenation = {german},
author = {Angenendt, Arnold},
indextitle = {In Honore Salvatoris},
title = {In Honore Salvatoris~-- Vom Sinn und Unsinn der
Patrozinienkunde},
shorttitle = {In Honore Salvatoris},
journaltitle = {Revue d'Histoire Eccl{\'e}siastique},
volume = {97},
date = {2002},
pages = {431--456, 791--823},
annotation = {A German article in a French journal. Apart from that, a
typical \texttt{article} entry. Note the \texttt{indextitle} field},
shorthand = {Angenendt~2002}
}
\end{filecontents*}

\documentclass[paper=16.5cm:24cm,headinclude]{scrbook}
\usepackage[german]{babel}
\usepackage[backend=bibtex,style=authoryear]{biblatex}
\bibliography{examples}

\begin{document}
\textcite{angenendt}
\printbibliography
\end{document}

<---

Das Problem ist, ich kann aus meiner bib-Datei nicht alle
shorthand-Einträge herausnehmen. Ich habe jedem bib-Eintrag einen
solchen zugeteilt, damit ich in Text Kürzel habe, die im
Literaturverzeichnis den einzelnen Bibliographie-Daten vorangestellt
sind. Also quasi eine Art Kurztitel für jede Publikation, die eindeutig
nachschlagbar ist ohne separates Sigel-Verzeichnis.

Was mache ich nun? Ich könnte auch einfach im Fließtext statt textcite
eine Kombination aus citeauthor und citeyear verwenden, nur dann erfolgt
keine Referenzierung mit dem Literaturverzeichnis.

Gruß,
Raymond

Ray Weg

unread,
Dec 10, 2016, 9:24:38 AM12/10/16
to
Weiß keiner einen Rat? Ich vermute, es hat mit dem textcite-Makro in der
cbx-Datei zu tun. Leider werde ich aus der biblatex-Dokumentation nicht
schlau, weil ich von derlei Programmierung nicht die leiseste Ahnung habe...

Hier die momentane Definition von textcite:

---
\newbibmacro*{textcite}{%
\ifnameundef{labelname}
{\iffieldundef{shorthand}
{\usebibmacro{cite:label}%
\setunit{%
\global\booltrue{cbx:parens}%
\addspace\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
\usebibmacro{cite:labelyear+extrayear}}
{\usebibmacro{cite:shorthand}}}
{\printnames{labelname}%
\setunit{%
\global\booltrue{cbx:parens}%
\addspace\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
\usebibmacro{citeyear}}}

---

Ich habe schon selbst herumprobiert und versucht, die entsprechenden
Angaben, bei denen "shorthand" vorkommt, herauszunehmen, um vielleicht
mit der Try-and-Error-Methode auf die richtige Lösung zu kommen. Es hat
allerdings bisher nicht geklappt...

Ich wäre für jegliche Hilfe sehr dankbar!
Raymond

Ray Weg

unread,
Dec 11, 2016, 1:57:04 PM12/11/16
to
Hallo in die Runde,

nachdem leider niemand hier eine Lösung für mein Problem wußte, habe ich
nochmals lange im Internet in Newsgroups gesucht. Tatsächlich habe ich
doch noch Glück gehabt und einen Beitrag gefunden, der mein Problem in
leicht abgewandelter Form beschreibt. Für alle, die sich ebenfalls dafür
interessieren, hier der Auszug aus meiner cbx-Datei, in der ich den
textcite-Befehl so umdefiniert habe, daß bei vorhandenem shorthand-Feld
dennoch nur der Nachname und das Jahr ausgegeben wird:

---

\DeclareCiteCommand{\textcite}
{\boolfalse{cbx:parens}}
{\clearfield{shorthand}%
\usebibmacro{citeindex}%
\usebibmacro{textcite}}
{\ifbool{cbx:parens}
{\bibcloseparen\global\boolfalse{cbx:parens}}
{}%
\multicitedelim}
{\usebibmacro{textcite:postnote}}

---

Dennoch vielen herzlichen Dank an Herbert und Ekkart!

Gruß,
Raymond

Ekkart Kleinod

unread,
Dec 19, 2016, 10:01:26 AM12/19/16
to
Danke für die Lösung, war leider 2 Wochen krank und konnte nicht gucken.

Gruß, Ekkart.

0 new messages