Fixed bug in Markdown parser: regular $s triggering math mode.
For example: "shoes ($20) and socks ($5)." The fix consists in two new restrictions: + the $ that ends a math span may not be directly followed by a digit. + no blank lines may be included within a math span. Thanks to Joseph Reagle for noticing the bug. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1326 788f1e2b-df1e-0410-8736-df70ead52e1b
This commit is contained in:
parent
235e41f246
commit
7c35c0bc25
12 changed files with 21 additions and 1 deletions
|
@ -873,8 +873,9 @@ math = try $ do
|
|||
failIfStrict
|
||||
char '$'
|
||||
notFollowedBy space
|
||||
words' <- sepBy1 mathWord (many1 space)
|
||||
words' <- sepBy1 mathWord (many1 (spaceChar <|> (newline >>~ notFollowedBy' blankline)))
|
||||
char '$'
|
||||
notFollowedBy digit
|
||||
return $ Math $ joinWithSep " " words'
|
||||
|
||||
emph :: GenParser Char ParserState Inline
|
||||
|
|
|
@ -294,6 +294,7 @@ Pandoc (Meta [Str "Pandoc",Space,Str "Test",Space,Str "Suite"] ["John MacFarlane
|
|||
, BulletList
|
||||
[ [ Plain [Str "To",Space,Str "get",Space,Str "the",Space,Str "famous",Space,Str "equation,",Space,Str "write",Space,Code "$e = mc^2$",Str "."] ]
|
||||
, [ Plain [Str "$",Str "22,000",Space,Str "is",Space,Str "a",Space,Emph [Str "lot"],Space,Str "of",Space,Str "money",Str ".",Space,Str "So",Space,Str "is",Space,Str "$",Str "34,000",Str ".",Space,Str "(It",Space,Str "worked",Space,Str "if",Space,Quoted DoubleQuote [Str "lot"],Space,Str "is",Space,Str "emphasized",Str ".",Str ")"] ]
|
||||
, [ Plain [Str "Shoes",Space,Str "(",Str "$",Str "20)",Space,Str "and",Space,Str "socks",Space,Str "(",Str "$",Str "5)",Str "."] ]
|
||||
, [ Plain [Str "Escaped",Space,Code "$",Str ":",Space,Str "$",Str "73",Space,Emph [Str "this",Space,Str "should",Space,Str "be",Space,Str "emphasized"],Space,Str "23",Str "$",Str "."] ] ]
|
||||
, Para [Str "Here",Apostrophe,Str "s",Space,Str "a",Space,Str "LaTeX",Space,Str "table:"]
|
||||
, Para [TeX "\\begin{tabular}{|l|l|}\\hline\nAnimal & Number \\\\ \\hline\nDog & 2 \\\\\nCat & 1 \\\\ \\hline\n\\end{tabular}"]
|
||||
|
|
|
@ -482,6 +482,7 @@ These shouldn't be math:
|
|||
- To get the famous equation, write `$e = mc^2$`.
|
||||
- $22,000 is a *lot* of money. So is $34,000.
|
||||
(It worked if "lot" is emphasized.)
|
||||
- Shoes ($20) and socks ($5).
|
||||
- Escaped `$`: $73 *this should be emphasized* 23\$.
|
||||
|
||||
Here's a LaTeX table:
|
||||
|
|
|
@ -902,6 +902,11 @@ These should not be escaped: \$ \\ \> \[ \{
|
|||
worked if <quote>lot</quote> is emphasized.)
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Shoes ($20) and socks ($5).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Escaped <literal>$</literal>: $73
|
||||
|
|
|
@ -796,6 +796,8 @@ Blah
|
|||
>lot</em
|
||||
> of money. So is $34,000. (It worked if “lot” is emphasized.)</li
|
||||
><li
|
||||
>Shoes ($20) and socks ($5).</li
|
||||
><li
|
||||
>Escaped <code
|
||||
>$</code
|
||||
>: $73 <em
|
||||
|
|
|
@ -590,6 +590,8 @@ These shouldn't be math:
|
|||
\item
|
||||
\$22,000 is a \emph{lot} of money. So is \$34,000. (It worked if
|
||||
``lot'' is emphasized.)
|
||||
\item
|
||||
Shoes (\$20) and socks (\$5).
|
||||
\item
|
||||
Escaped \verb!$!: \$73 \emph{this should be emphasized} 23\$.
|
||||
\end{itemize}
|
||||
|
|
|
@ -570,6 +570,8 @@ To get the famous equation, write \f[B]$e\ =\ mc^2$\f[]\.
|
|||
$22,000 is a \f[I]lot\f[] of money\. So is $34,000\. (It worked if
|
||||
\[lq]lot\[rq] is emphasized\.)
|
||||
.IP \[bu] 2
|
||||
Shoes ($20) and socks ($5)\.
|
||||
.IP \[bu] 2
|
||||
Escaped \f[B]$\f[]: $73 \f[I]this should be emphasized\f[] 23$\.
|
||||
.PP
|
||||
Here's a LaTeX table:
|
||||
|
|
|
@ -507,6 +507,7 @@ These shouldn't be math:
|
|||
- To get the famous equation, write `$e = mc^2$`.
|
||||
- $22,000 is a *lot* of money. So is $34,000. (It worked if "lot"
|
||||
is emphasized.)
|
||||
- Shoes ($20) and socks ($5).
|
||||
- Escaped `$`: $73 *this should be emphasized* 23$.
|
||||
|
||||
Here's a LaTeX table:
|
||||
|
|
|
@ -294,6 +294,7 @@ Pandoc (Meta [Str "Pandoc",Space,Str "Test",Space,Str "Suite"] ["John MacFarlane
|
|||
, BulletList
|
||||
[ [ Plain [Str "To",Space,Str "get",Space,Str "the",Space,Str "famous",Space,Str "equation,",Space,Str "write",Space,Code "$e = mc^2$",Str "."] ]
|
||||
, [ Plain [Str "$",Str "22,000",Space,Str "is",Space,Str "a",Space,Emph [Str "lot"],Space,Str "of",Space,Str "money",Str ".",Space,Str "So",Space,Str "is",Space,Str "$",Str "34,000",Str ".",Space,Str "(It",Space,Str "worked",Space,Str "if",Space,Quoted DoubleQuote [Str "lot"],Space,Str "is",Space,Str "emphasized",Str ".",Str ")"] ]
|
||||
, [ Plain [Str "Shoes",Space,Str "(",Str "$",Str "20)",Space,Str "and",Space,Str "socks",Space,Str "(",Str "$",Str "5)",Str "."] ]
|
||||
, [ Plain [Str "Escaped",Space,Code "$",Str ":",Space,Str "$",Str "73",Space,Emph [Str "this",Space,Str "should",Space,Str "be",Space,Str "emphasized"],Space,Str "23",Str "$",Str "."] ] ]
|
||||
, Para [Str "Here",Apostrophe,Str "s",Space,Str "a",Space,Str "LaTeX",Space,Str "table:"]
|
||||
, Para [TeX "\\begin{tabular}{|l|l|}\\hline\nAnimal & Number \\\\ \\hline\nDog & 2 \\\\\nCat & 1 \\\\ \\hline\n\\end{tabular}"]
|
||||
|
|
|
@ -638,6 +638,7 @@ These shouldn't be math:
|
|||
- To get the famous equation, write ``$e = mc^2$``.
|
||||
- $22,000 is a *lot* of money. So is $34,000. (It worked if "lot"
|
||||
is emphasized.)
|
||||
- Shoes ($20) and socks ($5).
|
||||
- Escaped ``$``: $73 *this should be emphasized* 23$.
|
||||
|
||||
Here's a LaTeX table:
|
||||
|
|
|
@ -252,6 +252,7 @@ quoted link
|
|||
{\pard \ql \f0 \sa180 \li0 \fi0 These shouldn\u8217't be math:\par}
|
||||
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab To get the famous equation, write {\f1 $e = mc^2$}.\par}
|
||||
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab $22,000 is a {\i lot} of money. So is $34,000. (It worked if \u8220"lot\u8221" is emphasized.)\par}
|
||||
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab Shoes ($20) and socks ($5).\par}
|
||||
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab Escaped {\f1 $}: $73 {\i this should be emphasized} 23$.\sa180\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 Here\u8217's a LaTeX table:\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 \par}
|
||||
|
|
|
@ -736,6 +736,8 @@ To get the famous equation@comma{} write @code{$e = mc^2$}.
|
|||
@item
|
||||
$22@comma{}000 is a @emph{lot} of money. So is $34@comma{}000. (It worked if ``lot'' is emphasized.)
|
||||
@item
|
||||
Shoes ($20) and socks ($5).
|
||||
@item
|
||||
Escaped @code{$}: $73 @emph{this should be emphasized} 23$.
|
||||
@end itemize
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue