mismath.sty 错误?

mismath.sty 错误?

加载包后mismath.sty,以下源会导致错误:

./mismath_paired_delim_bug.tex:14: Missing { inserted.
<to be read again> 
                   \futurelet 
l.14 $\eqclass{0}
                 $

即使没有该mismath包,源代码也可以编译成功。

漏洞在哪儿mismath

(是的,我意识到我实际上并没有使用mismath此来源中的功能,但它只是一个 MWE 来说明问题。在我的实际文档中,我使用mismath功能。

\documentclass{article}

\usepackage{amsmath}
\usepackage{mathtools}

\usepackage{mismath}    % CAUSES ERROR

\DeclarePairedDelimiter{\eqclass}{\lbrack}{\rbrack}
\newcommand{\muspace}{\mspace{1mu}}
\newcommand{\eqclasssim}[1]{\eqclass{#1}_{{}\muspace\muspace\muspace\raisebox{-1pt}{$\scriptstyle\sim$}}}

\begin{document}

$\eqclass{0}$

$\eqclasssim{0}$

\end{document}

Package: amsmath 2022/04/08 v2.17n AMS math features
Package: amstext 2021/08/26 v2.01 AMS text
Package: amsbsy 1999/11/29 v1.2d Bold Symbols
Package: amsopn 2022/04/08 v2.04 operator names
Package: mathtools 2022/06/29 v1.29 mathematical typesetting tools
Package: keyval 2022/05/29 v1.15 key=value parser (DPC)
Package: calc 2017/05/25 v4.3 Infix arithmetic (KKT,FJ)
Package: mhsetup 2021/03/18 v1.4 programming setup (MH)
Package: mismath 2022/12/26 v2.1 .dtx mismath file
Package: esvect 
Package: ifthen 2022/04/13 v1.1d Standard LaTeX ifthen package (DPC)
Package: xspace 2014/10/28 v1.13 Space after command names (DPC,MH)
Package: ibrackets 2022/12/26 v1.1 .dtx ibrackets file
Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR)
Package: graphics 2022/03/10 v1.4e Standard LaTeX Graphics (DPC,SPQR)
Package: trig 2021/08/11 v1.11 sin cos tan (DPC)
Package graphics Info: Driver file: pdftex.def on input line 107.
Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4

添加:以下操作本质上会导致相同的错误,并且出于相同的原因,即mismath在加载“ibrackets”时会破坏一切:

\DeclarePairedDelimiterX{\setimage}[1]{\langle}{\rangle}{#1}

答案1

感谢这个错误报告。我今天发布了一个新版本,mismath其中ibrackets现在只是一个加载相应包的选项。所以人们可以选择是否要反常 :-)

确实,在 中使用方括号存在不兼容性\DeclarePairedDelimiter。不过,使用上面提到的宏 \DeclarePairedDelimiterX{\setimage}[1]{\langle}{\rangle}{#1} ,在我的测试中不会产生错误。

答案2

mismath包裹已于近期更新至加载ibrackets,这将有助于排版间隔的反常1法语符号。

% \changes{v2.1}{2022/12/26}{
%     - Improved management of square brackets with the ibrackets package,
%     - new macros codim, sinc, var, eqdef*,
%     - removing the systematic warning for paren command
%     - a small change in norm command -> bars in small size
%     - several changes in documentation}

与此同时,它破坏了[和的合法用法],例如 的情况\DeclarePairedDelimiter

向作者投诉,mismath至少应该为非邪恶的数学家提供一个选项不是加载ibrackets

与此同时,以一种愚弄人的方式重新\lbrack定义。\rbrackibrackets

\documentclass{article}

\usepackage{amsmath}
\usepackage{mathtools}

\usepackage{mismath}

\let\lbrack\relax \let\rbrack\relax
\DeclareMathDelimiter{\lbrack}{\mathopen} {operators}{"5B}{largesymbols}{"02}
\DeclareMathDelimiter{\rbrack}{\mathclose}{operators}{"5D}{largesymbols}{"03}

\DeclarePairedDelimiter{\eqclass}{\lbrack}{\rbrack}
\newcommand{\eqclasssim}[1]{%
  \begingroup
  \sbox{0}{$\eqclass{#1}$}%
  \eqclass{#1}%
  \raisebox{\dimexpr-\dp0+\depth}{%
    $\mathsurround=0pt\scriptstyle\mspace{2mu}\sim$%
  }%
  \endgroup
}

\begin{document}

$\eqclass{0}$

$\eqclasssim{0}$

\end{document}

\eqclassim我添加了适用于字体大小变化的命令的不同定义。

在此处输入图片描述

脚注

1摘自 TeXbook:练习18.14一些不合常理的数学家会反向使用括号来表示“开区间”。

相关内容