
las respuestas aesta preguntaExplique cómo \DefineBibliographyStrings
se puede utilizar para cambiar el texto de la "última visita" para @online
las citas.
Sin embargo, esta solución cambia el texto de todas las referencias de este tipo. Me gustaría poder cambiar el texto solo para ciertas referencias.
Tengo algunas referencias a páginas web actuales que me gustaría mantener como "últimas visitas", sin embargo, también tengo algunos enlaces a archive.org donde me gustaría que se mostraran como "archivados en".
Aquí hay un MRE y el resultado. Me gustaría que la referencia de intercambio de pila tenga como prefijo la fecha con "archivado el", pero que la referencia de Wikipedia permanezca como predeterminada "visitada en".
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{citations.bib}
@online{wikipedia,
author = {{Wikimedia Foundation}},
title = {Wikipedia},
url = {https://en.wikipedia.org},
year = {2019},
urldate = {2019-12-09}
}
@online{stack,
author = {{Stack Exchange Inc}},
title = {Stack Overflow},
url = {https://web.archive.org/web/20100813082822/http://www.stackoverflow.com/},
year = {2010},
urldate = {2010-08-13}
}
\end{filecontents}
\usepackage[style=authoryear,backend=bibtex,urldate=long]{biblatex}
\addbibresource{citations.bib}
\DefineBibliographyStrings{english}{
urlseen = {archived on}
}
\begin{document}
Lorem ipsum dolor sit amet \autocite{wikipedia}, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua \autocite{stack}.
\printbibliography
\end{document}
Respuesta1
Se trata de una sencilla adaptación deLa respuesta de Moewe a "Estilo de babero personalizado para entradas que contienen editor"(Si esto funciona para usted, ¡votelo también!).
Primero, agregue el siguiente código a su preámbulo. Esto hará que biblatex escriba "archivado en" para las referencias que incluyan options = {archived}
y, en caso contrario, la cadena predeterminada.
% define a new "archivedon" string as an alternative to "urlseen"
\NewBibliographyString{archivedon}
\DefineBibliographyStrings{english}{
archivedon = {archived on}
}
% for each reference, detect if the "archived" option is used and set the urldate string accordingly
\newtoggle{bib:archived}
\DeclareEntryOption{archived}[true]{%
\settoggle{bib:archived}{#1}}
\DeclareFieldFormat{urldate}{%
\mkbibparens{%
\iftoggle{bib:archived}
{\bibstring{archivedon}} % "archived" option is on - write "archived on"
{\bibstring{urlseen}} % "archived" option is off - write "visited on"
\addcolon\space#1}}
Luego tienes una o dos opciones, dependiendo del backend de bibliografía (bibtex o biber) que utilices:
a) Si usa bibtex o no desea automatizar esta parte, deberá editar su archivo .bib y agregar options = {archived}
a todas las referencias donde desee usar "archivado en":
@online{stack,
author = {{Stack Exchange Inc}},
title = {Stack Overflow},
url = {https://web.archive.org/web/20100813082822/http://www.stackoverflow.com/},
year = {2010},
urldate = {2010-08-13},
options = {archived}
}
b) Si usa biber, no necesita editar el archivo .bib, ya que puede configurar la archived
opción automáticamente (esto no funciona con bibtex):
% automatically add the "archived" option when reference url contains "archive.org"
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite]{
\step[fieldsource=url, match=\regexp{archive\.org},final]
\step[fieldset=options, append, fieldvalue={archived=true}]
}
}
}
MWE para bibtex (requiere editar su archivo .bib para agregar la archived
opción a las referencias de archive.org):
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{citations.bib}
@online{wikipedia,
author = {{Wikimedia Foundation}},
title = {Wikipedia},
url = {https://en.wikipedia.org},
year = {2019},
urldate = {2019-12-09}
}
@online{stack,
author = {{Stack Exchange Inc}},
title = {Stack Overflow},
url = {https://web.archive.org/web/20100813082822/http://www.stackoverflow.com/},
year = {2010},
urldate = {2010-08-13},
options = {archived}
}
\end{filecontents}
\usepackage[style=authoryear,backend=bibtex,urldate=long]{biblatex}
\addbibresource{citations.bib}
% use "archived on" instead of "visited on" when bib entry includes "options = {archived}"
% (inspired by https://tex.stackexchange.com/a/265929)
\NewBibliographyString{archivedon}
\DefineBibliographyStrings{english}{
archivedon = {archived on}
}
\newtoggle{bib:archived}
\DeclareEntryOption{archived}[true]{%
\settoggle{bib:archived}{#1}}
\DeclareFieldFormat{urldate}{%
\mkbibparens{%
\iftoggle{bib:archived}
{\bibstring{archivedon}}
{\bibstring{urlseen}}%
\addcolon\space#1}}
%-----
\begin{document}
Lorem ipsum dolor sit amet \autocite{wikipedia}, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua \autocite{stack}.
\printbibliography
\end{document}
MWE para biber (automático, no se necesitan ediciones .bib):
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{citations.bib}
@online{wikipedia,
author = {{Wikimedia Foundation}},
title = {Wikipedia},
url = {https://en.wikipedia.org},
year = {2019},
urldate = {2019-12-09}
}
@online{stack,
author = {{Stack Exchange Inc}},
title = {Stack Overflow},
url = {https://web.archive.org/web/20100813082822/http://www.stackoverflow.com/},
year = {2010},
urldate = {2010-08-13}
}
\end{filecontents}
\usepackage[style=authoryear,backend=biber,urldate=long]{biblatex} % changed to biber
\addbibresource{citations.bib}
% use "archived on" instead of "visited on" when bib entry includes "options = {archived}"
% (inspired by https://tex.stackexchange.com/a/265929)
\NewBibliographyString{archivedon}
\DefineBibliographyStrings{english}{
archivedon = {archived on}
}
\newtoggle{bib:archived}
\DeclareEntryOption{archived}[true]{%
\settoggle{bib:archived}{#1}}
\DeclareFieldFormat{urldate}{%
\mkbibparens{%
\iftoggle{bib:archived}
{\bibstring{archivedon}}
{\bibstring{urlseen}}%
\addcolon\space#1}}
%----------
% for biber only - add the "archived" option automatically when url contains "archive.org"
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite]{
\step[fieldsource=url, match=\regexp{archive\.org},final]
\step[fieldset=options, append, fieldvalue={archived=true}]
}
}
}
%-----
\begin{document}
Lorem ipsum dolor sit amet \autocite{wikipedia}, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua \autocite{stack}.
\printbibliography
\end{document}