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()));
}
}