如何获得 tex4ht 与 PDF 相同的目录?

如何获得 tex4ht 与 PDF 相同的目录?

tex4ht 中的目录至今仍让我困惑。是否仍需要使用

\Configure{tableofcontents*}{section,subsection,etc...}

或者 tex4ht 可以使用 PDF 的标准 latex 设置,即

\setcounter{tocdepth}{5} % for main TOC (change number as needed)
\setcounter{secnumdepth}{5}
\tableofcontents

我之所以问这个问题,是因为下面显示必须使用\Configure命令。这是 MWE

\documentclass[12pt]{article}
\begin{document}
%
\title{Notes on something important}
\author{me}
\date{\today}
\maketitle

\setcounter{tocdepth}{5} % for main TOC to go all way to \paragraph
\setcounter{secnumdepth}{5}
\tableofcontents
%
\section{Very important section}
\subsection{Very important subsection}
\subsubsection{Very important subsubsection}
Hence we see that
\paragraph{some results}
Therefore we see it is proven.
\end{document}

编译为 pdf 使用lualatex给出

在此处输入图片描述

因此 TOC 显示\paragraph,但使用相同的代码,使用以下方式编译为 html

make4ht -ulm default -a debug  main.tex 'mathjax,htm'

给出

在此处输入图片描述

它没有显示\paragraph。如果我修改 latex 部分以便 toc 执行此操作

\ifdefined\HCode
\Configure{tableofcontents*}{section,subsection,subsubsection,paragraph}
\else
\setcounter{tocdepth}{5} % for main TOC
\setcounter{secnumdepth}{5}
\tableofcontents
\fi 

现在 HTML 提供了

在此处输入图片描述

所以现在paragraph显示在目录中但没有数字。但最后如果我将 latex 更改为

\setcounter{tocdepth}{5} % for main TOC
\setcounter{secnumdepth}{5}

\ifdefined\HCode
\Configure{tableofcontents*}{section,subsection,subsubsection,paragraph}
\else
\tableofcontents
\fi 

现在 HTML 是正确的

在此处输入图片描述

所以我的问题是:是否可以直接使用上述输出

\setcounter{tocdepth}{5} % for main TOC
\setcounter{secnumdepth}{5}
\tableofcontents

无需添加

\ifdefined\HCode
\Configure{tableofcontents*}{section,subsection,subsubsection,paragraph}
\else...\fi

因为在我看来,tex4ht 的信息已经存在了,所以为什么还要添加命令呢\Configure?这将简化 Latex。

将 tex4ht 中的目录设置为与 PDF 相同的正确方法是什么?是否需要始终将其保留在\Configure那里?

TL 2023

2023 年 7 月 27 日更新

不幸的是,给出的解决方案在要求拆分文档时不起作用,我遇到的 90% 的情况都是这样。也就是说,移动命令\setcounter{tocdepth}\setcounter{secnumdepth}仅在不要求拆分文档的情况下在 tex4ht 中起作用。否则整个目录将不再显示!这是一个 MWE

\documentclass[12pt]{book}
\setcounter{tocdepth}{1} % for main TOC, show part and chapter
\setcounter{secnumdepth}{1}
\begin{document}
\title{my book}
\author{me}
\date{\today}
\maketitle

\tableofcontents

\part{first part}
\chapter{first chapter in part 1}
things here

\part{second  part}
\chapter{first  chapter in part 2}
more things here
\end{document}

现在使用

make4ht -ulm default -a warning  main.tex 'mathjax,htm,2'

看看 HTML,根本就没有显示目录。什么都没有。只有空白。但是使用

make4ht -ulm default -a warning  main.tex 'mathjax,htm'

正确的目录现在显示在 HTML 中。

解决方法是重新使用\Configuretext4ht,就像这样

\documentclass[12pt]{book}
\begin{document}
\title{my book}
\author{me}
\date{\today}
\maketitle

\ifdefined\HCode 
\Configure{tableofcontents*}{part,chapter}
\else 
\setcounter{tocdepth}{1} % for main TOC
\setcounter{secnumdepth}{1}
\tableofcontents
\fi 

\part{first part}
\chapter{first chapter in part 1}
things here

\part{second  part}
\chapter{first  chapter in part 2}
more things here
\end{document}

现在使用相同的命令进行编译,无论拆分级别如何,目录都会在主页上正常显示并且永远不会消失。

答案1

TeX4ht 中的目录处理相当复杂。如果不使用\Configure{tableofcontents*},它将根据文件加载tocdepth时的 值(即 )打印节级别。因此,如果您将此定义移至文档前言,它应该可以工作:.4ht\begin{document}

\documentclass[12pt]{article}
\setcounter{tocdepth}{5} % for main TOC to go all way to \paragraph
\setcounter{secnumdepth}{5}
\begin{document}
%
\title{Notes on something important}
\author{me}
\date{\today}
\maketitle

\tableofcontents
%
\section{Very important section}
\subsection{Very important subsection}
\subsubsection{Very important subsubsection}
Hence we see that
\paragraph{some results}
Therefore we see it is proven.
\end{document}

在此处输入图片描述

相关内容