From 769da5b07fb95865c7f3350d5e76935774767beb Mon Sep 17 00:00:00 2001 From: hneemann Date: Sun, 14 Mar 2021 08:09:57 +0100 Subject: [PATCH] adds a \vee and \wedge command --- src/main/dig/misc/TextFormatExample.dig | 32 ++++++++++++++++++- .../digital/draw/graphics/text/Parser.java | 20 ++++++++---- .../text/formatter/LaTeXFormatter.java | 10 ++++++ .../text/formatter/LaTeXFormatterTest.java | 10 ++++++ 4 files changed, 65 insertions(+), 7 deletions(-) diff --git a/src/main/dig/misc/TextFormatExample.dig b/src/main/dig/misc/TextFormatExample.dig index 67589d65a..bc11a6fc9 100644 --- a/src/main/dig/misc/TextFormatExample.dig +++ b/src/main/dig/misc/TextFormatExample.dig @@ -74,7 +74,7 @@ of ~{s_1^{n+1}} in detail. von ~{s_1^{n+1}} im Detail erklärt.}} - + In @@ -136,6 +136,36 @@ von ~{s_1^{n+1}} im Detail erklärt.}} + + In + + + Label + A\wedge{}B + + + + + + In + + + Label + ~{A\vee{}B} + + + + + + In + + + Label + \neg{}A + + + + diff --git a/src/main/java/de/neemann/digital/draw/graphics/text/Parser.java b/src/main/java/de/neemann/digital/draw/graphics/text/Parser.java index 0517a7394..958cf662c 100644 --- a/src/main/java/de/neemann/digital/draw/graphics/text/Parser.java +++ b/src/main/java/de/neemann/digital/draw/graphics/text/Parser.java @@ -14,11 +14,14 @@ import java.util.HashMap; * The text parser */ public class Parser { - private static final HashMap COMMANDS = new HashMap<>(); + private static final HashMap COMMANDS = new HashMap<>(); static { - COMMANDS.put("sum", "∑"); - COMMANDS.put("prod", "∏"); + COMMANDS.put("sum", '∑'); + COMMANDS.put("prod", '∏'); + COMMANDS.put("wedge", '∧'); + COMMANDS.put("vee", '∨'); + COMMANDS.put("neg", '¬'); } private final String text; @@ -103,6 +106,10 @@ public class Parser { getChar(); sentence.getIndex().addSub(parseBrace()); break; + case '{': + getChar(); + expect('}'); + break; case '^': getChar(); sentence.getIndex().addSuper(parseBrace()); @@ -118,10 +125,11 @@ public class Parser { break; default: String command = readWord(); - String t = COMMANDS.get(command); + java.lang.Character t = COMMANDS.get(command); if (t == null) - t = '\\' + command; - sentence.add(new Simple(t).simplify()); + sentence.add(new Simple('\\' + command)); + else + sentence.add(new Character(t)); } break; 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 a8ffe9244..4daa68563 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 @@ -132,6 +132,16 @@ public final class LaTeXFormatter { return "\\prod "; else return "$\\prod$"; + case '∧': + if (inMath) + return "\\wedge "; + else + return "$\\wedge$"; + case '∨': + if (inMath) + return "\\vee "; + else + return "$\\vee$"; default: return "" + aChar; } 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 17f82f654..7e25e4c69 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 @@ -39,5 +39,15 @@ public class LaTeXFormatterTest extends TestCase { public void testSumProd() throws ParseException { assertEquals("$\\sum ^a_{n=0}$", LaTeXFormatter.format(new Parser("∑_{n=0}^a").parse())); assertEquals("$\\prod ^a_{n=0}$", LaTeXFormatter.format(new Parser("∏_{n=0}^a").parse())); + assertEquals("$\\sum ^a_{n=0}$", LaTeXFormatter.format(new Parser("\\sum_{n=0}^a").parse())); + assertEquals("$\\prod ^a_{n=0}$", LaTeXFormatter.format(new Parser("\\prod_{n=0}^a").parse())); + } + + public void testVeeWedge() throws ParseException { + assertEquals("A $\\vee$ B", LaTeXFormatter.format(new Parser("A \\vee B").parse())); + assertEquals("A $\\vee$ B", LaTeXFormatter.format(new Parser("A ∨ B").parse())); + assertEquals("A$\\vee$B", LaTeXFormatter.format(new Parser("A∨B").parse())); + assertEquals("$A \\wedge B$", LaTeXFormatter.format(new Parser("$A \\wedge B$").parse())); + assertEquals("$A\\wedge B$", LaTeXFormatter.format(new Parser("$A\\wedge{}B$").parse())); } }