From 794311265c5b020e8c459c33056e1376b169e27f Mon Sep 17 00:00:00 2001 From: Robert Alessi Date: Sun, 2 Jul 2017 20:16:35 +0200 Subject: new command \MkArbBreak{} for inserting user-defined single argument commands in Arabic environments --- arabluatex.lua | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'arabluatex.lua') diff --git a/arabluatex.lua b/arabluatex.lua index 3a405a2..d35114d 100644 --- a/arabluatex.lua +++ b/arabluatex.lua @@ -27,13 +27,6 @@ require("arabluatex_fullvoc") require("arabluatex_novoc") require("arabluatex_trans") -function isintable(table, value) - for _, v in pairs(table) do - if v == value then return true end - end - return false -end - local function protectarb(str) str = string.gsub(str, "(\\arb.?)(%[.-%])(%b{})", "\\@arb%2%3") str = string.gsub(str, "(\\begin.?)(%b{})(%b[])", "\\@begin%3%2") @@ -53,9 +46,33 @@ local function unprotectarb(str) return str end -breakcmds = {} +brkcmds = {} + +function mkarbbreak(str) + str = str .."," + str = string.gsub(str, "%s+", "") + local fieldstart = 1 + repeat + local nexti = string.find(str, "%,", fieldstart) + table.insert(brkcmds, string.sub(str, fieldstart, nexti-1)) + fieldstart = nexti +1 + until fieldstart > string.len(str) + return brkcmds +end local function breakcmd(str) + -- user commands + if next(brkcmds) == nil then + -- nothing to do + else + for i = 1,#brkcmds do + str = string.gsub(str, "\\"..brkcmds[i]..".?(%b{})", + function(body) + body = string.sub(body, 2, -2) + return string.format("}\\"..brkcmds[i].."{%s}\\arb{", body) + end) + end + end -- process \item[], then \item[] str = string.gsub(str, "\\(item.?)(%b[])", function(tag, body) -- cgit v1.2.3