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
快捷方式,那么唯一的选择是:
在排版参考书目之前禁用速记
\let~\nobreakspace \bibliography{<filename>}
~
从文件中删除.bib
。毕竟,这只是一个“搜索和替换”,并且~
不会执行任何操作,因为名称肯定位于行首。
(注意:我改变了禁用快捷方式的方式,因为\shorthandoff{~}
产生了不良效果。)