aboutsummaryrefslogtreecommitdiff
path: root/arabluatex.lua
diff options
context:
space:
mode:
authorRobert Alessi <alessi@robertalessi.net>2017-07-02 20:16:35 +0200
committerRobert Alessi <alessi@robertalessi.net>2017-07-02 20:16:35 +0200
commit794311265c5b020e8c459c33056e1376b169e27f (patch)
treee1d24a51173d1f3477a620e93f58997779493358 /arabluatex.lua
parent158fe0112d27917ae9f7f91bc8aab1dd23d429ea (diff)
downloadarabluatex-794311265c5b020e8c459c33056e1376b169e27f.tar.gz
new command \MkArbBreak{} for inserting user-defined single argument commands in Arabic environments
Diffstat (limited to 'arabluatex.lua')
-rw-r--r--arabluatex.lua33
1 files changed, 25 insertions, 8 deletions
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")
27require("arabluatex_novoc") 27require("arabluatex_novoc")
28require("arabluatex_trans") 28require("arabluatex_trans")
29 29
30function isintable(table, value)
31 for _, v in pairs(table) do
32 if v == value then return true end
33 end
34 return false
35end
36
37local function protectarb(str) 30local function protectarb(str)
38 str = string.gsub(str, "(\\arb.?)(%[.-%])(%b{})", "\\@arb%2%3") 31 str = string.gsub(str, "(\\arb.?)(%[.-%])(%b{})", "\\@arb%2%3")
39 str = string.gsub(str, "(\\begin.?)(%b{})(%b[])", "\\@begin%3%2") 32 str = string.gsub(str, "(\\begin.?)(%b{})(%b[])", "\\@begin%3%2")
@@ -53,9 +46,33 @@ local function unprotectarb(str)
53return str 46return str
54end 47end
55 48
56breakcmds = {} 49brkcmds = {}
50
51function mkarbbreak(str)
52 str = str ..","
53 str = string.gsub(str, "%s+", "")
54 local fieldstart = 1
55 repeat
56 local nexti = string.find(str, "%,", fieldstart)
57 table.insert(brkcmds, string.sub(str, fieldstart, nexti-1))
58 fieldstart = nexti +1
59 until fieldstart > string.len(str)
60 return brkcmds
61end
57 62
58local function breakcmd(str) 63local function breakcmd(str)
64 -- user commands
65 if next(brkcmds) == nil then
66 -- nothing to do
67 else
68 for i = 1,#brkcmds do
69 str = string.gsub(str, "\\"..brkcmds[i]..".?(%b{})",
70 function(body)
71 body = string.sub(body, 2, -2)
72 return string.format("}\\"..brkcmds[i].."{%s}\\arb{", body)
73 end)
74 end
75 end
59 -- process \item[], then \item[] 76 -- process \item[], then \item[]
60 str = string.gsub(str, "\\(item.?)(%b[])", 77 str = string.gsub(str, "\\(item.?)(%b[])",
61 function(tag, body) 78 function(tag, body)