参考书目中的 URL:LaTeX 未按预期换行

参考书目中的 URL:LaTeX 未按预期换行

我试图在参考书目中包含长 URL,但这些 URL 经常会溢出到文档的边缘。

我看到过很多关于在参考书目中断开 URL 的问题,但在尝试了所有解决方案后,我还是没有找到任何可以完全解决我的问题的方法。显然有很多方法可以让 LaTeX 在 URL 的不同位置断行。但就我而言,即使 LaTeX 在某些地方断行,我仍然会在某些 URL 中出现溢出。

以下是我使用的代码:

\usepackage[hyphens]{url}
\usepackage{hyperref}
\hypersetup{breaklinks=true}

\urlstyle{same}
\usepackage{cite}

并附有以下参考书目条目:

@misc(webrtc,
    organization={W3C WebRTC Working Group},
    title={WebRTC 1.0: Real-time Communication Between Browsers},
    howpublished={\url{http://www.w3.org/TR/2012/WD-webrtc-20120821/}}
)

@misc(android_javascriptinterface,
    organization={Android Open Source project},
    title={Android WebView addJavascriptInterface reference},
    howpublished={\url{http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object, java.lang.String)}}
)

我得到这个,例如:

在此处输入图片描述

关于 Android 的条目超出了边框:我的专栏应该在您可以在第一行读到“浏览器。”或在第三行读到“http:”的地方结束。

编辑:当我尝试为我的问题创建一个最小示例时,我注意到这仅在使用 IEICE 模板文件时发生。您可以在这里找到它:http://www.ieice.org/ftp/tex/ieice/LaTeX2e/但是,如果您不想提取档案并找到正确的文件,我也将其放在那里:http://pastebin.com/BKi2cyMQ

这是我的最小示例:

.tex 文件:

\documentclass[paper]{ieice}

\usepackage[hyphens]{url}
\usepackage[hidelinks]{hyperref}
\hypersetup{breaklinks=true}
\urlstyle{same}
\usepackage{cite}

\title{Test document}
\begin{document}

this\cite{upnp_spec} is a test\cite{android_javascriptinterface}

\bibliographystyle{plain}
\bibliography{refs_min}

\end{document}

和 refs_min.bib 文件:

@misc(android_javascriptinterface,
    organization={Android Open Source project},
    title={Android WebView addJavascriptInterface reference},
    howpublished={\url{http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object, java.lang.String)}}
)

@misc(upnp_spec,
    organization = {UPnP Forum},
    title = {UPnP Device Architecture 1.1},
    howpublished = {\url{http://upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.1.pdf}}
)

有什么方法可以修复这个问题吗?

答案1

url包通过构造提供了一个有趣的额外灵活性\Urlmuskip。这指定了可拆分字符周围的间距。默认情况下,0mu但是您可以为其设置一些粘合规范:

\Urlmuskip=0mu plus 1mu

(不幸的是,手册中的例子url是错误的。它说\Urlmuskip=0pt plus 1mu。作为数学跳过表达式,唯一允许的单位是mu。)

无论如何,在您的示例中,这给出:

示例输出

\documentclass[paper]{ieice}

\usepackage[hyphens]{url}
\usepackage[hidelinks]{hyperref}
\hypersetup{breaklinks=true}
\urlstyle{same}
\usepackage{cite}

\title{Test document}
\begin{document}

this\cite{upnp_spec} is a test\cite{android_javascriptinterface} \cite{Author:Title}

\Urlmuskip=0mu plus 1mu\relax
\bibliographystyle{plain}
\bibliography{refs_min}

\end{document}

在您的文件中增加一个额外条目bib

\raggedright其他人可能尝试帮助的事情包括使参考书目右对齐。最简单的方法是在命令前写入\bibliography。包提供了更好的右对齐格式ragged2e。不幸的是,您的类定义的Center环境与 冲突ragged2e,因此在这种情况下,您必须按如下方式加载它:

\let\clsCenter\Center\let\clsendCenter\endCenter
\let\Center\undefined\let\endCenter\undefined
\usepackage{ragged2e}
\let\Center\clsCenter
\let\endCenter\clsendCenter

\RaggedRight然后,您可以在命令之前发出\bibliography。如果参考书目之后有文本,您可以使用该\justifying命令再次打开正常格式。

答案2

https://norwied.wordpress.com/2012/07/10/how-to-break-long-urls-in-bibtex/

\usepackage{url}
\def\UrlBreaks{\do\/\do-}
\usepackage{breakurl}
\usepackage[breaklinks]{hyperref}

答案3

使用 时biblatex,也可以通过选项实现block=ragged,请参阅http://mirrors.ibiblio.org/CTAN/macros/latex/contrib/biblatex/doc/biblatex.pdf ie\usepackage[block=ragged]{biblatex}就可以了

答案4

我尝试了所有这些解决方案,但都没有用。最终对我有用的方法是\sloppy在 之前添加命令\printbibliography

\begingroup
\sloppy
\printbibliography
\endgroup

(此解决方案归功于苏雷什潜伏静静

相关内容