我正在尝试使用 htlatex 将我的文档转换为 HTML。我的文档(超过 70 页)一切正常,直到我查看表格。生成的表格实际上不遵循任何类型的表格格式。
这是我重现该问题的最小示例:
\documentclass[12pt,letter]{memoir}
\begin{document}
\begin{center}
\begin{tabular}{| l | p{9cm} |}
\hline
\textbf{Column Name} & \textbf{Column Description} \\ \hline
Test line 1 & Insert text here (line 1)\\ \hline
Test line 2 & Insert text here (line 2)\\ \hline
Test line 3 & Insert text here (line 3) \\ \hline
\end{tabular}
\end{center}
\end{document}
在命令提示符中,我使用:
htlatex.exe MinimalTest.tex "html,3,info" "" "-dhtml" "--interaction=nonstopmode"
注意:如果我运行相同的命令而不使用“nonstopmode”,我会收到警告,提示 \halign 被翻译为线性文本,并出现错误,提示缺少一个数字,该数字将被视为零。我尝试搜索这两个错误,但没有找到有效的解决方案。
编辑:
我不敢相信我以前没有尝试过,但我更改了文档类类型,它正常工作了。但是,问题是我需要使用 memoir 来布局我的 PDF。有谁知道有什么解决方法可以让使用 memoir 的 HTML 生成正常工作吗?
答案1
问题是memoir
重新定义了很多内部 latex 命令和环境。由于tex4ht
还重新定义这些命令和环境,并使用钩子来放置html
代码,因此这两个包发生冲突。最好的解决方案是为 创建memoir
配置tex4ht
,但这将是一项艰巨的任务。
目前的解决方案是在运行article
时切换到类:tex4ht
\ifcsname HCode\endcsname%
\documentclass{article}
\else
\documentclass[12pt,letter]{memoir}
\fi
\begin{document}
\begin{center}
\begin{tabular}{| l | p{9cm} |}
\hline
\textbf{Column Name} & \textbf{Column Description} \\ \hline
Test line 1 & Insert text here (line 1)\\ \hline
Test line 2 & Insert text here (line 2)\\ \hline
Test line 3 & Insert text here (line 3) \\ \hline
\end{tabular}
\end{center}
\end{document}
我们检查\HCode
由 定义的命令是否存在tex4ht
。
由于memoir
定义了一些新命令,如果你在文档中使用了其中的一些命令,你还需要在这里为它们提供一些定义。例如:
\ifcsname HCode\endcsname%
\documentclass{article}
% If you need to add some xml structure, you can use xml tags right here
\newcommand\sample[1]{%
\leavevmode%
\Tg<strong>#1\Tg</strong>%
}
% But it should suffice to use only normal LaTeX commands
\newcommand\simple[1]{%
\textit{#1}
}
\else
\documentclass[12pt,letter]{memoir}
\fi
\begin{document}
\sample{Hello world} and \simple{hello world}
\end{document}
产生以下段落:
<!--l. 16--><p class="noindent" ><strong>Hello world</strong> and <span
class="cmti-10">hello world</span>
</p>
请注意,这不是一个干净的解决方案,最好的选择是将这些命令收集到包中并创建packagename.4ht
重新定义的文件tex4ht
,但在更简单的文档的情况下,显示的解决方案应该足够了