From a9409319bd403409375e83dcc0102cba8de0310c Mon Sep 17 00:00:00 2001 From: hneemann Date: Mon, 21 Sep 2020 10:40:40 +0200 Subject: [PATCH] Improves the spacing of & and | in LaTeX math mode output. --- .../graphics/text/formatter/LaTeXFormatter.java | 15 ++++++++++----- .../text/formatter/LaTeXFormatterTest.java | 4 ++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/neemann/digital/draw/graphics/text/formatter/LaTeXFormatter.java b/src/main/java/de/neemann/digital/draw/graphics/text/formatter/LaTeXFormatter.java index d77575625..58dfc9091 100644 --- a/src/main/java/de/neemann/digital/draw/graphics/text/formatter/LaTeXFormatter.java +++ b/src/main/java/de/neemann/digital/draw/graphics/text/formatter/LaTeXFormatter.java @@ -42,10 +42,7 @@ public final class LaTeXFormatter { if (text instanceof Simple) { return ((Simple) text).getText(); } else if (text instanceof Blank) { - if (mathMode) - return "\\ "; - else - return " "; + return " "; } else if (text instanceof Character) { return character(((Character) text).getChar(), mathMode); } else if (text instanceof Decorate) { @@ -112,7 +109,15 @@ public final class LaTeXFormatter { else return "\\textgreater{}"; case '&': - return "\\&"; + if (inMath) + return "\\ \\&\\ "; + else + return "\\&"; + case '|': + if (inMath) + return "\\ |\\ "; + else + return "|"; case '_': return "\\_"; case '\\': diff --git a/src/test/java/de/neemann/digital/draw/graphics/text/formatter/LaTeXFormatterTest.java b/src/test/java/de/neemann/digital/draw/graphics/text/formatter/LaTeXFormatterTest.java index df81739e0..17f82f654 100644 --- a/src/test/java/de/neemann/digital/draw/graphics/text/formatter/LaTeXFormatterTest.java +++ b/src/test/java/de/neemann/digital/draw/graphics/text/formatter/LaTeXFormatterTest.java @@ -30,6 +30,10 @@ public class LaTeXFormatterTest extends TestCase { assertEquals("a\\&b", LaTeXFormatter.format(new Parser("a&b").parse())); assertEquals("a$\\neg{}$b", LaTeXFormatter.format(new Parser("a¬b").parse())); assertEquals("$a\\neg{}b$", LaTeXFormatter.format(new Parser("$a¬b$").parse())); + assertEquals("a\\&b", LaTeXFormatter.format(new Parser("a&b").parse())); + assertEquals("$a\\ \\&\\ b$", LaTeXFormatter.format(new Parser("$a&b$").parse())); + assertEquals("a|b", LaTeXFormatter.format(new Parser("a|b").parse())); + assertEquals("$a\\ |\\ b$", LaTeXFormatter.format(new Parser("$a|b$").parse())); } public void testSumProd() throws ParseException {