比较书籍类中的目录与 tex4ht
\documentclass[12pt]{article}
\setcounter{tocdepth}{5} % for main TOC must be in preamble
\setcounter{secnumdepth}{5}
\begin{document}
\title{my book}
\author{me}
\date{\today}
\maketitle
\tableofcontents
\section{section name}
section data
\subsection{subsection name}
subsection data
\subsubsection{subsubsection name}
subsubsection data
\paragraph{paragraph name}
paragraph data
\end{document}
编译为
make4ht -ulm default -a debug main.tex 'mathjax,htm'
给出(仅显示目录)
注意向右移动的量。现在与这个 MWE 进行比较,它是相同的,但是是书籍类
\documentclass[12pt]{book}
\setcounter{tocdepth}{5} % for main TOC must be in preamble
\setcounter{secnumdepth}{5}
\begin{document}
\title{my book}
\author{me}
\date{\today}
\maketitle
\tableofcontents
\chapter{book name}
my book
\section{section name}
section data
\subsection{subsection name}
subsection data
\subsubsection{subsubsection name}
subsubsection data
\paragraph{paragraph name}
paragraph data
\end{document}
使用相同命令编译得到
我发现两个问题:
- 在上面的第一个例子中,向右移动的量太小,可以稍微大一些,并且
1.1.1.1
没有向右移动的段落号subsubsection
- 在书籍类中,向右移动的量与文章类相比太大了。如果目录中所有类的移动量都相同,那就更好了。请注意,在书籍类中,段落编号现在移到了子小节的右侧,这是正确的做法,只是移动量太大了。
我只是喜欢有美观的目录,即使是 HTML 格式,而不只是 PDF 格式 :)
链接至 tex4ht 错误跟踪入口。
有什么建议可以解决上述两个问题吗?
TL 2023
2023 年 7 月 27 日更新
我在 tex4ht 中发现了 TOC 的另一个问题,因此在此记录。如果我发现更多问题,将在此处添加。
此 MWE
\documentclass[12pt]{book}
\setcounter{tocdepth}{5} % must be in preamble
\setcounter{secnumdepth}{5}
\begin{document}
\title{my book}
\author{me}
\date{\today}
\maketitle
\tableofcontents
\part{first part}
\chapter{book name}
my book
\section{section name}
section data
\subsection{subsection name}
subsection data
\subsubsection{subsubsection name}
subsubsection data
\paragraph{paragraph name}
paragraph data
\end{document}
使用 lualatex 进行编译,然后使用make4ht -ulm default -a warning main.tex 'mathjax,htm'
给出这些不同的 TOC
答案1
似乎根本没有设置 article 类的 TOC 缩进,因此您只能从 HTML 文件中的空格获得一些缩进。您可以使用 CSS 设置缩进。例如,此示例检测当前文档类是否提供\chapter
并相应地设置缩进。它还在每个级别仅使用1em
而不是2em
,因此它不那么明显:
\Preamble{xhtml}
\ifdefined\chapter
\def\indentstart{1}
\else
\def\indentstart{0}
\fi
\def\calcindent#1{margin-left: \the\numexpr #1+\indentstart\relax em;}
\Css{.sectionToc, .likesectionToc {\calcindent{0}}}
\Css{.subsectionToc, .likesubsectionToc {\calcindent{1}}}
\Css{.subsubsectionToc, .likesubsubsectionToc {\calcindent{2}}}
\Css{.paragraphToc, .likeparagraphToc {\calcindent{3}}}
\Css{.subparagraphToc, .likesubparagraphToc {\calcindent{4}}}
\begin{document}
\EndPreamble
这是书籍的结果:
以下是本文:
我最终会更新 TeX4ht 源,但可能还需要几周时间。