定义一个新的数学符号而不带参数

定义一个新的数学符号而不带参数

我使用 TikZ 在 LaTeX 中定义了一个新的逻辑符号:

\newcommand{\excl}[1]{\operatorname{
\begin{tikzpicture}[#1]
\draw[line cap=round] (0,0) --(1.4ex,0) -- (2.2ex,0.6ex);
\draw[line cap=round] (1.4ex,0) -- (2.2ex,-0.6ex);
\end{tikzpicture}
}}

只要我输入$excl{}$一个空参数,一切就都正常了。这很不方便,所以我想去掉花括号,直接输入$\excl$即可。但我根本不知道该怎么做,而且简单地[1]在 newcommand 中删除只会阻止编译。有人能帮帮我吗?

答案1

你可以让参数可选。不过,我建议添加一个更多功能

  1. 如果环境文本为粗体,则将符号变为粗体。
  2. 用于\mathchoice使符号调整其大小,例如下标。

\documentclass{article}
\usepackage{amsmath,amsfonts}
\usepackage{tikz}
\makeatletter
\DeclareRobustCommand{\checkbold}[1]{% https://tex.stackexchange.com/a/24635/121799
 \edef\@tempa{\math@version}\edef\@tempb{bold}%
 \ifx\@tempa\@tempb%
  \def#1{1}%
 \else
  \def#1{0}%
 \fi}
\makeatother 
\newcommand{\excl}[1][]{\checkbold\tmp%
\ensuremath{\operatorname{%
\mathchoice{%
\begin{tikzpicture}[#1] 
\draw[line cap=round,line width=(1+0.33*\tmp)*0.06em] (0,0) --(1.4ex,0) -- (2.2ex,0.6ex)
 (1.4ex,0) -- (2.2ex,-0.6ex); 
\end{tikzpicture}}{%
\begin{tikzpicture}[#1] 
\draw[line cap=round,line width=(1+0.33*\tmp)*0.06em] (0,0) --(1.4ex,0) -- (2.2ex,0.6ex)
 (1.4ex,0) -- (2.2ex,-0.6ex); 
\end{tikzpicture}}{%
\begin{tikzpicture}[#1] 
\draw[line cap=round,line width=(1+0.33*\tmp)*0.045em] (0,0) --(1.05ex,0) --
(1.6ex,0.45ex)
 (1.05ex,0) -- (1.6ex,-0.45ex); 
\end{tikzpicture}}{%
\begin{tikzpicture}[#1] 
\draw[line cap=round,line width=(1+0.33*\tmp)*0.035em] (0,0) --(0.85ex,0) --
(1.4ex,0.35ex)
 (0.85ex,0) -- (1.4ex,-0.35ex); 
\end{tikzpicture}}}}}
\newcommand{\oldexcl}[1][]{\operatorname{\begin{tikzpicture}[#1] 
\draw[line cap=round] (0,0) --(1.4ex,0) -- (2.2ex,0.6ex); 
\draw[line cap=round] (1.4ex,0) -- (2.2ex,-0.6ex); 
\end{tikzpicture}}}
\begin{document}
$A\excl B$ $X_{A\excl B}$ \boldmath $A\excl B$ $X_{A\excl B}$\unboldmath\par
$A\oldexcl B$ $X_{A\oldexcl B}$ \boldmath $A\oldexcl B$ $X_{A\oldexcl B}$\unboldmath\par
$A\excl[baseline=-0.65ex,purple] B$ 
\end{document}

在此处输入图片描述

第一行显示了符号在使用这些附加功能时的行为方式,第二行显示了没有这些附加功能时会发生什么情况,第三行说明了可选参数的用途。

相关内容