我真的很喜欢make4ht
和tex4ht
,因为它们终于让我在生成网页时保留了所有工具。我遇到的一个小问题与数学模式下某些字符的字距调整有关。因此,如果我有一张tikz
图片,我得到的东西看起来就像这样。
在下图中,您可以看到角色sigma
距离矢量的框架太近,并且下支撑也与数组有一点偏离。
在相应的 pdf 输出中,这些问题不存在。现在我可以添加一些空格或其他东西作为解决方法,但我想检查一下我是否做错了什么或有什么简单的修复方法。这可能是某种 CSS 问题吗?
请注意,如果有帮助的话,我可以提供更多示例。
更新
我附上了一个完整的示例。这是重现该问题的代码。
首先,这是我使用的命令字符串:
make4ht -d html -f html5+latexmk_build -s mydevfile.tex
这里是myconfig.cfg
\Preamble{xhtml,mathjax}
\Configure{@BODY}{\IgnorePar
\HCode{\detokenize{\(}}
\special{t4ht*<mymacros.tex}
\HCode{\detokenize{\)}}
\par
}
\begin{document}
\EndPreamble
文件mymacros.tex
:
\def\RRRR{{\bf R}}
\newcommand\bface[1]{{\mathbf #1}}
\newcommand\grid[3]{
\begin{tikzpicture}[baseline=(current bounding box)]
\foreach \x in {1,...,#2} {
\foreach \y in {1,...,#1} {
\draw[fill=#3, color=#3] ($(0.4*\x, 0.4*\y)$) circle[radius=0.15cm];
}
}
\draw (0.2, 0.2) rectangle ($(0.4*#2, 0.4*#1) + (0.2, 0.2)$);
\end{tikzpicture}
}
\renewcommand{\vec}[1]{\mathbf{#1}}
文件mymacros.sty
:
\ProvidesPackage{mymacros}
\input{mymacros.tex}
\endinput
最后,这是一个最小的乳胶文档mydevfile.tex
:
\documentclass[12pt, a4paper, oneside, headinclude, footinclude]{article}
\ifdefined\HCode
\def\pgfsysdriver{pgfsys-dvisvgm4ht.def}
\fi
\usepackage{tikz}
\usetikzlibrary{shapes.multipart, positioning, decorations.markings,
arrows.meta, calc, fit}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{mymacros}
\title{\normalfont\spacedallcaps{My doc}}
\author{\spacedlowsmallcaps{kb}}
\date{\today\\version 0.1}
\begin{document}
\pagestyle{scrheadings}
\maketitle
\setcounter{tocdepth}{2}
\tableofcontents
\section*{First Section}
\[
\RRRR = \bface{x}
\]
Some simple text.
\[
\underbrace{\grid{10}{1}{red}}_{\mathbf{\hat{x}}} =
\sigma \left( \underbrace{\grid{10}{5}{blue}}_{\mathbf{u}^\top}
\sigma \left( \underbrace{\grid{5}{2}{blue}}_{\mathbf{w}^\top}
\sigma \left(\underbrace{\grid{2}{5}{blue}}_{\mathbf{U}}
\sigma\left( \underbrace{\grid{5}{10}{blue}}_{\mathbf{V}}
\underbrace{\grid{10}{1}{red}}_{x}\right)\right) \right) \right)
\]
\end{document}
答案1
看起来您想结合两种方法来显示数学:我猜您想使用 MathJax 进行内联数学运算,使用 SVG 图片来显示数学运算。问题是大多数数学环境和命令都被重新定义为在 MathJax 模式下输出传递给它们的文字 LaTeX 代码。这意味着\grid
使用 TikZ 的命令无法工作,因为 MathJax 不支持 TikZ。
要配置\[ ... \]
生成图片,您可以尝试以下配置文件:
\Preamble{xhtml,mathjax}
% don't redefine \left and \right
\def\fixmathjaxsec#1{}
\Configure{[]}
{\bgroup%
\protect\csname nested:math\endcsname%
\PicDisplay%
$$\everymath{}\everydisplay{}}
{$$\EndPicDisplay \egroup \ShowPar \par{\HCondtrue\noindent}%
}
\begin{document}
\EndPreamble
我使用了\Configure{[]}
默认 HTML 配置中的命令。重要的命令是\PicDisplay
和\EndPicDisplay
,它们将包含的内容转换为图像。其余命令处理段落和数学嵌套。其中一件重要的事情是\def\fixmathjaxsec#1{}
。此命令的原始版本重新定义了传递给它的命令以产生文字输出。它用于\left
和\right
命令,因为它们在部分中使用时会导致一些问题。我们需要防止这种情况发生。请记住,您不应该在部分中使用\left
和\right
,否则您会收到错误。
结果如下: