mwe.tex:
%%%%%%% Example 1. that works correctly %%%%%%%%%%%%%%%%%%%%
%\documentclass{article}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%% Example 2. fails to insert </div> at \end{center} %%
\documentclass[varwidth=160mm]{standalone}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuerid, vulputate a, magna.
\begin{center}
Hello everyone!
\end{center}
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
Bye!
\end{document}
mwe.cfg:
\Preamble{xhtml,html5}
\begin{document}
\EndPreamble
$ make4ht -u -c mwe.cfg mwe.tex
独立生成 mwe.html:(浏览器截图)
从“大家好!”开始的所有内容都居中。这是因为编译后的 html 中缺少</div>
应该关闭的那个。使用 \documentclass{article} 进行编译会产生预期结果:(浏览器截图)<div class="center">
我有两个问题:
如何修复此问题?我应该提交错误报告吗?
使用 TeX4ht(更具体地说是 make4ht)编译为 html 时推荐的 documentclass 是什么,是否可以忽略 tex 源文件中的 documentclass 并使用另一个类?不幸的是,批量编辑用于其他目的的 ~1000 个独立片段不是一种选择。
答案1
似乎 standalone 以某种方式重新定义了environments
处理方式,这导致在环境末尾插入 HTML 标签的代码无法执行。这种情况不仅发生在center
,还发生在任何其他环境中,例如itemize
,等等。
我还没有找到这个问题的原因,但可以通过简单的破解来解决:
% standalone.4ht
\def\sa@cls@afterbegindocument{}
\def\sa@cls@beforeenddocument{}
\Hinput{standalone}
\endinput
这两个重新定义的宏最初执行的是standalone
重新定义,因此您可能会在实际示例中发现更多问题。如果它有效,我将更新源代码tex4ht
。
关于您的第二个问题,我们希望所有文档类别都能正常工作,但标准article
或book
类别能得到最好的支持。
结果如下: