![如何获得 tex4ht 与 PDF 相同的目录?](https://linux22.com/image/467328/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%BE%97%20tex4ht%20%E4%B8%8E%20PDF%20%E7%9B%B8%E5%90%8C%E7%9A%84%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
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 中。
解决方法是重新使用\Configure
text4ht,就像这样
\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}