\documentclass{article} \usepackage{hyperref} \makeatletter \def\UrlAlphabet{% \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j% \do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t% \do\u\do\v\do\w\do\x\do\y\do\z\do\A\do\B\do\C\do\D% \do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M\do\N% \do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X% \do\Y\do\Z} \def\UrlDigits{\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9\do\0} \g@addto@macro{\UrlBreaks}{\UrlOrds} \g@addto@macro{\UrlBreaks}{\UrlAlphabet} \g@addto@macro{\UrlBreaks}{\UrlDigits} \makeatother \begin{document} \url{http://foo.bar.com/documentclassarticleusepackagehyperrefbegindocumenturlenddocument} \end{document}
在这里,\UrlOrds
里记录了一些特殊符号(例如 -
和 _
),而 \UrlAlphabet
记录了 26 个英文字母的大小写,\UrlDigits
则记录了 10 个阿拉伯数字。
而后,我们使用 LaTeX 内核提供的 \g@addto@marco
,依次将上述三个宏的内容,续接在 \UrlBreaks
之后。这就是说,我们允许在上述所有字符处断行。
如此,编译出的结果也是符合预期的。选自:https://liam0205.me/2017/05/17/help-the-url-command-from-hyperref-to-break-at-line-wrapping-point/
发表评论 取消回复