tex4ht 使用 amsart 类编译带标题的表格时出现错误

tex4ht 使用 amsart 类编译带标题的表格时出现错误

Linux 上有关 TL 2022 的 MWE

\documentclass[letterpaper,12pt,reqno]{amsart}

\usepackage[T1]{fontenc}
\newtheorem{theorem}[subsection]{Theorem}
\usepackage{floatrow}
\floatsetup[table]{capposition=top}

\begin{document}

\begin{table}[h]
\centering
\begin{tabular}[c]{|l|l|l|}\hline
case & allowed pole order for $r$ & allowed order of $r$ at $\infty$  \\\hline
1 & $\left\{  0,1,2,4,6,8,\cdots\right\}  $ & $\left\{  \cdots,-8,-6,-4,-2,0,2,3,4,5,6,\cdots\right\}  $ \\\hline
2 & $\left\{  2,3,5,7,9,\cdots\right\}  $ & no condition \\\hline
3 & $\left\{  1,2\right\}  $ & $\left\{  2,3,4,5,6,7,\cdots\right\}  $ \\\hline
\end{tabular}
\caption{Necessary conditions for each Kovacic case}\label{tab:first}
\end{table}

\end{document}

使用 pdflatex 编译成功(我必须使用 pdflatex 而不是 lualatex,因为 arxiv 要求)。但是使用 tex4ht 编译时会出现此错误

(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/mathcolor.ltx)) [1]
[2] (/usr/local/texlive/2022/texmf-dist/tex/latex/lm/t1lmtt.fd)
! Extra }, or forgotten \endgroup.
\@endfloatbox ...pagefalse \outer@nobreak \egroup 
                                                  \color@endbox 
l.27 \end{table}
              
? 

使用的命令是

make4ht  -ulm default -a debug  foo.tex "mathjax,htm,fn-in,notoc*,p-width,charset=utf-8,cut-fullname"

PDF 中的表格如下

在此处输入图片描述

但由于编译错误,它没有显示在 HTML 中。

>which make4ht 
 /usr/local/texlive/2022/bin/x86_64-linux/make4ht
>make4ht --version 
 make4ht version v0.3l

问题似乎是由于使用floatrow包造成的。当将代码更改为使用

\ifdefined\HCode 
\else 
\usepackage{floatrow}
\floatsetup[table]{capposition=top}
\fi 

错误消失了。我根据答案使用了此包如何强制表格标题位于顶部强制将标题置于表格上方。它在 PDF 中运行良好,但在 tex4ht 中则不行。所以现在,我不会在 tex4ht 模式下使用此包。

参考:也在此输入了一张票tex4ht 错误追踪

答案1

似乎floatrow试图重新定义一些标准的 LaTeX 环境,例如table。这与 TeX4ht 对这些环境的重新定义相冲突。它无法在 HTML 输出中做任何有用的事情,因为不支持浮点数,所以最好的办法是抑制此功能。

基本floatrow.4ht配置文件可能如下所示:

\def\:tempa#1{}
\HLet\flrow@restyle\:tempa
\Hinput{floatrow}
\endinput

它重新定义了\florow@restyle什么都不做。通过此更改,您的文件应该可以编译而不会出现错误:

在此处输入图片描述

相关内容