平均能量损失

平均能量损失

附言:回答的原帖“自动将 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}

相关内容