允许 CamelCase 的布尔标志

允许 CamelCase 的布尔标志

在乳胶中,通常使用CamelCase。

在我的风格文件中,我有

\newif\ifMath
\Mathfalse

这些布尔标志是否可以允许 CamelCase,因此用法是

\newif\ifMath
\MathFalse

答案1

您可以定义自己的\NewIf宏:

\def\sdef#1{\expandafter\def\csname#1\endcsname}
\def\NewIf #1{\expandafter\NewIfA \string#1\relax #1}
\expandafter\def \expandafter\NewIfA \string \If#1\relax #2{%
   \sdef{#1True}{\let#2=\iftrue}%
   \sdef{#1False}{\let#2=\iffalse}%
   \let#2=\iffalse
}

%test:

\NewIf\IfMath

\IfMath Yes\else No\fi

\MathTrue
\IfMath Yes\else No\fi

\MathFalse
\IfMath Yes\else No\fi

此宏也允许您使用 CamelCased \IfSomething。上面的代码灵感来自\newifOpTeX 中定义的宏。

答案2

为了回答这个问题,community希望机器人不会每隔几个月就发生一次碰撞,如果你想将一个宏或值分配为与另一个值或宏相同,请使用\let,如下所示诺曼·格雷的回答解释道。

只需将\let\MathFalse\Mathfalse的值分配给 即可。如果您将其放在样式文件的开头,那么您应该能够在文件的其余部分使用CamelCase来代替。\Mathfalse\MathFalse.sty\MathFalse\Mathfalse

答案3

你可以这样做,但是这破坏了语言惯例,所以这不是一个好主意:

不要使用\newif,只需执行

\def\MathTrue{\let\ifMath\iftrue}
\def\MathFalse{\let\ifMath\iffalse}
\MathFalse

相关内容