我试图在参考书目中包含长 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}
就可以了