法语 URL 上带有重音符号是很常见的(因为法语单词带有重音符号)。最知名的利用这种可能性不将 URL 限制为 ASCII 字符的网站可能是 Wikipedia,但法语在线词典也使用它(正如我们在以下示例中看到的url hyperref 不适用于法语重音字符)。
这是包含上述 URL 中示例的 MWE(在 2013 年有效,但现在无效)。
\documentclass{article}
\usepackage{xcolor}
\usepackage[colorlinks,allcolors=blue]{hyperref}
\begin{document}
URL 1: \href{http://www.larousse.fr/dictionnaires/francais-anglais/%C3%A9cr%C3%A9mer/27576?q=%C3%A9cr%C3%A9m%C3%A9}{%
\nolinkurl{http://www.larousse.fr/dictionnaires/francais-anglais/écrémer/27576?q=écrémé}}
URL 2: \href{https://fi.wikipedia.org/wiki/Andr\%C3\%A9_Weil}
{\nolinkurl{https://fi.wikipedia.org/wiki/André_Weil}}
\end{document}
我们获得:
所有的“é”都消失了。
预期的:
http://www.larousse.fr/dictionnaires/francais-anglais/écrémer/27576?q=écrémé
和
https://fi.wikipedia.org/wiki/André_Weil
。
此外,如果我添加\usepackage[T1]{fontenc}
序言,如下所示:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage[colorlinks,allcolors=blue]{hyperref}
\begin{document}
URL 1: \href{http://www.larousse.fr/dictionnaires/francais-anglais/%C3%A9cr%C3%A9mer/27576?q=%C3%A9cr%C3%A9m%C3%A9}{%
\nolinkurl{http://www.larousse.fr/dictionnaires/francais-anglais/écrémer/27576?q=écrémé}}
URL 2: \href{https://fi.wikipedia.org/wiki/Andr\%C3\%A9_Weil}
{\nolinkurl{https://fi.wikipedia.org/wiki/André_Weil}}
\end{document}
我得到了这个奇怪的输出:
我如何获得:
http://www.larousse.fr/dictionnaires/francais-anglais/écrémer/27576?q=écrémé
和
https://fi.wikipedia.org/wiki/André_Weil
\usepackage[T1]{fontenc}
序言中也有这个内容吗?
(2021 年夏季编写的旧文档没有这些损坏的输出)。
更新:
Ulrike Fischer 在回答中说“带有非 ascii 字符的 url 从未在 pdflatex 上正常工作”。
但是在这里(在其他未更新的计算机上),使用 TeXlive 2021(实际上是 TeXlive 2022/dev),它可以工作:
当我点击链接时,浏览器会显示正确的页面。
答案1
带有非 ASCII 字符的 url 从未在 pdflatex 中正常工作。基本上,底层 url 包是在 url 和文件名中使用非 ASCII 字符是“您不应该做的事情”的时候编写的,并且当仅使用包时,url
您总是会得到当前的输出。hyperref 做得相当不错,可以让一些像您这样的字符é
更好地工作,但例如德语ß
也失败了。现在在当前的 LaTeX 中,非 ASCII 字符受到保护,因此您也可以使用 hyperref 获得使用原始 url 命令获得的结果。可以稍微改进 url 命令,但这对德语 ß 仍然不起作用。
% utf8 encoded file!
\documentclass{article}
\usepackage{iftex}
\ifluatex \else
\usepackage[T1]{fontenc}
\fi
\usepackage{hyperref}
\begin{document}
\makeatletter
Original url from url package: \HyOrg@url{grüße} \HyOrg@url{André_Weil}
\makeatother
Hyperref url: \url{grüße} \url{André_Weil}
\makeatletter
\def\Url@FormatString{%
\UrlFont
\Url@MathSetup
\mathcode"C3="8000 %more needed for other chars ...
$\fam\z@ \textfont\z@\font
\expandafter\UrlLeft\Url@String\UrlRight
\m@th$%
}%
\makeatother
Improved url: \url{grüße} \url{André_Weil}
\end{document}