在 LaTeX 中创建条件语句

在 LaTeX 中创建条件语句

我正在尝试制作一个样式文件来简化笔记记录,尤其是涉及数学的科目。

我想要制作该\delim命令,它有一个用于表达式的强制参数,以及一个可选参数,用于使用来自matrix命令的字符来更改分隔符amsmath,这些字符(p), [b], {B}, |v|, ||V||p作为默认值。

我认为它将涉及\if命令,但我不知道如何检查可选参数是否是、、、或p。任何帮助都非常感谢。bBvV

答案1

(免责声明:我个人的观点是,虽然这可能使打字更快,但代码的可读性却大大降低。)

这里有一种方法:首先我通过 定义一组成对的分隔符\DeclarePairedDelimiter,它为所有分隔符提供了一个可自动缩放的起始版本,以及一个可选参数来手动提供大小;然后我引入用户宏,它通过可选参数选择所需的分隔符

\documentclass{article}

\usepackage{mathtools}% loads amsmath

\makeatletter
\newcommand*{\delim@}{\delim@p}% better safe than sorry
\DeclarePairedDelimiter{\delim@p}{(}{)}
\DeclarePairedDelimiter{\delim@b}{[}{]}
\DeclarePairedDelimiter{\delim@B}{\{}{\}}
\DeclarePairedDelimiter{\delim@v}{|}{|}
\DeclarePairedDelimiter{\delim@V}{\|}{\|}
\newcommand*{\delim}[1][p]{\csname delim@#1\endcsname}
\makeatother

\begin{document}

\[
\delim{a+b},
\delim[b]{a+b},
\delim*{\frac{1}{2}},
\delim[B]*{\frac{1}{2}},
\delim[v][\Bigg]{\frac{1}{2}},
\delim[][\Big]{a+b},% or \delim[p][\Big]{a+b}
\delim[F]{a+b}
\]

\end{document}

在此处输入图片描述

第一个可选参数是pb等等。然后,您可以编写一个星号来自动缩放,或者将手动大小作为进一步的可选参数。

看看最后两种情况:如果你想给仅有的手动大小用圆括号括起来,那么第一个可选参数应该为空或显式为p。此外,没有对pb、 进行测试……如果您拼写错误,则不会出现任何有意义的结果:\delim[F]{a+b}只会给出a+b


如果你真的想看看一堆嵌套的样子\if,你可以这样做

\newcommand*{\delim}[1][p]{%
   \def\@tempa{#1}%
   \if#1p\relax
   \else
      \if#1b\relax
      \else
         \if#1B\relax
         \else
            \if#1v\relax
            \else
               \if#1V\relax
               \else
                  \def\@tempa{p}% if none of pbBvV then fall back to p
               \fi
            \fi
         \fi
      \fi
   \fi
   \csname delim@\@tempa\endcsname
}

如果出现拼写错误或参数为空的情况,则会给出括号。

相关内容