tex4ht:自定义 \includegraphics 转换为 HTML

tex4ht:自定义 \includegraphics 转换为 HTML

编译(Windows 10 下的 Tex Live 2016)以下 LaTeX MWE(mwe1.tex

\documentclass{book}
\usepackage{graphicx}

\begin{document}

Look at picture

\begin{figure}
\includegraphics[width=5cm]{myimage.png}
\end{figure}

Nice, isn't it?

\end{document}

myimage.png带有(必须提供命名的图像)

htlatex "mwe1.tex" "xhtml,charset=utf-8,fn-in" " -cunihtf -utf8"

tex4ht生成

...
<body 
>
<!--l. 7--><p class="noindent" >Look at picture
</p>
   <hr class="figure" /><div class="figure" 
>



<!--l. 10--><p class="noindent" ><img 
src="myimage.png" alt="PIC"  
 />

</p>
   </div><hr class="endfigure" />
<!--l. 13--><p class="indent" >   Nice, isn’t it?
</p>

</body>
...

我想通过删除不需要的<p>标签包装来定制这个 HTML 输出<img...>,如果可能的话,通过为属性赋予一些有意义的值alt

我知道图像在 LaTeX 源代码中被封装在段落中,但是在 HTML 源代码中我不需要它(尤其是如果它放在 around<img>而不是 around <div class="figure">...</div>)。

这个答案处理该主题,但我无法通过修改它来找到解决方案。

我可以通过自定义配置文件或其他方式实现这个结果吗?

提前致谢。

答案1

最好配置figure环境并禁用其中的段落(我希望你不要使用\caption命令中的段落):

\Preamble{xhtml}

\begin{document}
\ConfigureEnv{figure}{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="figure">}\HtmlParOff}
{\HCode{</div>}\HtmlParOn\par}{}{}
\EndPreamble

\HtmlParOff...\HtmlParOn禁用段落。

关于图像alt属性,我们可以为\includegraphics命令添加新选项。我们必须创建新的包,例如altgraphicx.sty,它将提供此键的默认定义:

\ProvidesPackage{altgraphicx}

\RequirePackage{graphicx}

\define@key{Gin}{alt}{}

\endinput

然后,我们必须tex4ht为这个包提供配置altgraphicx.4ht

\define@key{Gin}{alt}{\Configure{GraphicsAlt}{#1}}
\endinput

\Configure{GraphicsAlt}用于存储alt属性的内容。

您现在可以\includegraphics按以下方式使用:

\includegraphics[width=20cm,alt={Image description}]{myimage.png}

生成的代码:

<!-- language: lang-xml -->

<!--l. 6--><p class="noindent" >Look at picture
</p>
   <div class="figure">

   <a 
 id="x1-21"></a><hr class="float" /><div class="float" 
>


<img 
src="myimage.png" alt="Image description"   
width="569.05511pt" height="186.6778pt"  />
 <div class="caption" 
><span class="id">Figure 1: </span><span  
class="content">hello my image</span></div><!--tex4ht:label?: x1-21 -->

   </div><hr class="endfloat" />
   </div>
<!--l. 14--><p class="indent" >   Nice, isn&#x2019;t it?
</p>

在此处输入图片描述

相关内容