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
函数.html
和cssprocess
文件.css
函数。这些函数由函数创建filter
,函数依次接受处理函数表或过滤器名称(参见make4ht 文档了解详情)。
为了解决 css 文件中尾随逗号的问题,我创建了函数cssfix
,它将 css 文件作为字符串并直接替换左括号之前的所有字符串。然后保存修改后的字符串。