summaryrefslogtreecommitdiff
path: root/macros/luatex/latex/luamodulartables/luamodulartables.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/luatex/latex/luamodulartables/luamodulartables.sty')
-rw-r--r--macros/luatex/latex/luamodulartables/luamodulartables.sty91
1 files changed, 91 insertions, 0 deletions
diff --git a/macros/luatex/latex/luamodulartables/luamodulartables.sty b/macros/luatex/latex/luamodulartables/luamodulartables.sty
new file mode 100644
index 0000000000..6e43c97bf0
--- /dev/null
+++ b/macros/luatex/latex/luamodulartables/luamodulartables.sty
@@ -0,0 +1,91 @@
+% luamodulartables
+% version 1.0
+% Authors: Chetan Shirore and Ajit Kumar
+% Licensed under LaTeX Project Public License v1.3c or later. The complete license text is available at http://www.latex-project.org/lppl.txt.
+
+\ProvidesPackage{luamodulartables}[1.0]
+\RequirePackage{xkeyval}
+\RequirePackage{luacode}
+\begin{luacode*}
+function modulomult(n,label, headline, midline)
+ label = label or '$\\times$'
+ headline = headline or ''
+ midline = midline or ''
+ local str2 = label
+ for i = 0, n - 1 do
+ str2 = str2 .. " & " .. "$" .. tostring(i) .."$"
+ end
+ str2 = str2 .. "\\\\ " .. headline
+ local tbl = {}
+ for i = 0, n - 1 do
+ k = 1
+ tbl[k] = "$" .. tostring(i) .."$"
+ k = k + 1
+ for j = 0, n - 1 do
+ tbl[k] = "$" .. tostring((i * j) % n) .."$"
+ k = k + 1
+ end
+ if i ~= n - 1 then
+ str2 = str2 .. table.concat(tbl, " & ") .. "\\\\ " .. midline
+ else
+ str2 = str2 .. table.concat(tbl, " & ")
+ end
+ end
+ return (str2)
+end
+
+function moduloadd(n,label, headline, midline)
+ label = label or '$+$'
+ headline = headline or ''
+ midline = midline or ''
+ local str3 =label
+ for i = 0, n - 1 do
+ str3 = str3 .. " & " .. "$" .. tostring(i) .."$"
+ end
+ str3 = str3 .. "\\\\ " .. headline
+ local tbl = {}
+ for i = 0, n - 1 do
+ k = 1
+ tbl[k] = "$" .. tostring(i) .."$"
+ k = k + 1
+ for j = 0, n - 1 do
+ tbl[k] = "$" .. tostring((i + j) % n) .."$"
+ k = k + 1
+ end
+ if i ~= n - 1 then
+ str3 = str3 .. table.concat(tbl, " & ") .. "\\\\ " .. midline
+ else
+ str3 = str3 .. table.concat(tbl, " & ")
+ end
+ end
+ return (str3)
+end
+
+\end{luacode*}
+
+% ========= KEY DEFINITIONS =========
+\define@key{luamodular}{multlabel}
+{\edef\luamod@multlabel{\luastringN{#1}}}
+\define@key{luamodular}{addlabel}
+{\edef\luamod@addlabel{\luastringN{#1}}}
+\define@key{luamodular}{headline}
+{\edef\luamod@headline{\luastringN{#1}}}
+\define@key{luamodular}{midline}
+{\edef\luamod@midline{\luastringN{#1}}}
+% ========= KEY DEFAULTS =========
+\setkeys{luamodular}{multlabel=$\times$}%
+\setkeys{luamodular}{addlabel=$+$}%
+\setkeys{luamodular}{headline = }%
+\setkeys{luamodular}{midline = }%
+% ========= Defining Command =========
+\newcommand{\luaModularMult}[2][]{%
+ \setkeys{luamodular}{#1}
+ \directlua{tex.sprint(modulomult(#2,\luamod@multlabel,
+\luamod@headline,\luamod@midline))}}%
+
+\newcommand{\luaModularAdd}[2][]{%
+ \setkeys{luamodular}{#1}
+ \directlua{tex.sprint(moduloadd(#2,\luamod@addlabel,
+\luamod@headline,\luamod@midline))}}%
+%
+\endinput