Stackengine 和缺少 $ 问题

Stackengine 和缺少 $ 问题

我想使用 stackengine 创建一个双击 nabla 符号,但是遇到了缺少 $ 的问题。

梅威瑟:

\documentclass{article}
\usepackage{amsmath}
\usepackage{stackengine}
\newcommand{\nablads}{\stackinset{c}{0.4pt}{t}{0.05ex}{\rule{.4pt}{1.1ex}%
                      \mspace{2mu}\rule{.4pt}{1.0ex}}{\nabla{}}}

\begin{document}
$\nablads$
\end{document}

这会产生典型的“缺少 $ 插入”错误(两次),但我似乎无法摆脱它(通过在各个地方添加 \esuremath 或 $s)。你能改进我的代码以避免出现错误或建议一些解决方法吗?

编辑:在对答案的评论中,有人建议使用一种相对较好的方法来获得双击 nabla。这使这个(公认的弱)问题的存在受到质疑 :D。如果要求,我会删除它。

答案1

你会看到同样的效果,\mbox{\mspace{2mu}}你可以使用

\documentclass{article}
\usepackage{amsmath}
\usepackage{stackengine}
\newcommand{\nablads}{\stackinset{c}{0.4pt}{t}{0.05ex}{\rule{.4pt}{1.1ex}%
                      $\mspace{2mu}$\rule{.4pt}{1.0ex}}{$\nabla$}}

\begin{document}
$\nablads$
\end{document}

但这里的意图并不十分清楚,我怀疑可能有一个更简单的定义。

答案2

您有几种选择...

  1. 正如其他人提到的,用以下方式界定数学表达式,\mspace{}例如\nabla$

  2. 用于\ensurestackMath{}强制stackengine在数学模式下本地设置其参数

  3. 用于\stackMath全局设置stackengine其参数采用数学模式。

这是 MWE。显示了所有三种技术。

\documentclass{article}
\usepackage{amsmath}
\usepackage{stackengine}
\newcommand{\nablads}{\stackinset{c}{0.4pt}{t}{0.05ex}{\rule{.4pt}{1.1ex}%
                      $\mspace{2mu}$\rule{.4pt}{1.0ex}}{$\nabla$}}
\newcommand{\nnablads}{\ensurestackMath{\stackinset{c}{0.4pt}{t}{0.05ex}{\rule{.4pt}{1.1ex}%
                      \mspace{2mu}\rule{.4pt}{1.0ex}}{\nabla}}}
\newcommand{\nnnablads}{\stackinset{c}{0.4pt}{t}{0.05ex}{\rule{.4pt}{1.1ex}%
                      \mspace{2mu}\rule{.4pt}{1.0ex}}{\nabla}}

\begin{document}
$\nablads$% $ delimiters around \mspace and \nabla

$\nnablads$% use \ensurestackMath for local application

\stackMath\nnnablads% globally set \stackMath
\end{document}

在此处输入图片描述

相关内容