From 66a43f551d73349c11792260396b680d620b10e7 Mon Sep 17 00:00:00 2001 From: Emily Eisenberg Date: Tue, 9 Jul 2013 16:02:44 -0700 Subject: [PATCH] Add llap and rlap Summary: By the powers of Greyskull (and maybe css) we have vanquished the great and powerful llap! All hail! Test Plan: Add some \llap and \rlap. Make sure it's positioned correctly. Reviewers: spicyj Reviewed By: spicyj Differential Revision: http://phabricator.benalpert.com/D48 --- MJLite.js | 6 ++++++ lexer.js | 2 +- parser.jison | 4 ++++ static/mjlite.css | 14 ++++++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/MJLite.js b/MJLite.js index 123a14095..98e8b5f9d 100644 --- a/MJLite.js +++ b/MJLite.js @@ -80,6 +80,12 @@ var buildGroup = function(group, prev) { return makeSpan("mord mspace " + spacingClassMap[group.value]); } + } else if (group.type === "llap") { + var inner = makeSpan("", buildExpression(group.value)); + return makeSpan("llap", inner); + } else if (group.type === "rlap") { + var inner = makeSpan("", buildExpression(group.value)); + return makeSpan("rlap", inner); } else { console.log("Unknown type:", group.type); } diff --git a/lexer.js b/lexer.js index 187b9b0f0..eb9a14cf0 100644 --- a/lexer.js +++ b/lexer.js @@ -25,7 +25,7 @@ var funcs = [ // Colors 'blue', 'orange', 'pink', 'red', 'green', 'gray', 'purple', // Other functions - 'dfrac' + 'dfrac', 'llap', 'rlap' ]; var anyFunc = new RegExp("^\\\\(" + funcs.join("|") + ")(?![a-zA-Z])"); diff --git a/parser.jison b/parser.jison index 308a6c1d0..db9a1f6bb 100644 --- a/parser.jison +++ b/parser.jison @@ -90,6 +90,10 @@ func {$$ = [{type: 'color', value: {color: 'purple', value: $2}}];} | 'dfrac' group group {$$ = [{type: 'dfrac', value: {numer: $2, denom: $3}}];} + | 'llap' group + {$$ = [{type: 'llap', value: $2}];} + | 'rlap' group + {$$ = [{type: 'rlap', value: $2}];} ; atom diff --git a/static/mjlite.css b/static/mjlite.css index 08f400433..486d140c7 100644 --- a/static/mjlite.css +++ b/static/mjlite.css @@ -129,6 +129,20 @@ big parens width: 2em; } +.llap, .rlap { + width: 0; + position: relative; +} + +.llap > span { + position: absolute; + right: 0; +} + +.rlap > span { + position: absolute; + left: 0; +} .mord.blue { color: #6495ed; } .mord.orange { color: #ffa500; }