我想创建一个命令,以集合生成器符号打印其参数。问题
\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}