重复TeX4HT 中的标签;如何抑制 tex4ht 中的重复标签?

重复TeX4HT 中的标签;如何抑制 tex4ht 中的重复标签?

我是 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 aftertag}

\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\parindentquote

一些段落处理命令的含义如下:

\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>

相关内容