为什么 tex4ht 使用 \usepackage{cprotect} 包时会生成奇怪的额外字符

为什么 tex4ht 使用 \usepackage{cprotect} 包时会生成奇怪的额外字符

平均能量损失

\documentclass[]{article}
\usepackage{cprotect}
\begin{document}
\cprotect\fbox
{
\begin{minipage}[t]{\textwidth}
 This is a test 
\end{minipage}
}
\end{document}

编译后 htlatex foo.tex 生成此 html

Mathematica 图形

HTML 是

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
  "http://www.w3.org/TR/html4/loose.dtd">  
<html > 
<head><title></title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)"> 
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)"> 
<!-- html --> 
<meta name="src" content="foo.tex"> 
<meta name="date" content="2015-03-10 14:04:00"> 
<link rel="stylesheet" type="text/css" href="foo.css"> 
</head><body 
>
   <div class="fbox"><div class="minipage">This is a test</div> &#x02C6;&#x02C6;E&#x02C6;&#x02C6;L</div>

</body></html> 

文件列表

 *File List*
 article.cls    2014/09/29 v1.4h Standard LaTeX document class
  size10.clo    2014/09/29 v1.4h Standard LaTeX file (size option)
  tex4ht.sty    
cprotect.sty    2011/01/27 v1.0e (Bruno Le Floch)
  ifthen.sty    2014/09/29 v1.1c Standard LaTeX ifthen package (DPC)
  suffix.sty    2006/07/15 1.5a Variant command support
 ***********

Linux 上的 texlive 2014。我也会将此发布到 tex4ht 邮件列表。这看起来像是一个错误。在此发布仅供参考,或者如果有人有简单的解决方法。(cprotect 包没有标签)

答案1

来自cprotext文档:

如果 ^ 在 \cprotected 命令的开头和结尾没有其通常的 catcode,则会中断。此外,如果 ^^E 或 ^^L 更改 catcode,也会中断。可以通过设置选项 gobbling-escape = hletter i 和 gobbling-letter = hletter i 来更改此符号选择。默认值为 gobbling-escape = E 和 gobbling-letter = L。

众所周知,^角色的 catcode 已更改tex4ht,因此我们必须暂时将其设置为正常值。我们可以创建一个环境,其中将有正确的 catcode,因此您可以将有问题的代码放在这里

\newenvironment{normalcatcodes}{\catcode`\^=7\catcode`\_=8}{}

完整示例:

\documentclass[]{article}
\usepackage{cprotect}
\newenvironment{normalcatcodes}{\catcode`\^=7\catcode`\_=8}{}
\begin{document}
\begin{normalcatcodes}
\cprotect\fbox
{
\begin{minipage}[t]{\textwidth}
 This is a test 
\end{minipage}
}
\end{normalcatcodes}
\end{document}

现在结果是正确的:

在此处输入图片描述

相关内容