我正在尝试将.tex
文件转换为.odt
使用make4ht
。这是能够生成我遇到的错误的 MWE:
\documentclass[a4paper,12pt]{article}
\usepackage{multirow}
\usepackage{siunitx}
\sisetup{mode=text}
\sisetup{separate-uncertainty}
\begin{document}
\begin{table}
\begin{tabular}{p{2.8cm}
l
S[table-format=3.2(3)]
}
Compound &
Sample &
Start \\
\multirow{2}{=}{Cyanocobalamin} &
Tree 1 &
0.18(08) \\
\cline{2-3}
&
Tree 2 &
4.10(168) \\
\cline{1-3}
\multirow{2}{=}{Retinol} &
Tree 1 &
0.21(37) \\
\cline{2-3}
&
Tree 2 &
7.12(256)\\
\cline{1-3}
\multirow{2}{=}{4-methoxy\-cyclopentane} &
Tree 1 &
17.13(894) \\
\cline{2-3}
&
Tree 2 &
12.05(12) \\
\end{tabular}
\end{table}
\end{document}
此代码生成如下的 pdf:
我尝试使用以下命令将其转换为 .odt 文件:make4ht -c config.cfg -f odt Test.tex
,但出现以下错误:
[STATUS] make4ht: Conversion started
[STATUS] make4ht: Input file: Test.tex
[WARNING] domfilter: DOM parsing of Test.4oo failed:
[WARNING] domfilter: ...ive/2023/texmf-dist/tex/luatex/luaxml/luaxml-mod-xml.lua:175: Unbalanced Tag (/text:p) [char=4346]
org.xml.sax.SAXParseException; lineNumber: 75; columnNumber: 3; The element type "table:table-cell" must be terminated by the matching end-tag "</table:table-cell>".
at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1243)
at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635)
at java.xml/org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:357)
at xtpipes.Xtpipes.execute(Xtpipes.java:1300)
at xtpipes.Xtpipes.execute(Xtpipes.java:783)
at xtpipes.Xtpipes.mainMethod(Xtpipes.java:665)
at xtpipes.Xtpipes.main(Xtpipes.java:70)
at xtpipes.main(xtpipes.java:5)
--- xtpipes error 29 --- At <sax content-handler="xtpipes.util.ScriptsManager,tex4ht.OoFilter" lexical-handler="xtpipes.util.ScriptsManagerLH" > : While parsing file file:/home/aj/Documents/Testing_TeX-Odt/Only_Tables/Test.tmp: : org.xml.sax.SAXParseException; lineNumber: 75; columnNumber: 3; The element type "table:table-cell" must be terminated by the matching end-tag "</table:table-cell>".
[WARNING] xtpipes: Xtpipes failed
[WARNING] xtpipes: Trying HTML tidy
sh: 1: tidy: not found
[WARNING] xtpipes: Tidy failed as well
nil
[WARNING] domfilter: DOM parsing of Test.4oo failed:
[WARNING] domfilter: ...ive/2023/texmf-dist/tex/luatex/luaxml/luaxml-mod-xml.lua:175: Unbalanced Tag (/text:p) [char=4346]
[WARNING] odt: Cannot parse DOM, the resulting ODT file will be most likely corrupted
[STATUS] make4ht: Conversion finished
正如最后的警告信息所示,该.odt
文件确实没有打开。
笔记
\cline{}
如果我删除了,或者在表格规范中将 改为 ,p
错误就会消失l
。虽然这是一个即时修复,但这无法转化为包含复杂表格的较大文档。config.cfg
和的内容siunitx.4ht
取自我以前的问题的答案:如何使用 make4ht 和 siunitx 为 threeparttable 制作 odt我使用的是 Linux Mint 21.3、TeX 3.141592653(TeX Live 2023)和 kpathsea 版本 6.3.5。
我正在使用
make4ht
v0.3m 版本。
答案1
这看起来像是另一个错误。尝试这个配置文件:
\RequirePackage{color}
\Preamble{xhtml}
\Configure{mhchemce}{}{}
\Configure{mhchemcf}{}{}
\Configure{halignTD} {}{}
{<}{\ifmathml \HCode{ columnalign="left"}\else
L\fi}
{-}{\ifmathml \HCode{ columnalign="center"}\else
C\fi}
{>}{\ifmathml \HCode{ columnalign="right"}\else
R\fi}
{^}{\ifmathml \HCode{ rowalign="top"}\else
T\fi}
{=}{\ifmathml \HCode{ rowalign="baseline"}\else
N\fi}
{|}{\ifmathml \HCode{ rowalign="center"}\else
M\fi}
{_}{\ifmathml \HCode{ rowalign="bottom"}\else
B\fi}
{p}{\ifmathml \HCode{ columnalign="left"}\else
L\fi}
{m}{\ifmathml\else m\fi} %{\HCode{valign-middle align-left}}
{b}{\ifmathml\else n\fi} %{\HCode{valign-baseline align-left}}
{}
\begin{document}
\EndPreamble
\Configure{halignTD}
用于配置特定表格前导标记的代码。p
原始版本中的代码为空,在进一步处理 TeX4ht 表格处理代码时,导致不插入段落的起始元素。仅插入了结束元素,从而导致了此问题。
结果如下:
您可以看到另一个问题 -start
列的数字格式错误。这是由于S
Siunitx 的列未得到正确支持造成的。希望我们能够尽快修复此问题。