如何从作者年份引文中删除逗号

如何从作者年份引文中删除逗号

我使用biblatexbiber作为论文的参考书目,所需的参考书目样式类似于提供的样式authortitle。引用必须采用形式。我使用和选项authoryear实现了这一点,如下所示:stylecitestyle

\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设置paginationnone

\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}

(Enn. I.6.2;Sigfridsson 和 Ryde 1998,第 19 页;KpV,第 4-6 页)

相关内容