mobi 格式和 tex4ebook 的页码很奇怪

mobi 格式和 tex4ebook 的页码很奇怪

Tex4ebook 在 Kindle 的目录中产生了奇怪的页码。

梅威瑟:

 \documentclass[ebook,12pt,oneside,openany]{memoir}

 \begin{filecontents}{\jobname.bib}
 @book{Hiemenz,
 author={Hiemenz},
 title={Polymer Chemistry}
 }
 \end{filecontents}

 \usepackage{pgffor}

 \usepackage{lipsum}

 \usepackage[backend=biber,hyperref=auto,backref=true]{biblatex}
 \addbibresource{\jobname.bib}

 \usepackage{imakeidx}

 \makeindex[intoc=true,columns=1,noautomatic]

 \usepackage[hyperindex=true]{hyperref}

 \title{Book}
 \author{Author}
 \date{}

 \begin{document}

 \maketitle

 \frontmatter

 \tableofcontents

 \mainmatter

 \foreach \n in {1,...,100}{%
 \chapter{Chapter}
 Here comes a quotation \cite{Hiemenz}.

 aword\index{aword}

 \lipsum
 }

 \printbibliography
 \printindex

 \end{document}

运行 tex4ebook 并生成 mobi 版本,在 Calibre 中查看时会给出没有页码的目录:

Calibre 中的 mobi 版本

如果我将 mobi 文档传输到 Kindle 阅读器,我会得到奇怪的页码:

Kindle 版本

在本书的其余部分,数字不断增加但最终停在 224。

这些数字从何而来?为什么它们是错误的?是否可以删除它们或阻止 Tex4ebook 生成它们?

谢谢。

Michal.h21 的更新:

感谢您对 tex4ebook 页码的补充评论。这给了我一个线索,让我看看 epub 到 mobi 的转换。

我原本使用 kindlegen 程序将 epub 转换为 mobi。使用 Calibre 转换程序不会给出页码问题,所以这看起来像是 kindlegen 的一个错误。

然而,Calibre 转换不能正确处理参考书目,并且参考编号后有一个错误的换行符:

Calibre 转换的参考书目

有没有办法使用 css 命令更改参考书目项在 html 中的编码方式以避免这种情况?如果没有,我将尝试手动排版参考书目项。

如果 tex4ebook 不生成页码,那么图中显示的 biblatex/backref 的数字代表什么意思,又是如何生成的?

一如往常,感谢您对我的问题提供的所有帮助和耐心。

更新 2:

感谢您的额外解释和建议。我尝试了您的 css 建议。epub 的结果是:

epub 输出

使用 kindlegen 和 Calibre 进行的 mobi 转换现在产生与 epub 外观相同的结果。参考编号后面有很大间隙,没有悬挂缩进,但其他方面都很好。我从您的评论中推测,无法获得使用 pdf 输出生成的参考的正常样式。

更新 3:

我写的关于引用布局的内容对于多个引用来说是错误的。使用新 css 的 epub 输出是:

新的 epub 输出

两个引用有重叠。

再次感谢你的帮助。

Michal.h21 的另一个更新:

我再次查看了此页面问题。当我使用 epubcheck 检查 epub 时,它给出了很多错误,例如

ERROR(RSC-005): sample.epub/OEBPS/samplech90.html(-1,-1): Error while parsing file 'Attribute name "X0-Hiemenz" associated with an element type "a" must be followed by the ' = ' character.'.
FATAL(RSC-016): sample.epub/OEBPS/samplech91.html(17,11): Fatal Error while parsing file 'Attribute name "X0-Hiemenz" associated with an element type "a" must be followed by the ' = ' character.'.

ERROR(RSC-012): sample.epub/OEBPS/sampleli3.html(24,33): Fragment identifier is not defined.
ERROR(RSC-012): sample.epub/OEBPS/sampleli3.html(26,33): Fragment identifier is not defined.

这可能是 kindlegen 给出错误页码的原因吗?

再次感谢。

答案1

tex4ebook根本不会产生任何页码。即使你想这样做,目前也是不可能的。我想制作一个包,可以在电子书中在 PDF 版本中出现分页符的地方插入分页符标记。我认为应该可以使用 LuaTeX 回调来做到这一点,但我还没有成功。

无论如何,如果您看到任何页码,它们要么是由 Calibre 添加的(如果您使用它来转换为 Kindle),要么是由 Kindle 阅读器本身添加的。我不知道为什么它停在第 224 页。

编辑:

虽然tex4ht不保留页码,但它们仍可供宏使用。因此biblatexbackref 功能可以使用它们链接回引用。

关于您的第二个问题,我认为这是由于在参考条目内开始的段落显示在新行上造成的。

尝试以下配置:

\Preamble{xhtml}

\begin{document}

% \Css{dt.thebibliography { display@inline;}}
\Css{dd.thebibliography p{display@inline;}}
% \Css{dd.thebibliography {display@inline;}}
\makeatletter
\def\bibConfigure{
  \ConfigureList{thebibliography}
  {\ifvmode \IgnorePar \fi \EndP \EndP
    \HCode {<dl class="thebibliography">}%
    \PushMacro \end@itm \global \let \end@itm =\empty}%
  {\ifvmode \IgnorePar \fi \EndP
    \PopMacro \end@itm \global \let \end@itm \end@itm \EndP
    \HCode {</dd></dl>}\HtmlParOn\ShowPar}%
  {\ifvmode \IgnorePar \fi \EndP \gHAdvance \bibN by 1
    \end@itm \global \def \end@itm {\EndP \Tg </dd>\HtmlParOn}%
    \HCode {<dt id="X\therefsection-\abx@field@entrykey"
      class="thebibliography">}\bgroup \bf}%
  {\ifvmode \IgnorePar \fi \EndP
    \egroup
    \HCode {</dt><dd\Hnewline id="bib-\bibN"
      class="thebibliography">}%
    \HtmlParOff}%
}
\makeatother
\EndPreamble

它禁用参考书目项目中的段落

相关内容