我正在使用 LuaLaTex、TexShop、Class Memoir。
我正在尝试制作一个超链接文本,其目标 URL 包含 Unicode 字符。例如,https://namu.wiki/w/대전역。
手动将 Unicode 字符转换为百分比编码并将输出放入 \href 中:
\href{https://namu.wiki/w/\%EB\%8C\%80\%EC\%A0\%84\%EC\%97\%AD}{대전역 link}
一个缺点是非常很麻烦。有没有更方便的方法来做到这一点?
启用 Unicode 选项\usepackage[unicode]{hyperref}
不起作用,而且我听说即使它起作用,某些 PDF 查看器也无法处理此类 PDF 文件。
平均能量损失
\class{memoir}
\usepackage{hyperref}
\begin{document}
\href{https://namu.wiki/w/\%EB\%8C\%80\%EC\%A0\%84\%EC\%97\%AD}{대전역 link} % This correctly produces a working hyperlink to https://namu.wiki/w/대전역
\href{https://namu.wiki/w/대전역}{대전역 link} % Clicking this will get you to https://namu.wiki/w/ (note: 대전역 omitted)
\end{document}
答案1
这lua 维基给出%
-encoding 作为示例字符串函数
你可以使用它作为
\documentclass{article}
\makeatletter
\directlua{function url_encode(str)
if (str) then
str = string.gsub (str, "\string\n", "\string\r\string\n")
str = string.gsub (str, "([^\@percentchar w \@percentchar -\@percentchar _\@percentchar .\@percentchar \string~])",
function (c) return string.format ("\@percentchar \@percentchar \@percentchar 02X", string.byte(c)) end)
str = string.gsub (str, " ", "+")
end
return str
end}
\makeatother
\def\zz#1{\directlua{
print(url_encode('\detokenize{#1}'))
}}
\begin{document}
\zz{https://namu.wiki/w/대전역}
\end{document}
这只是使用print()
将编码的字符串放在终端上
https%3A%2F%2Fnamu.wiki%2Fw%2F%EB%8C%80%EC%A0%84%EC%97%AD
但是您当然可以替换print
及其tex.print
变体以将其传回 TeX。