Add substack cmd for mathtext#26151
Conversation
| r'$1.$ $2.$ $19680801.$ $a.$ $b.$ $mpl.$', | ||
| r'$\text{text}_{\text{sub}}^{\text{sup}} + \text{\$foo\$} + \frac{\text{num}}{\mathbf{\text{den}}}\text{with space, curly brackets \{\}, and dash -}$', | ||
|
|
||
| r'$\sum_{\substack{k = 1}{k \neq \lfloor n/2\rfloor}}^{n}P(i,j) \sum_{\substack{i \neq 0}{-1 \leq i \leq 3}{1 \leq j \leq 5}} F^i(x,y)$', |
There was a problem hiding this comment.
Although I believe that your syntax makes very much sense, it appears as if the existing \substack command is simply using \\ for next line.
| r'$\sum_{\substack{k = 1}{k \neq \lfloor n/2\rfloor}}^{n}P(i,j) \sum_{\substack{i \neq 0}{-1 \leq i \leq 3}{1 \leq j \leq 5}} F^i(x,y)$', | |
| r'$\sum_{\substack{k = 1\\ k \neq \lfloor n/2\rfloor}}^{n}P(i,j) \sum_{\substack{i \neq 0\\ -1 \leq i \leq 3\\ 1 \leq j \leq 5}} F^i(x,y)$', |
Apart from that, the outcome looks good! Maybe one would like to test with \left \lfloor \frac{n}{2} \right\rfloor as well to see how that behaves?
There was a problem hiding this comment.
Not really sure how to go about adding the \\ as next-line behavior to the substack input due to the python's handling of escape characters, I'm currently still looking into it.
Added the \left \lfloor \frac{n}{2} \right\rfloor as a test with the current implemention.
There was a problem hiding this comment.
I would expect pyparsing's DelimitedList would be helpful here
Note, however, that it looks like it is in a slightly awkward transition from the delimited_list function to the DelimitedList class, the former being deprecated upon the introduction of the latter in pyparsing 3.1.0 (which we are incompatible with for other reasons right now, but should fix)
As such may need something like:
if pyparsing.__version__info__ < (3, 1):
from pyparsing import delimited_list as DelimitedList
else:
from pyparsing import DelimitedList| thickness = state.get_current_underline_thickness() | ||
| vlist = [] | ||
|
|
||
| max_width = sorted(toks[1:], key= lambda c: c.width)[-1].width |
There was a problem hiding this comment.
Maybe this could be written using max, which also takes a key argument.
max_width = max(toks[1:], key=lambda c: c.width).width
Something like that? Or even simpler:
max_width = max(map(lambda c: c.width, toks[1:]))
which seems more readable to me.
There was a problem hiding this comment.
Thanks! That was neat
| vlist = [x for l in (vlist[i:i+1] + | ||
| [Vbox(0, thickness * 2.0)] * | ||
| (i < len(vlist) - 1) | ||
| for i in range(0, len(vlist), 1)) for x in l] |
There was a problem hiding this comment.
Took me an embarrassingly long time to understand!:sweat_smile: I think it separates each element of vlist with Vbox(0, thickness * 2)?
This is probably one of those instances I'd prioritise readability.
vlist_ = [None, Vbox(0, thickness * 2)] * len(vlist)
vlist_[::2] = vlist
vlist_.pop()
This should achieve this same thing. (Another option is to append the Vboxes in the for loop just above.)
@oscargus: I'd defer to your opinion here. What do you think?
There was a problem hiding this comment.
Maybe one could just do:
vlist = [val for pair in zip(vlist, [Vbox(0, thickness * 2)]*len(vlist)) for val in pair]
del vlist[-1]
?
(But, yes, I find double (and triple) list comprehensions quite hard to follow to start with.)
42735be to
2b85ec6
Compare
8694d6a to
e5f318d
Compare
| csname = expr.split("{", 1)[0] | ||
| err = (csname + "".join("{%s}" % name for name in names(args)) | ||
| if expr == csname else expr) | ||
| print(csname, args, err) |
There was a problem hiding this comment.
I take it that there will be another update to this and @ksunden was only sorting out the parsing?
But this line should go.
| r'$1.$ $2.$ $19680801.$ $a.$ $b.$ $mpl.$', | ||
| r'$\text{text}_{\text{sub}}^{\text{sup}} + \text{\$foo\$} + \frac{\text{num}}{\mathbf{\text{den}}}\text{with space, curly brackets \{\}, and dash -}$', | ||
|
|
||
| r'$\sum_{\substack{k = 1}{k \neq \lfloor n/2\rfloor}}^{n}P(i,j) \sum_{\substack{i \neq 0}{-1 \leq i \leq 3}{1 \leq j \leq 5}} F^i(x,y) \sum_{\substack{\left \lfloor \frac{n}{2} \right\rfloor}} F(n)$', |
There was a problem hiding this comment.
This should then be modified to use \\, but ideally there should be no need for other changes.
9dac091 to
ad02967
Compare
Co-Authored By: Kyle Sunden <git@ksunden.space>
Co-Authored By: Kyle Sunden <git@ksunden.space>
Co-authored-by: Kyle Sunden <git@ksunden.space>
PR summary
Fixes #14247
PR checklist