请选择 进入手机版 | 继续访问电脑版
楼主: janyiyi
6399 2

LaTeX技巧:使 LaTeX 文稿中的 URL 正确换行 [推广有奖]

  • 3关注
  • 17粉丝

讲师

27%

还不是VIP/贵宾

-

威望
0
论坛币
3211 个
通用积分
5056.8299
学术水平
539 点
热心指数
537 点
信用等级
538 点
经验
10157 点
帖子
300
精华
2
在线时间
88 小时
注册时间
2010-10-3
最后登录
2024-3-27

janyiyi 发表于 2017-6-2 10:29:07 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
LaTeX技巧:使 LaTeX 文稿中的 URL 正确换行LaTeX 工作室
大部分稍有经验的 LaTeX 用户,都知道使用 \url 命令在 LaTeX 文稿中插入 URL。更资深一些的用户,会使用 hyperref 宏包,而不是过时的 url 宏包来处理。
然而,不论是否资深,大多数用户应该都有遇到过 LaTeX 无法正确对 URL 进行折行的问题。此篇介绍一下如何处理。
TeX 对于断行和分页,是有专门的算法处理的。通常而言,如果一个单词(一整个 \url 可以看做是一个单词),TeX 不知道从何处进行分词,那么 TeX 就不会在这个单词上断行。对于很长的单词,比如一个 \url,如果 TeX 不能在此处断行,而它又处于某一行的末尾,就很容易出现 overful box。
因此,本质上,这个问题需要让 \url 命令,知道我们允许在何处断行。
hyperref 宏包提供了两个宏,\UrlBreaks 以及 \UrlBigBreaks,用于告知 TeX,用户允许在何处截断 URL 以便换行。二者有一些细微的差别,但此处按下不表——大多数读者只需要使用 \UrlBreaks 即可。
  1. \documentclass{article}

  2. \usepackage{hyperref}

  3. \makeatletter

  4. \def\UrlAlphabet{%

  5.       \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j%

  6.       \do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t%

  7.       \do\u\do\v\do\w\do\x\do\y\do\z\do\A\do\B\do\C\do\D%

  8.       \do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M\do\N%

  9.       \do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X%

  10.       \do\Y\do\Z}

  11. \def\UrlDigits{\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9\do\0}

  12. \g@addto@macro{\UrlBreaks}{\UrlOrds}

  13. \g@addto@macro{\UrlBreaks}{\UrlAlphabet}

  14. \g@addto@macro{\UrlBreaks}{\UrlDigits}

  15. \makeatother

  16. \begin{document}

  17. \url{http://foo.bar.com/documentclassarticleusepackagehyperrefbegindocumenturlenddocument}

  18. \end{document}
复制代码

在这里,\UrlOrds 里记录了一些特殊符号(例如 - 和 _),而 \UrlAlphabet 记录了 26 个英文字母的大小写,\UrlDigits 则记录了 10 个阿拉伯数字。
而后,我们使用 LaTeX 内核提供的 \g@addto@marco,依次将上述三个宏的内容,续接在 \UrlBreaks 之后。这就是说,我们允许在上述所有字符处断行。
如此,编译出的结果也是符合预期的。
[/url][url=http://7xnc7f.com1.z0.glb.clouddn.com/wp-content/uploads/2017/05/urlbreak.png]

选自:https://liam0205.me/2017/05/17/help-the-url-command-from-hyperref-to-break-at-line-wrapping-point/


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:LaTeX atex Late TeX LAT 工作室 技巧 单词 如何 用户

已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
oliyiyi + 80 + 5 + 5 + 5 精彩帖子

总评分: 论坛币 + 80  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

oliyiyi 发表于 2022-9-27 17:58:12 |显示全部楼层 |坛友微信交流群
谢谢分享

使用道具

tianwk 发表于 2024-2-5 00:48:13 |显示全部楼层 |坛友微信交流群
thanks for sharing

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 14:24