htlatex 中是否有命令行标志来选择超链接选项?

htlatex 中是否有命令行标志来选择超链接选项?

我用它htlatex来从 LaTeX 输入生成 html 文件。它工作正常。但是,我想要 2 个版本的 html 输出文件:一个版本的超链接指向硬盘上的文件以供离线使用,另一个版本供在线使用(其中超链接指向互联网上的类似链接)。

我有超过一百个链接,因此使用两个单独的原始 LaTeX 文件进行细微更改会很麻烦。有没有办法设置一个标志/开关,让我选择要\href使用哪组链接?

类似这样的内容:

$htlatex --someflag N 文件名.tex htm,0

其中N=1将选择离线链接并N=2使用等效的在线链接。如果可能的话,语法是什么?此外,这些标志选项如何在原始 LaTeX 文件中指示?

答案1

tex4ht支持配置文件,您可以在其中为各种命令提供自定义定义。在您的位置,我会使用一个宏来保存命令的基本路径\href。在配置文件中,可以重新定义它以指向另一个目录或完全不同的网页。

简单示例:

\documentclass{article}
\usepackage{hyperref}
\newcommand\hrefroot{somedirectory/}
\begin{document}
Hello \href{\hrefroot report.pdf}{report}


\end{document}

引入了自定义命令\hrefroot。它保存文件的路径,必须在所有\href命令中使用。配置文件tex4ht可能如下所示:

\Preamble{xhtml}

\ifOption{external}{\renewcommand\hrefroot{https://www.report.com/}}{\renewcommand\hrefroot{report/}}
\begin{document}
\EndPreamble

重要的一行是

\ifOption{external}{\renewcommand\hrefroot{https://www.report.com/}}{\renewcommand\hrefroot{report/}}

其余部分只是配置文件所需的结构。该\ifOption命令检查可在命令行上指定的选项。如果使用此选项,则\hrefroot重新定义为指向外部站点,report否则使用目录。

编译文档的基本方法如下:

make4ht -c configfilename.cfg filename.tex 

您可以external使用以下语法指定该选项:

make4ht -c configfilename.cfg filename.tex "external"

以下是两种选择的结果:

<!--l. 5--><p class="noindent" >Hello <a 
href="report/report.pdf" >report</a>
</p>

并且对于external

<!--l. 5--><p class="noindent" >Hello <a 
href="https://www.report.com/report.pdf" >report</a>
</p>

答案2

感谢@michal.h21 的关注和建议,我明白了如何做我想做的事情。

\newcommand{\hrefoption}[2]{#1} % #1 = 离线;#2 = 在线

然后,

\href{\hrefoption{somedirectory/report.pdf}{https://www.report.com/reports/may/May15Report.pdf}}{report} 说明了我的意思。

这将使用第一个选项并生成离线版本。如果我想要在线版本,我将的定义更改\hrefoption

\newcommand{\hrefoption}[2]{#2} % #1 = 离线;#2 = 在线

这样它会忽略第一个参数(离线)并使用在线选项。

非常感谢@michal.h21 抽出时间和关注。我并没有采纳他们的建议,但他们让我以正确的方式思考这个问题。谢谢。

编辑以添加 - 它不完全是我所要求的(运行时设置的标志htlatex),但它以最小的努力完成了我需要的工作(在定义中更改#1为) 。#2\hrefoption

相关内容