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 \textcite
Befehl 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 \mkbibnamefamily
statt\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 \mkbibnamelast
wird die Änderung auf den Umschalter parametrisiert. Diese Lösung verwendet das xpatch
Paket, um das textcite
Bibmacro zu ändern, um den Umschalter unmittelbar vor der Ausführung des textcite
Makros auf „true“ und unmittelbar nach der textcite
Ausfü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}}{}{}
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}
Antwort3
Mit neueren Versionen von biblatex
kö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}