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

Commit3c38700

Browse files
authored
Merge pull request#26198 from ksunden/mathtext_forwards
Limit Forward references in Mathtext parser
2 parents8ad208f +44ee3d6 commit3c38700

File tree

2 files changed

+41
-65
lines changed

2 files changed

+41
-65
lines changed

‎lib/matplotlib/_mathtext.py

Lines changed: 40 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1817,8 +1817,11 @@ def __init__(self):
18171817
defset_names_and_parse_actions():
18181818
forkey,valinvars(p).items():
18191819
ifnotkey.startswith('_'):
1820-
# Set names on everything -- very useful for debugging
1821-
val.setName(key)
1820+
# Set names on (almost) everything -- very useful for debugging
1821+
# token, placeable, and auto_delim are forward references which
1822+
# are left without names to ensure useful error messages
1823+
ifkeynotin ("token","placeable","auto_delim"):
1824+
val.setName(key)
18221825
# Set actions
18231826
ifhasattr(self,key):
18241827
val.setParseAction(getattr(self,key))
@@ -1855,63 +1858,39 @@ def csnames(group, names):
18551858
p.unknown_symbol=Regex(r"\\[A-Za-z]*")("name")
18561859

18571860
p.font=csnames("font",self._fontnames)
1858-
p.start_group= (
1859-
Optional(r"\math"+oneOf(self._fontnames)("font"))+"{")
1861+
p.start_group=Optional(r"\math"+oneOf(self._fontnames)("font"))+"{"
18601862
p.end_group=Literal("}")
18611863

18621864
p.delim=oneOf(self._delims)
18631865

1864-
set_names_and_parse_actions()# for root definitions.
1865-
18661866
# Mutually recursive definitions. (Minimizing the number of Forward
18671867
# elements is important for speed.)
1868-
p.accent=Forward()
18691868
p.auto_delim=Forward()
1870-
p.binom=Forward()
1871-
p.customspace=Forward()
1872-
p.frac=Forward()
1873-
p.dfrac=Forward()
1874-
p.function=Forward()
1875-
p.genfrac=Forward()
1876-
p.group=Forward()
1877-
p.operatorname=Forward()
1878-
p.overline=Forward()
1879-
p.overset=Forward()
18801869
p.placeable=Forward()
18811870
p.required_group=Forward()
1882-
p.simple=Forward()
18831871
p.optional_group=Forward()
1884-
p.sqrt=Forward()
1885-
p.subsuper=Forward()
1886-
p.text=Forward()
18871872
p.token=Forward()
1888-
p.underset=Forward()
18891873

18901874
set_names_and_parse_actions()# for mutually recursive definitions.
18911875

1892-
p.customspace<<=cmd(r"\hspace","{"+p.float_literal("space")+"}")
1876+
p.optional_group<<="{"+ZeroOrMore(p.token)("group")+"}"
1877+
p.required_group<<="{"+OneOrMore(p.token)("group")+"}"
18931878

