Bestimmte URLs in der Bibliographie unterdrücken

Bestimmte URLs in der Bibliographie unterdrücken

Wenn Sie eine BIB-Datei von Google Books erhalten, enthält diese, wenig überraschend, einen Link zu Google Books im URL-Feld. Es ist praktisch, diesen in der BIB-Datei zu haben, daher möchte ich ihn lieber nicht aus der Datei entfernen, was mit regulären Ausdrücken einfach wäre, aber ich möchte ihn nicht drucken.

Gibt es eine Möglichkeit, das Drucken des URL-Felds basierend auf dem Inhalt dieses Felds zu unterdrücken?

@bookAlternativ sieht es so aus, als könnte ich das URL-Feld für s mit etwas wie deaktivieren, \AtEveryBibitem{\ifentrytype{book}{\clearfield{url}}{}}aber ich würde lieber das eigentliche Problem beheben und die Möglichkeit behalten, Bücher mit URLs zu zitieren.

Antwort1

Sie können \DeclareSourcemapin der Präambel verwenden, um Felder zu entfernen. Hier ist ein vollständiges Beispiel. (Wenn Sie die Google Books-Bibs in einer oder mehreren eigenen Dateien haben, können Sie auch verwenden, \perdatasourceum dies nur auf diese Quelle anzuwenden. Siehe Abschnitt 4.5.2 (Dynamische Änderung von Daten) in der biblatexDokumentation!

\begin{filecontents}{\jobname.bib}
@book{bad,
  title={With link we don't want},
  url={http://books.google.se/books?id=SNeHkMXHcd8C},
}
@book{good,
  title={With link we want},
  url={http://tex.stackexchange.com/},
}
\end{filecontents}
\documentclass{article}

\usepackage{biblatex}
\addbibresource{\jobname.bib}
\DeclareSourcemap{
  \maps{
    \map{
      \step[fieldsource=url,
            match=\regexp{/books\.google\.},
            fieldset=url, null]
    }
  }
}
\begin{document}
\nocite{good, bad}
\printbibliography
\end{document}

Antwort2

Der Vollständigkeit halber sei erwähnt, dass der alternative Ansatz, den clstr in einem Kommentar vorschlägt, einfach darin besteht, die fehlerhaften Zeilen auszukommentieren, indem man ihnen // oder % voranstellt. Ich würde hierfür (da ich 300 Einträge in meiner .bib-Datei habe) entweder im Editor oder von einem Terminal aus einen regulären Ausdruck verwenden: sed -r 's/(url\ ?=\ ?\{[a-z:\/]*books\.google\.)/%\1/g oldrefs.bib >newrefs.bib

verwandte Informationen