在 htlatex 中抑制目录(使用 htlatex 进行编译失败,并出现未定义的控制序列 \TocTitle)?

在 htlatex 中抑制目录(使用 htlatex 进行编译失败,并出现未定义的控制序列 \TocTitle)?

考虑这个 MWE test2.tex

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{times}
\usepackage[top=3cm,bottom=3cm,left=2cm,right=2cm,showframe]{geometry}
\usepackage{pgffor}
\usepackage[firstinits=true]{biblatex}
\bibliography{biblatex-examples}

\global\let\TocTitle\relax


\begin{document}
\global\let\TocTitle\relax

\section*{\centering Article Card}
\bigskip
\noindent The paper is:
\bigskip

\fullcite{murray}
\bigskip

\noindent The authors are:
\bigskip

\noindent%
\citeauthor{murray}

\end{document}

latex test2.tex和都可以编译通过pdflatex test2.tex;但是,如果htlatex test2.tex出现以下情况则失败:

[1
! Undefined control sequence.
<write> ...dcsname{1}{x1-1000}{QQ2-1-1}{\TocTitle 
                                                  }}{\folio }\relax 
l.31 \end{document}

但奇怪的是,我明确地定义\TocTitle\relax 两次- 既在序言中,又在文档开始之后?那么如何是否可以根本变得\TocTitle未定义????!!!发生了什么事,我该如何解决这个问题?


编辑:事实证明,通过以下更改,我可以将其成功编译成 html:

...
\usepackage[top=3cm,bottom=3cm,left=2cm,right=2cm,]{geometry} %showframe
...
\global\let\TocTitle\relax
\end{document}

...也就是说,只需添加其他\TocTitle在结束文档之前将\def 改为\relax。

但更普遍的问题似乎是这样的:我的文档中没有\tableofcontents,因为我不需要/不想要它出现在这个文档中;然而,即使如此,它似乎htlatex仍然坚持为目录收集数据。所以更普遍的问题是——什么是规范的方式来告诉htlatex 不是收集或处理数据来生成目录?

答案1

这是因为您使用了\section*{\centering Article Card}。所有章节标题都由 保存,tex4ht而使用\centering似乎会破坏这一点。\TocTitletex4ht包含已保存标题的内部命令,并且在每个章节命令中都重新定义它,因此如果您在其他地方声明它,它就无济于事了。

无论如何,您都不应该使用这样的格式化命令\section,最好使用例如titlesec包来更改部分格式:

\global\let\TocTitle\relax
\usepackage{titlesec}
\titleformat*{\section}{\bfseries\large\centering}
\begin{document}
%\global\let\TocTitle\relax
%\show\TocTitle
\section*{Article  Card}

这当然不会使该部分在 html 中居中,您需要css在文件中添加声明myconfig.cfg

\makeatletter
\Gm@showframefalse
\makeatother
\Preamble{xhtml}
\Css{.likesectionHead{text-align:center;}}
\begin{document}
\EndPreamble

\Gm@showframefalse将抑制由以下项创建的页面周围的网格geometry

使用以下方式编译

htlatex filename myconfig

结果:

在此处输入图片描述

关于你编辑后的问题,不总是tex4ht收集所有章节标题,即使是带星号的章节,因为你可以将 html 文件分成每个章节的多个小文件,否则你将无法打开这些文件

相关内容