From 172e8a8727cdd3311155facd3bb5dd77aa7c8c81 Mon Sep 17 00:00:00 2001
From: "Davide P. Cervone" <dpvc@union.edu>
Date: Wed, 17 Aug 2016 13:44:42 -0400
Subject: [PATCH] Make sure trimSpaces() doesn't remove tailing space in '\ '. 
 Resolves issue #1586 (and handles #1563 better).

---
 unpacked/extensions/TeX/newcommand.js | 8 +++-----
 unpacked/jax/input/TeX/jax.js         | 4 +++-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/unpacked/extensions/TeX/newcommand.js b/unpacked/extensions/TeX/newcommand.js
index 89b1ee51a..2d4d48f68 100644
--- a/unpacked/extensions/TeX/newcommand.js
+++ b/unpacked/extensions/TeX/newcommand.js
@@ -51,12 +51,11 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
      *  Implement \newcommand{\name}[n][default]{...}
      */
     NewCommand: function (name) {
-      var CS = this.GetArgument(name), cs = this.trimSpaces(CS),
+      var cs = this.trimSpaces(this.GetArgument(name)),
           n  = this.GetBrackets(name),
           opt = this.GetBrackets(name),
           def = this.GetArgument(name);
       if (cs.charAt(0) === "\\") {cs = cs.substr(1)}
-      if (cs === "" && CS.substr(CS.length-1,1) === " ") {cs += " "}
       if (!cs.match(/^(.|[a-z]+)$/i)) {
         TEX.Error(["IllegalControlSequenceName",
                    "Illegal control sequence name for %1",name]);
@@ -147,9 +146,8 @@ MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
         TEX.Error(["MissingCS",
                    "%1 must be followed by a control sequence", cmd])
       }
-      var cs = this.GetArgument(cmd), CS = this.trimSpaces(cs);
-      if (CS == "\\" && cs.substr(cs.length-1,1) === " ") {CS += " "}
-      return CS.substr(1);
+      var cs = this.trimSpaces(this.GetArgument(cmd));
+      return cs.substr(1);
     },
     
     /*
diff --git a/unpacked/jax/input/TeX/jax.js b/unpacked/jax/input/TeX/jax.js
index 3d2d34ac4..132a8baae 100644
--- a/unpacked/jax/input/TeX/jax.js
+++ b/unpacked/jax/input/TeX/jax.js
@@ -1877,7 +1877,9 @@
      */
     trimSpaces: function (text) {
       if (typeof(text) != 'string') {return text}
-      return text.replace(/^\s+|\s+$/g,'');
+      var TEXT = text.replace(/^\s+|\s+$/g,'');
+      if (TEXT.match(/\\$/) && text.match(/ $/)) TEXT += " ";
+      return TEXT;
     },
 
     /*