作者字段中的波浪号使用爱沙尼亚语 babel 更改 S 字母

作者字段中的波浪号使用爱沙尼亚语 babel 更改 S 字母

Bibtex 将以下代码生成到 bbl 文件中。

\bibitem{Bell_1964}
J.~S. Bell, \enquote{On the {Einstein-Podolsky-Rosen} paradox,} Physics
\textbf{1}.

同样地

\bibitem{BellSpeakableAndNot}
J.~S. Bell, \emph{Speakable and Unspeakable in Quantum Mechanics; 2nd ed.}
(Cambridge Univ. Press, Cambridge, 2004), chap. Introduction to the
Hidden-Variable Question, pp. 37--38, Collected papers on quantum philosophy.

问题是输出中的 S 被替换为 Š,我不知道为什么,也不知道该如何修复。我尝试了不同的 bibtex 格式、编码和{}位置,但问题仍然存在。

我知道您可以通过直接删除 bbl 文件中 S 前面的 ~ 或将所有名称格式化为来解决这个问题{J. S. Bell},但我的论文中有很多参考文献,我想要干净的解决方案。

我已经在 Google 上搜索了一整天,真心希望你知道如何帮助我。

编辑:事实证明,这是 babel 包快捷方式的问题。所以现在我知道重现错误的最小示例如下:

\documentclass[12pt]{article}
\usepackage[estonian]{babel} % Estonian babel!
\usepackage[utf8]{inputenc}

\usepackage{filecontents} % Just of infile .bib data
\begin{filecontents*}{\jobname.bib}
@article{Bli74,
  author = {Blinder, Alan S.}
}
\end{filecontents*}

\begin{document}

\section{Foobars}
 barbarbar \cite{Bli74}
\bibliographystyle{plain}
\bibliography{\jobname}
\end{document}

相应的输出将是 latex + bibtex + latex + latex 之后:

1 Foobars
barbarbar [1]

访问
[1]AlanŠ。盲人。

答案1

唯一的解释是,你宣布

\usepackage[estonian]{babel}

如果你不需要诸如~S生成重音爱沙尼亚语字符的组合,因为你的文档是 UTF-8 编码的,那么说

\addto\extrasestonian{\let~\nobreakspace}

加载后即可babel。如果您需要babel快捷方式,那么唯一的选择是:

  1. 在排版参考书目之前禁用速记

    \let~\nobreakspace
    \bibliography{<filename>}
    
  2. ~从文件中删除.bib。毕竟,这只是一个“搜索和替换”,并且~不会执行任何操作,因为名称肯定位于行首。

(注意:我改变了禁用快捷方式的方式,因为\shorthandoff{~}产生了不良效果。)

相关内容