为什么此目录中的一行不是链接(Kindle 上的 tex4ebook)

为什么此目录中的一行不是链接(Kindle 上的 tex4ebook)

目前尚不清楚这里的问题出在 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。通过此更改,您应该会得到一个正确的文件。

相关内容