Closed
Description
Problem
Is it possible to render fractions in display style using \genfrac
?
The style
argument of the _genfrac
function in _mathtext.py
is received as an Hlist
. As a result, fractions will never use display style (since style
and self._MathStyle.DISPLAYSTYLE
will always compare unequal).
import matplotlib.pyplot as plt
fig = plt.figure()
fig.text(.2, .5, r'$\genfrac{}{}{0}{0}{1}{2}$')
fig.text(.3, .5, r'$\genfrac{}{}{1}{1}{1}{2}$')
plt.show()
Proposed solution
Change
p.genfrac <<= r"\genfrac" - (
"{" + Optional(p.ambi_delim | p.left_delim)("ldelim") + "}"
+ "{" + Optional(p.ambi_delim | p.right_delim)("rdelim") + "}"
+ "{" + p.float_literal("rulesize") + "}"
+ p.simple_group("style") # <- change this line
+ p.required_group("num")
+ p.required_group("den")
| Error("Expected "
r"\genfrac{ldelim}{rdelim}{rulesize}{style}{num}{den}"))
to
p.genfrac <<= r"\genfrac" - (
"{" + Optional(p.ambi_delim | p.left_delim)("ldelim") + "}"
+ "{" + Optional(p.ambi_delim | p.right_delim)("rdelim") + "}"
+ "{" + p.float_literal("rulesize") + "}"
+ "{" + p.int_literal("style") + "}" # <- changed this line
+ p.required_group("num")
+ p.required_group("den")
| Error("Expected "
r"\genfrac{ldelim}{rdelim}{rulesize}{style}{num}{den}"))
with p.int_literal
defined using a regex (just like how p.float_literal
is defined), following which, the _genfrac
function should obtain the enumeration variable from the value. We can hard-code the enumerations
display_style = 0
text_style = 2
script_style = 4
script_script_style = 6
since those are the values specified in TeX: The Program.
I could try to create a PR for this, but my knowledge of language parsing is very limited.