我想使用 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
您有几种选择...
正如其他人提到的,用以下方式界定数学表达式,
\mspace{}
例如\nabla
$
用于
\ensurestackMath{}
强制stackengine
在数学模式下本地设置其参数用于
\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}