对于我的论文,我需要在脚注中添加参考文献,并按日期排序参考书目。为了实现这一点,我从 biblatex-chicago 切换到 biblatex 中的 windycity 样式。这对于注释本身来说很好,但我的参考书目中出现了一些空括号。我发现这是因为我的一些参考文献的日期有月份和日期,但我date=year
在序言中设置了。空括号通常会括住月份。我怎样才能从日期中删除所有月份和日期,而无需更改我的 .bib 文件。
这是我的 MWE:
\documentclass{article}
\usepackage[reflist=true, style=windycity, date=year]{biblatex}
\bibliography{biblatex-examples}
\begin{document}
Date with month: \cite{shore}
Date without month: \cite{doody}
\printbibliography
\end{document}
答案1
windycity
基本上是在假设您从未明确将日期格式设置为 的情况下运行的year
。以下是尝试了解windycity
日期格式。我们用测试替换 中对month
( \iffieldundef{month}
)的所有测试,这也考虑了输出格式。issue+month+etc
\ifdatehasyearonlyprecision{}
date
\documentclass{article}
\usepackage[reflist=true, style=windycity, date=year]{biblatex}
\addbibresource{biblatex-examples.bib}
\renewbibmacro*{issue+month+etc}[1]{%
\iffieldundef{year}
{\ifdatehasyearonlyprecision{}
{}
{\setunit{\space}%
\printtext[parens]{\printdate}}}
{\ifboolexpr{ test {\iffieldundef{volume}}
and test {\iffieldundef{number}}}
{\iffieldundef{journal}
{}
{\setunit{\addcomma\space}}%
\ifdatehasyearonlyprecision{}
{\usebibmacro{issue+season+year}}%
{\usebibmacro{reflist+year+day}%
\printdate}}%
{\ifdatehasyearonlyprecision{}
{\setunit{\space}%
\usebibmacro{reflist+issue+season}}%
{\ifstrequal{#1}{noparens}
{\usebibmacro{reflist+year+day}%
\newunit
\printdate}%
{\usebibmacro{reflist+year+day}%
\setunit{\space}%
\printtext[parens]{\printdate}}}}}}
\begin{document}
Date with month: \cite{shore}
Date without month: \cite{doody}
\printbibliography
\end{document}
我不会称其为错误,因为对于实现特定指南规则的样式来说,仅在其默认设置下按预期工作是完全合法的,但你可以 ping 作者windycity
通过以下方式联系作者:https://github.com/brianchase/windycity/issues并要求为各种选项提供新功能/支持...date
。
答案2
moewe 的答案设法去掉了括号,但它仍然保留了那些有月份的项目和那些完成的项目的风格差异。我想简单的解决方案可能是使用以下命令从每个 bib 项目中移除月份和日期
\AtEveryBibitem{%
\clearfield{doi}%
\clearfield{month}%
\clearfield{day}}
这似乎可以提供我想要的输出。我为什么要使用它?