From a2c09fa2736279ed2eec00177f2b0215dd19cd22 Mon Sep 17 00:00:00 2001
From: Robert Alessi <alessi@robertalessi.net>
Date: Sun, 13 May 2018 16:38:24 +0200
Subject: \MkArbBreak{} now processes commands with up to one optional argument

---
 arabluatex.lua | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/arabluatex.lua b/arabluatex.lua
index b2c651c..8105311 100644
--- a/arabluatex.lua
+++ b/arabluatex.lua
@@ -65,11 +65,19 @@ local function breakcmd(str)
    if next(brkcmds) == nil then
       -- nothing to do
    else
+      for i = 1,#brkcmds do
+	 str = string.gsub(str, "\\"..brkcmds[i].."%s?(%b[])(%b{})",
+           function(opt, body)
+	     opt = string.sub(opt, 2, -2)
+	     body = string.sub(body, 2, -2)
+	return string.format("}\\"..brkcmds[i].."[%s]{%s}\\arb{", opt, body)
+	 end)
+      end
       for i = 1,#brkcmds do
 	 str = string.gsub(str, "\\"..brkcmds[i].."%s?(%b{})",
-		function(body)
-		   body = string.sub(body, 2, -2)
-		   return string.format("}\\"..brkcmds[i].."{%s}\\arb{", body)
+	   function(body)
+	     body = string.sub(body, 2, -2)
+	     return string.format("}\\"..brkcmds[i].."{%s}\\arb{", body)
 	 end)
       end
    end
@@ -130,13 +138,6 @@ local function breakcmd(str)
 	body = string.sub(body, 2, -2)
 	return string.format("}\\%s{%s}\\arb{", tag, body)
 	end)
-   -- any command that is not \arb{} and has an optional argument
-   str = string.gsub(str, "\\([^a][^r][^b].-)(%b[])(%b{})",
-    function(tag, opt, body)
-    opt = string.sub(opt, 2, -2)
-    body = string.sub(body, 2, -2)
-    return string.format("}\\%s[%s]{\\arb{%s}}\\arb{", tag, opt, body)
-   end)
    return str
 end
 
-- 
cgit v1.2.3