关于使用 调整图像大小的问题已经出现了几个ht4leax/make4ht
,但不知何故,似乎没有一个答案能够解决我的问题。
考虑以下 MWE
\documentclass{article}
\usepackage{graphicx}
\RequirePackage[]{fontspec}
\begin{document}
\begin{figure}
\includegraphics[width=\textwidth]{test.jpg}
\end{figure}
\end{document}
我使用以下make4ht
调用来编译该文档以创建一个.odt
文件:
make4ht -l -u -f odt 测试.tex
我尝试了各种不同的配置文件,尝试了没有文件和没有.xbb
文件的情况,但无论我做什么,给出的参数\includegraphics
都会被忽略,并且最终文档中嵌入图像的大小保持不变。
答案1
图像尺寸本身设置正确,但它嵌入在draw:frame
尺寸错误的元素中。我发现这个尺寸是由 Xtpipes 插入的,它从图像文件本身读取图像尺寸并忽略 TeX 文件中设置的尺寸:
<draw:frame draw:name="film.jpg" text:anchor-type="as-char" draw:z-index="0" svg:width="41pt" svg:height="41pt"><draw:image xlink:href="Pictures/film.jpg" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" svg:width="345.0pt" svg:height="345.1135pt"/><!--draw:name="IMG"
svg:width="345.0pt" svg:height="345.1135pt"
--></draw:frame>
可以使用make4ht
过滤器将元素中的尺寸设置draw:frame
为与中的尺寸相同draw:image
。尝试以下构建文件:
local domfilter = require "make4ht-domfilter"
local domprocess = domfilter {
function(dom)
print("process images")
local frames = dom:query_selector("draw|frame")
print("frames", #frames)
for _, frame in ipairs(frames) do
local images = frame:query_selector("draw|image")
if #images > 0 then
local image = images[1]
local width = image:get_attribute("svg:width")
local height = image:get_attribute("svg:height")
frame:set_attribute("svg:width", width)
frame:set_attribute("svg:height", height)
print("image dimensions", width, height)
end
end
return dom
end
}
Make:match("4oo", domprocess)
仍然需要xbb
使用
ebb -x test.jpg
示例结果: