像在 latex 中一样在 tex4ht 中嵌套表格

像在 latex 中一样在 tex4ht 中嵌套表格

在以下 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"

结果:

在此处输入图片描述

相关内容