在 BibTeX 文件中的首字母后使用‘\’可以吗?

在 BibTeX 文件中的首字母后使用‘\’可以吗?

我们在工作中共享一个大型 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. AlphaA.\ 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}

结果是

DP(带波浪号)。

这里的问题不是删除末尾的尾随空格(我必须检查一下,但我很确定 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来执行此操作,除非有逗号或句号,但在确定格式之前,这里不需要澄清代码格式。

相关内容