笔记

笔记

我正在尝试将.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:

make4ht_cline

我尝试使用以下命令将其转换为 .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文件确实没有打开。

笔记

  1. \cline{}如果我删除了,或者在表格规范中将 改为 ,p错误就会消失l。虽然这是一个即时修复,但这无法转化为包含复杂表格的较大文档。

  2. config.cfg和的内容siunitx.4ht取自我以前的问题的答案:如何使用 make4ht 和 siunitx 为 threeparttable 制作 odt

  3. 我使用的是 Linux Mint 21.3、TeX 3.141592653(TeX Live 2023)和 kpathsea 版本 6.3.5。

  4. 我正在使用make4htv0.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列的数字格式错误。这是由于SSiunitx 的列未得到正确支持造成的。希望我们能够尽快修复此问题。

相关内容