我已经发现这个问题对我的图像配置非常有帮助。受到 tex4ht 功能的启发(它比我想象的要强大得多!)我想知道我是否可以将图像宽度配置为 em 单位而不是 pt 单位。
以下是我的 tex 和 cfg 文件的示例:
mwe.tex:
\documentclass{article}
\usepackage[]{graphicx}
\usepackage[]{amsmath}
\begin{document}
EPS file (0.3 textwidth)
\begin{center}
\includegraphics[width=0.3\textwidth]{plot.eps}
\end{center}
PNG file: (0.5 textwidth)
\begin{center}
\includegraphics[width=0.5\textwidth]{plot.png}
\end{center}
\end{document}
我的_mwe.cfg:
\Preamble{html}
\Configure{graphics*}
{eps}
{%
\Picture[pict]{\csname Gin@base\endcsname\PictExt
\space width="\the\dimexpr \expandafter\the\csname Gin@req@width\endcsname *3/2"
}%
}
\Configure{graphics*}
{png}
{%
\Picture[pict]{\csname Gin@base\endcsname .png
\space width="\the\dimexpr \expandafter\the\csname Gin@req@width\endcsname *3/2"
}%
}
\begin{document}
\EndPreamble
跑步
htlatex mwe.tex "my_mwe.cfg"
分别生成宽度为 155pt 和 258pt 的图像,这些图像在我的 PC 浏览器中看起来很棒,但在平板电脑或手机浏览器中看起来却不是这样:我更希望宽度以 em 单位或百分比表示。(作为对链接问题的评论的跟进,我发现“...\endcsname *1.5”不起作用,但“...\endcsname *3/2”起作用。)
最初被 tex4ht 吸引是为了生成 html 和 pdf 文档,我希望能够利用 html 的响应能力。
这是否可以配置?谢谢。
答案1
我已经创建了用于计算值的简单宏em
,您只需将尺寸除以字体大小:
% default font size
\let\emwidth\f@size
% convert pt to rem
\newcommand\CalcRem[1]{\strip@pt\dimexpr(#1)/\emwidth}
\emwidth
设置为字体大小,参数为
\CalcRem
尺寸,但也可以是一个表达式。
\strip@pt
用于输出值,并去除后缀,如果用于输出值的pt
话,会添加后缀。\the
现在您可以更改图像的配置:
\Preamble{html}
\begin{document}
\makeatletter
% Various helper functions
% default font size
\newcommand\emwidth{16}
\let\emwidth\f@size
% convert pt to rem
\newcommand\CalcRem[1]{\strip@pt\dimexpr(#1)/\emwidth}
\Configure{graphics*}
{png}
{% we must add the image to the list of output files
\special{t4ht+@File: \csname Gin@base\endcsname.png}
\Picture[pict]{\csname Gin@base\endcsname\PictExt
\space style="width:\CalcRem{\Gin@req@width}em;"
}%
}
\Configure{graphics*}
{eps}
{% you need to coonvert eps to png first
\Needs{"convert \csname Gin@base\endcsname.eps
\csname Gin@base\endcsname.png"}%
\special{t4ht+@File: \csname Gin@base\endcsname.png}
\Picture[pict]{\csname Gin@base\endcsname .png
\space style="width:\CalcRem{\Gin@req@width}em;"
}%
}
\makeatother
\EndPreamble
如您所见,width
使用 css 值而不是
width
属性,因为它仅支持像素中的值。
结果(我使用了在计算机中找到的一些虚拟图片):
<!--l. 7--><p class="noindent" ><img
src="demo_carenv.png" alt="pict"
style="width:10.35011em;" ></div>
<!--l. 9--><p class="noindent" >PNG file: (0.5 textwidth)
<div class="center"
>
<!--l. 10--><p class="noindent" >
<!--l. 11--><p class="noindent" ><img
src="demo_carenv.png" alt="pict"
style="width:17.25em;" ></div>