Cambiar la fuente del autor para un comando de cita específico

Cambiar la fuente del autor para un comando de cita específico

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 \textcitecomando 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 \mkbibnamefamilyen 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 \mkbibnamelastse parametriza en la palanca. Esta solución utiliza el xpatchpaquete para modificar textcitebibmacro, para configurar el interruptor en verdadero justo antes de ejecutar la textcitemacro y en falso justo después de que textcitese haya ejecutado la macro.

\newtoggle{textcite}

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

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

ingrese la descripción de la imagen aquí

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}

ingrese la descripción de la imagen aquí

Respuesta3

Con versiones más recientes de biblatexpodemos 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}

"Knuth (1986)" sin versalitas//"Abdus Salam (1968)". "Salam" en versalitas

información relacionada