1894-
p.accent<<= (
1879+
p.customspace=cmd(r"\hspace","{"+p.float_literal("space")+"}")
1880+
1881+
p.accent= (
18951882
csnames("accent", [*self._accent_map,*self._wide_accents])
18961883
-p.placeable("sym"))
18971884

1898-
p.function<<=csnames("name",self._function_names)
1899-
p.operatorname<<=cmd(
1900-
r"\operatorname","{"+ZeroOrMore(p.simple)("name")+"}")
1885+
p.function=csnames("name",self._function_names)
19011886

1902-
p.group<<=p.start_group+ZeroOrMore(p.token)("group")+p.end_group
1887+
p.group=p.start_group+ZeroOrMore(p.token)("group")+p.end_group
19031888

1904-
p.optional_group<<="{"+ZeroOrMore(p.token)("group")+"}"
1905-
p.required_group<<="{"+OneOrMore(p.token)("group")+"}"
1906-
1907-
p.frac<<=cmd(
1908-
r"\frac",p.required_group("num")+p.required_group("den"))
1909-
p.dfrac<<=cmd(
1910-
r"\dfrac",p.required_group("num")+p.required_group("den"))
1911-
p.binom<<=cmd(
1912-
r"\binom",p.required_group("num")+p.required_group("den"))
1889+
p.frac=cmd(r"\frac",p.required_group("num")+p.required_group("den"))
1890+
p.dfrac=cmd(r"\dfrac",p.required_group("num")+p.required_group("den"))
1891+
p.binom=cmd(r"\binom",p.required_group("num")+p.required_group("den"))
19131892

1914-
p.genfrac<<=cmd(
1893+
p.genfrac=cmd(
19151894
r"\genfrac",
19161895
"{"+Optional(p.delim)("ldelim")+"}"
19171896
+"{"+Optional(p.delim)("rdelim")+"}"
@@ -1920,21 +1899,39 @@ def csnames(group, names):
19201899
+p.required_group("num")
19211900
+p.required_group("den"))
19221901

1923-
p.sqrt<<=cmd(
1902+
p.sqrt=cmd(
19241903
r"\sqrt{value}",
19251904
Optional("["+OneOrMore(NotAny("]")+p.token)("root")+"]")
19261905
+p.required_group("value"))
19271906

1928-
p.overline<<=cmd(r"\overline",p.required_group("body"))
1907+
p.overline=cmd(r"\overline",p.required_group("body"))
19291908

1930-
p.overset<<=cmd(
1909+
p.overset=cmd(
19311910
r"\overset",
19321911
p.optional_group("annotation")+p.optional_group("body"))
1933-
p.underset<<=cmd(
1912+
p.underset=cmd(
19341913
r"\underset",
19351914
p.optional_group("annotation")+p.optional_group("body"))
19361915

1937-
p.text<<=cmd(r"\text",QuotedString('{','\\',endQuoteChar="}"))
1916+
p.text=cmd(r"\text",QuotedString('{','\\',endQuoteChar="}"))
1917+
1918+
p.subsuper= (
1919+
(Optional(p.placeable)("nucleus")
1920+
+OneOrMore(oneOf(["_","^"])-p.placeable)("subsuper")
1921+
+Regex("'*")("apostrophes"))
1922+
|Regex("'+")("apostrophes")
1923+
| (p.placeable("nucleus")+Regex("'*")("apostrophes"))
1924+
)
1925+
1926+
p.simple=p.space|p.customspace|p.font|p.subsuper
1927+
1928+
p.token<<= (
1929+
p.simple
1930+
|p.auto_delim
1931+
|p.unknown_symbol# Must be last
1932+
)
1933+
1934+
p.operatorname=cmd(r"\operatorname","{"+ZeroOrMore(p.simple)("name")+"}")
19381935

19391936
p.placeable<<= (
19401937
p.accent# Must be before symbol as all accents are symbols
@@ -1954,27 +1951,6 @@ def csnames(group, names):
19541951
|p.text
19551952
)
19561953

1957-
p.simple<<= (
1958-
p.space
1959-
|p.customspace
1960-
|p.font
1961-
|p.subsuper
1962-
)
1963-
1964-
p.subsuper<<= (
1965-
(Optional(p.placeable)("nucleus")
1966-
+OneOrMore(oneOf(["_","^"])-p.placeable)("subsuper")
1967-
+Regex("'*")("apostrophes"))
1968-
|Regex("'+")("apostrophes")
1969-
| (p.placeable("nucleus")+Regex("'*")("apostrophes"))
1970-
)
1971-
1972-
p.token<<= (
1973-
p.simple
1974-
|p.auto_delim
1975-
|p.unknown_symbol# Must be last
1976-
)
1977-
19781954
p.auto_delim<<= (
19791955
r"\left"- (p.delim("left")|Error("Expected a delimiter"))
19801956
+ZeroOrMore(p.simple|p.auto_delim)("mid")

‎lib/matplotlib/mathtext.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ from typing import IO, Literal
1212
frommatplotlib.typingimportColorType
1313

1414
classMathTextParser:
15-
def__init__(self,output:Literal["path","raster","macosx"])->None: ...
15+
def__init__(self,output:Literal["path","agg","raster","macosx"])->None: ...
1616
defparse(self,s:str,dpi:float= ...,prop:FontProperties|None= ...): ...
1717

1818
defmath_to_image(

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp