Considere el siguiente 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}
Esto imprimirá los apellidos de los autores en versales para todos los comandos de cita tanto en el documento como en la bibliografía. Sólo para el \textcite
comando quiero que el apellido (es decir, Knuth en el ejemplo) se imprima en el texto en fuente normal en lugar de versalitas.
EDITAR: A partir de marzo de 2016 (biblatex 3.3), debe cambiar \mkbibnamefamily
en lugar de\mkbibnamelast
Respuesta1
Una posible solución es introducir un interruptor para determinar si estamos en una cita de texto o no. Luego la modificación de \mkbibnamelast
se parametriza en la palanca. Esta solución utiliza el xpatch
paquete para modificar textcite
bibmacro, para configurar el interruptor en verdadero justo antes de ejecutar la textcite
macro y en falso justo después de que textcite
se haya ejecutado la macro.
\newtoggle{textcite}
\AtBeginDocument{
\renewcommand*{\mkbibnamelast}[1]{%
\iftoggle{textcite}{#1}{\textsc{#1}}}
}
\xpretobibmacro{textcite}{\toggletrue{textcite}}{}{}
\xapptobibmacro{textcite}{\togglefalse{textcite}}{}{}
Respuesta2
\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}
Respuesta3
Con versiones más recientes de biblatex
podemos utilizar un enfoque similar aguido'srespuesta, pero en lugar de parchear los comandos de citas para establecer una bandera, probamos el contexto delimitador.
\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}