Biblatex: modificar textcite para autocite = footnote
Aug 20 2020
¿Es posible redefinir \textcite
cuando se usa autocite=footnote
para que coloque los nombres de los autores en el texto pero coloque el resto de la cita en una nota al pie? Tal como está ahora, \textcite
imprime los nombres de los autores junto con el año en el texto. Para mí, el estilo que sugiero parece más consistente.
Para obtener crédito adicional, ¿sería posible omitir los nombres de los autores de las notas al pie generadas por esta nueva versión de \textcite
?
Aquí hay un ejemplo mínimo:
\documentclass{article}
\usepackage[style=authoryear, autocite=footnote]{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
A citation\autocite{knuth:ct:a} in a sentence.
Important works are those by \textcites{bertram}{markey}.
Another important work is by \textcite{knuth:ct:b}.
\textbf{Instead, I would like the output to be:}
A citation\autocite{knuth:ct:a} in a sentence.
Important works are those by \citeauthor{bertram} and \citeauthor{markey}\autocites{bertram}{markey}.
Another important work is by \citeauthor{knuth:ct:b}\autocite{knuth:ct:b}.
\end{document}
Respuestas
2 moewe Aug 20 2020 at 12:59
La \textcite
implementación de los verbose
estilos hace algo así, por lo que podemos copiar el \textcite
código relacionado de verbose.cbx
.
\documentclass{article}
\usepackage[style=authoryear, autocite=footnote]{biblatex}
\makeatletter
\renewbibmacro*{textcite}{%
\ifnameundef{labelname}
{\printfield[citetitle]{labeltitle}}
{\printnames{labelname}}}
\newbibmacro*{textcite:init}{%
\citetrackerfalse%
\pagetrackerfalse%
\iffirstcitekey
{\global\undef\cbx@lasthash}
{}}
\newbibmacro*{textcite:count}{%
\stepcounter{textcitetotal}%
\ifnumgreater{\value{uniquelist}}{\value{maxnames}}
{\ifnumgreater{\value{uniquelist}}{\value{textcitemaxnames}}
{\setcounter{textcitemaxnames}{\value{uniquelist}}}
{}}
{\ifnumless{\value{labelname}}{\value{maxnames}}
{\ifnumgreater{\value{labelname}}{\value{textcitemaxnames}}
{\setcounter{textcitemaxnames}{\value{labelname}}}
{}}
{\ifnumgreater{\value{maxnames}}{\value{textcitemaxnames}}
{\setcounter{textcitemaxnames}{\value{maxnames}}}
{}}}}
\DeclareCiteCommand{\cbx@textcite}
{\usebibmacro{textcite:init}}
{\iffieldequals{namehash}{\cbx@lasthash}
{}
{\iffirstcitekey
{}
{\textcitedelim}%
\stepcounter{textcitecount}%
\usebibmacro{textcite}%
\savefield{namehash}{\cbx@lasthash}}}
{}
{}
\DeclareCiteCommand{\textcite}[\cbx@textcite@init\cbx@textcite\footcite]
{\usebibmacro{textcite:init}%
\gdef\cbx@savedkeys{}%
\DeferNextCitekeyHook}
{\ifthenelse{\iffirstcitekey\AND\value{multicitetotal}>0}
{\protected@xappto\cbx@footcite@args{%
(\thefield{multiprenote})(\thefield{multipostnote})}}
{}%
\xappto\cbx@savedkeys{\thefield{entrykey},}%
\iffieldequals{namehash}{\cbx@lasthash}
{}
{\usebibmacro{textcite:count}%
\savefield{namehash}{\cbx@lasthash}}%
\ifnumequal{\value{citecount}}{\value{citetotal}}
{\protected@xappto\cbx@textcite@args{{\cbx@savedkeys}}%
\protected@xappto\cbx@footcite@args{%
[\thefield{prenote}][\thefield{postnote}]{\cbx@savedkeys}}%
\iflastcitekey
{\protected@xappto\cbx@textcite@args{\thefield{postpunct}}%
\protected@xappto\cbx@footcite@args{\nopunct}}
{}}
{}}
{}
{}
% textcite has nested \DeclareCiteCommand definitions for textcite and we want to use
% the normal textcite context
\DeclareDelimcontextAlias{cbx@textcite}{textcite}
\newrobustcmd{\cbx@textcite@init}[3]{%
\setcounter{textcitetotal}{0}%
\setcounter{textcitecount}{0}%
\setcounter{textcitemaxnames}{0}%
\def\cbx@textcite@args{#1}\def\cbx@footcite@args{#2}#3%
\cbx@textcite@args\empty\cbx@footcite@args\empty}
\DeclareMultiCiteCommand{\cbx@textcites}{\cbx@textcite}{}
\DeclareMultiCiteCommand{\textcites}
[\cbx@textcites@init\cbx@textcites\footcites]{\textcite}{}
\let\cbx@textcites@init\cbx@textcite@init
\pretocmd{\cbx@textcites@init}{%
\UseNextMultiCiteHook%
\AtNextMultiCite{%
\renewbibmacro{multiprenote}{}%
\renewbibmacro{multipostnote}{}}}{}{}
\makeatother
\addbibresource{biblatex-examples.bib}
\begin{document}
\null\vfill % only for this example!
A citation\autocite{knuth:ct:a} in a sentence.
Important works are those by \textcites{bertram}{markey}.
Another important work is by \textcite{knuth:ct:b}.
\textbf{Instead, I would like the output to be:}
A citation\autocite{knuth:ct:a} in a sentence.
Important works are those by \citeauthor{bertram} and \citeauthor{markey}\autocites{bertram}{markey}.
Another important work is by \citeauthor{knuth:ct:b}\autocite{knuth:ct:b}.
\end{document}
