我在更新参考书目时遇到了问题,据我所知,这与该网站之前的问题不同。
问题是这样的。假设我在一个文档中引用了两部不同的作品,并编译了 pdf。我最终得到了一个包含与这两部作品相关的信息的参考书目。到目前为止一切顺利。但如果我决定不引用其中一部作品并删除该作品的所有文内引用,则所引用的作品仍会出现在参考书目中。换句话说,当我添加新的引用时,我的参考书目总是会更新,但当我删除它们时永远不会更新。我摆脱不需要的书目条目的唯一方法是添加以前未引用的作品!
以下是 MWE:
\documentclass[12pt]{article}
\usepackage[margin=30mm]{geometry}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{Adams1998,
address = {Stanford},
author = {Adams, Ernest W.},
file = {:Users/James/Library/Application Support/Mendeley Desktop/Downloaded/Adams - 1998 - A Primer of Probability Logic.pdf:pdf},
publisher = {CSLI Publications},
title = {{A Primer of Probability Logic}},
year = {1998}
}
@incollection{Cotnoir2018,
address = {Cham},
author = {Cotnoir, Aaron J.},
booktitle = {Pluralisms in Truth and Logic},
doi = {10.1007/978-3-319-98346-2_13},
editor = {Wyatt, Jeremy and Pedersen, Nikolaj J. L. L. and Kellen, Nathan},
file = {:Users/James/Library/Application Support/Mendeley Desktop/Downloaded/Cotnoir - 2018 - Logical Nihilism.pdf:pdf},
pages = {301--329},
publisher = { Palgrave Macmillan},
title = {{Logical Nihilism}},
url = {https://doi.org/10.1007/978-3-319-98346-2{\_}13},
year = {2018}
}
@article{Steinberger2019,
author = {Steinberger, Florian},
doi = {10.5840/jphil201911611},
file = {:Users/James/Documents/St Andrews/Philosophy/MPhil/MPhil Thesis/Readings/Normativity/Three Ways Logic is Normative Steinberger.pdf:pdf},
issn = {0022-362X},
journal = {The Journal of Philosophy},
month = {mar},
number = {1},
pages = {5--31},
title = {{Three Ways in Which Logic Might Be Normative}},
url = {http://www.pdcnet.org/oom/service?url{\_}ver=Z39.88-2004{\&}rft{\_}val{\_}fmt={\&}rft.imuse{\_}id=jphil{\_}2019{\_}0116{\_}0001{\_}0005{\_}0031{\&}svc{\_}id=info:www.pdcnet.org/collection},
volume = {116},
year = {2019}
}
\end{filecontents}
\usepackage[style=apa, natbib=true, doi=false, url=false]{biblatex}
\addbibresource{/Users/James/Documents/MWEs/Bibliography Formatting.bib}
\AtEveryBibitem{\clearfield{number}}
\DeclareFieldFormat[article]{volume}{\apanum{#1}}
\setlength\bibitemsep{1.5\itemsep}
\title{Test Document}
\begin{document}
\maketitle
Suppose I cite \citet{Adams1998} and \citet{Steinberger2019}.
\printbibliography
\end{document}
输出:
但是现在,如果我删除一条引文,如下所示:
\documentclass[12pt]{article}
\usepackage[margin=30mm]{geometry}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{Adams1998,
address = {Stanford},
author = {Adams, Ernest W.},
file = {:Users/James/Library/Application Support/Mendeley Desktop/Downloaded/Adams - 1998 - A Primer of Probability Logic.pdf:pdf},
publisher = {CSLI Publications},
title = {{A Primer of Probability Logic}},
year = {1998}
}
@incollection{Cotnoir2018,
address = {Cham},
author = {Cotnoir, Aaron J.},
booktitle = {Pluralisms in Truth and Logic},
doi = {10.1007/978-3-319-98346-2_13},
editor = {Wyatt, Jeremy and Pedersen, Nikolaj J. L. L. and Kellen, Nathan},
file = {:Users/James/Library/Application Support/Mendeley Desktop/Downloaded/Cotnoir - 2018 - Logical Nihilism.pdf:pdf},
pages = {301--329},
publisher = { Palgrave Macmillan},
title = {{Logical Nihilism}},
url = {https://doi.org/10.1007/978-3-319-98346-2{\_}13},
year = {2018}
}
@article{Steinberger2019,
author = {Steinberger, Florian},
doi = {10.5840/jphil201911611},
file = {:Users/James/Documents/St Andrews/Philosophy/MPhil/MPhil Thesis/Readings/Normativity/Three Ways Logic is Normative Steinberger.pdf:pdf},
issn = {0022-362X},
journal = {The Journal of Philosophy},
month = {mar},
number = {1},
pages = {5--31},
title = {{Three Ways in Which Logic Might Be Normative}},
url = {http://www.pdcnet.org/oom/service?url{\_}ver=Z39.88-2004{\&}rft{\_}val{\_}fmt={\&}rft.imuse{\_}id=jphil{\_}2019{\_}0116{\_}0001{\_}0005{\_}0031{\&}svc{\_}id=info:www.pdcnet.org/collection},
volume = {116},
year = {2019}
}
\end{filecontents}
\usepackage[style=apa, natbib=true, doi=false, url=false]{biblatex}
\addbibresource{/Users/James/Documents/MWEs/Bibliography Formatting.bib}
\AtEveryBibitem{\clearfield{number}}
\DeclareFieldFormat[article]{volume}{\apanum{#1}}
\setlength\bibitemsep{1.5\itemsep}
\title{Test Document}
\begin{document}
\maketitle
Suppose I cite \citet{Adams1998}.
\printbibliography
\end{document}
输出:
但是参考书目中的 Steinberger 条目应该消失了!如果有任何相关性,我正在使用 Biblatex 和 Biber。谢谢!
答案1
这是意料之中的。
使用 LaTeX 生成参考书目和引文涉及几个步骤.bib
,这些步骤涉及运行 LaTeX(pdfLaTeX、LuaLaTeX、XeLaTeX 等)和 Biber(或 BIbTeX)。使用问号或粗体引用关键字代替引用编号出色地解释了需要发生什么,你一定要读一读 Paul Stanley 的回答,但结果是
- LaTeX 将请求的引用写入临时文件(对于 Biber 来说,该文件就是
.bcf
文件), - 然后 Biber 读取
.bcf
文件,然后从.bib
文件中编译必要的信息并将排序后的数据写入.bbl
文件, - 最后,LaTeX 从文件中读取 bib 数据
.bbl
并创建引文和参考书目。
因此该过程涉及(至少)运行 LaTeX,然后运行 Biber,然后再次运行 LaTeX。
此过程解释了您所看到的内容。在您的示例中,您引用了Adams1998
和Steinberger2019
。第一次运行 LaTeX 时,LaTeX 会将.bcf
您引用 和 的文件Adams1998
写入其中Steinberger2019
。然后运行 Biber,Biber 会读取您的.bib
文件并生成一个包含和.bbl
数据的文件。最后再次运行 LaTeX:LaTeX 会读取文件,使用该数据解析引用并生成参考书目。Adams1998
Steinberger2019
.bbl
如果您现在删除其中一条引文,只留下对的引文Adams1998
,然后重新运行 LaTeX,文件.bbl
仍将包含您请求Adams1998
和时上次运行的所有信息Steinberger2019
。特别是的数据Steinberger2019
仍然存在,并将产生参考书目条目。
事实上biblatex
会警告你这一点。该.log
文件包含以下行
LaTeX Warning: There were undefined references. Package biblatex Warning: Please (re)run Biber on the file: (biblatex) dropcitetest (biblatex) and rerun LaTeX afterwards.
如果我们真的很挑剔,我们可能会指出“有未定义的引用”并不完全正确,因为所有引用/参考是定义。问题是,我们最终遇到了一个引用过多的情况。但这是一些编辑器和其他工具解析的标准消息,因此它可用于触发自动重新运行。
该消息甚至会告诉您如何解决该问题:运行 Biber,然后再次运行 LaTeX。这就足够了,因为 LaTeX 运行将.bcf
只写入您想要的Adams1998
。后续的 Biber 运行将只Adams1998
从读取.bib
并将其数据写入.bbl
。然后 LaTeX 运行将读取.bbl
并生成不带的参考书目Steinberger2019
。
始终读取.log
输出如果他们.log
建议您采取某种行动,那么采取该行动通常是一个好主意。
在 TeXstudio 中,您可以从工具菜单手动重新运行 Biber 和 LaTeX。
显然,TeXstudio 的启发式方法(通常会自动为您运行 LaTeX 和 Biber)不会发现在这种情况下应该重新运行 Biber,并且只有在您添加之前未引用的参考文献时才会触发重新运行。您可以向 TeXstudio 开发人员提出这个问题:https://github.com/texstudio-org/texstudio/issues。
我发现该工具可以latexmk
非常可靠地检测这些内容,并为使用biblatex
Biber 的文档提供非常好的结果。