概述

概述

概述

使用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

相关内容