我正在尝试通过 TeX4ht 获取以下 xml 结构
第一个列表应该标记为
<list1 type=""><item1><p><label>1.</label>....</p></item1>
第二个列表应该是
<list2 type=""><item2><p><label>a.</label>....</p></item2>
请参阅下面提到的完整结构:
<list1 type="numbered">
<item1><p><label>1.</label>First level item 1st entry</p></item1>
<item1><p><label>2.</label> First level item 2nd item entry</p>
<list2 type="alpha">
<item2><p><label>a.</label> First level item 1st entry</p></item2>
<item2><p><label>b.</label> First level 2nd item entry</p></item2>
</list2>
</item1>
<item1><p><label>3.</label> First level item 2nd item entry</p></item1>
</list1>
type
中的“ ”的值<list type=" ">
应基于 \labelenumi
我正在使用以下 tex 编码
\documentclass{book}
\begin{document}
\begin{enumerate}
\item First level item 1st entry
\item First level item 2nd item entry
\begin{enumerate}
\item second level item 1st entry
\item second level item 2nd entry
\end{enumerate}
\item First level item 3rd item entry
\end{enumerate}
我在 cfg 文件中使用了以下编码
\newcounter{countlist}
\ConfigureList{enumerate}
{\stepcounter{countlist}\EndP
\HCode{<list\thecountlist\space type="numbered">}}
{\EndP\HCode{</list\thecountlist>}\addtocounter{countlist}{-1}}
{\HCode{<item\thecountlist><p>}}
{\HCode{</p></item\thecountlist>}}
但我无法获得正确的结构,请建议如何解决问题
答案1
第五个参数\ConfigureList
插入在项目标签之后,而不是项目末尾。您需要使用一个小技巧来正确关闭项目:
\Preamble{xhtml}
\newcounter{countlist}
\def\clearfinish{\def\finishitem{}}
\ConfigureList{enumerate}
{\stepcounter{countlist}\EndP
\HCode{<list\thecountlist\space type="numbered">}%
\clearfinish%
}
{\EndP\finishitem\HCode{</list\thecountlist>}%
\addtocounter{countlist}{-1}%
\clearfinish}
{\finishitem\HCode{<item\thecountlist>}\par\ShowPar\HCode{<label>}%
\def\finishitem{\EndP\HCode{</item\thecountlist>}}
}
{\HCode{</label>}}
\begin{document}
\EndPreamble
在此示例中,使用了辅助宏\finishitem
,它保存了 的结束标记</item[number]>
。它用在项目开始处和环境结束时,您要在其中插入结束标记。当列表开始时,它是空的,因为您不想在此时关闭任何项目。它被定义为在项目配置中插入结束标记。
我引入的另一个变化是使用tex4ht
\par
而不是显式<p>
标记。这样,您可以在一个项目中处理多个段落,而使用显式标记则无法做到这一点。
结果:
<list1 type="numbered"><item1>
<!--l. 4--><p class="noindent" ><label>
1. </label>First level item 1st entry
</p></item1><item1>
<!--l. 5--><p class="noindent" ><label>
2. </label>First level item 2nd item entry
</p><list2 type="numbered"><item2>
<!--l. 7--><p class="noindent" ><label>
(a) </label>second level item 1st entry
</p></item2><item2>
<!--l. 8--><p class="noindent" ><label>
(b) </label>second level item 2nd entry</p></item2></list2>
</item1><item1>
<!--l. 10--><p class="noindent" ><label>
3. </label>First level item 3rd item entry</p></item1></list1>