我使用biblatex
和biber
作为论文的参考书目,所需的参考书目样式类似于提供的样式authortitle
。引用必须采用形式。我使用和选项authoryear
实现了这一点,如下所示:style
citestyle
\usepackage[backend=biber,style=authortitle,citestyle=authoryear-ibid,sorting=nyt,isbn=false,doi=false]{biblatex}
然而也有例外,一些古典文本,比如九章集普罗提诺的《九章集》和其他一些哲学著作(柏拉图、亚里士多德等)在文中都以缩写标题引用;因此,《九章集》首次出现时应该是:(普罗提诺,恩。I.6.1),并且进一步解释它时,它只是通过(恩。I.6.2) 等等。我几乎通过在条目 (.bib 中) 中添加shorthand={\emph{Enn.}}
和来实现这一点pagination={none}
,但仍然有一个问题:当我使用时\parencite[I.6.2]{enneads}
,结果是:(恩。,I.6.2),不是(恩。6.2)。
我的问题:有没有一种简单的方法可以删除引文简写和引文“页数”之间的逗号?最好是可以添加到 .bib 文件中的方法,也许可以使用options={???}
。
答案1
这样怎么样?这将创建一个新的输入选项,您可以在其中指定 \postnotedelim 的定义。
\documentclass{article}
\usepackage[backend=biber,style=authortitle,citestyle=authoryear-ibid,sorting=nyt,isbn=false,doi=false]{biblatex}
\DeclareEntryOption{postnotedelim}{%
\def\postnotedelim{#1}}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{enneads,
author = {Plotinus},
title = {Enneads},
pagination = {none},
shorthand = {\emph{Enn.}},
options = {postnotedelim=\addspace}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\parencite[I.6.2]{enneads}
\end{document}
答案2
尽管 David Purton 的答案非常简单明了,但我想提供一个答案,您只需要在文件中设置一个字段.bib
,即entrysubtype = {classical}
,所有其他设置都由 负责biblatex
。
那么就足以说
@book{enneads,
author = {Plotinus},
title = {Enneads},
entrysubtype = {classical},
shorthand = {Enn.},
}
然后,我们根据entrysubtype
存在的情况切换一些字段定义classical
\DeclareFieldFormat{shorthand}{%
\iffieldequalstr{entrysubtype}{classical}
{\mkbibemph{#1\isdot}}
{#1\isdot}}
\renewcommand*{\postnotedelim}{%
\iffieldequalstr{entrysubtype}{classical}
{}
{\addcomma}%
\addspace}
并确保通过 sourcemapping设置pagination
为none
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=entrysubtype, match={classical}, final]
\step[fieldset=pagination, fieldvalue={none}]
}
}
}
平均能量损失
\documentclass{article}
\usepackage[backend=biber,style=authortitle,citestyle=authoryear-ibid,sorting=nyt,isbn=false,doi=false]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{enneads,
author = {Plotinus},
title = {Enneads},
entrysubtype = {classical},
shorthand = {Enn.},
}
\end{filecontents}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=entrysubtype, match={classical}, final]
\step[fieldset=pagination, fieldvalue={none}]
}
}
}
\DeclareFieldFormat{shorthand}{%
\iffieldequalstr{entrysubtype}{classical}
{\mkbibemph{#1\isdot}}
{#1\isdot}}
\renewcommand*{\postnotedelim}{%
\iffieldequalstr{entrysubtype}{classical}
{}
{\addcomma}%
\addspace}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
\parencites[I.6.2]{enneads}[19]{sigfridsson}[4-6]{kant:kpv}
\end{document}