为什么添加 tocloft 包会导致 tex4ht 不生成目录?

为什么添加 tocloft 包会导致 tex4ht 不生成目录?

Linux mint 17 上的 texlive 2014。

此 MWE 不会在 htlatex 生成的 HTML 文件中生成目录

\documentclass{article}
\usepackage{tocloft}  %if this line is commented, then toc will show up
\begin{document}
\tableofcontents
  \section{sec1}
  some text 1
  \section{sec2}
  some text 2
\end{document}

如果tocloft不是使用后,toc 将会以 html 形式显示。

编译命令是

htlatex foo.tex

然后查看同一文件夹中的文件foo.html以查看丢失的目录。

当我尝试更改目录的字体大小并使用这个包时出现了这个问题,它可以与 pdflatex 配合使用,然后我注意到 HTML 文件中缺少目录。

答案1

tex4ht和都tocloft重新定义目录机制,因此它们相互冲突。因为无论如何都不能使用tocloft设置tex4ht,所以最好禁用tocloft。从快速查看tocloft源代码来看,似乎我们可以\if@cftnctoc为此目的使用条件,当设置为 true 时,不会发生重新定义。幸运的是,所有重新定义都是在\AtBeginDocument命令中完成的,这似乎是在.4ht加载文件时完成的。因此,我们可以引入tocloft.4ht文件,内容非常简单:

\@cftnctoctrue
\endinput

的值\if@cftnctoc设置为 true。此文件在tocloft重新定义命令检查 的值之前加载\if@cftnctoc,因此不会发生重新定义。

在此处输入图片描述

相关内容