问题是调整逐项列表中项目的垂直空间。
\begin{itemize}\itemsep2em
\item first
\item second
\end{itemize}
这在 LaTex 中有效,但在使用 tex4ht 生成的 html 中无效。应该在序言中添加哪些配置,例如使用\ConfigureList
?
答案1
tex4ht
更注重逻辑标记,而不是pdf
和中完全相同的外观html
。在这种情况下,我将定义新环境,然后可以对其进行配置,tex4ht
并使用定义垂直间距CSS
。示例文件:
\documentclass{article}
\usepackage{mydefinitions}
\begin{document}
\begin{myitemize}
\item first
\item second
\end{myitemize}
\end{document}
myitemize
使用自定义环境。它在包中定义mydefinitions.sty
:
\ProvidesPackage{mydefinitions}
\newenvironment{myitemize}{\itemize\itemsep2em}{\enditemize}
\endinput
它可以使用进行配置\ConfigureList
。我们可以将配置文件放入mydefinitions.4ht
:
\ConfigureList{myitemize}
{\ifvmode\IgnorePar\fi\EndP\HCode{<ul class="myitemize">}\ShowPar\bgroup\def\finli{}}
{\ifvmode\IgnorePar\fi\EndP\finli\egroup\HCode{</ul>}}
{\ShowPar\finli\HCode{<li>}\par\def\finli{\EndP\HCode{</li>}}\DeleteMark}{}
\Css{.myitemize li + li{margin-top: 2em;}}
看起来有点复杂,但实际上并不复杂,我们需要解决的问题是段落,所以这些都是\EndP
、\ShowPar
和\IgnorePar
命令。最有趣的事情发生在第四个参数中:
{\ShowPar\finli\HCode{<li>}\par\def\finli{\EndP\HCode{</li>}}\DeleteMark}
它插入在每个项目的开头。\finli
命令用于插入<li>
元素的结束标记。它默认为空,因此不会插入到第一个项目中。\DeleteMark
用于删除由 LaTeX 插入的“■”字符。
该\Css
命令规定第二个和后续项目上方应有2em
空间。
所结果的HTML
:
<ul class="myitemize"><li>
<!--l. 9--><p class="noindent" >
first
</p></li><li>
<!--l. 10--><p class="noindent" >
second</p></li></ul>
并呈现页面: