tex4ht 中的虚假空间,数学不变

tex4ht 中的虚假空间,数学不变

我正在使用 tex4ht 配置文件这里保持数学不变。但是,我在诸如 \text{A} 之类的命令后得到了一个虚假的空格,而这些命令被编译为 \text {A}。如何摆脱这样的空格?这是一个 MWE:

.tex

%Minimal example about extra spurious space

\documentclass[12pt]{article}
\usepackage[latin9]{inputenc}
\usepackage{amsthm}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{hyperref}
\usepackage[english]{babel}

\begin{document}

Next, some weird font stuff: $\mathbb{A}$, $\mathrm{A}$, $\text{A}$.
\end{document}

配置文件

\Preamble{xhtml,-css,NoFonts}

\newtoks\eqtoks 
\def\AltMath#1${\eqtoks{$#1$}% 
   \HCode{\the\eqtoks}$}
\Configure{$}{}{}{\expandafter\AltMath}  

\begin{document} 

\EndPreamble

输出:

<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd-->
<html xmlns="http://www.w3.org/1999/xhtml"
>
<head>
   <title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" />
<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" />
<!-- html,xhtml,-css,NoFonts -->
<meta name="src" content="test.tex" />
<meta name="date" content="2018-05-01 11:27:00" />
</head><body
>
<!--l. 11--><p class="noindent" >Next, some weird font stuff: $\mathbb {A}$, $\mathrm {A}$, $\text {A}$. </p>
</body></html>

答案1

空格是 TeX 自己插入的,所以不太容易去掉。我们可以使用该l3regex包来删除左括号前的空格。

\RequirePackage{l3regex}
\Preamble{xhtml,-css,NoFonts}

\newtoks\eqtoks 
\ExplSyntaxOn
\cs_new_protected:Npn \alteqtoks #1
{
  \tl_set:Nx \l_tmpa_tl {\detokenize{#1}}
  % delete spaces before left brackets
  \regex_replace_all:nnN { \x{20} \x{7B} } { \x{7B} } \l_tmpa_tl
  \tl_set:Nx \l_tmpb_tl{ \l_tmpa_tl }
  \HCode{\l_tmpb_tl}
}

\ExplSyntaxOff
\def\AltMath#1${\alteqtoks{$#1$}$}% 
% \def\AltMath#1${\eqtoks{$#1$}% 
% \HCode{\the\eqtoks}$}
\Configure{$}{}{}{\expandafter\AltMath}  

\begin{document} 

\EndPreamble

它使用该l3regex包删除括号前的虚假空格。它产生以下结果:

<body 
>
<!--l. 13--><p class="noindent" >Next, some weird font stuff: $\mathbb{A}$, $\mathrm{A}$, $\text{A}$. $a = b + c$ </p> 
</body> 

相关内容