使用 LaTeX 写博客时使用空 HTML

使用 LaTeX 写博客时使用空 HTML

正如标题所示,这是这个问题。 我正在跟进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 就很难判断,但如果你使用你链接的问题中的确切代码,我会说问题是扩展中的一个错误tidymake4ht它没有检查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

如果你对使用 TeX4ht 写博客感兴趣,另请参阅这个博客它由 Github 自动从 LaTeX 源生成。以下是来源

相关内容