我如何才能让 biblatex(style footnote-dw
)在后续引用中使用逗号而不是冒号?
这是一个 MWE。
\documentclass{article}
\usepackage[style=footnote-dw]{biblatex}
\begin{filecontents}{mwe.bib}
@BOOK{foo,
author = {User, Joe},
title = {Foo},
}
@BOOK{bar,
author = {User, Joe},
title = {Bar},
}
\end{filecontents}
\addbibresource{mwe.bib}
\begin{document}
Test\cite[p.~1]{foo}
Test\cite[p.~2]{bar}
\newpage
Test\cite[p.~3]{foo}
Test\cite[p.~4]{bar}
\printbibliography
\end{document}
第二页的引用应该以“用户、Foo 和 Bar...”开头,而不是当前的“用户:Foo 和 Bar...”。
现在我用
\AtEveryCitekey{%
\ifciteseen
{\renewcommand\citenamepunct{\addcomma\space}}
{}}
虽然这可行,但我很确定这不是“正确”的解决方案......
答案1
footnote-dw
具有很多定制功能,但如果您想要更复杂的东西,这可能会使修改某些东西变得有点困难。
\nametitledelim
默认为\citenamepunct
。footnote-dw
定义\labelnamepunct
为\nametitledelim
引用。\labelnamepunct
用于完整引用中,以分隔名称和标题。 在简短引用中,分隔符为\nametitledelim
。 因此,如果我们进行更改,\citenamepunct
我们也会更改第一次引用和后续引用的内容。
我们可以在 fullcite 宏中将其设置\citenamepunct
为\addcomma\spcae
并重置\labelnamepunct
为冒号。
为了正确获取同义引用,我们需要使用 明确修改标点符号缓冲区中的值\ifbool{cbx:idemfull}{\setunit{\addcolon\space}}{}
。
\documentclass{article}
\usepackage[style=footnote-dw]{biblatex}
\begin{filecontents}{\jobname.bib}
@BOOK{foo,
author = {User, Joe},
title = {Foo},
location = {BAZ},
}
@BOOK{bar,
author = {User, Joe},
title = {Bar},
location = {BAZ},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\renewcommand\citenamepunct{\addcomma\space}
\renewbibmacro*{cite:full}{%
\usebibmacro{cite:full:citepages}%
\usebibmacro{footref}%
\ifbool{cbx:idemfull}{\setunit{\addcolon\space}}{}%
\printtext[bibhypertarget]{%
\usedriver
{\renewcommand*{\labelnamepunct}{\addcolon\space}%
\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}%
\iffieldundef{shorthand}
{}
{\ifbool{cbx:citedas}
{\addspace\usebibmacro{shorthandintro}}
{}}}}
\begin{document}
Test\cite[1]{foo}
Test\cite[2]{bar}
\newpage
Test\cite[3]{foo}
Test\cite[4]{bar}
\printbibliography
\end{document}