-
Notifications
You must be signed in to change notification settings - Fork 133
Description
The logic programming patterns in section 4.4 used ?foo for variables in Scheme and $foo in JS.
That's a great choice, as dollar is the only punctuation char valid in JS identifiers, and alludes to $var syntaxes in shells/Perl/etc. 👍
Alas, in the comparison edition, the dollars confuse MathJax, which apparently processes the whole page, including all JS code :-(
here is a particularly mixed-up example, where same list( is sometimes literal code sometimes italic "math", and underscore in lives_near makes the letter n subscript — and most importantly all the dollars are gone.
sicp/xml/chapter4/section4/subsection1.xml
Lines 1676 to 1679 in ca6ce37
| <JAVASCRIPT> | |
| and(job($x, list("computer", "programmer")), | |
| lives_near($x, list("Bitdiddle", "Ben"))) | |
| </JAVASCRIPT> |
(same happens in later subsections 4.4.2 and so on.)
Now, you can't just exclude all Scheme/JS snippets from mathjax processing, cause some are deliberate, like here:

sicp/xml/chapter4/section4/subsection1.xml
Lines 1068 to 1080 in ca6ce37
| <JAVASCRIPT> | |
| In general, | |
| <SNIPPET LATEX="yes"> | |
| <JAVASCRIPT> | |
| and(<META>query</META>$_{1}$, <META>query</META>$_{2}$, $\ldots$, <META>query</META>$_{n})$ | |
| </JAVASCRIPT> | |
| </SNIPPET> | |
| is | |
| <INDEX>satisfy a compound query<OPEN/></INDEX> | |
| satisfied by all sets of values for the pattern variables that | |
| simultaneously satisfy | |
| <META>query</META><LATEXINLINE>$_{1}, \ldots,$</LATEXINLINE> <META>query</META><LATEXINLINE>$_{n}$</LATEXINLINE>. | |
| </JAVASCRIPT> |
