参考文献内の特定の URL を非表示にする

参考文献内の特定の URL を非表示にする

Google ブックから .bib ファイルを取得すると、当然ながら URL フィールドに Google ブックへのリンクがあります。これは .bib ファイルにあると便利なので、ファイルから削除したくありません。正規表現を使用すると簡単ですが、印刷したくありません。

URL フィールドの内容に基づいて、そのフィールドの印刷を抑制する方法はありますか?

@bookあるいは、次のようにして の URL フィールドを無効にすることもできるようです\AtEveryBibitem{\ifentrytype{book}{\clearfield{url}}{}}が、実際の問題を修正して、URL で書籍を引用する機能を維持したいと思います。

答え1

\DeclareSourcemapフィールドを削除するには、プリアンブルで を使用できます。完全な例を次に示します。(Google ブックの bib を独自のファイルに格納している場合は、 を使用して\perdatasource、これをそのソースにのみ適用することもできます。ドキュメントのセクション 4.5.2 (データの動的変更) を参照してくださいbiblatex。)

\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

関連情報