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