빈 연도 필드 biblatex ieee 스타일에 대한 괄호 제거

빈 연도 필드 biblatex ieee 스타일에 대한 괄호 제거

biblatex ieee 스타일을 사용하여 "연도" 필드가 정의되지 않은 경우에도 참조에 빈 대괄호가 표시된다는 것을 발견했습니다. 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

확실한 해결책은 항목에 필드를 제공하는 것입니다 date(결국 [거의] 모든 턱받이 항목에는 하나가 있어야 합니다. 위의 Joseph Wright의 설명도 참조하세요). @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}

여기에 이미지 설명을 입력하세요

관련 정보