Htlatex 和 subcaption - htlatex 可以扩展吗?

Htlatex 和 subcaption - htlatex 可以扩展吗?

首先从 MWE 开始:

\documentclass{article}

\def\pgfsysdriver{pgfsys-tex4ht.def}
\usepackage{tikz}

\usepackage{subcaption}

\begin{document}

\begin{figure}
\subcaptionbox{Small} { \tikz \draw (0cm,0cm) circle(5mm); }
\subcaptionbox{Big}   { \tikz \draw (0cm,0cm)  circle(20mm); }
\caption{Circles}
\end{figure}

\end{document}

这在某种程度上适用于htlatex。但是,subcaption-package 会发出警告,我必须多次按下 Enter 才能完成编译。此外,这可能会生成类似 的内容<TD>Small . . . <TD COLSPAN=2>Circles...,但实际上并非如此。

作为第二个更简单的例子,\subpdfbookmark给出了错误htlatex

是否可以修改 htlatex 和/或包并使其正常工作?

答案1

我有旧版本的subcaption,但您的示例即使使用 pdflatex 也失败了,提示您需要先加载包 caption。因此修复后的代码如下所示:

\documentclass{article}

\def\pgfsysdriver{pgfsys-tex4ht.def}
\usepackage{tikz}
\usepackage{caption}
\usepackage{subcaption}

\begin{document}

\begin{figure}
\subcaptionbox{Small} { \tikz \draw (0cm,0cm) circle(5mm); }
\subcaptionbox{Big}   { \tikz \draw (0cm,0cm)  circle(20mm); }
\caption{Circles}
\end{figure}

\end{document}

编辑: 对我来说,使用 with0 编译时没有错误texlive 2010,但texlive 2012使用subcaptionpackage withhtlatex时会出现错误,提示需要包含captionpackage withcompatibility=false选项。因此,您需要更改前言以在tex4ht运行时包含此选项:

\documentclass{article}

\ifdefined\HCode
\usepackage[compatibility=false]{caption}
\def\pgfsysdriver{pgfsys-tex4ht.def}
\else
\usepackage[]{caption}
\fi
\usepackage{tikz}
\usepackage{subcaption}

请注意 alsopgfsys-tex4ht.def仅与 now 一起使用tex4ht

现在有三个问题

  1. 第二个 svg 图像渲染失败,因为有一个</p>标签
  2. 子标题包含在tspan元素中,这些是 svg,而不是 html 元素,不应该在文档中
  3. 缺乏可以使用的逻辑标记css

所以我们需要配置tex4ht以输出逻辑标记,从而解决问题 1 和 2。

配置包的标准方法tex4ht是提供名为的文件packagename.4ht。因此subcaption.4ht在我们的例子中:

\NewConfigure{subcaptionbox}{3}
\renewcommand\subcaptionbox[2]{%
\a:subcaptionbox#2\b:subcaptionbox#1\c:subcaptionbox
}

\Configure{subcaptionbox}
{\ifvmode \IgnorePar\fi \EndP\HCode{<div class="subcaptionbox">\Hnewline<div class="image">}}
{\HCode{</div>\Hnewline<div class="subcaption">}}
{\HCode{</div>\Hnewline</div>\Hnewline}}

\Css{.subcaptionbox{display:inline-block;}}
\Css{.subcaption{text-align:center;}}        

我们声明了三个用于插入 html 标签的钩子\NewConfigure,然后重新定义\subcaptionbox使用这些钩子,并使用\Configure{subcaptionbox}我们插入 html 标签。构造

\ifvmode \IgnorePar\fi \EndP

有没有办法解决</p>标签位置错误的问题?请参阅这个答案更多细节。

您可以使用\Css命令并添加一些更奇特的格式。

使用此配置生成的代码:

<div class="subcaptionbox"> 
<div class="image"> <object data="subcap-1.svg" width="39.47014 " height="39.47014 " type="image/svg+xml"><p>SVG-Viewer needed.</p></object> </div> 
<div class="subcaption">Small</div> 
</div> 
 <div class="subcaptionbox"> 
<div class="image"> <object data="subcap-2.svg" width="153.28075 " height="153.28075 " type="image/svg+xml"><p>SVG-Viewer needed.</p></object> </div> 
<div class="subcaption">Big</div> 
</div>

相关内容