我使用这样的命令来生成 HTML 文件并将其保存在目录中./html
。
make4ht -x -f html5 -d html doc1.tex
例如,本文档
\documentclass{article}
\usepackage{graphicx}
\begin{document}
This is a test.
\includegraphics{../Figures/image.png}
\end{document}
使用上述命令进行转换时会生成./html/doc1.html
如下内容的文件:
<!DOCTYPE html>
<html lang='en-US' xml:lang='en-US'>
<head><title></title>
<meta charset='utf-8' />
<meta content='TeX4ht (https://tug.org/tex4ht/)' name='generator' />
<meta content='width=device-width,initial-scale=1' name='viewport' />
<link href='doc1.css' rel='stylesheet' type='text/css' />
<meta content='doc1.tex' name='src' />
</head><body>
<!-- l. 4 --><p class='noindent'>This is a test. <img alt='PIC' src='../Figures/image.png' />
</p>
</body>
</html>
我希望 HTML 文件中的 img 标签指向image.png
本地目录中的文件./html
,即 ,并将图形文件复制到./html/image.png
。这样我就可以压缩./html
目录并共享它,而不必担心丢失图形文件。这可能吗?如果可以,怎么做?我使用的是 Linux(Ubuntu)。
答案1
尝试这个构建文件:
local mkutils = require "mkutils"
local domfilter = require "make4ht-domfilter"
local process = domfilter{
function(dom)
for _, img in ipairs(dom:query_selector("img")) do
local src = img:get_attribute("src")
if src then
-- remove path specification
src = src:match("([^/]+)$")
img:set_attribute("src", src)
end
end
return dom
end
}
local function image_copy(path, parameters)
-- get image basename
local basename = path:match("([^/]+)$")
-- if outdir is empty, keep it empty, otherwise add / separator
local outdir = parameters.outdir == "" and "" or parameters.outdir .. "/"
-- handle trailing //
outdir = outdir:gsub("//$","/")
local output_file = outdir .. basename
mkutils.cp(path, output_file)
end
Make:match("png$", function(path, parameters)
image_copy(path, parameters)
-- prevent further processing of the image
return false
end)
Make:match("html$", process)
它做两件事——首先,它从中删除文件路径<img src="path/image.png">
;其次,它将 png 图像复制到输出目录。
如果您想要创建包含所有输出文件(包括图像)的目录,您可以使用以下命令:
make4ht -e build.lua -xd html doc1.tex
这是最终的 HTML:
<!-- l. 5 --><p class='noindent'>This is a test. <img alt='PIC' src='image.png' />
</p>
以及目录列表html
:
-rw-r--r--. 1 michal michal 4411 7. zář 23.11 image.png
-rw-rw-r--. 1 michal michal 6067 7. zář 23.11 doc1.css
-rw-rw-r--. 1 michal michal 473 7. zář 23.11 doc1.html