手工编辑tex4ebook epub文件夹后,如何重新打包?

手工编辑tex4ebook epub文件夹后,如何重新打包?

TeX4ebook 会创建一个“epub”文件夹,然后自动将其压缩以生成 .epub 文件。有时(我尽力做到友善)tex4ht 会产生需要手动更正的代码。在命令行中必须有一种简单的方法可以在手动编辑后重新压缩文件夹以生成 epub 文件,我很想知道它是什么,而不是试图弄清楚!谢谢!

答案1

为了使这个问题符合主题,我将回答两个问题,一个是被问到的问题,另一个问题是是否存在更好的解决方案来修改输出。

回答第一个问题,生成和后处理的文件保存在目录中filename-outputformat/OEBPS/,因此如果您想手动编辑文件,请在此目录中进行。

假设您有文件名sample.tex且输出格式mobi为 Kindle。打开终端并转到目录:

cd dir with the TeX file/sample-mobi

编辑目录中的文件OEBPS并运行命令:

zip -qXr9D sample.epub OEBPS
kindlegen sample.epub

比手动编辑输出文件更好的方法是制作make4ht构建文件并创建过滤器以自动修复问题。构建文件具有与主 TeX 文件相同的基本名称和扩展名。因此,在我们的案例中情况.mk4如下:sample.mk4

local filter = require "make4ht-filter"
local cssfix = function(s)
  return s:gsub("%,%s*%{","{")
end
local process = filter{"cleanspan", "fixligatures", "hruletohr"}
local cssprocess = filter{cssfix}
Make:htlatex()
Make:htlatex()
Make:match("html$",process)
Make:match("css$",cssprocess)

它是Lua脚本。Make:htlatex运行tex4ht包含一次的 Latex,我们称之为两次(默认使用htlatex三次)。

Make:match将在与正则表达式匹配的所有输出文件上运行一个函数。我们使用文件process函数.htmlcssprocess文件.css函数。这些函数由函数创建filter,函数依次接受处理函数表或过滤器名称(参见make4ht 文档了解详情)。

为了解决 css 文件中尾随逗号的问题,我创建了函数cssfix,它将 css 文件作为字符串并直接替换左括号之前的所有字符串。然后保存修改后的字符串。

相关内容