目前尚不清楚这里的问题出在 tex 还是亚马逊上;但我认为至少应该在这里询问,以防其他人通过谷歌搜索找到它。
我正在使用 tex4ebook 编写电子书。我有以下 MCVE:
\documentclass{book}
\begin{document}
\tableofcontents
\chapter{fine}
\section{fine}
%##########
\chapter{5}
\fbox{\parbox{\textwidth}{
\begin{itemize}
\item B
\end{itemize}
C
}}
\section{Not working}
\chapter{fine}
\section{fine}
\end{document}
我运行 tex4ebook 并得到 mcve.epub。你可以看到文件这里
在除亚马逊 Kindle 之外的任何电子书阅读器中(在线版、手机版、桌面版和 iPad 版)查看时,它都显示正常:
但是,在任何亚马逊类型的电子阅读器上,目录都没有指向以下部分的链接:
我的问题是:
- 为什么会发生这种情况?我该如何阻止它?
- 有人可以重现这个问题吗?
编辑:
更令人愤怒的是(这更多的是亚马逊的问题而不是 LaTeX 的问题)——Kindle Preview 软件可以清楚地看到目录的结构,但它就是不显示它:
答案1
当我编译此文件时收到警告:
[INFO] make4ht-lib: parse_lg process file: samplech2.html
[WARNING] domfilter: DOM parsing of samplech2.html failed:
[WARNING] domfilter: /home/mint/texmf/scripts/lua/LuaXML/luaxml-mod-xml.lua:175: Unbalanced Tag (/div) [char=935]
这意味着生成的 Epub 包含无效的 HTML 代码,这可能会导致一些问题。有问题的文件包含您的第 2.1 节,因此可能会导致 Kindle 上出现问题。
您可以使用此配置文件修复该问题:
\Preamble{xhtml}
\catcode`\:=11
\Configure{fbox}
{\ifvmode \IgnorePar\EndP
\HCode{<div class="fbox">}%
\def\end:bx{\ifvmode\IgnorePar\fi\EndP\HCode{</div>}\par}%
\else
\HCode{<span class="fbox">}%
\def\end:bx{\HCode{</span>}}%
\fi}
{\end:bx}
\catcode`\:=12
\begin{document}
\EndPreamble
这是对 TeX4ht 原始配置的修改,它正确地在 结束之前关闭了 段落\fbox
。通过此更改,您应该会得到一个正确的文件。