分段命令的配置导致 tex4ht 中出现嵌套不正确的 xhtml

分段命令的配置导致 tex4ht 中出现嵌套不正确的 xhtml

这是我的 MWE:

\documentclass[]{book}
  \input{tex4ht.sty}
  \Preamble{xhtml}
  \Configure{subsection}{\HCode{<i>}}
    {\HCode{</i>}}
    {\HCode{<b>}}
    {\HCode{</b>}}
\begin{document}
  \EndPreamble
\subsection{One}
This is one
\subsection{Two}
This is two
\end{document}

换句话说,整个小节应该用<i>标签包裹,标题也应该用<b>标签包裹。

编译后会在标签ht latex test.tex之间产生以下内容<body>

<!--l. 10--><p class="indent" >   <i><b><a 
 id="x1-10000.0.1"></a>One</b> This is one
</p>
<!--l. 12--><p class="indent" >   </i><i><b><a 
 id="x1-20000.0.2"></a>Two</b> This is two </i></p> 

请注意,之后<!--l. 12--><p class="indent" >开始一个新的小节上一小节以标签结束</i>。在我的实际示例中,这是一个</idx:entry>标签,不正确的嵌套会引发错误。

也许有一种明确的方法来结束该小节,以便在开始新的小节</i>之前刷新标签?<p>

谢谢你的帮助!

答案1

您可以<p>使用一些tex4ht内部命令来处理。在这种情况下,您需要:

  1. 关闭章节开始前的所有段落<i>
  2. 抑制<p>内部标题
  3. 在页眉后开始新的不缩进段落
  4. 在章节结束之前关闭段落</i>

因此您可以使用这个配置:

  \Preamble{xhtml}
  \Configure{subsection}{\EndP\IgnorePar\HCode{<i>}}
    {\EndP\IgnorePar\HCode{</i>}}
    {\HCode{<b>}}
    {\HCode{</b>}\par\IgnoreIndent\ShowPar}
\begin{document}
  \EndPreamble

\EndP关闭所有<p>元素,\IgnorePar将抑制在页眉内插入段落,页眉结束后,我们需要明确以 结束段落\par\IgnoreIndent要求下一个段落没有缩进并\ShowPar显示开始<p>标签:

 <i><b><a 
 id="x1-10000.0.1"></a>One</b>
<!--l. 4--><p class="noindent" >This is one
</p>
   </i><i><b><a 
 id="x1-20000.0.2"></a>Two</b>
<!--l. 6--><p class="noindent" >This is two
</p><!--l. 8--><p class="indent" >   Hello world
</p><!--l. 10--><p class="indent" >  another paragraph
</p>
   </i><i><b><a 
 id="x1-30000.0.3"></a>Three</b>
<!--l. 13--><p class="noindent" >This is three
</p><!--l. 15--><p class="indent" >  Hello, hello
</p>
   </i>

相关内容