运行tex4ebook
以下示例
\documentclass{memoir}
\begin{document}
Some dedication text
\book{Hello}
\part{World}
\chapter{How are you}
\end{document}
生成一个其中 的.epub
格式\book
为likeSection
,但没有任何先前的分页符或任何相应的书签。
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
: