![像在 latex 中一样在 tex4ht 中嵌套表格](https://linux22.com/image/398248/%E5%83%8F%E5%9C%A8%20latex%20%E4%B8%AD%E4%B8%80%E6%A0%B7%E5%9C%A8%20tex4ht%20%E4%B8%AD%E5%B5%8C%E5%A5%97%E8%A1%A8%E6%A0%BC.png)
在以下 MWE 中,我认为它可以很好地与 xelatex 配合使用,我观察到尝试插入嵌套表的地方有一个空白区域。我在日志文件中没有看到任何警告或错误。
我是否需要应用任何必要的补丁才能正确显示嵌套表?
虽然我的最终编译命令要复杂得多,并且使用了更多 make4ht 的功能,但我的问题可以通过使用以下 make4ht 命令行进行编译来解决:make4ht.exe -u --format "odt" "file.tex"
\documentclass{article}
\begin{document}
Test
\begin{tabular}{l l }
A1 & B1 \\
A2 & B2 \\
A3 & B3 \\
\end{tabular}
\begin{tabular}{ l l}
\hline
Outer column & Detail column\\
\hline
a &
\begin{tabular}{l l }
A1 & B1 \\
A2 & B2 \\
A3 & B3 \\
\end{tabular}
\\
\hline
b
&
\begin{tabular}{l l }
A1 & B1 \\
A2 & B2 \\
A3 & B3 \\
\end{tabular}
\\
\hline
d & etc \\
\hline
\end{tabular}
\end{document}
答案1
本例中的问题是嵌套表格插入到段落内,从而导致 ODT 文件无效。插入的段落在表格边框配置中是硬编码的,因此表格配置中使用的常用段落阻止命令 ( \IgnorePar
, \EndP
) 不起作用。
幸运的是,我们可以使用make4ht
构建文件对 XML 文件进行后处理并删除段落:
-- build.mk4
local domfilter = require "make4ht-domfilter"
local process = domfilter {
function(dom)
for _,table in ipairs(dom:query_selector("text|p table|table")) do
-- replace the paragraph by its child element
local parent = table:get_parent()
parent:replace_node(table)
end
return dom
end
}
Make:match("4oo$", process)
另存为build.mk4
并执行命令:
make4ht -uf "odt" -e build.mk4 "file.tex"
结果: