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 中查看时会给出没有页码的目录:
如果我将 mobi 文档传输到 Kindle 阅读器,我会得到奇怪的页码:
在本书的其余部分,数字不断增加但最终停在 224。
这些数字从何而来?为什么它们是错误的?是否可以删除它们或阻止 Tex4ebook 生成它们?
谢谢。
Michal.h21 的更新:
感谢您对 tex4ebook 页码的补充评论。这给了我一个线索,让我看看 epub 到 mobi 的转换。
我原本使用 kindlegen 程序将 epub 转换为 mobi。使用 Calibre 转换程序不会给出页码问题,所以这看起来像是 kindlegen 的一个错误。
然而,Calibre 转换不能正确处理参考书目,并且参考编号后有一个错误的换行符:
有没有办法使用 css 命令更改参考书目项在 html 中的编码方式以避免这种情况?如果没有,我将尝试手动排版参考书目项。
如果 tex4ebook 不生成页码,那么图中显示的 biblatex/backref 的数字代表什么意思,又是如何生成的?
一如往常,感谢您对我的问题提供的所有帮助和耐心。
更新 2:
感谢您的额外解释和建议。我尝试了您的 css 建议。epub 的结果是:
使用 kindlegen 和 Calibre 进行的 mobi 转换现在产生与 epub 外观相同的结果。参考编号后面有很大间隙,没有悬挂缩进,但其他方面都很好。我从您的评论中推测,无法获得使用 pdf 输出生成的参考的正常样式。
更新 3:
我写的关于引用布局的内容对于多个引用来说是错误的。使用新 css 的 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
不保留页码,但它们仍可供宏使用。因此biblatex
backref 功能可以使用它们链接回引用。
关于您的第二个问题,我认为这是由于在参考条目内开始的段落显示在新行上造成的。
尝试以下配置:
\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
它禁用参考书目项目中的段落