在 \htmlonly 中如何将 \href 重新定义为 \htmladdnormallink?

在 \htmlonly 中如何将 \href 重新定义为 \htmladdnormallink?

我使用 Scientific Word (SW) 来生成 Latex,然后我使用 Latex2html (l2h) 处理 Latex 输出以生成 HTML,因为 l2h 对 HTML 的支持比 SW 更好(目录、将页面分成子页面等...)

SW 支持该软件包hyperref,但 l2h 不支持。

因此,当使用 SW 添加超链接时,生成的代码如下所示:

\documentclass{article}%
\usepackage{html}
\usepackage{hyperref}%
\begin{document}
\href{http://www.yahoo.com}{yahoo}
\end{document}

以上内容无法由 l2h 直接处理。要使用 l2h 处理此内容,请执行以下行

\href{http://www.yahoo.com}{yahoo}

需要更改为 l2h 将处理的一个,即

\htmladdnormallink{yahoo}{http://www.yahoo.com}

因此我认为需要做的就是制作renewcommand或类似的东西(我不是 Latex 专家)。所以我会写

\documentclass{article}%
\usepackage{html}
\usepackage{hyperref}%

\begin{htmlonly}
  write something here to make \href{a}{b} below mean \htmladdnormallink{b}{a}
\end{htmlonly}

\begin{document}
\href{http://www.yahoo.com}{yahoo}
\end{document}

我不知道上述内容是否有意义或可能。没有这个,我每次都必须找到一种方法来解析乳胶文件并将每个文件更改为\href\htmladdnormallink也许我可以学习sed或类似的方式来做到这一点。但如果有一种方法可以用乳胶宏来做,那就更好了。

问题是:如果上述操作可行,那么在顶部添加此命令的正确语法是什么?

供参考

为了完成,这是最终设置,以便链接在 SW 和 l2h 中都能工作

 \documentclass{article}%
 \usepackage{html}  %    for L2H
 \usepackage{hyperref}%  for latex
\begin{document}

\begin{htmlonly}
  \def\href#1#2{\htmladdnormallink{#2}{#1}}  %for L2H only
\end{htmlonly}

\href{http://www.yahoo.com}{yahoo}

\end{document}

答案1

请尝试以下操作:

\documentclass{article}%
\usepackage{ifpdf}
\usepackage{html}
\usepackage{hyperref}%

\begin{document}
\ifpdf\else
  \def\href#1#2{\htmladdnormallink{#2}{#1}}
\fi

\href{http://www.yahoo.com}{yahoo}
\end{document}

\ifpdf\else ... \fi可以定义仅在运行 pdflatex 以外的任何程序时使用的代码。

相关内容