1. 简介

在编写学术论文或技术文档时,插入 URL 是一个常见需求。但如果不加处理,LaTeX 默认的排版方式可能会导致 URL 超出页面边界,影响阅读体验。

本文将介绍如何使用 LaTeX 的 urlxurl 包来优雅地插入和排版 URL。⚠️注意:本文重点在于 显示 URL,而不是创建可点击的超链接(这部分由 hyperref 包负责)。

如果你的文档是用于打印或归档,而非电子发布,那么正确显示 URL 比可点击性更重要。


2. 使用 url

最简单的方法是使用 url 包。在导言区引入它:

\usepackage{url}

然后在正文中使用 \url{} 命令插入 URL:

Three popular news websites are \url{www.cnn.com}, \url{www.bbc.com}, and \url{news.google.com}.

输出效果如下图所示:

A simple example of the use of \url

✅优点:简单易用
❌缺点:URL 不会自动换行,容易超出页面宽度


3. 修改 URL 字体样式

默认情况下,url 使用等宽字体(typewriter)。我们可以通过 \urlstyle{} 来修改显示字体:

\urlstyle{sf}

支持的字体样式有:

  • tt:等宽字体(typewriter)
  • rm:罗马体(roman)
  • sf:无衬线字体(sans-serif)
  • same:与正文一致

比如使用 sf

Using \urlstyle{sf} to change font to san-serif

使用 same

using \urlstyle{same} to put urls in the same style as surrounding text


4. 不同用途使用不同样式

有时我们希望区分不同类型的 URL,比如 email、网站、文件路径等。可以使用 \DeclareUrlCommand 自定义命令:

\usepackage{url}
\DeclareUrlCommand\email{\urlstyle{tt}}
\DeclareUrlCommand\website{\urlstyle{sf}}
\DeclareUrlCommand\directory{\urlstyle{same}}
\begin{document}
You can contact me at \email{john.doe@example.com}. My website is \website{www.circus.com}.
All files referred to in this article are available in \directory{/home/circus/utilities}.
\end{document}

输出效果如下:

Example of different url styles for different purposes.

这种做法让文档更清晰、结构更清晰,是推荐的实践方式。


5. 多行 URL 显示问题

默认情况下,url不会在 URL 中插入换行符,这可能导致 URL 超出页面边界。

比如:

The website for Cormen, Leiserson, Rivest, and Stein's famous book is 
\url{mitpress.mit.edu/9780262046305/introduction-to-algorithms/}. 
The title of the book is {\em Introduction to Algorithms, Fourth Edition}.

输出如下:

The package url normally never breaks URLs over lines.

解决方法是使用 hyphens 选项:

\usepackage[hyphens]{url}

这样允许在 URL 中已有的连字符处换行:

[\usepackage[hyphens]{url} will break gracefully over lines.](/wp-content/uploads/sites/4/2022/09/img_6332792a114fa.svg)


6. 使用 xurl 实现更灵活的换行

如果你希望 URL 能在任意位置换行(不只是连字符),可以使用 xurl 包。它扩展了 url 的能力,支持在以下字符处换行:

/, ., :, \, *, -, ', ", ~

示例代码如下:

\usepackage{xurl}
\begin{document}
Xxxxx yyyy zzzz wwwww ppppp qqqq rrrrrrrr aaaa bbbbb ccccc
\url{www.theshop.biz/The-Best-Speaker/ms/G0AQ69421N?ref"=Jan.xnum=DR9DZXAPHRMGW}.
\end{document}

输出如下:

xurl will break a URL at any location whether punctuation or not

另一个例子:

Xxxxx yyyy zzzz wwwww ppppp qqq
\url{www.theshop.biz/The-Best-Speaker/ms/G0AQ69421N?ref"=Jan.xnum=DR9DZXAPHRMGW}.

输出:

xurl may break a URL in the middle of a word

⚠️注意:虽然 xurl 更灵活,但在某些场合中 URL 被“断开在单词中间”可能影响可读性,需根据实际排版需求权衡使用。


7. 总结

本文介绍了如何在 LaTeX 中插入 URL:

包名 特点
url 简单实用,仅在连字符处换行
xurl 更灵活,支持在任意字符处换行

✅推荐做法:使用 xurl 包 + \url{} 命令,兼顾美观与实用性。

如果你希望 URL 可点击,可以结合 hyperrefurl 使用,但本文不涉及这部分内容。



原始标题:How to Write URLs in LaTeX