我使用 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
你可以让参数可选。不过,我建议添加一个更多功能:
- 如果环境文本为粗体,则将符号变为粗体。
- 用于
\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}
第一行显示了符号在使用这些附加功能时的行为方式,第二行显示了没有这些附加功能时会发生什么情况,第三行说明了可选参数的用途。