![平均能量损失](https://linux22.com/image/363240/%E5%B9%B3%E5%9D%87%E8%83%BD%E9%87%8F%E6%8D%9F%E5%A4%B1.png)
附言:回答的原帖“自动将 href 中的 unicode 转换为百分号编码“可能会引起人们的兴趣。
一个好的答案必须能够:
- 使用编译LuaLaTeX
下面的 MWE 为第一个实例创建了一个很棒的 URL,即http://a.beautiful.url/?searchid=Test
,但它在第二个实例中却没有这样做,它仅仅创建了http://a.beautiful.url/?searchid=
。
现在,这是因为 URL 尚未国际化。但请注意,URL 将取决于mainentry
环境的(第一个也是唯一的)参数。在一个好的答案中,此环境的参数必须是:
- 输入使用真正的汉字而不是像在将它们转换为国际化 URL 时那样进行百分比编码
因此,对我来说重要的是它们至少是使用真正的汉字输入的,例如
疊詞
即使在使用它们时可能需要将它们转换为百分比编码,http://a.beautiful.url/?searchid=
例如
%E7%96%8A%E9%9F%B3%E8%A9%9E
最后,一个好的答案需要
- 使用一种方法来改变整个文档中汉字之间的间距。在本例中,我们使用
\ltjsetparameter{kanjiskip=1em}
和\ltjsetparameter{xkanjiskip=1em}
来实现这个目的。因此我们绑定到包\usepackage{luatexja-fontspec}
。
平均能量损失
\documentclass[a4paper]{article}
\usepackage{hyperref}
\usepackage{xparse}
% Necessary for the fonts
\usepackage{luatexja-fontspec}
\setmainjfont{HanWangKaiMediumChuIn_wp010-08}
\ltjsetparameter{kanjiskip=1em}
\ltjsetparameter{xkanjiskip=1em}
\ExplSyntaxOn
\cs_set_eq:NN
\IfEmptyTF
\tl_if_blank:nTF
\ExplSyntaxOff
\NewDocumentEnvironment {mainentry} { m } {%
\href{http://a.beautiful.url/?searchid=#1}{Click on me}%
}
\begin{document}
Tester
\begin{mainentry}{%
Test%
}
\end{mainentry}
疊音詞er
\begin{mainentry}{%
疊音詞%
}
\end{mainentry}
\end{document}
答案1
改编自用户 David Carlisle 的回答和用户来宾的评论在 OP 中自动将 href 中的 unicode 转换为百分号编码“
添加的代码:
\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\percentifier#1{\directlua{
tex.print(url_encode('\detokenize{#1}'))
}}
修改后的代码:
\href{http://a.beautiful.url/?searchid=#1}{Click on me}%
进入
\href{http://a.beautiful.url/?searchid=\percentifier{#1}}{Link}%
平均能量损失
\documentclass[a4paper]{article}
\usepackage{hyperref}
\usepackage{xparse}
%%%%%%%%%%%%%%%
% MODIFIED CODE
\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\percentifier#1{\directlua{
tex.print(url_encode('\detokenize{#1}'))
}}
% MODIFIED CODE
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
% Necessary for the fonts
\usepackage{luatexja-fontspec}
\setmainjfont{MingLiU}
\ltjsetparameter{kanjiskip=1em}
\ltjsetparameter{xkanjiskip=1em}
%%%%%%%%%%%%%%%
\ExplSyntaxOn
\cs_set_eq:NN
\IfEmptyTF
\tl_if_blank:nTF
\ExplSyntaxOff
\NewDocumentEnvironment {mainentry} { m } {%
\href{http://a.beautiful.url/?searchid=\percentifier{#1}}{Link}% MODIFIED CODE
}
\begin{document}
Tester
\begin{mainentry}{%
Test%
}
\end{mainentry}
疊音詞er
\begin{mainentry}{%
疊音詞%
}
\end{mainentry}
\end{document}