我正在尝试从 TeX 生成 HTML,并希望将表格转换为图像。下面是一个简单的示例,显示了我在表格中有一个旋转元素时发现的问题:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{multirow}
\newcommand{\sr}{\rule[0.45cm]{0pt}{0.25cm}}
\begin{document}
\begin{table}
\caption{Test table}
\centering
\begin{tabular}{ll|c|c|l}
\cline{3-4}& & \multicolumn{2}{c|}{actual class} & \\ \cline{3-4} & & cat & dog & \\ \cline{1-4}
\multicolumn{1}{|c|}{\parbox[t]{4mm}{\multirow{2}{*}{\rotatebox[]{90}{\centering predicted}}}}
& \multicolumn{1}{c|}{\rotatebox[]{90}{\centering \ cat\ } \sr} & 5 & 2 & \\ \cline{2-4}
\multicolumn{1}{|c|}{} & \multicolumn{1}{c|}{\rotatebox[]{90}{\centering \ dog\ } \sr} & 3 & 3 & \\ \cline{1-4}
\end{tabular}
\end{table}
\end{document}
生成的PDF版本表格显示如下:
我尝试使用\Picture*{} ... \EndPicture
将表格转换为图像。因此,我创建了配置文件myconfig.cfg
:
\Preamble{xhtml,charset=utf-8,fn-in}
\begin{document}
\ConfigureEnv{table}
{\Picture*{}}{\EndPicture}{}{}
\EndPreamble
并使用编译 HTML
htlatex example "myconfig2.cfg, xhtml, charset=utf-8, fn-in" " -cunihtf -utf8"
生成的图像是
我该如何修复它?
答案1
TeX4ht 内置了对图解表的支持,使用pic-tabular
选项即可。您无需为此使用自定义配置。请参阅选项列表寻找其他一些可能性。
您还应该使用make4ht
而不是htlatex
,因为它默认以 UTF-8 编码生成 HTML 5 输出。它还会对生成的 HTML 代码进行后处理,并修复一些其他方式不易修复的问题。
因此,您可以使用以下方法编译文档:
make4ht example "pic-tabular,svg,fn-in"
请注意,我使用了svg
选项。这是因为dvipng
在这个特定情况下 DVI 代码存在问题,可能是因为\rotatebox
。svg
选项需要使用转换dvisvgm
,并且它运行良好:
正如 David Carlisle 所说,最好不要将表格转换为图像。在这种情况下,旋转的文本效果不佳。文本放置在表格线上。但您真的需要 HTML 中的旋转单元格吗?我只会以正常方向输出它。可以使用以下.cfg
文件完成myconfig.cfg
:
\Preamble{xhtml}
\renewcommand\rotatebox[3][]{#3}
\renewcommand\sr{}
\Css{\#TBL-1 \#TBL-1-5g{border:none;}}
\Css{\#TBL-1 \#TBL-1-1g{border:none;}}
\begin{document}
\EndPreamble
它重新定义\rotatebox
为仅打印文本,不进行任何旋转。
请注意以下几行:
\Css{\#TBL-1 \#TBL-1-5g{border:none;}}
\Css{\#TBL-1 \#TBL-1-1g{border:none;}}
它消除了表格中虚假的垂直线。
使用编译
make4ht -c myconfig.cfg example "fn-in"
这是最终的 HTML: