Ändern von Bibliografiezeichenfolgen nur für bestimmte Referenzen

Ändern von Bibliografiezeichenfolgen nur für bestimmte Referenzen

Die Antworten aufdiese FrageErklären Sie, wie der „zuletzt besuchte“ Text für Zitate \DefineBibliographyStringsgeändert werden kann .@online

Allerdings ändert diese Lösung den Text bei allen Verweisen dieser Art. Ich möchte den Text nur bei bestimmten Verweisen ändern können.

Ich habe einige Verweise auf aktuelle Webseiten, die ich als „zuletzt besucht“ behalten möchte, ich habe jedoch auch einige Links zu archive.org, wo ich diese stattdessen als „archiviert am“ anzeigen möchte.

Hier ist ein MRE und die Ausgabe. Ich möchte, dass der Stack Exchange-Referenz das Datum mit „archiviert am“ vorangestellt wird, die Wikipedia-Referenz jedoch beim Standard „besucht am“ bleibt.

\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}

Verweise

Antwort1

Dies ist eine einfache Anpassung vonmoewes Antwort auf „Benutzerdefinierter Bib-Stil für Einträge mit Editor“(Wenn das für Sie funktioniert, geben Sie auch eine positive Bewertung dafür!).

Fügen Sie zunächst den folgenden Code zu Ihrer Präambel hinzu. Dadurch schreibt biblatex „archiviert am“ für Verweise, die enthalten options = {archived}, und andernfalls die Standardzeichenfolge.

% 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}}

Dann haben Sie eine oder zwei Optionen, je nachdem, welches Bibliografie-Backend (Bibtex oder Biber) Sie verwenden:

a) Wenn Sie Bibtex verwenden oder diesen Teil nicht automatisieren möchten, müssen Sie Ihre .bib-Datei bearbeiten und options = {archived}allen Referenzen, bei denen Sie „archiviert am“ verwenden möchten, Folgendes hinzufügen:

@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) Wenn Sie Biber verwenden, müssen Sie die .bib-Datei nicht bearbeiten, da diese die archivedOption automatisch setzen kann (dies funktioniert nicht mit 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 für Bibtex (erfordert die Bearbeitung Ihrer .bib-Datei, um die archivedOption für archive.org-Referenzen hinzuzufügen):

\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 für Biber (automatisch, keine .bib-Änderungen erforderlich):

\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}

verwandte Informationen