我使用的是 luatatex 1.0.4,并且已经找到了一些解决 URL 问题的解决方案。不过,我有一些特殊情况,但还没有找到解决方案。我的示例代码如下:
\documentclass[a4paper,11pt]{article}
\usepackage{fontspec}
\usepackage[english, ngerman]{babel}
\usepackage{hyperref}
\def\UrlBreaks{\do\/\do-\do\_\do\%} % for breaking long URLS additonally
\begin{document}
\href{http://google.com}{http://www.darinews.com/\%D8\%A7\%D8\%B2-\%D8\%B3\%D8\%B1\%DA\%AF\%DB\%8C\%D8\%B1\%DB\%8C-\%D9\%BE\%D8\%B1\%D9\%88\%D8\%A7\%D8\%B2-\%D9\%87\%D8\%A7\%DB\%8C-\%D8\%AE\%D8\%A7\%D8\%B1\%D8\%AC\%DB\%8C-\%D8\%A7\%D8\%B2-\%D9\%85\%DB\%8C\%D8\%AF\%D8\%A7\%D9\%86-\%D8\%A8\%DB\%8C\%D9\%86-\%D8\%A7/}
\end{document}
我知道这个样本看起来有些奇怪,但总体来说还是不错的。
我遇到的第一个问题是换行符不起作用。我知道我应该定义字符来断开长 URL。
- 我尝试
UrlBreaks
对字符执行此操作%
,但是没有效果。 - 如果我使用的话,换行符可以正常工作
\url
,但我不知道如何以不同于链接的方式指定名称。 - 我读到,
url
一旦使用 lualatex,该包就不再有用。因此我没有将其包含在内。
答案1
使用 \nolinkurl:
\documentclass[a4paper,11pt]{article}
\usepackage{fontspec}
\usepackage[english, ngerman]{babel}
\usepackage{hyperref}
\def\UrlBreaks{\do\/\do-\do\_\do\%} % for breaking long URLS additonally
\begin{document}
\href{http://google.com}{\nolinkurl{http://www.darinews.com/\%D8\%A7\%D8\%B2-\%D8\%B3\%D8\%B1\%DA\%AF\%DB\%8C\%D8\%B1\%DB\%8C-\%D9\%BE\%D8\%B1\%D9\%88\%D8\%A7\%D8\%B2-\%D9\%87\%D8\%A7\%DB\%8C-\%D8\%AE\%D8\%A7\%D8\%B1\%D8\%AC\%DB\%8C-\%D8\%A7\%D8\%B2-\%D9\%85\%DB\%8C\%D8\%AF\%D8\%A7\%D9\%86-\%D8\%A8\%DB\%8C\%D9\%86-\%D8\%A7/}}
\end{document}
答案2
有一个新的xurl
TeX Live 2018 中引入了处理 URL 中换行符的包:
\documentclass{article}
\usepackage{hyperref}
\usepackage{xurl}
\urlstyle{same} % don't use monospace font for urls
\begin{document}
\url{http://www.darinews.com/\%D8\%A7\%D8\%B2-\%D8\%B3\%D8\%B1\%DA\%AF\%DB\%8C\%D8\%B1\%DB\%8C-\%D9\%BE\%D8\%B1\%D9\%88\%D8\%A7\%D8\%B2-\%D9\%87\%D8\%A7\%DB\%8C-\%D8\%AE\%D8\%A7\%D8\%B1\%D8\%AC\%DB\%8C-\%D8\%A7\%D8\%B2-\%D9\%85\%DB\%8C\%D8\%AF\%D8\%A7\%D9\%86-\%D8\%A8\%DB\%8C\%D9\%86-\%D8\%A7/}
\href{http://www.darinews.com}{Darinews}
\end{document}