我遇到了以下 TeX4ht 问题:如果文档包含多列列表,并且我在 Safari 中打开生成的 HTML 文件,则列表中的某些项目不会显示。例如,查看此处的第 11 和第 12 项:
我测试过的其他浏览器都没有出现这种情况。奇怪的是,如果我在 Safari 中放大或缩小,丢失的项目会再次出现。
我使用的是 Safari 15.1 版(17612.2.9.1.20)。为了重现这个错误,如下mwe.tex
:
\documentclass{article}
\usepackage{multicol}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}[
before = {
\raggedcolumns
\begin{multicols}{4}
},
after = \end{multicols}
]
\item
$\frac{1}{4}$
\item
$\frac{1}{5}$
\item
$\frac{3}{4}$
\item
$\frac{3}{5}$
\item
$\frac{2}{5}$
\item
$\frac{4}{5}$
\item
$\frac{1}{3}$
\item
$\frac{2}{3}$
\item
$\frac{32}{48}$
\item
$\frac{1}{40}$
\item
$\frac{30}{45}$
\item
$\frac{9}{2}$
\end{enumerate}
\end{document}
和config.cfg
:
\Preamble{html,mathml}
\Configure{@HEAD}{
\HCode{
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,300;0,600;0,700;1,300;1,600&display=swap">
}
}
\begin{document}
\Css{
body {
font-family: 'Poppins', sans-serif;
}
}
\EndPreamble
我使用以下命令编译该文档
htlatex mwe.tex "config,mathjax,charset=utf-8" " -cmozhtf -utf8";
请注意,如果我使用默认字体,这不是问题。有没有办法修复此错误并保留 Poppins 字体?
答案1
我无法评论 Safari 的问题,因为我无法使用任何 Apple 设备。这可能是 Safari 中的错误、TeX4ht 生成的错误 CSS 或 MathJax 问题。
我可以说的是,生成的 HTML 文件存在一个小问题,这是由于您multicols
在 中使用了 环境造成的enumitem
。它似乎阻止了插入enumitem
环境的结束标记。可以使用以下版本的 修复此问题enumitem.4ht
:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% enumitem.4ht 2022-04-29-17:02 %
% Copyright (C) 2009-2009 Eitan M. Gurari %
% Copyright 2009-2022 TeX Users Group
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version. The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% The Current Maintainer of this work
% is the TeX4ht Project <http://tug.org/tex4ht>.
%
% If you modify this program, changing the
% version identification would be appreciated.
\AddToHook{env/enumerate/end}{\ifx\enit@after\@empty\else%
\let\enit:after\enit@after
\let\enit@after\@empty
\let\enumerate:executed\@empty
\append:def\end:DL{\enit:after}
\fi}
\Hinput{enumitem}
\endinput
after
仅在环境关闭后才执行代码enumitem
。它应该导致标签正确关闭。
似乎第一列中第一个元素之前也存在虚假空格。可以使用 CSS 修复此问题:
\Preamble{html,mathml}
\Configure{@HEAD}{
\HCode{
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,300;0,600;0,700;1,300;1,600&display=swap">
}
}
\begin{document}
\Css{
body {
font-family: 'Poppins', sans-serif;
}
.columns-4 :first-child{margin-top:0;}
}
\EndPreamble
经过这些更改,您会在不同的浏览器中获得截然不同的结果:
火狐浏览器:
除了垂直条之外,其他都很好。
铬:
相当混乱。它似乎错误地拆分了列。
Qute浏览器:
与 Chromium 类似,但至少它不会在中间破坏数字。
如果有人可以建议可以在所有浏览器中正常运行的 CSS,我会很乐意更新 TeX4ht 源。