Biblatex: Modifier textcite pour autocite = note de bas de page
Aug 20 2020
Est-il possible de redéfinir \textcite
lors de l'utilisation de autocite=footnote
sorte qu'il place les noms des auteurs dans le texte mais place le reste de la citation dans une note de bas de page? Dans l'état actuel des choses, \textcite
imprime les noms des auteurs avec l'année dans le texte. Pour moi, le style que je suggère semble être plus cohérent.
Pour plus de crédit, serait-il possible d'omettre les noms des auteurs des notes de bas de page générées par cette nouvelle version de \textcite
?
Voici un exemple minimal:
\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}
Réponses
2 moewe Aug 20 2020 at 12:59
L' \textcite
implémentation des verbose
styles fait quelque chose comme ça, donc nous pouvons simplement copier le \textcite
code associé à partir 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}
