
Me gustaría
- mi estilo de cita es una nota al pie
Author (Year)
- para que todo
Author (Year)
sea un hipervínculo a la bibliografía - para que las citas repetidas sean
Ibid
Hasta ahora casi puedo hacerlo todo.
El siguiente código se compila para proporcionar el hipervínculo correcto y el ibidem correcto, pero la cita es Author Year
(sin paréntesis). Si cambio cada uno autocite
, footcite
obtengo el hipervínculo correcto y la cita correcta, pero el ibídem incorrecto: Author (ibid.)
.
Si hago la primera autocite
a footcite
, yoobtener el resultado deseado...peroeso significa que tengo que realizar un seguimiento de autocite
y footcite
, lo que anula el propósito del ibídem automático.
\documentclass{article}
\usepackage{varioref}
\usepackage{hyperref}
\usepackage{cleveref}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber,style=authoryear-ibid,ibidtracker=constrict, autocite=footnote]{biblatex}
\DeclareFieldFormat{citehyperref}{%
\DeclareFieldAlias{bibhyperref}{noformat}% Avoid nested links
\bibhyperref{#1}}
\DeclareFieldFormat{textcitehyperref}{%
\DeclareFieldAlias{bibhyperref}{noformat}% Avoid nested links
\bibhyperref{%
#1%
\ifbool{cbx:parens}
{\bibcloseparen\global\boolfalse{cbx:parens}}
{}}}
\savebibmacro{cite}
\savebibmacro{textcite}
\renewbibmacro*{cite}{%
\printtext[citehyperref]{%
\restorebibmacro{cite}%
\usebibmacro{cite}}}
\renewbibmacro*{textcite}{%
\ifboolexpr{
( not test {\iffieldundef{prenote}} and
test {\ifnumequal{\value{citecount}}{1}} )
or
( not test {\iffieldundef{postnote}} and
test {\ifnumequal{\value{citecount}}{\value{citetotal}}} )
}
{\DeclareFieldAlias{textcitehyperref}{noformat}}
{}%
\printtext[textcitehyperref]{%
\restorebibmacro{textcite}%
\usebibmacro{textcite}}}
% The following lines give the correct footcite Author (Year) but make the ibid erroneous
% Author (ibid)
\DeclareCiteCommand{\footcite}[\mkbibfootnote]
{\boolfalse{cbx:parens}}
{\usebibmacro{citeindex}%
\iffirstcitekey
{\setcounter{textcitetotal}{1}}
{\stepcounter{textcitetotal}%
\textcitedelim}%
\usebibmacro{textcite}}
{\ifbool{cbx:parens}
{\bibcloseparen\global\boolfalse{cbx:parens}}
{}}
{\usebibmacro{textcite:postnote}}
\begin{filecontents}{\jobname.bib}
@book{Chomsky1986,
Address = {Cambridge Mass.},
Author = {Noam Chomsky},
Publisher = {{MIT} Press},
Title = {Barriers},
Year = {1986}}
@book{Chomsky1981,
Address = {Dordrecht},
Author = {Noam Chomsky},
Publisher = {Foris Publications},
Title = {Lectures on Government and Binding},
Year = {1981}}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\section{}
% switching between \autocite and \footcite solves some problems but
% exposes others
\autocite{Chomsky1981} and \autocite{Chomsky1981}
\printbibliography
\end{document}
Respuesta1
Podemos simplemente redefinir la cite
macro normal para incluir el año entre paréntesis; para evitar problemas con otros comandos de cita, elegimos un nuevo nombre para la macro modificada.cite:paren:labelyear+extrayear
\renewbibmacro*{cite}{\printtext[citehyperref]{%
\global\boolfalse{cbx:loccit}%
\iffieldundef{shorthand}
{\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
{\usebibmacro{cite:ibid}}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:paren:labelyear+extrayear}}}
{\usebibmacro{cite:shorthand}}}}
\renewbibmacro*{cite:paren:labelyear+extrayear}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{%
\printfield{labelyear}%
\printfield{extrayear}}}}
No es necesario cambiar el \footcite
comando.
MWE
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber,style=authoryear-ibid,ibidtracker=constrict, autocite=footnote]{biblatex}
\usepackage{hyperref}
\DeclareFieldFormat{citehyperref}{%
\DeclareFieldAlias{bibhyperref}{noformat}% Avoid nested links
\bibhyperref{#1}}
\renewbibmacro*{cite}{\printtext[citehyperref]{%
\global\boolfalse{cbx:loccit}%
\iffieldundef{shorthand}
{\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
{\usebibmacro{cite:ibid}}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:paren:labelyear+extrayear}}}
{\usebibmacro{cite:shorthand}}}}
\renewbibmacro*{cite:paren:labelyear+extrayear}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{%
\printfield{labelyear}%
\printfield{extrayear}}}}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem \autocite{sigfridsson} ipsum\autocite{sigfridsson}. Dolor\autocite{knuth:ct:a,knuth:ct:b}.
\end{document}