fix latex escaping

* src/ltlvisit/print.cc: Property output the double
quotes in latex mode, not only sclatex.
* src/misc/escape.cc: Fix LaTeX escape to work in math mode.
* src/tests/latex.test: Add a test.
* wrap/python/tests/formulas.ipynb: Adjust expected output
* NEWS: Mention the fix.
This commit is contained in:
Alexandre Duret-Lutz 2015-08-13 17:25:00 +02:00
parent 21ff2d0415
commit 2eab0344b9
5 changed files with 14 additions and 9 deletions

4
NEWS
View file

@ -16,6 +16,10 @@ New in spot 1.99.2a (not yet released)
- ltlgrind --help output had some options documented twice, or - ltlgrind --help output had some options documented twice, or
in the wrong place. in the wrong place.
- The man page for ltlcross had obsolete examples. - The man page for ltlcross had obsolete examples.
- When outputting atomic propositions in double quotes, the
escaping routine used by the two styles of LaTeX output was
slightly off. For instance ^ was incorrectly escaped, and the
double quotes where not always properly rendered.
New in spot 1.99.2 (2015-07-18) New in spot 1.99.2 (2015-07-18)

View file

@ -416,8 +416,8 @@ namespace spot
{ {
// Spin 6 supports atomic propositions such as (a == 0) // Spin 6 supports atomic propositions such as (a == 0)
// as long as they are enclosed in parentheses. // as long as they are enclosed in parentheses.
if (kw_ == sclatex_kw || kw_ == sclatex_kw) if (kw_ == sclatex_kw || kw_ == latex_kw)
escape_latex(os_ << "``\\mathit{", str) << "\\textrm{''}}"; escape_latex(os_ << "``\\mathit{", str) << "}\\textrm{''}";
else if (kw_ != spin_kw) else if (kw_ != spin_kw)
os_ << '"' << str << '"'; os_ << '"' << str << '"';
else if (!full_parent_) else if (!full_parent_)

View file

@ -54,13 +54,13 @@ namespace spot
switch (i) switch (i)
{ {
case '~': case '~':
os << "\\textasciitilde"; os << "\\text{\\textasciitilde}";
break; break;
case '^': case '^':
os << "\\textasciicircum"; os << "\\text{\\textasciicircum}";
break; break;
case '\\': case '\\':
os << "\\textbackslash"; os << "\\text{\\textbackslash}";
break; break;
case '&': case '&':
case '%': case '%':

View file

@ -29,7 +29,7 @@ set -e
(kpsewhich txfonts.sty) || exit 77 (kpsewhich txfonts.sty) || exit 77
(kpsewhich amsmath.sty) || exit 77 (kpsewhich amsmath.sty) || exit 77
cat >input <<EOF cat >input <<\EOF
XGFa <-> FGX(!b & !c) | (b ^ a) XGFa <-> FGX(!b & !c) | (b ^ a)
a U b W c R (d & e) M f a U b W c R (d & e) M f
{a;b[=2];((c:d*) && f*);e[*2..]}<>-> {((a | [*0])*;b[+]) & (c1[->2])}[]-> h {a;b[=2];((c:d*) && f*);e[*2..]}<>-> {((a | [*0])*;b[+]) & (c1[->2])}[]-> h
@ -37,6 +37,7 @@ a U b W c R (d & e) M f
!{a;b*;c}! -> d !{a;b*;c}! -> d
{a*;(b;c)[:*3..4];(c;d)[:+];d}! {a*;(b;c)[:*3..4];(c;d)[:+];d}!
G(uglyname->Fuglierlongname42) G(uglyname->Fuglierlongname42)
"#foo/$bar$" U "baz~yes^no"
EOF EOF
( (

View file

@ -1,7 +1,7 @@
{ {
"metadata": { "metadata": {
"name": "", "name": "",
"signature": "sha256:c5ce337080296dc7af1d530e86502099bdfb3f039b96f749f38390b8d5ade44b" "signature": "sha256:d2086d4faaecc1d0e5a0e29b958657ed86b034326b89a5513d3df6f35301a3e7"
}, },
"nbformat": 3, "nbformat": 3,
"nbformat_minor": 0, "nbformat_minor": 0,
@ -304,7 +304,7 @@
"outputs": [ "outputs": [
{ {
"latex": [ "latex": [
"$``\\mathit{a > b\\textrm{''}} \\land ``\\mathit{proc[2]@init\\textrm{''}} \\land \\mathsf{G} \\mathsf{F} \\mathit{\\_foo\\_}$" "$``\\mathit{a > b}\\textrm{''} \\land ``\\mathit{proc[2]@init}\\textrm{''} \\land \\mathsf{G} \\mathsf{F} \\mathit{\\_foo\\_}$"
], ],
"metadata": {}, "metadata": {},
"output_type": "pyout", "output_type": "pyout",
@ -493,7 +493,7 @@
"</svg>" "</svg>"
], ],
"text": [ "text": [
"<IPython.core.display.SVG at 0x7fe8197a3e10>" "<IPython.core.display.SVG at 0x7fb744184c88>"
] ]
} }
], ],