\coverimage[someOptions]{AbsolutePath/someimage.jpg}
我在文档中使用 tex4ebook ,直接在 之后\begin{document}
。但是AbsolutePath
不被尊重并且找不到 someimage.jpg,因此在 epub 中不显示。
作为 AbsolutePath,我使用类似的方法C:/Somepath/folder/anotherfolder/someimage.jpg
。但在 epub 中没有显示任何图像。
当我使用someimage.jpg
位于文件所在的当前文件夹时.tex
,它可以工作并且 someimage.jpg 显示在 epub 中。
只有绝对路径不会在 epub 中显示图像。但当然 someimage.jpg 位于 AbsolutePath 文件夹中。
我是否错过了什么需要了解的事情?
似乎
\graphicpath{{PathA/}{PathB/}{C:/folder/anotherfolder/}}
不适用于 tex4ebook。尽管据说所有带有 的选项都\includegraphics[]{}
适用于\coverimage[]{}
。
有办法解决这个问题吗?
答案1
tex4ebook
不复制图像,您需要使用构建文件进行复制。我以前处理过类似的情况这个答案,但它无法与 一起正确工作tex4ebook
。这是一个修复版本,其中还包含您要使用的其他 DOM 过滤器:
local mkutils = require "mkutils"
local domfilter = require "make4ht-domfilter"
local allowed_chars = {
["-"] = true,
["."] = true
}
local function fix_colons(id)
-- match every non alphanum character
return id:gsub("[%W]", function(s)
-- some characters are allowed, we don't need to replace them
if allowed_chars[s] then return s end
-- in other cases, replace with underscore
return "_"
end)
end
local function id_colons(obj)
-- replace : characters in links and ids with unserscores
obj:traverse_elements(function(el)
local name = string.lower(obj:get_element_name(el))
if name == "a" then
local href = el:get_attribute("href")
-- don't replace colons in external links
if href and not href:match("[a-z]%://") then
local base, id = href:match("(.*)%#(.*)")
if base and id then
id = fix_colons(id)
el:set_attribute("href", base .. "#" .. id)
end
end
end
local id = el:get_attribute("id")
if id then
el:set_attribute("id", fix_colons(id))
end
end)
return obj
end
local function fix_img_names(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 process = domfilter {id_colons,fix_img_names}
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
for pos, name in pairs(Make.lgfile.files) do
if name == path then
Make.lgfile.files[pos] = output_file
end
end
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("jpg$", function(path, parameters)
image_copy(path, parameters)
-- prevent further processing of the image
return false
end)
if mode=="draft" then
Make:htlatex {}
else
Make:htlatex {}
Make:xindy {modules={"duden-utf8"}}
Make:biber {}
Make:htlatex {}
Make:htlatex {}
end
Make:match("html$", process)
有关其工作原理的详细信息请参见上面的链接。