Multiset extensível, ou saco, delimitadores

Multiset extensível, ou saco, delimitadores

O stmaryrdpacote fornece dois tipos de delimitadores multiset ou bag: \lbage \rbag; e \Lbage \Rbag.

Quando uso esses comandos com os comandos de dimensionamento do delimitador \lefte \right(ou mesmo \bigle \bigr), recebo um erro "Delimitador ausente". Existe uma maneira de usar os delimitadores multiset em tamanhos variados?

Estou aberto a usar símbolos de outro pacote, se necessário.

Responder1

As macros \scaleleftrighte stretchleftrightdo scalerelpacote fornecem funcionalidade semelhante à \left ... \rightsintaxe. Neste caso, o argumento opcional fornece a largura máxima permitida na escala. Se a largura for excedida, a proporção será ajustada para preservar a largura limite.

\documentclass{arlticle}
\usepackage{stmaryrd,scalerel}
\begin{document}
\[\Lbag xyz \Rbag\ = \scaleleftright[1.2ex]{\Lbag}{\frac{xyz}{XYZ}}{\Rbag}\]
\end{document}

insira a descrição da imagem aqui

E se você adicionar a \strutao numerador e denominador de \frac, ficará assim:

insira a descrição da imagem aqui


Na discussão dos comentários, levantei a questão sobre como seria uma versão extensível desse glifo. Para me divertir, construí um à mão. Não recomendo a implementação, mas achei que seria interessante comparar, na aparência visual, com a solução proposta acima:

\documentclass{arlticle}
\usepackage{stmaryrd,scalerel,stackengine}
\setstackgap{S}{0pt}
\usepackage{adjustbox}
\def\LbagT{\clipbox{0pt 2.6pt 0pt 0pt}{$\Lbag$}}
\def\LbagB{\clipbox{0pt 0pt 0pt 8.5pt}{$\Lbag$}}
\def\RbagT{\clipbox{0pt 2.6pt 0pt 0pt}{$\Rbag$}}
\def\RbagB{\clipbox{0pt 0pt 0pt 8.5pt}{$\Rbag$}}
\begin{document}
\[\Lbag xyz \Rbag\ = \scaleleftright[1.2ex]{\Lbag}{\frac{xyz}{XYZ}}{\Rbag}\]

\[
\raisebox{-6pt}{\Shortstack{{\LbagT} {\rule{1pt}{2ex}\kern3pt} {\LbagB}}}
\frac{xyz}{XYZ}
\raisebox{-6pt}{\Shortstack{{\RbagT} {\kern2.95pt\rule{1pt}{2ex}} {\RbagB}}}
\]
\end{document}

insira a descrição da imagem aqui

informação relacionada