编译(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’t it?
</p>