
biblatex ieee スタイルを使用すると、フィールド「year」が未定義であっても、参照に空の括弧が表示されることがわかりました。biblatex.bst を変更せずにこれを削除するにはどうすればよいですか?
\documentclass{article}
\usepackage[style=ieee,backend=bibtex]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\x.bib}
@ELECTRONIC{MEMSnet,
title = {What is {MEMS}?},
organization = {MEMSnet},
url = {http://www.memsnet.org/mems/what_is.html},
urldate = {Dec. 01, 2013}
}
\end{filecontents}
\addbibresource{\x.bib}
\nocite{*}
\begin{document}
\printbibliography
\end{document}
私は
(). MEMSとは? MEMSnet、[オンライン]。入手可能:http://www.memsnet.org/mems/what_is.html。
これは正しい引用スタイルではありません。私は次のようにしたいと思います:
MEMS とは? MEMSnet、[オンライン]。入手可能:http://www.memsnet.org/mems/what_is.html。
どうもありがとう
答え1
そこにieee.bbx
は線がある
\DeclareBibliographyDriver{online}{%
[...]
\setunit{\adddot\addspace}%
\printtext[parens]{\usebibmacro{date}}%
\setunit{\adddot\addspace}%
[...]
そこで、マクロ (実際にはデフォルトで)biblatex
を使用し、その出力を括弧で囲みます。何も印刷されない場合は、空の文字列が括弧で囲まれ、上記のような結果になります。date
\printdate
明らかな解決策は、エントリにフィールドを提供することです(結局のところ、[ほぼ] すべての bib エントリにフィールドが必要です。上記の Joseph Wright のコメントも参照してください) 。ただし、これは難しい場合があり、一部のリソースdate
ではまったく不可能な場合があります。@online
ドライバ全体を書き換えたくないので@online
(問題を解決する明白な方法)、次のようにパッチを当てます。xpatch
。
このコードをロードし\usepackage{xpatch}
てプリアンブルに挿入します
\xpatchbibdriver{online}
{\printtext[parens]{\usebibmacro{date}}}
{\iffieldundef{year}
{}
{\printtext[parens]{\usebibmacro{date}}}}
{}
{\typeout{There was an error patching biblatex-ieee (specifically, ieee.bbx's @online driver)}}
これは、上で説明した問題のある行 ( \printtext[parens]{\usebibmacro{date}}
) を (多かれ少なかれ洗練された) 構造に置き換えます。この構造では、フィールドyear
(つまり、十分な日付フィールド) があるかどうかを確認し、その条件が満たされた場合のみ (つまり、年が存在する場合のみ。ここでは、もちろん、それがyear
参考文献の日付出力の最低要件であると想定しています)、日付を印刷します。それ以外の場合は何も行いません。
\documentclass{article}
\usepackage[style=ieee,backend=bibtex]{biblatex}
\usepackage{xpatch}
\begin{filecontents}{\jobname.bib}
@ELECTRONIC{MEMSnet,
title = {What is {MEMS}?},
organization = {MEMSnet},
url = {http://www.memsnet.org/mems/what_is.html},
urldate = {2013-12-01},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\xpatchbibdriver{online}
{\printtext[parens]{\usebibmacro{date}}}
{\iffieldundef{year}
{}
{\printtext[parens]{\usebibmacro{date}}}}
{}
{\typeout{There was an error patching biblatex-ieee (specifically, ieee.bbx's @online driver)}}
\begin{document}
\nocite{MEMSnet,wilde,markey}
\printbibliography
\end{document}