长 URL 延伸到边距 - 它在下划线处中断,但为时已晚

长 URL 延伸到边距 - 它在下划线处中断,但为时已晚

在我的论文中,我有一个很长的 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}})

相关内容