正如标题所示,这是这个问题。 我正在跟进Michal 的回答,我创建了答案中建议的相同结构,创建了文件.make4ht
和相同的hello.tex
文件,但是当我运行时make4ht -um publish hello.tex
,我在终端中收到以下消息
[STATUS] make4ht: Conversion started
[STATUS] make4ht: Input file: hello.tex
removing maketitle
sh: 1: tidy: not found
...exmf-dist/scripts/make4ht/filters/make4ht-staticsite.lua:86: attempt to index a nil value (local 'head')
结果是一个空date-hello.html
文件。
由于我对这些都还很陌生,所以我不确定我做错了什么。
答案1
如果没有 MWE 就很难判断,但如果你使用你链接的问题中的确切代码,我会说问题是扩展中的一个错误tidy
。make4ht
它没有检查tidy
命令返回的字符串是否为空。
tidy
我们可以从这条消息中看到问题出在:
sh: 1: tidy: not found
...exmf-dist/scripts/make4ht/filters/make4ht-staticsite.lua:86: attempt to index a nil value (local 'head')
您可以安装 Tidy或者在.make4ht
配置文件中禁用它:
local outdir = os.getenv "kodymirus_root" or "out"
local domfilter = require "make4ht-domfilter"
-- remove the \maketitle environment from the HTML file, title will be inserted in the template
local domprocess = domfilter{function(dom)
local maketitles = dom:query_selector(".maketitle")
for _, el in ipairs(maketitles) do
print "removing maketitle"
el:remove_node()
end
return dom
end}
filter_settings "staticsite" {
site_root = outdir,
map = {
[".css$"] = "css/"
},
header = {
layout="post",
date = function(parameters)
return os.date("!%Y-%m-%d %T", parameters.time)
end
}
}
Make:enable_extension "common_domfilters"
if mode=="draft" then
Make:htlatex {}
elseif mode=="publish" then
-- Make:htlatex {}
Make:match("html$", domprocess)
-- Make:enable_extension "tidy"
Make:htlatex {}
else
Make:htlatex {}
Make:htlatex {}
Make:htlatex {}
end