Ich habe folgendes Problem: Ich brauche eine Art sehr einfaches „Doppelzitatsystem“. Für normale Literatur verwende ich den Autor-Jahr-Stil in Biblatex ohne Probleme. Ich habe folgende kleine Änderungen vorgenommen:
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
\renewcommand{\postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{#1}
Das Problem ist nun, dass ich alte Bücher (Frühe Neuzeit) anders zitieren möchte (nicht als Autor-Jahr), etwa so:
Shortauthor, *shorttitle*, p. 124
Ich denke, eine Lösung besteht darin, einen eigenen Cite-Befehl zu schreiben, etwa so, was gut zu funktionieren scheint:
\DeclareBibliographyDriver{myshort}{%
\usebibmacro{begentry}%
\ifboolexpr{ test{\ifnameundef{shortauthor}}
or test {\iffieldundef{shorttitle}}}
{\usedriver{}{\thefield{entrytype}}}
{\printnames{shortauthor}%
\setunit{\addcomma\space}%
\printfield{shorttitle}\isdot}%
\usebibmacro{finentry}%
}
\DeclareCiteCommand{\mycite}[\mkbibfootnote]
{\usebibmacro{prenote}}
{\usedriver{}{myshort}}
{\multicitedelim}
{\usebibmacro{postnote}}
ABER(und das ist meine eigentliche Frage): Gibt es eine Möglichkeit,:
- Kapitälchen des Autors deaktivieren?
- den Titel in Schreibschrift setzen?
- das „p.“ für Seiten zurückbekommen?
Das heißt, eine Möglichkeit, die allgemeinen Optionen, die ich mit den Erneuerungsbefehlen usw. festgelegt habe, für diesen konkreten Befehl irgendwie zu deaktivieren.
Antwort1
Ein nützlicher Trick für Situationen wie diese besteht darin, einen Schalter zu erstellen, der aktiviert wird, wenn Sie den Befehl eingeben, und deaktiviert wird, wenn Sie den Befehl verlassen:
\newtoggle{mycite}
\renewcommand*{\mkbibnamelast}[1]{\iftoggle{mycite}{#1}{\textsc{#1}}}
\renewcommand{\postnotedelim}{\iftoggle{mycite}{\addcomma\addspace}{\addcolon\space}}
\DeclareFieldFormat{postnote}{#1}
und dann, wenn Sie Ihren neuen Cite-Befehl definieren:
\DeclareCiteCommand{\mycite}[\mkbibfootnote]
{\toggletrue{mycite}\usebibmacro{prenote}}
{\usebibmacro{mycite}}
{\multicitedelim}
{\usebibmacro{postnote}\togglefalse{mycite}}
Übrigens können Sie nicht \usedriver{}{\thefield{entrytype}
innerhalb der Definition von verwenden \DeclareBibliographyDriver
: Es würde in eine Endlosschleife geraten und TeX würde einen Fehler melden. Was Sie tun können, ist, ein neues Bib-Makro zu definieren. Verwenden Sie beispielsweise Ihre Definition als Ausgangspunkt (und passen Sie sie an, um den (Kurz-)Titel kursiv zu setzen):
\newbibmacro{mycite}{
\ifboolexpr
{test {\ifnameundef{shortauthor}} or
test {\iffieldundef{shorttitle}}}
{\usedriver{}{\thefield{entrytype}}}
{\printnames{shortauthor}%
\setunit{\addcomma\space}%
\mkbibemph{\printfield{shorttitle}}}
}