我们在工作中共享一个大型 BibTeX 文件,我注意到有许多条目在\
首字母后,例如author = {D.P.\ Bertsekas}
或author = {D.\ P.\ Bertsekas}
。这样做有什么好处吗?(我想我明白原因:为了避免句号后出现大空格 - 但我希望 BibTeX 足够聪明,无论如何都能避免这种情况?)
而且更重要的是,它会引起问题吗?
那 呢author = {Bertsekas, D.\ P.\ }
?这实际上让我意识到了这个问题,因为 JabRef 从 v. 5.0 开始删除尾随空格,所以它将其重新保存为author = {Bertsekas, D.\ P.\}
.. 并且是一个问题......(附带一个问题:如果它破坏了一个工作文件,尽管它的语法很奇怪,它是否应该被视为 JabRef 中的一个错误?)
答案1
总结我会不是\
在名字首字母后使用。
\
抑制自动插入的期望关系 ( ~
)
考虑
\documentclass{article}
\begin{filecontents}{\jobname.bib}
@book{a,
author = {A. Alpha},
title = {Title A},
year = {2010},
}
@book{b,
author = {B.\ Beta},
title = {Title B},
year = {2020},
}
\end{filecontents}
\begin{document}
\cite{a,b}
\bibliographystyle{plain}
\bibliography{\jobname}
\end{document}
请注意,.bbl
文件包含
\begin{thebibliography}{1}
\bibitem{a}
A.~Alpha.
\newblock {\em Title A}.
\newblock 2010.
\bibitem{b}
B.\ Beta.
\newblock {\em Title B}.
\newblock 2020.
\end{thebibliography}
这意味着~
如果您将名称输入为,BibTeX 会自动插入A. Alpha
,但如果您将其输入为 ,则不会自动插入B.\ Beta
。
由于~
避免了首字母后的换行,我认为使用 的形式~
在这里更可取。在这种情况下, 是\
有害的。
.\
.
通常与参考书目中的行为没有什么不同
情况表面上有所不同
\documentclass{article}
\begin{filecontents}{\jobname.bib}
@book{a,
author = {Anne A. Alpha},
title = {Title A},
year = {2010},
}
@book{b,
author = {Berta B.\ Beta},
title = {Title B},
year = {2020},
}
\end{filecontents}
\begin{document}
\cite{a,b}
\bibliographystyle{plain}
\bibliography{\jobname}
\end{document}
我们得到
\begin{thebibliography}{1}
\bibitem{a}
Anne~A. Alpha.
\newblock {\em Title A}.
\newblock 2010.
\bibitem{b}
Berta~B.\ Beta.
\newblock {\em Title B}.
\newblock 2020.
\end{thebibliography}
这次Anne~A. Alpha
有一个普通空间,但是有Berta~B.\ Beta
一个控制空间。
在我所知道的所有标准参考书目设置中,两者之间没有实际区别,因为参考书目是用\sfcode`\.\@m
或设置的\frenchspacing
,这意味着.
s 后的空格不会被放大(通常情况下是这样的\nonfrenchspacing
)。
更重要的是A. Alpha
,A.\ Alpha
在“正常”文档上下文中已经表现相同(得益于尤其是石灰指出这一点在评论中)。由于大写字母与小写字母的空间因子不同,因此大写字母后的句点后面的空格将变成正常空格。
当然,理论上可以改变标准行为以致于.\
行为.
有所不同,但合理的预期是不会出现这种情况。
\
最终可能会在.bbl
输出中将字符转换为宏
\
如果位于字段/名称部分的末尾并且空格被丢弃,则可能会出现更多问题
\documentclass{article}
\begin{filecontents}{\jobname.bib}
@book{a,
author = {Bertsekas, D.\ P.\ },
title = {Title A},
year = {2010},
}
@book{b,
author = {Bertsekas, D.\ P.\},
title = {Title B},
year = {2015},
}
@book{c,
author = {D.\ P.\ Bertsekas},
title = {Title C},
year = {2020},
}
\end{filecontents}
\begin{document}
\cite{a,b,c}
\bibliographystyle{plain}
\bibliography{\jobname}
\end{document}
给出
\begin{thebibliography}{1}
\bibitem{a}
D.\~P.\ Bertsekas.
\newblock {\em Title A}.
\newblock 2010.
\bibitem{b}
D.\~P.\ Bertsekas.
\newblock {\em Title B}.
\newblock 2015.
\bibitem{c}
D.\~P.\ Bertsekas.
\newblock {\em Title C}.
\newblock 2020.
\end{thebibliography}
结果是
这里的问题不是删除末尾的尾随空格(我必须检查一下,但我很确定 BibTeX 会自动丢弃前导和尾随空格)。问题是 BibTeX~
在姓名部分之间插入了 ,并与 组合\
,\~
因此在下一个字符上放置了一个波浪号。
因为 BibTeX 不是 LaTeX,所以.bib
说
author = {Name\},
但 BibTeX 会假设名称是Name\
。如果随后将名称打印在.bbl
文件中,则\
可能最终位于另一个字符旁边,然后该字符会变成宏。
文档仅提到D. E. Knuth
带有的版本\
绝对不受鼓励,甚至在我所知道的任何官方 BibTeX 文档中都没有提到过。btxdoc
只有
author = {D. E. Knuth},
因此我认为,这是首字母的预期输入。
通常\
更有可能产生负面影响,并且在标准设置中没有任何好处。我会避免使用它。
回顾一下
- BibTeX 已经可以自动在某些地方插入不可拆分空格来代替普通空格。特别是对于大多数样式来说,
D. P. Bertsekas
会变成。在这里可能比或更受欢迎。D.~P.~Bertsekas
~
\
.\
并且.
在参考书目中通常会表现相同(并且对于名称用例甚至在任何地方)- BibTeX 可能会在某些情况下删除空格,这可能会导致
\
变成仅仅反斜杠\
,在不幸的情况下,这可能会最终导致将某些东西变成不打算成为宏的宏。
请注意,D.P. Bertsekas
理想情况下应该是D. P. Bertsekas
,因为abbrv
缩写D.P. Bertsekas
为“D. Bertsekas”,因为它无法判断“DP”是两个首字母而不是一个名字。
答案2
正如所见,对此有多种答案,但听起来这里的主要问题是您的用户群的共识。我应该让他们聚在一起,在采取进一步行动之前达成共识。\
用于强制间隔;在之后使用相同的方法\rq
来执行此操作,除非有逗号或句号,但在确定格式之前,这里不需要澄清代码格式。