当我用 引入图形时\includegraphics[width=0.5\textwidth]{fig}
,tex4ht 会将其处理为一些像素(我不确定如何处理 - 大概是我没有遇到过的 ppi 设置?)并生成一个<img src="..." width="276" height="276">
例如,但对我来说似乎自然的是,比如说<img src="..." style="width: 50%;">
。
之前也有一个类似的问题——这个答案,michal.h21 给出了一个例子,其中这些宽度显示为“276pt”(或类似),但是
(1)我在编译测试时没有看到这个 - 我只看到数字,我理解应该以 px 为单位 - 虽然这个答案当然是 6 年前的;
(2)无论如何,这似乎不是合法的 html;
(3)px 和 pt 值都不会随着视口(或者,更切题的是,周围图形的样式大小)而缩放。
所以这让我想到了一个问题:有没有办法直接在 tex4ht 中使用相对图像大小?
答案1
编辑:下面的代码现在已内置于 TeX4ht 源中,您可以使用选项来要求它Gin-percent
。不过,可能需要一些时间才能将其包含在 TeX Live 中。
链接的答案确实很旧而且过时了。\Configure{Gin-dim}
现在您可以使用命令来更改图像尺寸的计算方式。默认情况下,TeX4ht 依赖于 Graphics 包提供的有关图像尺寸的信息。因此,如果您使用明确的尺寸(如width=0.5\textwidth
),则使用 TeX 计算的实际尺寸。
一个问题是,如果您只设置一个维度,例如宽度,则另一个维度将被设置为相同的值。您通常不希望出现这种情况,除非您的图像是正方形。为了获得所有维度的正确值,Graphics 使用一个.xbb
图像文件。可以使用以下命令创建它:
ebb -x *.jpg
针对您使用的所有其他受支持的图像格式运行类似的命令。这将确保对隐式计算的尺寸使用正确的值。
现在,回到您的实际问题。感谢 LaTeX 3 项目,我们现在可以使用该l3fp
包以百分比计算图像尺寸。它比命令更容易使用\dimexpr
,命令有很多限制。
尝试以下.cfg
文件:
\Preamble{xhtml}
\makeatletter
\ExplSyntaxOn
\Configure{Gin-dim}{style="width:\fp_eval:n{round(\Gin@req@width/\textwidth*100,2)}\char_generate:nn { `\% } { 12 }"}
\ExplSyntaxOff
\makeatother
\begin{document}
\EndPreamble
在此配置中,我们将 Graphics 提供的图像宽度除以文本宽度。然后将其相乘以获得正确的百分比值。
对于此示例文件:
% https://tex.stackexchange.com/q/563276/2891
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics[width=0.5\textwidth]{example-image.png}
\end{document}
您将获得以下 HTML 代码:
<p class='noindent'><img style='width:50%' alt='PIC' src='example-image.png' /> </p>