使用 em 单位而不是 pt 设置图像大小

使用 em 单位而不是 pt 设置图像大小

我已经发现这个问题对我的图像配置非常有帮助。受到 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>

在此处输入图片描述

相关内容