![作者年份引用中“ibid”后的控制标点](https://linux22.com/image/424945/%E4%BD%9C%E8%80%85%E5%B9%B4%E4%BB%BD%E5%BC%95%E7%94%A8%E4%B8%AD%E2%80%9Cibid%E2%80%9D%E5%90%8E%E7%9A%84%E6%8E%A7%E5%88%B6%E6%A0%87%E7%82%B9.png)
我希望在作者年份脚注引文中用冒号作为年份和页码之间的分隔符。但在“ibid”一词后面,我希望用逗号代替冒号。
最小工作示例
\documentclass[12pt]{article}
\usepackage[
autocite=footnote,
bibstyle=authoryear-ibid,
citestyle=authoryear-ibid,
]{biblatex}
\renewcommand*{\postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}
\begin{filecontents*}[overwrite]{bibliography.bib}
@book{book,
title={Fabulous Book},
author={Fred Smith},
year={2006},
}
\end{filecontents*}
\addbibresource{bibliography.bib}
\begin{document}
\autocite[5]{book}
\autocite[6]{book}
\end{document}
目前,由于设置的原因,它在单词“ibid”后面加了一个冒号。有没有办法让单词“ibid”后面的分隔符只变成逗号?
答案1
您可以使用以下构造。
我们不能简单地测试\ifciteibid
中的postnotedelim
,因为当最终打印后记时,引用跟踪器可能已经处于不同的状态。所以我们必须通过辅助切换器,在每个引用中明确切换。
\documentclass[12pt]{article}
\usepackage[
style=authoryear-ibid,
autocite=footnote,
]{biblatex}
\newtoggle{cbx:isibid}
\AtEveryCitekey{\global\togglefalse{cbx:isibid}}
\renewbibmacro*{cite:ibid}{%
\global\toggletrue{cbx:isibid}%
\printtext[bibhyperref]{\bibstring[\mkibid]{ibidem}}%
\ifloccit
{\global\booltrue{cbx:loccit}}
{}}
\DeclareDelimFormat*{postnotedelim}{%
\iftoggle{cbx:isibid}
{\addcomma}
{\addcolon}%
\space}
\DeclareFieldFormat{postnote}{\mknormrange{#1}}
\DeclareFieldFormat{volcitepages}{\mknormrange{#1}}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem \autocites[5]{sigfridsson}
ipsum \autocites[6]{sigfridsson}
dolor \autocites[5]{nussbaum}
sit \autocites[6]{sigfridsson}
amet \autocites[6]{sigfridsson}
\end{document}