Autorenschriftart für bestimmten Zitierbefehl ändern

Autorenschriftart für bestimmten Zitierbefehl ändern

Betrachten Sie die folgenden MWE

\documentclass{article}
\usepackage[style=authoryear-comp,backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\AtBeginDocument{%
  \renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
}

\begin{document}
\textcite{knuth:ct:e}\\
\fullcite{salam}\\
Footcite\footfullcite{baez/article}
\printbibliography
\end{document}

Dadurch werden die Nachnamen der Autoren bei allen Zitierbefehlen sowohl im Dokument als auch in der Bibliographie in Kapitälchen gedruckt. Nur bei diesem \textciteBefehl möchte ich, dass der Nachname (also Knuth im Beispiel) im Text in normaler Schrift und nicht in Kapitälchen gedruckt wird.

EDIT: Ab März 2016 (biblatex 3.3) müssen Sie ändern \mkbibnamefamilystatt\mkbibnamelast

Antwort1

Eine mögliche Lösung besteht darin, einen Umschalter einzuführen, um zu bestimmen, ob wir uns in einem Textzitat befinden oder nicht. Dann \mkbibnamelastwird die Änderung auf den Umschalter parametrisiert. Diese Lösung verwendet das xpatchPaket, um das textciteBibmacro zu ändern, um den Umschalter unmittelbar vor der Ausführung des textciteMakros auf „true“ und unmittelbar nach der textciteAusführung des Makros auf „false“ zu setzen.

\newtoggle{textcite}

\AtBeginDocument{
  \renewcommand*{\mkbibnamelast}[1]{%
    \iftoggle{textcite}{#1}{\textsc{#1}}}
}

\xpretobibmacro{textcite}{\toggletrue{textcite}}{}{}
\xapptobibmacro{textcite}{\togglefalse{textcite}}{}{}

Bildbeschreibung hier eingeben

Antwort2

\documentclass{article}
\usepackage[style=authoryear-comp,backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\AtBeginDocument{%
  \renewcommand*\mkbibnamelast[1]{\textsc{#1}}}
\let\TC\textcite
\renewcommand\textcite[1]{{\def\mkbibnamelast##1{##1}\TC{#1}}}% hold it local
%% If you need the optional argument of \textcite then we have to modify
%% the macro    

\begin{document}
\textcite{knuth:ct:e}\\
\fullcite{salam}\\
Footcite\footfullcite{baez/article}
\printbibliography
\end{document}

Bildbeschreibung hier eingeben

Antwort3

Mit neueren Versionen von biblatexkönnen wir einen Ansatz verwenden, der dem von ähneltGuido'SAntwort, aber anstatt Zitierungsbefehle zu patchen, um ein Flag zu setzen, testen wir den Trennzeichenkontext.

\documentclass{article}
\usepackage[style=authoryear-comp,backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}

\makeatletter
\renewcommand*{\mkbibnamefamily}{%
  \ifcsundef{mkbibnamefamily@\blx@delimcontext}
    {\textsc}
    {\csuse{mkbibnamefamily@\blx@delimcontext}}}

\newcommand*{\mkbibnamefamily@textcite}[1]{#1}
\makeatother


\begin{document}
\textcite{knuth:ct:e}

\fullcite{salam}

Footcite\footfullcite{sigfridsson}

\printbibliography
\end{document}

„Knuth (1986)“ keine Kapitälchen//„Abdus Salam (1968).“ „Salam“ in Kapitälchen

verwandte Informationen