我是 TeX4HT 的新手,我尝试为 quote 环境编写一个 .cfg,我使用了下面的 tex 编码
\documentclass{book}
\begin{document}
\begin{quote}
Sample para 1
Sample para 2
\end{quote}
\end{document}
cfg 编码为
\ConfigureEnv{quote}
{\ifvmode \IgnorePar\fi \EndP\HCode{<div class="disp-quote">}}
{\ifvmode \IgnorePar\fi \EndP\HCode{</div>}}
{}
{}
我得到如下输出
<div class="disp-quote">
<div class="quote">
<!--l. 4--><p class="noindent" >Sample para 1
</p><!--l. 6--><p class="noindent" >Sample para 2</p></div>
</div>
在输出的html文件中' <div>
'标签被打开两次
"<div class="disp-quote">" - this is I defined in the cfg file
"<div class="quote">" - this one is coming from the html4.4ht
我还得到了<!--l. 4-->
输出<!--l. 6-->
html 文件中的每个段落
我使用以下参数编译该文件
htlatex 示例“sample.cfg,xhtml”
请建议如何抑制重复<div>
标签和评论的说明<!--l. 4-->
?
答案1
报价环境的原始配置是:
\ConfigureEnv{quote}
{}{}
{\IgnorePar\EndP
\HCode{<div class="\getClass{quote}">}\afterGetClass{quote}}
{\IgnorePar\EndP\HCode{</div>}\ShowPar\ShowIndent}
\Css{.quote {margin-bottom:0.25em; margin-top:0.25em;
margin-left:1em; margin-right:1em; text-align:justify;}}
\NewConfigure{quoteClass}{2}
\Configure{quoteClass}{quote}{}
quote
环境基于\list
,因此有点特殊。您可以看到标签插入在的第四和第五个参数中,\ConfigureEnv
而不是第二和第三个参数中。当您提供自己的配置时,您可以将这些参数留空,但在这种情况下将使用原始配置,这会导致插入双重标签。
您可以更改配置来替换原始插入内容:
\ConfigureEnv{quote}
{}
{}
{\ifvmode \IgnorePar\fi \EndP\HCode{<div class="disp-quote">}}
{\ifvmode \IgnorePar\fi \EndP\HCode{</div>}}
或者你可以利用具有可配置类名的事实quote
,使用\Configure{quoteClass}{quote class name}{code to be inserted after
tag}
:
\Configure{quoteClass}{disp-quote}{}
行号由段落配置插入,您可以使用此配置删除它:
\Configure{HtmlPar}
{\EndP\HCode{<p class="noindent">}}
{\EndP\HCode{<p class="\ifdim\parindent=0pt no\fi indent">}}
{\HCode{</p>}}
{\HCode{</p>}}
我们对有缩进和无缩进的段落有不同的配置,如果段落标记为缩进,该\ifdim\parindent=0pt no\fi
部分用于插入类,但为零,因为它是环境内部的情况。noindent
\parindent
quote
一些段落处理命令的含义如下:
\IgnorePar Asks to ignore the next paragraph
\ShowPar Asks to take into account the following paragraphs
\IgnoreIndent asks to ignore indentation in the next paragraph
\ShowIndent asks to check indentation in the following paragraphs
\SaveEndP Saves the content of \EndP, and sets it to empty content
\RecallEndP
其结果为以下代码:
<div class="disp-quote">
<p class="noindent">Sample para 1
</p><p class="noindent">Sample para 2</p></div>