![如何在 tex4ht 中缩放数学?](https://linux22.com/image/442536/%E5%A6%82%E4%BD%95%E5%9C%A8%20tex4ht%20%E4%B8%AD%E7%BC%A9%E6%94%BE%E6%95%B0%E5%AD%A6%EF%BC%9F.png)
我需要使用 tex4ht 缩放一些数学公式。我认为这仅在将 latex 编译为 HTML 时才有效,此时需要告诉 tex4ht 使用 svg 而不是 mathjax 来计算数学公式。
ps.(如果 math 可以使用 mathjax 模式扩展,那就更好了,但是当我尝试使用 make4ht 并使用 mathjax 模式进行下面的 MWE 时,它也没有扩展,我认为这是因为 mathjax 不支持这些扩展命令)。
但我无法让它工作。我尝试了\scalebox
和 \resizebox
和\adjustbox
。它们都没有用。但它们都可以在 PDF 中使用 lualatex。
我是不是做错了什么,还是 tex4ht 不支持这个功能?下面是 MWE 以及我使用的命令和 .cfg
\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{adjustbox}
\newcommand*{\mycell}{%
\begin{minipage}{\linewidth}
\begin{align*}y''+(y')^{2}+y' + y''+(y')^{2}+y'+y''+(y')^{2}+y' +y'' + (y')^{2}+y' + y''+(y')^{2}+y' + y''+(y')^{2}+y'+y''+(y')^{2}+y' +y''+(y')^{2}+y' &= 0
\end{align*}
\end{minipage}
}
\begin{document}
\mycell
\scalebox{0.3}{\mycell}
\resizebox{2in}{!}{\mycell}
\adjustbox{width=3in}{\mycell}
\end{document}
现在lualatex foo2.tex
给出
所以它成功了。现在使用以下方式编译为 HTML
make4ht -ulm default -a debug -c svg.cfg foo2.tex "htm"
其中 svg.cfg 是我在切换到 mathjax 进行数学计算之前使用的旧 svg.cfg 文件的小版本,我现在不确定它是否需要进行任何更改。
\Preamble{ext=htm,charset="utf-8",p-width,pic-align}
\DeclareGraphicsExtensions{.svg,.png,.jpg}
\Configure{Picture}{.svg}
\Configure{VERSION}{}
\Configure{DOCTYPE}{\HCode{<!DOCTYPE html>\Hnewline}}
\Configure{HTML}{\HCode{<html>\Hnewline}}{\HCode{\Hnewline</html>}}
\Configure{@HEAD}{}
\Configure{@HEAD}{\HCode{<meta charset="utf-8"/>\Hnewline}}
\DeclareGraphicsExtensions{.svg,.png}
%need this below for MATH.
\Configure{Picture}{.svg}
\begin{document}
%add any custome \Css or HTML commands here as needed.
%These to tell tex4ht to make inline math images also
\Configure{$}{\PicMath}{\EndPicMath}{}
\Configure{PicMath}{}{}{}{class="math";align="absmiddle"}
生成的 HTML 将数学显示为 svg 图像,但所有数学都是相同大小。编译为 pdf 时没有进行缩放。
问题是:tex4ht 是否支持数学方程式的缩放,即使使用图像进行数学运算而不是 mathjax?
Linux 上的 TL 2021。
答案1
您需要更改数学中的字体大小以使文本变小。任何框大小调整都不起作用,因为只有数学内容会转换为图片,而不是数学之外的转换。试试这个:
\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{adjustbox}
\newcommand\smallermath[1]{\begingroup\footnotesize #1\endgroup}
\newcommand*{\mycell}{%
\begin{minipage}{\linewidth}
\begin{align*}y''+(y')^{2}+y' + y''+(y')^{2}+y'+y''+(y')^{2}+y' +y'' + (y')^{2}+y' + y''+(y')^{2}+y' + y''+(y')^{2}+y'+y''+(y')^{2}+y' +y''+(y')^{2}+y' &= 0
\end{align*}
\end{minipage}
}
\begin{document}
\mycell
\scalebox{0.3}{\mycell}
\resizebox{2in}{!}{\mycell}
\adjustbox{width=3in}{\mycell}
\smallermath{\mycell}
\end{document}
我添加了一个新命令, \smallermath
用于选择\footnotesize
字体大小。结果如下:
对于 MathJax 模式,您需要使用 CSS 调整字体大小。尝试此.cfg
文件:
\Preamble{xhtml,mathjax}
\renewcommand\smallermath[1]{\ifvmode\IgnorePar\fi\EndP\HCode{<div class="smallermath">}#1\HCode{</div>}}
\Css{.smallermath{font-size:0.8em;}}
\begin{document}
\EndPreamble
它重新定义\smaallermath
生成<div class="smallermath">
然后使用 CSS 定义字体大小。
结果: