
¿Hay alguna forma de redefinir una variante de biblatex \citeauthor[xx]{author}
para que la nota posterior use ", p./pp." en lugar de dos puntos? "En Autor (p. xx)..." (De esa manera no tenemos que repetir el año varias veces cuando se entiende por sí mismo.)
Lo intenté con \DeclareDelimFormat
y \DeclareFieldFormat
dentro de \DeclareCiteCommand{\citeauthorpage}
, pero no tengo idea de lo que estoy haciendo.
Creo que la mejor manera sería definir otra macro de nota posterior:
\newbibmacro{\authorpostnote}{...}
También probé esto pero no funciona en absoluto:
\DeclareDelimFormat[citeauthor]{postnotedelim}
{\mkpageprefix[pagination]{#1}}
MWE
\documentclass{article}
\usepackage[english]{babel}
\usepackage{xspace}
\usepackage[backend=biber,natbib=true,citestyle=ext-authoryear-comp,bibstyle=ext-authoryear,articlein=false,innamebeforetitle=true,dashed=false,useprefix=true,sortcites=false]{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareFieldFormat{postnote}{\mknormrange{#1}} %remove p. in ref
\DeclareFieldFormat{multipostnote}{\mknormrange{#1}} %remove pp. in ref
\DeclareDelimFormat{postnotedelim}{\addcolon\@\xspace\nobreak} %colon after year in ref
\begin{document}
Lorem \textcite[380]{sigfridsson}
ipsum \citeauthor[380]{sigfridsson}
\printbibliography
\end{document}
Respuesta1
Sería fácilmente posible cambiar los delimitadores solo para citeauthor
(para eso está la interfaz de delimitador sensible al contexto), pero como también es necesario cambiar los formatos de campo (que no son naturalmente sensibles al contexto), terminamos redefiniendo \citeauthor
de todos modos y usamos un método menos sofisticado.
\documentclass{article}
\usepackage[english]{babel}
\usepackage[
backend=biber,
natbib=true,
style=ext-authoryear-comp,
articlein=false,
innamebeforetitle=true,
dashed=false,
useprefix=true,
sortcites=false,
]{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareFieldFormat{postnote}{\mknormrange{#1}}
\DeclareFieldFormat{multipostnote}{\mknormrange{#1}}
\DeclareDelimFormat{postnotedelim}{\addcolon\@\space\nobreak}
\DeclareFieldFormat{postnote:citeauthor}{%
\mkbibparens{%
\mkpageprefix[pagination][\mknormrange]{#1}}}
\newbibmacro*{postnote:citeauthor}{%
\iffieldundef{postnote}
{}
{\setunit{\addspace}%
\printfield[postnote:citeauthor]{postnote}}}
\DeclareCiteCommand{\citeauthor}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{prenote}}
{\ifciteindex
{\indexnames{labelname}}
{}%
\printnames{labelname}}
{\multicitedelim}
{\usebibmacro{postnote:citeauthor}}
\begin{document}
Lorem \textcite[380]{sigfridsson}
ipsum \citeauthor[380]{sigfridsson}
\printbibliography
\end{document}
Puede encontrar las definiciones originales de las macros involucradas enbiblatex.def
.\citeauthor
se define entodos. 2172-2181. postnote:citeauthor
está modelado despuéspostnote
(todos. 2379-2383).
Respuesta2
Pregunta resuelta
- I. Programación de una Postnota dedicada a
\citeauthor
\newbibmacro{authorpostnote}{\addcomma\space\nobreak\mkpageprefix[pagination][\mknormrange]
\DeclareCiteCommand{\citeauthorpage}[\mkbibparens] % Parencite with just author name!
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{prenote}}
{\ifciteindex
{\indexnames{labelname}}
{}%
\printnames{labelname}}
{\multicitedelim}
{\usebibmacro{authorpostnote}}
- II. Variante posesiva
Como complemento, puedo llamar la atención sobre un maravilloso código que convierte cualquier comando de cita en un posesivo y que también funciona perfectamente en este caso.
Los créditos son para @Psychonaut y @Audrey, consulte esta página:
https://tex.stackexchange.com/a/307461/262813.
\documentclass{article}
\usepackage[english]{babel}
\usepackage[
backend=biber,
natbib=true,
style=ext-authoryear-comp,
articlein=false,
innamebeforetitle=true,
dashed=false,
useprefix=true,
sortcites=false,
]{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareFieldFormat{postnote}{\mknormrange{#1}}
\DeclareFieldFormat{multipostnote}{\mknormrange{#1}}
\DeclareDelimFormat{postnotedelim}{\addcolon\@\space\nobreak}
\DeclareNameWrapperFormat{labelname:poss}{#1's}
\DeclareFieldFormat{shorthand:poss}{%
\ifnameundef{labelname}{#1's}{#1}}
\DeclareFieldFormat{citetitle:poss}{\mkbibemph{#1}'s}
\DeclareFieldFormat{label:poss}{#1's}
\newrobustcmd*{\posscitealias}{%
\AtNextCite{%
\DeclareNameWrapperAlias{labelname}{labelname:poss}%
\DeclareFieldAlias{shorthand}{shorthand:poss}%
\DeclareFieldAlias{citetitle}{citetitle:poss}%
\DeclareFieldAlias{label}{label:poss}}}
\DeclareFieldFormat{postnote:citeauthor}{%
\mkbibparens{%
\mkpageprefix[pagination][\mknormrange]{#1}}}
\newbibmacro*{postnote:citeauthor}{%
\iffieldundef{postnote}
{}
{\setunit{\addspace}%
\printfield[postnote:citeauthor]{postnote}}}
\DeclareCiteCommand{\citeauthorpage}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{prenote}}
{\ifciteindex
{\indexnames{labelname}}
{}%
\printnames{labelname}}
{\multicitedelim}
{\usebibmacro{postnote:citeauthor}}
\newrobustcmd*{\citeauthorpagepos}{%
\posscitealias%
\citeauthorpage}
\begin{document}
Lorem \citeauthorpage[380]{sigfridsson}
ipsum \citeauthorpagepos[380]{sigfridsson}
\printbibliography
\end{document}