biblatex-mla 书目:同一作者的第二篇文章中有一个多余的点 (@collection)

biblatex-mla 书目:同一作者的第二篇文章中有一个多余的点 (@collection)

当引用同一作者的两部作品集时,biblatex-mla 会在参考文献条目的标题前添加一个额外的点,如下所示:

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[backend=biber,style=mla]{biblatex}
\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@COLLECTION{adorno-gs10.2,
  editor = {Rolf Tiedemann},
  year = {2003},
  maintitle = {Gesammelte Schriften Bd. 10.2},
  mainsubtitle = {Kulturkritik und Gesellschaft II. Eingriffe. Stichworte},
  publisher = {Suhrkamp},
  location = {Frankfurt am Main},
  author = {Theodor W. Adorno},
  howpublished = {Print},
  options = {useeditor=false},
  owner = {jakob},
  shortauthor = {{In: GS 10.2}},
  timestamp = {30.03.2012}
}

@COLLECTION{adorno-gs8,
  editor = {Rolf Tiedemann},
  year = {2003},
  maintitle = {Gesammelte Schriften Bd. 8},
  mainsubtitle = {Soziologische Schriften I},
  publisher = {Suhrkamp},
  location = {Frankfurt am Main},
  author = {Theodor W. Adorno},
  howpublished = {Print},
  options = {useeditor=false},
  owner = {jakob},
  shortauthor = {{In: GS 8}},
  timestamp = {30.03.2012}
}

\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

您知道如何避免这种情况吗?或者这是否是由于我的 bib 条目中有错误造成的?

答案1

biblatex-mla 格式有时会出现标点符号问题。这主要是因为自 biblatex 1.0 以来它一直没有更新。

biblatex 1.0 中不存在您的特定问题。对于 biblatex 1.7,biblatex-mla 的定义似乎\bibnamedash设置了太多标点符号。以下是摘录自mla.bbx

\renewcommand*{\bibnamedash}{%
  \mbox{%
    \mlanamedash%
    \iffieldundef{nameaddon}%
      {\unspace\newunitpunct}%
      {\unspace\addspace}%
  }%
}

条目collection类型由参考书目驱动程序处理book。它预计maintitle被使用仅有的除了 之外title。如果缺少nameaddon和字段,驱动程序将输出过多的点。title

因此你有三个选择:

  1. 使用biblatex 1.0直到 biblatex-mla 更新。这将使您免于解决样式与较新版本的 biblatex 之间的其他不兼容性。任何剩余的标点符号问题都可以通过加载 hyperref 包(在 biblatex 之后)来解决。
  2. 仅当您已经使用( ) 时才使用maintitle( ) 字段。和也是如此。 请注意,您的条目在其他样式中显示不同。演示了和的常规用法。 有关这些条目类型和继承的详细信息,请参阅 biblatex 手册。mainsubtitletitlesubtitlebooktitlebooksubtitlecollectionbiblatex-examples.bibcollectionincollectioncrossref
  3. 编辑\bibnamedash命令。

对于 (3),以下内容应该不会给您点(如标准 biblatex 样式)。

\renewcommand*{\bibnamedash}{\mlanamedash\nopunct}

这应该会给你一个点:

\renewcommand*{\bibnamedash}{%
  \mlanamedash%
  \iffieldundef{nameaddon}{\adddot}{\nopunct}}

我们不需要担心划线和nameaddon字段之间的空格,因为 biblatex-mla 的author参考书目宏\setunit{\addspace}在打印之前会出现问题nameaddon

\documentclass{scrartcl}
\usepackage{csquotes}
\usepackage[ngerman]{babel}
\usepackage[backend=biber,style=mla]{biblatex}

%\renewcommand*{\bibnamedash}{\mlanamedash\nopunct}

\renewcommand*{\bibnamedash}{%
  \mlanamedash%
  \iffieldundef{nameaddon}{\adddot}{\nopunct}}

% biblatex-mla has no localization module for German
\DefineBibliographyStrings{german}{%
  print = {print}}

\begin{filecontents}{\jobname.bib}
@INCOLLECTION{gaonkar:in,
  author = {Gaonkar, Dilip Parameshwar},
  title = {On Alternative Modernities},
  pages = {1--23},
  nameaddon = {Name add-on},
  editor = {Gaonkar, Dilip Parameshwar},
  booktitle = {Alternative Modernities},
  publisher = {Duke University Press},
  location = {Durham and London},
  date = {2001},
  isbn = {0-822-32714-7}}
@COLLECTION{adorno-gs2,
  editor = {Rolf Tiedemann},
  year = {2003},
  maintitle = {Gesammelte Schriften Bd. 10.2},
  mainsubtitle = {Kulturkritik und Gesellschaft II. Eingriffe. Stichworte},
  publisher = {Suhrkamp},
  location = {Frankfurt am Main},
  author = {Theodor W. Adorno},
  howpublished = {Print},
  options = {useeditor=false},
  shortauthor = {{In: GS 10.2}}}
@COLLECTION{adorno-gs8,
  editor = {Rolf Tiedemann},
  year = {2003},
  maintitle = {Gesammelte Schriften Bd. 8},
  mainsubtitle = {Soziologische Schriften I},
  publisher = {Suhrkamp},
  location = {Frankfurt am Main},
  author = {Theodor W. Adorno},
  howpublished = {Print},
  options = {useeditor=false},
  shortauthor = {{In: GS 8}}}
@INCOLLECTION{adorno-spaet,
  author = {Theodor W. Adorno},
  title = {Sp\"{o}tkapitalismus oder Industriegesellschaft?},
  year = {1968},
  subtitle = {Einleitungsvortrag zum 1. Deutschen Soziologentag},
  pages = {354-370},
  crossref = {adorno-gs8}}
\end{filecontents}

\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
\nocite{adorno-spaet,adorno-gs2,adorno-gs8}
\nocite{gaonkar,gaonkar:in,knuth:ct,knuth:ct:a,knuth:ct:b}
\printbibliography
\end{document}

这是没有点的输出:

在此处输入图片描述

带点的还有:

在此处输入图片描述

答案2

@Audrey,感谢你在这里帮助 Jacob。我刚刚将你改进的 bibnamedash 合并到 Biblatex-mla 的更新版本中。由于我部分忽视了 Biblatex-mla,部分只是疏于推出新版本,所以我现在将我的文件托管在 GitHub 上,希望人们也能够在主要版本之间下载更新。这是正在进行的分支的 URL:https://github.com/jmclawson/biblatex-mla/tree/dev

相关内容