手动控制宏中分隔符的大小

手动控制宏中分隔符的大小

我正在使用该amsmath包,并且我想手动控制分隔符的大小,即使用 \bigl\Bigl、 ... 、\Bigr\bigr命令,而不是\left\middle\right

现在我想创建包含分隔符的宏,并将大小作为参数。例如,如果我有一个\set宏:

\newcommand{\set}[2]{ \left\{ #1 \,\middle\vert\, #2\right\} }

我想把它变成一个命令,我可以将大小作为参数,即

\set{A}{B}{Big}

应该产生\Bigl\{ A \,\Big\vert\, B\Bigr\},或者更好的是,\set{A}{B}{2}产生这个结果。

是否有类似的命令\leftdelimitersize可以实现这种宏?

答案1

该软件包mathtools已经提供了必要的功能;您只需添加使用数字而不是命令\big和兄弟命令的可能性。

\documentclass{article}
\usepackage{mathtools}

\DeclarePairedDelimiterX{\innset}[2]{\lbrace}{\rbrace}{%
  #1\;\delimsize\vert\;#2}

\newcommand{\set}[3][0]{%
  \ifcase#1\relax
    \innset{#2}{#3}\or         % 0
    \innset[\big]{#2}{#3}\or   % 1
    \innset[\Big]{#2}{#3}\or   % 2
    \innset[\bigg]{#2}{#3}\or  % 3
    \innset[\Bigg]{#2}{#3}     % 4
  \else
    \innset*{#2}{#3}
  \fi}

\begin{document}
\begin{gather*}
\set{A}{\frac{B}{C}}\\
\set[0]{A}{\frac{B}{C}}\\
\set[1]{A}{\frac{B}{C}}\\
\set[2]{A}{\frac{B}{C}}\\
\set[3]{A}{\frac{B}{C}}\\
\set[4]{A}{\frac{B}{C}}\\
\set[-1]{A}{\frac{B}{C}}
\end{gather*}
\end{document}

如果数字不在 0–4 范围内,则将使用带有\left\middle和 的版本。\right

在此处输入图片描述

答案2

如果您准备将类似的东西Big作为参数,那么对您的请求的一个简单解决方案就是\csname ...\endcsname根据需要使用来生成命令名称,例如,

\newcommand\set[3]{\csname #3l\endcsname\{#1%
                   \,\csname#3\endcsname\vert\,%
                   #2\csname #3r\endcsname\}}

如果您想通过数值参数生成所需的命令,请考虑使用\ifcase

相关内容