Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Issue #1888: added in the \dfrac macro for displaystyle fractions#8151

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
QuLogic merged 9 commits intomatplotlib:masterfromwatkinrt:dfrac
Jul 26, 2017
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletionsexamples/text_labels_and_annotations/dfrac_demo.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
r"""
=========================================
The difference between \\dfrac and \\frac
=========================================

In this example, the differences between the \\dfrac and \\frac TeX macros are
illustrated; in particular, the difference between display style and text style
fractions when using Mathtex.

.. versionadded:: 2.1

.. note::
To use \\dfrac with the LaTeX engine (text.usetex : True), you need to
import the amsmath package with the text.latex.preamble rc, which is
an unsupported feature; therefore, it is probably a better idea to just
use the \\displaystyle option before the \\frac macro to get this behavior
with the LaTeX engine.

"""

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(5.25, 0.75))
fig.text(0.5, 0.3, r'\dfrac: $\dfrac{a}{b}$',
horizontalalignment='center', verticalalignment='center')
fig.text(0.5, 0.7, r'\frac: $\frac{a}{b}$',
horizontalalignment='center', verticalalignment='center')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Needsplt.show at the end.

Copy link
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Man, you guys are fast and thorough. I'm working on all of the requested changes.

plt.show()
55 changes: 42 additions & 13 deletionslib/matplotlib/mathtext.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -2216,6 +2216,10 @@ class Parser(object):
The grammar is based directly on that in TeX, though it cuts a few
corners.
"""

_math_style_dict = dict(displaystyle=0, textstyle=1,
scriptstyle=2, scriptscriptstyle=3)

_binary_operators = set('''
+ * -
\\pm \\sqcap \\rhd
Expand DownExpand Up@@ -2301,6 +2305,7 @@ def __init__(self):
p.float_literal = Forward()
p.font = Forward()
p.frac = Forward()
p.dfrac = Forward()
p.function = Forward()
p.genfrac = Forward()
p.group = Forward()
Expand DownExpand Up@@ -2389,6 +2394,11 @@ def __init__(self):
- ((p.required_group + p.required_group) | Error(r"Expected \frac{num}{den}"))
)

p.dfrac <<= Group(
Suppress(Literal(r"\dfrac"))
- ((p.required_group + p.required_group) | Error(r"Expected \dfrac{num}{den}"))
)

p.stackrel <<= Group(
Suppress(Literal(r"\stackrel"))
- ((p.required_group + p.required_group) | Error(r"Expected \stackrel{num}{den}"))
Expand DownExpand Up@@ -2441,6 +2451,7 @@ def __init__(self):
| p.function
| p.group
| p.frac
| p.dfrac
| p.stackrel
| p.binom
| p.genfrac
Expand DownExpand Up@@ -3035,8 +3046,11 @@ def _genfrac(self, ldelim, rdelim, rule, style, num, den):
state.font, state.fontsize, state.dpi)

rule = float(rule)
num.shrink()
den.shrink()

# If style != displaystyle == 0, shrink the num and den
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

I think these warrant some constants instead of magic numbers.

if style != self._math_style_dict['displaystyle']:
num.shrink()
den.shrink()
cnum = HCentered([num])
cden = HCentered([den])
width = max(num.width, den.width)
Expand DownExpand Up@@ -3069,35 +3083,50 @@ def _genfrac(self, ldelim, rdelim, rule, style, num, den):
return result

def genfrac(self, s, loc, toks):
assert(len(toks)==1)
assert(len(toks[0])==6)
assert(len(toks) ==1)
assert(len(toks[0]) ==6)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

👍 for the whitespace fix, but also, you don't really need the parentheses.


return self._genfrac(*tuple(toks[0]))

def frac(self, s, loc, toks):
assert(len(toks)==1)
assert(len(toks[0])==2)
assert(len(toks) == 1)
assert(len(toks[0]) == 2)
state = self.get_state()

thickness = state.font_output.get_underline_thickness(
state.font, state.fontsize, state.dpi)
num, den = toks[0]

return self._genfrac('', '', thickness,
self._math_style_dict['textstyle'], num, den)

def dfrac(self, s, loc, toks):
assert(len(toks) == 1)
assert(len(toks[0]) == 2)
state = self.get_state()

thickness = state.font_output.get_underline_thickness(
state.font, state.fontsize, state.dpi)
num, den = toks[0]

return self._genfrac('', '', thickness, '', num, den)
return self._genfrac('', '', thickness,
self._math_style_dict['displaystyle'], num, den)

def stackrel(self, s, loc, toks):
assert(len(toks)==1)
assert(len(toks[0])==2)
assert(len(toks) ==1)
assert(len(toks[0]) ==2)
num, den = toks[0]

return self._genfrac('', '', 0.0, '', num, den)
return self._genfrac('', '', 0.0,
self._math_style_dict['textstyle'], num, den)

def binom(self, s, loc, toks):
assert(len(toks)==1)
assert(len(toks[0])==2)
assert(len(toks) ==1)
assert(len(toks[0]) ==2)
num, den = toks[0]

return self._genfrac('(', ')', 0.0, '', num, den)
return self._genfrac('(', ')', 0.0,
self._math_style_dict['textstyle'], num, den)

def sqrt(self, s, loc, toks):
#~ print "sqrt", toks
Expand Down
View file
Open in desktop
Binary file not shown.
View file
Open in desktop
Loading
Sorry, something went wrong.Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View file
Open in desktop
Loading
Sorry, something went wrong.Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong.Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

[8]ページ先頭

©2009-2025 Movatter.jp