我是 latex/bibtex 的新手,我不知道这个错误是从哪里来的。我从 Zotero 集合中生成了一个 .bib 文件,并尝试在我的 latex 文档中生成参考书目。但是,文档中生成的参考文献无法正确获取出版年份,尽管它存在于 .bib 文件中。
缩小的 .bib 文件如下所示:
@article{packham_interactive_2005,
title = {Interactive Visualisation for Decision Support and Evaluation of Robustness—in Theory and in Practice},
volume = {19},
issn = {1474-0346},
url = {http://www.sciencedirect.com/science/article/pii/S1474034605000613},
doi = {10.1016/j.aei.2005.07.006},
timestamp = {2016-04-06T06:59:27Z},
number = {4},
journaltitle = {Advanced Engineering Informatics},
shortjournal = {Advanced Engineering Informatics},
series = {Computing in Civil Engineering11th International Workshop of the European Group for Intelligent Computing in Engineering},
author = {Packham, I. S. J. and Rafiq, M. Y. and Borthwick, M. F. and Denham, S. L.},
urldate = {2016-04-06},
date = {2005-10},
pages = {263--280},
note = {00019},
keywords = {decision support,Genetic algorithms,Interactive visualisation,Knowledge discovery,Robustness evaluation},
}
我正在生成类似以下 MWE 的参考书目(我尝试了两种不同的样式,一种来自 elsevier 模板,另一种可在此处获得(http://www.frontiersin.org/Design/bst/frontiersinSCNS_ENG_HUMS.bst) 均无法加载年份):
\documentclass[preprint,12pt]{elsarticle}
\begin{document}
fermentum \cite{packham_interactive_2005}
\section{References}
%\bibliographystyle{model1-num-names}
\bibliographystyle{frontiersinSCNS_ENG_HUMS}
\bibliography{Interactive_Optimization}
\end{document}
[2] ISJ Packham, MY Raq, MF Borthwick, SL Denham, 决策支持和稳健性评估的交互式可视化|理论与实践 19 (????) 263{280. 00019.
第一次编译突出显示了以下错误:警告——(...) 中的年份为空;设置为???? 现在,不再显示任何错误,尽管年份仍然用 (????) 而不是“2005”来表示。
我是不是漏掉了什么?这是我使用的 bib 样式的问题吗?还是我从 Zotero 生成的 bib 文件的问题?有什么解决办法吗?请注意,我还尝试将 bib 文件中的标签从“日期”更改为“年份”,但问题没有解决。谢谢您的帮助!
答案1
作为 Zotero 的补充罗斯的回答(在我看来,这在 bibtex 上是正确的,尽管我很确定 citekeys 中的下划线是没问题的),请注意 Zotero 可以导出 BibLaTeX 和 BibTeX。对于您可能正在使用的 Bettter BibTeX 插件也是如此(如果没有,应该考虑)。您的 MWE 来自 BibLaTeX 导出。Zotero 的 BibTeX 导出将自动执行 Ross 在 MWE 中为您修复的确切操作:正确地将日期分为年份和月份字段。(它还将执行其他一些不同的事情,使其与标准 bibtex 更加一致)。
答案2
我想指出的是,您正在使用 Elsevier 的类文件,elsarticle.cls
以及bst
为 Springer 期刊准备的文件。很难想象这是您的故意。如果您正在为其中一个出版商准备论文,则需要查看他们的说明。
尽管如此,使 MWE 工作的关键是识别文件frontiersinSCNS_ENG_HUMS
是一种authoryear
样式。这意味着您需要告诉 elsarticle 类您正在使用authoryear
。这可以通过将该选项添加到类选项中来完成。要解决空年份警告,只需添加year = {2005}
到 bibitem 中。
我还从文件名和 bibitem 键中删除了破折号和下划线。这些在 中没有问题BibLaTeX
,但我认为它们在这里会产生问题。bibitem 中的某个地方可能还存在另一个错误。我最终将其粘贴到 JabRef 中,运行Cleanup Entry
并粘贴回 MWE。
MWE和结果如下:
\documentclass[preprint,authoryear]{elsarticle}
\begin{filecontents*}{InteractiveOptimization.bib}
@Article{packham05,
author = {Packham, I. S. J. and Rafiq, M. Y. and Borthwick, M. F. and Denham, S. L.},
title = {Interactive Visualisation for Decision Support and Evaluation of Robustness---in Theory and in Practice},
year = {2005},
volume = {19},
number = {4},
pages = {263--280},
note = {00019},
date = {2005-10},
doi = {10.1016/j.aei.2005.07.006},
issn = {1474-0346},
journal = {Advanced Engineering Informatics},
keywords = {decision support,Genetic algorithms,Interactive visualisation,Knowledge discovery,Robustness evaluation},
series = {Computing in Civil Engineering11th International Workshop of the European Group for Intelligent Computing in Engineering},
shortjournal = {Advanced Engineering Informatics},
timestamp = {2016-04-06T06:59:27Z},
url = {http://www.sciencedirect.com/science/article/pii/S1474034605000613},
urldate = {2016-04-06},
}
\end{filecontents*}
\begin{document}
fermentum \citep{packham05}
%\section{References}
%\bibliographystyle{model1-num-names}
\bibliographystyle{frontiersinSCNS_ENG_HUMS}
\bibliography{InteractiveOptimization}
\end{document}
答案3
因此,如果您像我一样,犯了很多错误的引用并且不想手动修复它,那么您可以使用正则表达式:
(journaltitle = {([^}]+)})
并替换为:
journaltitle = {$2},\n\tjournal = {$2}
以修正期刊名称。年份如下:
(\s(date = {([^-}]+)-[^}]+}))
并替换为:
$1,\n\tyear = {$3}
话虽如此,我不太擅长使用正则表达式,所以你应该手动检查每个匹配项,看看它是否按照你的要求执行。此外,如果你有一些已经正确的项目,这将添加重复的日记帐和年份字段。
编辑:我不再这样做了。我已经通过使用解决了这个问题betterbibtex。