我想创建两个数学模式二进制运算符号:
-
(1) (减号)和*
(星号)的组合
/
(2) (斜线符号)和*
(星号)的组合
期望的结果将类似于以下内容,但字距和居中正确,并且具有典型二进制运算的左右间距:
\documentclass[12pt]{article}
\begin{document}
\Huge\[a \mathbin{-\mkern-11.5mu*} b = c \mathbin{/\mkern-8.875mu*} d.\] % my makeshift solution
\end{document}
\[a \minusast b = c \slashast d.\] % desired macro names and syntax
我的问题是:
如何创建自定义数学模式二元关系符号 (1) 和 (2)?
/
如果 (2) 有一个版本,其中将符号调整为符号的对角对称轴,那就太好了*
。
如果也有可能,我通常如何创建一个由两个二进制运算符号组合而成的自定义数学模式二进制运算符号?
谢谢。
答案1
像这样吗?(已更新以考虑到 OP 的额外要求)
\documentclass{article}
\usepackage{graphicx} % for '\rotatebox' macro
\newcommand\myslash{\rotatebox[origin=c]{-30}{$\vert$}}
\newcommand\minusast{\mathbin{\ooalign{\hss$*$\hss\cr$-$}}}
\newcommand\slashast{\mathbin{\ooalign{\hss$*$\hss\cr$\myslash$}}}
\begin{document}
$a\minusast b = c \slashast d$
\end{document}
答案2
以下内容将在scriptstyle
和中起作用scriptscriptstyle
。
\documentclass{article}
\usepackage{graphicx}
\makeatletter
\newcommand{\asth}{\mathbin{\mathpalette\ast@h\relax}}
\newcommand{\ast@h}[2]{%
\ooalign{%
\hfil$\m@th#1*$\hfil\cr
\hfil\rotatebox[origin=c]{-30}{$\m@th#1\mid$}\hfil\cr
}%
}
\newcommand{\astd}{\mathbin{\mathpalette\ast@d\relax}}
\newcommand{\ast@d}[2]{%
\ooalign{%
\hfil$\m@th#1*$\hfil\cr
$\m@th#1-$\cr
}%
}
\makeatother
\begin{document}
$a*b\asth c\astd a$
\end{document}
答案3
这个想法是使用\mathpalette
和\ooalign
。不过,一些技巧是必要的:a\vphantom{*}
确保正确的边界框,因为\ooalign
从第一个项目获取高度,从第二个项目获取深度。
对于斜线,可以使用\centernot
同名包。
\documentclass{article}
\usepackage{amsmath}
\usepackage{centernot}
\makeatletter
\newcommand{\astminus}{\mathbin{\mathpalette\astminus@\relax}}
\newcommand{\astminus@}[2]{%
\vphantom{*}%
\ooalign{\hidewidth$\m@th#1*$\hidewidth\cr$\m@th#1-$\cr}%
}
\makeatother
\newcommand{\astslash}{\mathbin{\centernot{*}}}
\begin{document}
$a\astminus b \astslash c$
$\scriptstyle a\astminus b \astslash c$
$\scriptscriptstyle a\astminus b \astslash c$
\end{document}
另一个版本中,\astslash
符号是通过旋转 60 度获得的\astminus
。不要过多询问这是如何获得的。