设置构建器符号命令,调整中间栏

设置构建器符号命令,调整中间栏

我想创建一个命令,以集合生成器符号打印其参数。问题

\documentclass{article} 
\newcommand{\set}[2]{\left\{\  #1  \ \left| \ #2 \ \right. \right\}  }


\begin{document}

$\set{A}{ (B) }$

\bigskip

$\set{A}{\Bigg(B\Bigg)}$

\bigskip

% but:

$\set{\Bigg(A\Bigg)}{B}$

\end{document}

在此处输入图片描述

我尝试让中间栏的高度自动调整到集合的内容,但只针对其右侧的内容起作用。我知道我可以用冒号代替,但我就是不喜欢它的外观。

有没有什么简单的解决方法?

提前致谢

答案1

这是一个解决方案,改编自 文档中的代码mathtools,语法自然:它在一个参数中使用两个参数,用分号分隔。如果第二个参数不存在,它也可以工作,让你将集合定义为其元素的列表。

\set 命令有一个带星号的版本,用于添加一对隐式\left \right。它还可以接受一个可选参数:\big,\Big, \bigg, \Bigg添加一对隐式\bigl \bigr或其兄弟之一。

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\usepackage{xparse}
%
\DeclarePairedDelimiterX{\set}[1]{\{}{\}}{\setargs{#1}}
\NewDocumentCommand{\setargs}{>{\SplitArgument{1}{;}}m}
{\setargsaux#1}
\NewDocumentCommand{\setargsaux}{mm}
{\IfNoValueTF{#2}{#1} {#1\nonscript\:\delimsize\vert\allowbreak\nonscript\:\mathopen{}#2}}%
\def\Set{\set*}%

\begin{document}

\begin{align*}
 & \set*{\frac{A}{B}; A, B\in K[X]} \\
 & \set[\Big]{A; A = \sqrt{B},\:B\in K[X]} \\
 & A\set[big]{2,3, 5,7,11,\dots}
\end{align*}

\end{document}

在此处输入图片描述

相关内容