Skip to content

Comparison edition: 4.4: MathJax rendering within JS confused by $pattern_variables #904

Open
@cben

Description

@cben

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.

Screenshot $lives_near
rendered from this XML:

<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:
Screenshot query_1, ..., query_n

<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>

So it has to depend on LATEX="yes" attribute.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions