定义新的二元运算符

定义新的二元运算符

我正在尝试找到一种方法将%符号定义为二元运算符,其行为基本上与+符号相同。我听说过命令DeclareMathOperator,但我认为这是针对对数和正弦函数之类的运算符。什么是合适的命令?例如,我希望以下两行具有相似的间距。

\begin{equation*}
a % b % c
\end{equation*}
\begin{equation*}
a + b + c
\end{equation*}

答案1

如果使用宏来表示新符号是可以的,那么您有几个选择:

enter image description here

\documentclass{article}
\newcommand{\percA}{\mathbin{\%}}
\newcommand{\percB}{\mathbin{\ooalign{$\hidewidth\%\hidewidth$\cr$\phantom{+}$}}}
\begin{document}
\[\begin{array}{|@{}c@{}|}
  a \percA b \percA c \\[\jot] % Option A
  a \percB b \percB c \\[\jot] % Option B
  a + b + c % Control
\end{array}\]
\end{document}

选项 A使用\percA插入\%二进制数学符号\mathbin{\%}。但是,\%比 略宽+。这就是选项 B 提供的地方,它用\percB覆盖了零宽度。\%\phantom{+}

有关内部工作原理\ooalign,请参阅\subseteq+\circ作为单个符号(“开子集”)

答案2

虽然迟到了,但我认为这是更好的建议:百分比字符的自然大小太突出了,所以我将其缩放到相同的宽度+(但也增加一些侧边距)。

\documentclass{article}
\usepackage{graphicx}

\makeatletter
\DeclareRobustCommand{\perc}{%
  \mathbin{\mathpalette\scaletoplus@{\mkern1mu\%\mkern1mu}}%
}
\newcommand{\scaletoplus@}[2]{%
  \vcenter{%
    \hbox{\sbox\z@{$\m@th#1+$}\resizebox{\wd\z@}{!}{$\m@th#1#2$}}%
  }%
}
\makeatother

\begin{document}

$a\perc b \cdot c + d_{u\perc v}$

$a+b$

\end{document}

enter image description here

相关内容