有没有办法可以指定某些biblatex-chicago
样式(biblatex-chicago
或者[style=chicago-authoryear]{biblatex}
以便它们可以利用该mergedate
功能?authoryear-icomp
这样做(使用下面的代码),但我真的想使用芝加哥风格。
我正在尝试打印我的出版物、会议谈话和媒体采访的清单,并且对于我的目的来说,有一个在名称后打印年份并在末尾打印具体日期的参考书目(或出版物清单)确实看起来更好。
谢谢。
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{references.bib}
@unpublished{doc1,
title = {my title},
author = {My author},
journal = {Journal of Me},
date = {2018-04-01}
}
\end{filecontents}
\usepackage[style=authoryear-icomp, mergedate=basic]{biblatex}
\addbibresource{references.bib}
\begin{document}
\cite{doc1}
\printbibliography
\end{document}
答案1
biblatex-chicago
是一种非常复杂的风格,因为它试图尽可能紧密地实现《芝加哥格式手册》的(同样)复杂的规则。
单是日期处理的代码就有大约 400 行。下面只是将 的代码移植到的样式中。mergedate=basic
我没有尝试保留 和 的特殊处理或其任何与日期相关的选项。authoryear.cbx
biblatex-chicago
authordate
date
origdate
biblatex-chicago
\documentclass{article}
\usepackage[authordate]{biblatex-chicago}
\ExecuteBibliographyOptions{labeldate=year}
\renewbibmacro*{cmsbibsortdate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{\printlabeldateextra}}}
\newbibmacro*{bbx:ifmergeddate}{%
\ifboolexpr{
test {\iflabeldateisdate}
and
not test {\ifdateshavedifferentprecision{label}{}}
}%
}
\renewbibmacro*{date}{%
\usebibmacro{bbx:ifmergeddate}
{}
{\printdate}}%
\begin{filecontents}{\jobname.bib}
@unpublished{doc1,
title = {my title},
author = {My author},
journal = {Journal of Me},
date = {2018-04-01}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\cite{doc1}
\printbibliography
\end{document}