我在使用 TeXlive 2019(Fedora 版本 32)时遇到了以下问题:最小文件(用于打印并检查参考书目)在此处挂在不寻常的作者的名字上。
\documentclass[english, spanish]{article}
\listfiles
\usepackage{babel}
\usepackage{babelbib}
\usepackage[utf8]{inputenc}
\begin{document}
\selectlanguage{spanish}
\nocite{*}
\bibliographystyle{babplain-fl}
%\bibliographystyle{plain}
\bibliography{referencias}
\end{document}
书目数据库(非常混乱的条目)是:
@Article{2020SciPy-NMeth,
language = {english},
author = {Polat, {\.I}lhan},
title = {{SciPy} 1.0: {F}undamental Algorithms for Scientific
Computing in {P}ython},
journal = {Nature Methods},
year = 2020,
volume = 17,
pages = {261--272},
adsurl = {https://rdcu.be/b08Wh},
doi = {10.1038/s41592-019-0686-2}
}
它挂在名称上(某种无限循环{\.I}
)。
奇怪的是,使用回忆录类的相同设置可以很好地处理全文。
答案1
babel-spanish
重新定义,\.
以便您使用\...
来方便地替换\dots
。这发生在 中\textspanish
,这是一个或多或少babel-spanish
添加到 的内部宏\extrasspanish
。在重新定义之前\textspanish
保存。\.
如果由于某种原因被调用两次,就会出现您面临的问题\textspanish
:第一次调用重新定义\.
,第二次调用将该重新定义存储在已保存的定义中\.
。当我们尝试使用时,这会导致无限循环\.
。
问题是 的babelbib
语言切换\btxselectlanguage
命令
\csname extras#1\endcsname
\selectlanguage{#1}%
这意味着它执行extras<language>
两次(一次显式执行,一次通过 执行\selectlanguage
)。因此对于西班牙语,\textspanish
执行两次。
您可以babel
使用babel-spanish
选项进行加载es-sloppy
,这将禁用的重新定义\.
,但这也会禁用许多其他babel-spanish
功能。
然而,重新定义以阻止它单独调用语言附加功能似乎更合乎逻辑\btxselectlanguage
。对的调用\csname extras#1\endcsname
是多余的,可以删除(感谢哈维尔·贝佐斯谁指出在评论中那它应该被删除,因为它实际上不支持\extras<language>
在适当的上下文之外手动执行)。
\documentclass[english, spanish]{article}
\listfiles
\usepackage{babel}
\usepackage{babelbib}
\usepackage[utf8]{inputenc}
\renewcommand\btxselectlanguage[1]{%
\bbbbifundefined{bibs#1}{%
\bbbbifundefined{date#1}{%
\PackageError{babelbib}{Language #1 in bibliography not loaded
by babel}{%
The language #1 hasn't been loaded by babel.
Add it to the\MessageBreak
options of the \string\usepackage{babel} command or to the
global options.}%
}{%
\ifbbbbfixlanguage
\PackageWarning{babelbib}{Language #1 in bibliography
unknown\MessageBreak
by babelbib. Hyphenation will be\MessageBreak
incorrect}%
\else
\PackageError{babelbib}{Language #1 in bibliography unknown by
babelbib}{%
There are no definitions for #1 available in the
current\MessageBreak
version of babelbib. Please contact [email protected].}%
\fi
}%
}{%
\selectlanguage{#1}%
}%
}
\begin{filecontents}{\jobname.bib}
@article{2020SciPy-NMeth,
language = {english},
author = {Polat, {\.I}lhan},
title = {{SciPy} 1.0: {F}undamental Algorithms for Scientific
Computing in {P}ython},
journal = {Nature Methods},
year = 2020,
volume = 17,
pages = {261-272},
adsurl = {https://rdcu.be/b08Wh},
doi = {10.1038/s41592-019-0686-2},
}
\end{filecontents}
\begin{document}
\nocite{*}
\bibliographystyle{babplain-fl}
\bibliography{\jobname}
\end{document}