使用 \url 或 \href 生成 punycode URI 的正确方法是什么?
使用 lualatex 的 MWE:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[unicode=true]{hyperref}
\begin{document}
\href{http://π.example.com/}{http://π.example.com/}
\end{document}
PDF 生成为“http://.example.com/“而不是punycode”http://xn--1xa.example.com“我需要链接以目标受众的语言显示在 PDF 阅读器中,这样他们就应该能够看到http://π.example.com/当他们将鼠标悬停在链接上时。使用百分比代码可在 pdf 查看器中正确显示:
http://\%CF\%80.example.com/
但会将您带到 %CF%80.example.com 而不是 xn--1xa.example.com。
答案1
Hyperref 目前尚未实现 punycode,但您可以使用任何在线编码器并明确添加字符串,例如
\documentclass{article}
%\usepackage[utf8]{inputenc}
\usepackage[unicode=true]{hyperref}
\usepackage{fontspec}
\setmainfont{Arial}
\begin{document}
1 \href{http://xn--1xa.example.com}{http://π.example.com/}
\end{document}
注意,我删除了inputenc
不应与 luatex 一起使用的字体,并切换到了具有希腊语和拉丁语的字体。
请注意,正如你暗示的那样,你正在使用 luatex,原则上你可以使用它
https://github.com/HalosGhost/lua-punycode/tree/master/src
但是它似乎期望的 utf8 库版本与 luatex 的版本略有不同,unicode.utf8
所以我现在无法让它工作。