tex4ht:方程式图像的替代文本

tex4ht:方程式图像的替代文本

我在用着tex4ht将 LaTeX 转换为 (X)HTML。Tex4ht 会自动生成无法直接转换为文本的方程式的图像。

问题:生成的图像的文件名以及相应的“alt”文本毫无意义。

想:一种在 LaTeX 代码中嵌入生成图像的文件名以及“alt”文本的方法。

部分解决方案:我设法通过在公式前使用命令?来定义文件名\NextPictureFile{NameToBeUsed}。但我无法指定“alt”文本。有什么建议吗?

当然,一种选择是手动编辑生成的 HTML 页面以指定“alt”文本。但由于这需要在许多可更新的 LaTeX 文件上进行,这意味着必须再次指定所有“alt”,即使对原始文件进行微小更新也是如此。

答案1

Tex4ht使用命令\Picture...\EndPicture将封闭的文本转换为图像。命令形式为

\Picture*[alt text]{align="center}
some text
\EndPicture

将产生

<img src="myfile01x.png" alt="alt text" align="center />

包含myfile01x.png文本“一些文本”。

根据 tex4ht常问问题,你可以使用类似的代码

\newtoks\eqtoks  
\def\AltMath#1${\eqtoks{#1}%  
\Picture*[\HCode{\the\eqtoks}]{ align="middle"}$#1$\EndPicture$}  
\Configure{$}{}{}{\expandafter\AltMath}  

将数学的 TeX 代码排版为替代文本。我们可以对其进行修改,使其与显示数学配合使用,并使用我们自己的包含替代文本的宏。

创建文件myalt.cfg

\Preamble{xhtml}
\begin{document}
\def\MyDisplay{\leavevmode\EndP\HCode{<!--l. \the\inputlineno-->\Hnewline}\IgnorePar\Tg<div class="math-display">}
\def\EndMyDisplay{\HCode{<!--l. \the\inputlineno-->\Hnewline}\Tg</div>}
\def\AltMathII#1{%
\Picture*[\HCode{\the\myalt}]{}$$#1$$\EndPicture$$%
}
\def\AltMath#1$${\AltMathII{#1}}
\def\AltMathI#1\]{\AltMathII{#1}\egroup\EndMyDisplay}  
\Configure{$$}{\MyDisplay}{\EndMyDisplay}{\expandafter\AltMath}
\Configure{[]}{\MyDisplay$$\AltMathI}{$$}  
\Css{.math-display{
text-align:center;
margin: 5px;
}}
\EndPreamble

然后myalt.sty包含宏,设置替代文本和文件名:

\ProvidesPackage{myalt}
\newtoks\myalt
\newcommand\mymathinfo[2]{%
    \NextPictureFile{#1}
    \myalt{#2}
}

现在您可以使用

\documentclass{article}
\usepackage{myalt}
\begin{document}
Hello world
\mymathinfo{hello}{hello world}
$$a=\frac{\sqrt{4b}}{c}$$
\mymathinfo{world}{cool}
$$  
 \forall x \in X, \quad \exists y \leq \epsilon
$$
\end{document}

编译

htlatex myfile "myalt"

导致:

<!--l. 8--><p class="noindent" >Hello world
</p><!--l. 10--> 
<div class="math-display">
<img 
src="hello.png" alt="hello world"  />
<!--l. 10--> 
</div>
<!--l. 12--> 
<div class="math-display">
<img 
src="world.png" alt="cool"  />
<!--l. 14--> 
</div>

相关内容