显示为“1111”的引文

显示为“1111”的引文

使用 biber 和 pdflatex,我的所有引文都显示为“1111,年份”,而不是“第一作者年份”。例如以下代码

\documentclass[11pt]{article}
\usepackage[
style=authoryear,
uniquelist=false,
bibstyle=publist,
plnumbered=false,
marginyear=true,
plauthorhandling=highlight,
boldyear=false,
url=true,
sorting=ydnt,
natbib=true,
minnames=1,
maxcitenames=2,
minbibnames=7,
maxbibnames=8,
backend=biber
]{biblatex}
\addbibresource{biblio.bib}

\begin{document}
Citation: ``\cite{kimm_towards_2015}''.
\printbibliography{}
\end{document}

参考书目在哪里

@article{kimm_towards_2015,
  title = {Towards Simulating Star Formation in Turbulent High-z Galaxies with Mechanical Supernova Feedback},
  volume = {451},
  doi = {10.1093/mnras/stv1211},
  abstract = {Blabla},
  number = {3},
  journal = {Monthly Notices of the Royal Astronomical Society},
  author = {Kimm, Taysun and Cen, Renyue and Devriendt, Julien and Dubois, Yohan and Slyz, Adrianne},
  year = {2015},
  keywords = {Galaxies: formation,Galaxies: high-redshift,Galaxies: ISM},
  pages = {2900-2921},
}

节目

Citation: “1111, 2015”.

你知道发生了什么吗?请注意,当我使用另一个参考书目文件并引用另一篇论文时,我遇到了同样的问题,因此该问题似乎不是来自 .bib. 文件。


我在 (Arch)Linux 上运行以下版本

$ biber --version
biber version: 2.12
$ pdflatex --version
pdfTeX 3.14159265-2.6-1.40.19 (TeX Live 2018/Arch Linux)
kpathsea version 6.3.0
Copyright 2018 Han The Thanh (pdfTeX) et al.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the pdfTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the pdfTeX source.
Primary author of pdfTeX: Han The Thanh (pdfTeX) et al.
Compiled with libpng 1.6.35; using libpng 1.6.35
Compiled with zlib 1.2.11; using zlib 1.2.11
Compiled with poppler version 0.71.0

答案1

biblatex-publist是专门为列出特定作者的出版物(在简历或类似文件中)而设计的参考书目样式。它实际上不适用于引用,但biblatex-publist提供了基于的虚拟引用样式numeric

我不太清楚你想要实现什么,但publist如果你写的是普通的书目/参考文献列表而不是出版物列表,我强烈建议你放弃。还有其他风格,比如biblatex-philosophy它能让你生成带有条目左侧年份的精美输出。

这里的具体问题是将字段biblatex-publist设置shortauthor为“1111”以控制排序。这意味着结果labelname为“1111”。您可以使用以下方法撤消该操作

\documentclass[11pt]{article}
\usepackage[
style=authoryear,
uniquelist=false,
bibstyle=publist,
plnumbered=false,
marginyear=true,
plauthorhandling=highlight,
boldyear=false,
url=true,
sorting=ydnt,
natbib=true,
minnames=1,
maxcitenames=2,
minbibnames=7,
maxbibnames=8,
backend=biber
]{biblatex}
\addbibresource{biblatex-examples.bib}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[overwrite]{
      \step[fieldsource=shortauthor, match=\regexp{\A1111\Z}, final]
      \step[fieldset=shortauthor, null]
    }
  }
}

\begin{document}
Citation: ``\cite{sigfridsson}''.
\printbibliography
\end{document}

引用:“Sigfridsson 和 Ryde,1998”。

请注意,biblatex-publist会覆盖字段中任何现有内容shortauthor,并且此代码无法恢复覆盖的内容。因此,无法保证输出结果与其他样式一致。

在此过程中,您可能会遇到更多粗糙的边缘或违反直觉的结果。biblatex-publist进行一些巧妙的修改以获得所需的结果,但这并不总是与所有可能的引用样式兼容。

相关内容