禁止參考書目中的某些 URL

禁止參考書目中的某些 URL

如果您從 google 圖書獲得 .bib 文件,不出所料,它的 URL 欄位中有一個指向 google 圖書的連結。這在 .bib 檔案中很方便,所以我不想將其從檔案中刪除,使用正規表示式很容易,但我不希望它列印。

有沒有辦法根據 URL 欄位的內容禁止列印該欄位?

或者,看起來我可以使用@book類似的方法禁用 s 的URL 字段\AtEveryBibitem{\ifentrytype{book}{\clearfield{url}}{}},但我寧願解決真正的問題並保留使用 URL 引用書籍的能力。

答案1

您可以\DeclareSourcemap在序言中使用來刪除欄位。這是一個完整的例子。 (如果您在自己的文件中擁有Google圖書書目,您也可以使用\perdatasource它使其僅適用於該來源。請參閱biblatex文件中的第 4.5.2 節(資料的動態修改)!

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

答案2

為了完整起見,clstr 在註解中提出的替代方法是透過在有問題的行前面加上 // 或 % 來註解它們。我會在編輯器或終端機中使用正規表示式(因為我的 .bib 中有 300 個條目): sed -r 's/(url\ ?=\ ?\{[a-z:\/]*books\.google\.)/%\1/g oldrefs.bib >newrefs.bib

相關內容