平均能量损失

平均能量损失

本网站主Tex聊天室的一些用户(其中​​一个使用TeX 直播) 报告说此代码 (或类似代码) 会​​输出可点击的 URL,而对于我来说 (使用TeXShop),事实并非如此...可能是什么问题?

平均能量损失

\documentclass[a4paper]{article}
\usepackage{xparse, hyperref}

\ExplSyntaxOn
\cs_set_eq:NN
\IfEmptyTF
\tl_if_blank:nTF
\ExplSyntaxOff

\NewDocumentEnvironment {mainentry} { m m m } {%
  \IfEmptyTF{#3}{
First argument returns #1 NO
  }{%
Second argument returns #2 YES
  }%
  }{%
  \href{http://a.beautiful.url/?searchid=#1}{Click on me}%
}

\begin{document}

A) There should be a YES here. OK.

\begin{mainentry}{
first
}{
second
}{
third
}
\end{mainentry}

B) There should be a NO here. OK.

\begin{mainentry}{
first
}{
second
}{
%
}
\end{mainentry}

\end{document}

答案1

除了 Manuels 的评论

\ExplSyntaxOn
\cs_set_eq:NN\IfEmptyTF\tl_if_blank:nTF
\cs_set_eq:NN\Trim\tl_trim_spaces:n
\ExplSyntaxOff

\NewDocumentEnvironment {mainentry} { m m m } {%
  \IfEmptyTF{#3}{
    ... 3 is empty
  }{%
    ... 3 is not empty
  }%
  {%
    \typeout{'#1'}% just to verify
    \edef\temp{\Trim{#1}}
    \typeout{'\temp'}% just to verify
    \expandafter\href\expandafter{http://a.beautiful.url/?searchid=\temp}{Click
      on me}%
  }
}

其余代码与 OP 中的相同

答案2

这里的问题是空格。按照用户 daleif 的好建议(对 OP 的评论) 使用不同的查看器检查 PDF 输出,在打开 OP 的 PDF 输出时,我进行了以下分析(全部在 Mac 上):

  • TeXShop 3.88:没有任何超链接的迹象
  • Safari 11.0:没有任何超链接的迹象
  • Adobe Acrobat Reader DC 17.012.20098:输出可点击的超链接,http://a.beautiful.url/?searchid=%20first%20http://a.beautiful.url/?searchid=first

其中%20是空格的百分比编码。

解决这个问题的一个例子是通过改变语法布局例如

原来的

\begin{mainentry}{
first
}{
second
}{
third
}
\end{mainentry}

进入

解决方案 1

\begin{mainentry}
{first}
{second}
{third}
\end{mainentry}

我觉得这其实很麻烦,因为当复制粘贴手动行(在这种情况下,例如,内容“ first”,“ second”,“ third”)时,将它们粘贴到空行中要容易得多(参见原来的),而不是将它们粘贴在花括号之间(参见解决方案 1)。

为了解决至少一半的问题,可以提出解决方案 2,通过插入一些实例,%我们至少可以在粘贴任何内容之前将一侧的空白行保持为空:

解决方案 2

\begin{mainentry}{%
first%
}{
second%
}{
third%
}
\end{mainentry}

相关内容