我正在使用 LNCS 样式撰写论文,并且收到很多Underfull \hbox
警告,因为从 Bib 项目的 doi 属性生成的 URL 不会分成多行。
LNCS 风格将书目项目 doi 值如:转换11.1111/111-1-1111-1111-1\_11
为 URL 形式:https://doi.org/11.1111/111-1-1111-1111-111
。
以下是生成警告的最小工作示例:
\documentclass{llncs}
\begin{document}
Hello world, I cite somebody here \cite{Somebody}.
\bibliographystyle{splncs04}
\bibliography{paper-bibliography}
\end{document}
在该paper-bibliography.bib
文件中我有以下条目:
@inbook{Somebody,
author = {Somebody Someone},
year = {2014},
pages = {193--198},
title = {Paper, Rock, and Scissors},
isbn = {123-1-1234-1234-4},
doi = {11.1111/111-1-1111-1111-1\_11}
}
代码结果如下:
并生成以下警告:
Underfull \hbox (badness 10000)
我希望避免出现 Underfull 警告并得到以下结果,其中 URL 被分成两行,如下所示
为了获得预期结果,我所做的是对 Bib 条目进行一些破解:
@inbook{Somebody,
author = {Somebody Someone},
year = {2014},
pages = {193--198},
title = {Paper, Rock, and Scissors},
isbn = {123-1-1234-1234-4},
url = {\url{https://doi.org/11. 1111/111-1-1111-1111-1\_11}}
}
我将doi
条目改为:url = {\url{https://doi.org/11. 1111/111-1-1111-1111-1\_11}}
并能够获得所需的结果。但是,我认为以这种方式更改所有 Bib 条目的 doi 值不是一个好主意。
是否有任何适当的方法可以在不修改 Bib 项目的 doi 值的情况下获得预期结果?
答案1
一个好的解决方案是xurl
允许在任意位置拆分 URL 的包。
splncs04
和的一个问题llncs.cls
是它将 doi 定义为纯文本字符串(除非hyperref
加载了包)。避免此问题的一种方法是添加
@preamble{ "\renewcommand{\doi}[1]{\url{https://doi.org/#1}}" }
到bib
文件,然后使用
doi = {11.1111/111-1-1111-1111-1\_11}
即,对于 doi(因此 doi 没有通用前缀)。如果想要 doi 与文本采用相同的字体,请包含
\urlstyle{rm}
在序言中。