Skip to content

Commit 3871e19

Browse files
committed
TeX reader: avoid implicit pairing of delimiters.
Reverts #172, which was misguided. (The problem there was that the OP needed to use `\left` and `\right`; texmath was parsing the result in just the same way as TeX.)
1 parent b37930a commit 3871e19

19 files changed

+183
-158
lines changed

src/Text/TeXMath/Readers/TeX.hs

+1-5
Original file line numberDiff line numberDiff line change
@@ -408,11 +408,7 @@ delimited = do
408408

409409
delimitedImplicit :: TP Exp
410410
delimitedImplicit = try $ do
411-
(opent, closer) <-
412-
(("(", symbol ")") <$ symbol "(")
413-
<|> (("[", symbol "]") <$ symbol "[")
414-
<|> (("|", symbol "|") <$ symbol "|")
415-
<|> (("\x2016", "\x2016" <$ ctrlseq "rVert") <$ ctrlseq "lVert")
411+
(opent, closer) <- (("\x2016", "\x2016" <$ ctrlseq "rVert") <$ ctrlseq "lVert")
416412
contents <- concat <$>
417413
many (try $ ((:[]) . Left <$> middle)
418414
<|> (map Right . unGrouped <$>

test/reader/tex/05.test

+11-9
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
, ESpace ((-1) % 6)
1111
, ESubsup (ESymbol Op "\8747") (EIdentifier "a") (EIdentifier "s")
1212
, EIdentifier "f"
13-
, EDelimited "(" ")" [ Right (EIdentifier "y") ]
13+
, ESymbol Open "("
14+
, EIdentifier "y"
15+
, ESymbol Close ")"
1416
, ESpace (1 % 6)
1517
, EIdentifier "d"
1618
, EIdentifier "y"
@@ -20,14 +22,14 @@
2022
, ESymbol Rel "="
2123
, ESubsup (ESymbol Op "\8747") (EIdentifier "a") (EIdentifier "x")
2224
, EIdentifier "f"
23-
, EDelimited "(" ")" [ Right (EIdentifier "y") ]
24-
, EDelimited
25-
"("
26-
")"
27-
[ Right (EIdentifier "x")
28-
, Right (ESymbol Bin "\8722")
29-
, Right (EIdentifier "y")
30-
]
25+
, ESymbol Open "("
26+
, EIdentifier "y"
27+
, ESymbol Close ")"
28+
, ESymbol Open "("
29+
, EIdentifier "x"
30+
, ESymbol Bin "\8722"
31+
, EIdentifier "y"
32+
, ESymbol Close ")"
3133
, ESpace (1 % 6)
3234
, EIdentifier "d"
3335
, EIdentifier "y"

test/reader/tex/07.test

+9-3
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,22 @@ u'' + p(x)u' + q(x)u=f(x),\quad x>a
77
, ESymbol Ord "\8243"
88
, ESymbol Bin "+"
99
, EIdentifier "p"
10-
, EDelimited "(" ")" [ Right (EIdentifier "x") ]
10+
, ESymbol Open "("
11+
, EIdentifier "x"
12+
, ESymbol Close ")"
1113
, EIdentifier "u"
1214
, ESymbol Ord "\8242"
1315
, ESymbol Bin "+"
1416
, EIdentifier "q"
15-
, EDelimited "(" ")" [ Right (EIdentifier "x") ]
17+
, ESymbol Open "("
18+
, EIdentifier "x"
19+
, ESymbol Close ")"
1620
, EIdentifier "u"
1721
, ESymbol Rel "="
1822
, EIdentifier "f"
19-
, EDelimited "(" ")" [ Right (EIdentifier "x") ]
23+
, ESymbol Open "("
24+
, EIdentifier "x"
25+
, ESymbol Close ")"
2026
, ESymbol Pun ","
2127
, ESpace (1 % 1)
2228
, EIdentifier "x"

test/reader/tex/08.test

+20-21
Original file line numberDiff line numberDiff line change
@@ -5,33 +5,32 @@
55

66

77
>>> native
8-
[ EDelimited
9-
"|"
10-
"|"
11-
[ Right (EOver False (EIdentifier "z") (ESymbol Accent "\8254")) ]
8+
[ ESymbol Open "|"
9+
, EOver False (EIdentifier "z") (ESymbol Accent "\8254")
10+
, ESymbol Open "|"
1211
, ESymbol Rel "="
13-
, EDelimited "|" "|" [ Right (EIdentifier "z") ]
12+
, ESymbol Open "|"
13+
, EIdentifier "z"
14+
, ESymbol Open "|"
1415
, ESymbol Pun ","
15-
, EDelimited
16-
"|"
17-
"|"
18-
[ Right
19-
(ESuper
20-
(EDelimited
21-
"("
22-
")"
23-
[ Right (EOver False (EIdentifier "z") (ESymbol Accent "\8254")) ])
24-
(EIdentifier "n"))
25-
]
16+
, ESymbol Open "|"
17+
, ESymbol Open "("
18+
, EOver False (EIdentifier "z") (ESymbol Accent "\8254")
19+
, ESuper (ESymbol Close ")") (EIdentifier "n")
20+
, ESymbol Open "|"
2621
, ESymbol Rel "="
27-
, ESuper
28-
(EDelimited "|" "|" [ Right (EIdentifier "z") ]) (EIdentifier "n")
22+
, ESymbol Open "|"
23+
, EIdentifier "z"
24+
, ESuper (ESymbol Open "|") (EIdentifier "n")
2925
, ESymbol Pun ","
3026
, EMathOperator "arg"
31-
, EDelimited
32-
"(" ")" [ Right (ESuper (EIdentifier "z") (EIdentifier "n")) ]
27+
, ESymbol Open "("
28+
, ESuper (EIdentifier "z") (EIdentifier "n")
29+
, ESymbol Close ")"
3330
, ESymbol Rel "="
3431
, EIdentifier "n"
3532
, EMathOperator "arg"
36-
, EDelimited "(" ")" [ Right (EIdentifier "z") ]
33+
, ESymbol Open "("
34+
, EIdentifier "z"
35+
, ESymbol Close ")"
3736
]

test/reader/tex/09.test

+6-3
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@
1212
, ESub (EIdentifier "z") (ENumber "0")
1313
])
1414
, EIdentifier "f"
15-
, EDelimited "(" ")" [ Right (EIdentifier "z") ]
15+
, ESymbol Open "("
16+
, EIdentifier "z"
17+
, ESymbol Close ")"
1618
, ESymbol Rel "="
1719
, EIdentifier "f"
18-
, EDelimited
19-
"(" ")" [ Right (ESub (EIdentifier "z") (ENumber "0")) ]
20+
, ESymbol Open "("
21+
, ESub (EIdentifier "z") (ENumber "0")
22+
, ESymbol Close ")"
2023
]

