使 tex4ebook 支持 memoir 的 \book

使 tex4ebook 支持 memoir 的 \book

运行tex4ebook以下示例

\documentclass{memoir}
\begin{document}

Some dedication text

\book{Hello}

\part{World}

\chapter{How are you}

\end{document}

生成一个其中 的.epub格式\booklikeSection,但没有任何先前的分页符或任何相应的书签。

tex4ebook(或)需要什么配置tex4ht来支持memoir构造\book,或者这是否需要上游进行更广泛的更改?

答案1

不支持\book中的命令tex4ht,因此您看到的只是基于此命令使用的字体的格式。尝试以下配置代码,将其重新定义为 可识别的分段命令tex4ht

\Preamble{xhtml}
\NewSection\book{\thebook}
\Configure{book}{\ifvmode\IgnorePar\fi\EndP\HCode{<h2 class="bookHead"><span class="booknumber">}\bookname\refstepcounter{book}\space\thebook\HtmlParOff\HCode{</span><span class="booktitle">}}{\HCode{</span></h2>}\HtmlParOn}{}{}
\Css{.booknumber{display:block;}}
\Configure{toToc}{book}{part}
\CutAt{book}
\begin{document}
\EndPreamble

\NewSection命令重新定义\book为 识别的分段命令tex4ht。第二个参数应包含用于打印分段号的计数器命令。

然后需要使用 配置 HTML 代码\Configure{book}。此配置由 声明\NewSection。这有点复杂,所以我将尝试更详细地描述它:

 {\ifvmode\IgnorePar\fi\EndP\HCode{<h2 class="bookHead"><span class="booknumber">}\bookname\refstepcounter{book}\space\thebook\HtmlParOff\HCode{</span><span class="booktitle">}}

关闭\ifvmode\IgnorePar\fi\EndP当前段落,此代码对于 中的所有块级元素都是必需的tex4ht\HCode{<h2 class="bookHead"><span class="booknumber">}开始 HTML 代码,元素span.booknumber用于设置书号的样式,因为它应该与书名分开一行。\bookname是包含Book字符串的 Memoir 命令。我们需要book使用\refstepcounter命令手动增加计数器。\HtmlParOff禁用 HTML 段落,因为我的测试中产生了一些虚假段落。\HCode{</span><span class="booktitle">}关闭书号并打开span.booktitle书名。

{\HCode{</span></h2>}\HtmlParOn}

此代码只是关闭所有打开的 HTML 元素并启用段落。

\Css{.booknumber{display:block;}}

此命令设置书号样式,它仅打印在单独的行上。

 \Configure{toToc}{book}{part}

需要\book包含在目录中,与 处于同一级别\part。我不确定是否可以将其放在更高的级别,而无需重新定义很多东西。

 \CutAt{book}

这将为每本书打开一个新的 HTML 页面。

结果如下ebook-viewer

在此处输入图片描述

相关内容