概述
使用biblatex
,我想在参考书目中一起显示year
和字段。pubstate
我通过更新宏来隐藏书目条目末尾的 pubstate 字段,addendum+pubstate
如这些 二答案。
当前 MWE
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{public2018,
author = {Sam Public},
year = {2018},
pubstate = {in preparation},
journal = {Amazing Ideas},
title = {Some Hargle Bargle},
}
\end{filecontents}
\usepackage[backend=biber,style=authoryear-comp]{biblatex}
\addbibresource{\jobname.bib}
\renewbibmacro*{addendum+pubstate}{%
\printfield{addendum}}
\begin{document}
\cite{public2018}
\printbibliography
\end{document}
输出
目前的输出是这样的:
我希望看到
我希望看到更多类似这样的内容:
我通过将 pubstate 卸载到year
字段中来获得上述结果,这在很多方面都很糟糕,其中最不糟糕的是它需要黑客才能正确排序。
所以我想我需要更新某种宏(或制作新宏?),但我不知道该更新哪一个或如何更新。如果有人能提供任何指导,我将不胜感激。
答案1
需要对宏进行一些调整才能使其正确authoryear-comp
,但您应该熟悉以下代码。请注意,它是专门为使用标准mergedate
设置而设计的;如果您使用其他设置,则可能需要调整宏date+extradate
。
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{public2018,
author = {Sam Public},
year = {2018},
pubstate = {inpreparation},
journal = {Amazing Ideas},
title = {Some Hargle Bargle},
}
\end{filecontents}
\usepackage[backend=biber,style=authoryear-comp]{biblatex}
\addbibresource{\jobname.bib}
\renewbibmacro*{cite:labeldate+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[bibhyperref]{%
\printlabeldateextra
\setunit{\addcomma\space}%
\printfield{pubstate}}}}
\renewbibmacro*{cite:extradate}{%
\iffieldundef{extradate}
{}
{\printtext[bibhyperref]{%
\printfield{extradate}%
\setunit{\addcomma\space}%
\printfield{pubstate}}}}
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{%
\iflabeldateisdate
{\printdateextra}
{\printlabeldateextra}%
\setunit{\addcomma\space}%
\printfield{pubstate}}}}
\renewbibmacro*{addendum+pubstate}{%
\printfield{addendum}}
\begin{document}
\cite{public2018}
\printbibliography
\end{document}
请注意我是如何pubstate = {inpreparation},
利用预定义的本地化字符串的inpreparation
。