test/reader/tex/10.test

+10-4
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88

99
>>> native
1010
[ ESub (EIdentifier "\981") (EIdentifier "n")
11-
, EDelimited "(" ")" [ Right (EIdentifier "\954") ]
11+
, ESymbol Open "("
12+
, EIdentifier "\954"
13+
, ESymbol Close ")"
1214
, ESymbol Rel "="
1315
, EFraction
1416
NormalFrac
@@ -23,8 +25,10 @@
2325
NormalFrac
2426
(EGrouped
2527
[ EMathOperator "sin"
26-
, EDelimited
27-
"(" ")" [ Right (EIdentifier "\954") , Right (EIdentifier "R") ]
28+
, ESymbol Open "("
29+
, EIdentifier "\954"
30+
, EIdentifier "R"
31+
, ESymbol Close ")"
2832
])
2933
(EGrouped [ EIdentifier "\954" , EIdentifier "R" ])
3034
, EFraction
@@ -41,7 +45,9 @@
4145
(EGrouped
4246
[ ESymbol Ord "\8706"
4347
, ESub (EIdentifier "D") (EIdentifier "n")
44-
, EDelimited "(" ")" [ Right (EIdentifier "R") ]
48+
, ESymbol Open "("
49+
, EIdentifier "R"
50+
, ESymbol Close ")"
4551
])
4652
(EGrouped [ ESymbol Ord "\8706" , EIdentifier "R" ]))
4753
]

test/reader/tex/11.test

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66

