@@ -141,6 +141,7 @@ def __init__(
141
141
element_alignment_corner : Sequence [float ] = DR ,
142
142
left_bracket : str = "[" ,
143
143
right_bracket : str = "]" ,
144
+ stretch_brackets : bool = True ,
144
145
bracket_config : dict = {},
145
146
** kwargs ,
146
147
):
@@ -173,6 +174,8 @@ def __init__(
173
174
The left bracket type, by default ``"["``.
174
175
right_bracket
175
176
The right bracket type, by default ``"]"``.
177
+ stretch_brackets
178
+ ``True`` if should stretch the brackets to fit the height of matrix contents, by default ``True``.
176
179
bracket_config
177
180
Additional arguments to be passed to :class:`~.MathTex` when constructing
178
181
the brackets.
@@ -190,6 +193,7 @@ def __init__(
190
193
self .element_alignment_corner = element_alignment_corner
191
194
self .left_bracket = left_bracket
192
195
self .right_bracket = right_bracket
196
+ self .stretch_brackets = stretch_brackets
193
197
super ().__init__ (** kwargs )
194
198
mob_matrix = self ._matrix_to_mob_matrix (matrix )
195
199
self ._organize_mob_matrix (mob_matrix )
@@ -241,14 +245,41 @@ def _add_brackets(self, left="[", right="]", **kwargs):
241
245
The current matrix object (self).
242
246
"""
243
247
244
- bracket_pair = MathTex (left , right , ** kwargs )
245
- bracket_pair .scale (2 )
246
- bracket_pair .stretch_to_fit_height (self .height + 2 * self .bracket_v_buff )
247
- l_bracket , r_bracket = bracket_pair .split ()
248
+ # Height per row of LaTeX array with default settings
249
+ BRACKET_HEIGHT = 0.5977
250
+
251
+ n = int ((self .height ) / BRACKET_HEIGHT ) + 1
252
+ empty_tex_array = "" .join (
253
+ [
254
+ r"\begin{array}{c}" ,
255
+ * n * [r"\quad \\" ],
256
+ r"\end{array}" ,
257
+ ]
258
+ )
259
+ tex_left = "" .join (
260
+ [
261
+ r"\left" + left ,
262
+ empty_tex_array ,
263
+ r"\right." ,
264
+ ]
265
+ )
266
+ tex_right = "" .join (
267
+ [
268
+ r"\left." ,
269
+ empty_tex_array ,
270
+ r"\right" + right ,
271
+ ]
272
+ )
273
+ l_bracket = MathTex (tex_left , ** kwargs )
274
+ r_bracket = MathTex (tex_right , ** kwargs )
275
+
276
+ bracket_pair = VGroup (l_bracket , r_bracket )
277
+ if self .stretch_brackets :
278
+ bracket_pair .stretch_to_fit_height (self .height + 2 * self .bracket_v_buff )
248
279
l_bracket .next_to (self , LEFT , self .bracket_h_buff )
249
280
r_bracket .next_to (self , RIGHT , self .bracket_h_buff )
281
+ self .brackets = bracket_pair
250
282
self .add (l_bracket , r_bracket )
251
- self .brackets = VGroup (l_bracket , r_bracket )
252
283
return self
253
284
254
285
def get_columns (self ):
0 commit comments