在我的论文中,我有一个很长的 URL,其中包含许多下划线字符作为单词分隔符(Wiki 软件就是这样做的)。这些 URL 在下划线处断开(很好!),但为时已晚,导致文本行延伸到页边距。有一个更早的下划线,但那里没有断开。我宁愿一行文本更短,也不愿一行延伸到页边距。
我正在使用学校特有的文档类,该类源自 amsbook,使用 hyperref。我阅读了很多关于类似问题的论坛帖子,但 (a) 没有找到与我的问题完全匹配的帖子(下划线断开,但不是最好的),并且 (b) 其他人建议的解决方案对我不起作用:我尝试传递 [连字符] 选项,但没有效果(如预期的那样)。我也尝试了 \breakurl 包,但我的系统使用 pdflatex,\breakurl 不支持它。
非常感谢您的建议 - 学校标记了我的论文,因为这些 URL 超出了要求的边距,我已经没有别的办法了。最后的办法是将 URL 显示为纯文本并强制使用其他格式 - 我想避免这种情况。
我对 MWE 的尝试:
\documentclass[hidelinks,12pt]{amsbook}
\RequirePackage[bookmarks, bookmarksopen=true, plainpages=false, pdfpagelabels, pdfpagelayout=SinglePage, breaklinks = true]{hyperref}
\begin{document}
\chapter{Troubleshooting long URLs}
\section{Test 1}
A complete list of participants and presentations can be found on the conference web site: \url{http://ruraro.rintint.edu/events/shipshops/index.php/Perplexity_and_Action_-_an_Interdisciplinary_Approach_to_Rationale_Synchro_Theory}
\end{document}
使用 pdflatex 编译后(实际上,我使用的是 Sublime Text CTRL-B),URL 中断两次:第一次在 events/ 之后,第二次在 Interdisciplinary_ 之后,尽管我更希望第二次中断发生在 an_ 之后。
编辑:天真地说,对我来说,关键似乎是 LaTeX(以及所有涉及的软件包)如何选择哪个下划线来打破 URL!为什么不在最后一个下划线处前行尾(边距方面)?目前,段落后的第一条下划线处会断开。
答案1
\documentclass[hidelinks,12pt]{amsbook}
\RequirePackage[bookmarks, bookmarksopen=true, plainpages=false, pdfpagelabels, pdfpagelayout=SinglePage, breaklinks = true]{hyperref}
\begin{document}
\chapter{Troubleshooting long URLs}
\section{Test 1}
A complete list of participants and presentations can be found on the conference web site: \href
{http://ruraro.rintint.edu/events/shipshops/index.php/Perplexity_and_Action_-_an_Interdisciplinary_Approach_to_Rationale_Synchro_Theory}%
{\texttt{http://ruraro.rintint.edu/events/ship\linebreak shops/index.php/Perplexity\string_and\string_Action\string_-\string_an\string_Interdisciplina\linebreak ry\string_Approach\string_to\string_Rationale\string_Synchro\string_Theory}}
\end{document}
答案2
将 URL 放在单独的段落中并使用\parbox
。它也适用于列表:
\documentclass[hidelinks,12pt]{amsbook}
\RequirePackage[bookmarks, bookmarksopen=true, plainpages=false, pdfpagelabels, pdfpagelayout=SinglePage, breaklinks = true]{hyperref}
\usepackage{enumitem}
\begin{document}
\chapter{Troubleshooting long URLs}
\section{Test 1}
A complete list of participants and presentations can be found on the conference web site: \medskip
\noindent%
\parbox{\linewidth}{\url{http://ruraro.rintint.edu/events/shipshops/index.php/Perplexity_and_Action_-_an_Interdisciplinary_Approach_to_Rationale_Synchro_Theory}}
\begin{itemize}[leftmargin = 1.6\parindent, before = \bigskip]
\item\parbox[t]{\dimexpr\linewidth-\leftmargin\relax}{\url{http://ruraro.rintint.edu/events/shipshops/index.php/Perplexity_and_Action_-_an_Interdisciplinary_Approach_to_Rationale_Synchro_Theory}}
\end{itemize}
\end{document}
答案3
您可以使用 \href 函数两次(或链接次数),两次都链接到同一个 URL,但第一次使用您希望在第一行显示的文本,第二次使用您希望在第二行显示的文本。换句话说,您决定换行符出现的位置。有点笨拙,但对我来说效果很好:
(\href{Full URL}{\underline{Text up to the end of line 1}} \href{Full URL}{\underline{Text for the start of line 2}})