77
>>> native
88
[ ESub (EIdentifier "\981") (EIdentifier "n")
9-
, EDelimited "(" ")" [ Right (EIdentifier "\954") ]
9+
, ESymbol Open "("
10+
, EIdentifier "\954"
11+
, ESymbol Close ")"
1012
, ESymbol Rel "="
1113
, ENumber "0.033"
1214
, ESubsup (EIdentifier "C") (EIdentifier "n") (ENumber "2")

test/reader/tex/12.test

+3-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ f(x) =
99

1010
>>> native
1111
[ EIdentifier "f"
12-
, EDelimited "(" ")" [ Right (EIdentifier "x") ]
12+
, ESymbol Open "("
13+
, EIdentifier "x"
14+
, ESymbol Close ")"
1315
, ESymbol Rel "="
1416
, EDelimited
1517
"{"

test/reader/tex/13.test

+27-33
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,21 @@
88
>>> native
99
[ ESub (EGrouped []) (EIdentifier "p")
1010
, ESub (EIdentifier "F") (EIdentifier "q")
11-
, EDelimited
12-
"("
13-
")"
14-
[ Right (ESub (EIdentifier "a") (ENumber "1"))
15-
, Right (ESymbol Pun ",")
16-
, Right (ESymbol Ord "\8230")
17-
, Right (ESymbol Pun ",")
18-
, Right (ESub (EIdentifier "a") (EIdentifier "p"))
19-
, Right (ESymbol Pun ";")
20-
, Right (ESub (EIdentifier "c") (ENumber "1"))
21-
, Right (ESymbol Pun ",")
22-
, Right (ESymbol Ord "\8230")
23-
, Right (ESymbol Pun ",")
24-
, Right (ESub (EIdentifier "c") (EIdentifier "q"))
25-
, Right (ESymbol Pun ";")
26-
, Right (EIdentifier "z")
27-
]
11+
, ESymbol Open "("
12+
, ESub (EIdentifier "a") (ENumber "1")
13+
, ESymbol Pun ","
14+
, ESymbol Ord "\8230"
15+
, ESymbol Pun ","
16+
, ESub (EIdentifier "a") (EIdentifier "p")
17+
, ESymbol Pun ";"
18+
, ESub (EIdentifier "c") (ENumber "1")
19+
, ESymbol Pun ","
20+
, ESymbol Ord "\8230"
21+
, ESymbol Pun ","
22+
, ESub (EIdentifier "c") (EIdentifier "q")
23+
, ESymbol Pun ";"
24+
, EIdentifier "z"
25+
, ESymbol Close ")"
2826
, ESymbol Rel "="
2927
, EUnderover
3028
True
@@ -34,26 +32,22 @@
3432
, EFraction
3533
NormalFrac
3634
(EGrouped
37-
[ ESub
38-
(EDelimited
39-
"(" ")" [ Right (ESub (EIdentifier "a") (ENumber "1")) ])
40-
(EIdentifier "n")
35+
[ ESymbol Open "("
36+
, ESub (EIdentifier "a") (ENumber "1")
37+
, ESub (ESymbol Close ")") (EIdentifier "n")
4138
, ESymbol Ord "\8943"
42-
, ESub
43-
(EDelimited
44-
"(" ")" [ Right (ESub (EIdentifier "a") (EIdentifier "p")) ])
45-
(EIdentifier "n")
39+
, ESymbol Open "("
40+
, ESub (EIdentifier "a") (EIdentifier "p")
41+
, ESub (ESymbol Close ")") (EIdentifier "n")
4642
])
4743
(EGrouped
48-
[ ESub
49-
(EDelimited
50-
"(" ")" [ Right (ESub (EIdentifier "c") (ENumber "1")) ])
51-
(EIdentifier "n")
44+
[ ESymbol Open "("
45+
, ESub (EIdentifier "c") (ENumber "1")
46+
, ESub (ESymbol Close ")") (EIdentifier "n")
5247
, ESymbol Ord "\8943"
53-
, ESub
54-
(EDelimited
55-
"(" ")" [ Right (ESub (EIdentifier "c") (EIdentifier "q")) ])
56-
(EIdentifier "n")
48+
, ESymbol Open "("
49+
, ESub (EIdentifier "c") (EIdentifier "q")
50+
, ESub (ESymbol Close ")") (EIdentifier "n")
5751
])
5852
, EFraction
5953
NormalFrac

test/reader/tex/axiom_of_power_set.test

+18-23
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,22 @@
1111
, ESymbol Op "\8704"
1212
, EIdentifier "B"
1313
, ESpace (1 % 6)
14-
, EDelimited
15-
"["
16-
"]"
17-
[ Right (EIdentifier "B")
18-
, Right (ESymbol Rel "\8712")
19-
, Right (EIdentifier "P")
20-
, Right (ESymbol Rel "\8660")
21-
, Right (ESymbol Op "\8704")
22-
, Right (EIdentifier "C")
23-
, Right (ESpace (1 % 6))
24-
, Right
25-
(EDelimited
26-
"("
27-
")"
28-
[ Right (EIdentifier "C")
29-
, Right (ESymbol Rel "\8712")
30-
, Right (EIdentifier "B")
31-
, Right (ESymbol Rel "\8658")
32-
, Right (EIdentifier "C")
33-
, Right (ESymbol Rel "\8712")
34-
, Right (EIdentifier "A")
35-
])
36-
]
14+
, ESymbol Open "["
15+
, EIdentifier "B"
16+
, ESymbol Rel "\8712"
17+
, EIdentifier "P"
18+
, ESymbol Rel "\8660"
19+
, ESymbol Op "\8704"
20+
, EIdentifier "C"
21+
, ESpace (1 % 6)
22+
, ESymbol Open "("
23+
, EIdentifier "C"
24+
, ESymbol Rel "\8712"
25+
, EIdentifier "B"
26+
, ESymbol Rel "\8658"
27+
, EIdentifier "C"
28+
, ESymbol Rel "\8712"
29+
, EIdentifier "A"
30+
, ESymbol Close ")"
31+
, ESymbol Close "]"
3732
]

test/reader/tex/binomial_coefficient.test

+10-14
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@
33

44
>>> native
55
[ EStyled TextNormal [ EStyled TextBold [ EIdentifier "C" ] ]
6-
, EDelimited
7-
"("
8-
")"
9-
[ Right (EIdentifier "n")
10-
, Right (ESymbol Pun ",")
11-
, Right (EIdentifier "k")
12-
]
6+
, ESymbol Open "("
7+
, EIdentifier "n"
8+
, ESymbol Pun ","
9+
, EIdentifier "k"
10+
, ESymbol Close ")"
1311
, ESymbol Rel "="
1412
, ESubsup
1513
(EStyled TextNormal [ EStyled TextBold [ EIdentifier "C" ] ])
@@ -34,13 +32,11 @@
3432
[ EIdentifier "k"
3533
, ESymbol Ord "!"
3634
, ESpace (1 % 6)
37-
, EDelimited
38-
"("
39-
")"
40-
[ Right (EIdentifier "n")
41-
, Right (ESymbol Bin "\8722")
42-
, Right (EIdentifier "k")
43-
]
35+
, ESymbol Open "("
36+
, EIdentifier "n"
37+
, ESymbol Bin "\8722"
38+
, EIdentifier "k"
39+
, ESymbol Close ")"
4440
, ESymbol Ord "!"
4541
])
4642
]

test/reader/tex/deMorgans_law.test

+13-11
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,21 @@
44

55
>>> native
66
[ ESymbol Op "\172"
7-
, EDelimited
8-
"("
9-
")"
10-
[ Right (EIdentifier "p")
11-
, Right (ESymbol Bin "\8743")
12-
, Right (EIdentifier "q")
13-
]
7+
, ESymbol Open "("
8+
, EIdentifier "p"
9+
, ESymbol Bin "\8743"
10+
, EIdentifier "q"
11+
, ESymbol Close ")"
1412
, ESymbol Rel "\8660"
15-
, EDelimited
16-
"(" ")" [ Right (ESymbol Op "\172") , Right (EIdentifier "p") ]
13+
, ESymbol Open "("
14+
, ESymbol Op "\172"
15+
, EIdentifier "p"
16+
, ESymbol Close ")"
1717
, ESymbol Bin "\8744"
18-
, EDelimited
19-
"(" ")" [ Right (ESymbol Op "\172") , Right (EIdentifier "q") ]
18+
, ESymbol Open "("
19+
, ESymbol Op "\172"
20+
, EIdentifier "q"
21+
, ESymbol Close ")"
2022
, EOver
2123
False
2224
(EGrouped

0 commit comments

Comments
 (0)