aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-05-06updated to v1.8.4v1.8.4Robert Alessi
2017-05-06bugfix: the double consonants tt gg hh dd ss zz must not output a šaddah ↵Robert Alessi
when the first consonant is preceded by a diacritic
2017-04-27a typo in arabluatex.bibv1.8.3Robert Alessi
2017-04-27updated to v.1.8.3Robert Alessi
2017-04-24removed some discretionary hyphens from samples/al-Jahiz.texRobert Alessi
2017-04-17jīm is to be letter 'g' with caron (and not breve) in dmg and arabica ↵Robert Alessi
transliteration standards
2017-04-16such forms as qāḍin preceding a prosthetic alif were parsed wrongly in ↵Robert Alessi
'trans' modes
2017-04-16New sample file 'template-01.tex'Robert Alessi
2017-04-07a new file 'template-01.tex' has been added in samples/Robert Alessi
2017-04-06set some predefined variables in makefileRobert Alessi
2017-04-06adapted makefile; all sample files are to be public domainRobert Alessi
2017-04-05the documentation of arabluatex now has additional sample filesRobert Alessi
2017-04-03initial alif without hamzah after a final vowel must be taken out in ↵Robert Alessi
'arabica' mode
2017-04-02this is v1.8.2v1.8.2Robert Alessi
2017-04-02updated checksum and documentationRobert Alessi
2017-04-02new \Cap command that does the same as \cap but is never discarded; it is ↵Robert Alessi
used internally to protect \cap when it is necessary
2017-04-01bugfix: ʾalif maqṣūrah wrongly interpreted from buckwalter scheme to ↵Robert Alessi
arabica transliteration
2017-04-01the implementation of the 'arabica' transliteration needed more work; a ↵v1.8.1Robert Alessi
couple of bugs also found their way into v1.8 in the process
2017-03-31bugfix: -ī/-īyah were not parsed correctly in 'dmg' mode. 'loc' and ↵Robert Alessi
'arabica' rules needed to be more robust as well
2017-03-31bugfix: tāʾ marbūṭah was wrongly interpreted before ʾiʿrāb when ↵Robert Alessi
\arbup was active in dmg mode
2017-03-30rephrased one sentence. this is v1.8v1.8Robert Alessi
2017-03-30arabica: updated documentationRobert Alessi
2017-03-30arabica: removed unnecessary rules and tablesRobert Alessi
2017-03-30completed arabica tablesRobert Alessi
2017-03-29arabica: started implementing this standard: added new functions; now ↵Robert Alessi
working on tables
2017-03-29a few rules have been improved in dmg and loc transliterations (forms ↵Robert Alessi
without final inflections)
2017-03-18upgraded to v1.7.3v1.7.3Robert Alessi
2017-03-18mention in the README file that the CC BY-SA v4.0 license should apply to ↵Robert Alessi
the documentation
2017-03-15upgraded to v1.7.2; a few additional explanatory notes in the documentationv1.7.2Robert Alessi
2017-03-15a few modifications in the .el style file; institutional email added in the ↵Robert Alessi
documentation
2017-03-14\LR and \RL were missing in arabluatex.elRobert Alessi
2017-03-14added affiliationRobert Alessi
2017-03-13moving the BT system to notabug.orgRobert Alessi
2017-03-06added one line above the copyright notice to give the name of the program ↵Robert Alessi
and a brief idea of what it does
2017-03-06the documentation is now PDF/A 1b compliant, and is licensed under the ↵Robert Alessi
Creative Commons Attribution-ShareAlike 4.0 International License
2017-01-24arabuatex.el: \SetArbUp must have an argumentRobert Alessi
2017-01-24a typo in makefileRobert Alessi
2017-01-24updated makefile and README.texRobert Alessi
2017-01-24added 'arabluatex.el', an AUCTeX style file for 'arabluatex.sty'Robert Alessi
2017-01-08bugfixes: 'quoting' after a consonant did not take away the sukūn in ↵v1.7.1Robert Alessi
'default' fullvoc mode; long vowels were not shortened before 'llaḏī in dmg mode; a bit of tidy-up in the documentation
2017-01-08added a couple of examples in the documentationRobert Alessi
2017-01-08updated copyright date and checksumRobert Alessi
2017-01-07bugfix: final hamzah was not parsed correctly in some particular casesRobert Alessi
2016-12-24typov1.7Robert Alessi
2016-12-24typoRobert Alessi
2016-12-24typoRobert Alessi
2016-12-24a correction in the documentationRobert Alessi
2016-12-24a typo in the documentationRobert Alessi
2016-12-24arabnull: done documenting; some corrections; checksum updated. getting ↵Robert Alessi
close to v1.7
2016-12-24a bit of tidy-up in the codeRobert Alessi
published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. --]] require("arabluatex_voc") require("arabluatex_fullvoc") require("arabluatex_novoc") require("arabluatex_trans") local function protectarb(str) str = string.gsub(str, "(\\arb.?)(%[.-%])(%b{})", "\\@arb%2%3") str = string.gsub(str, "\\par", "\\p@r{}") str = string.gsub(str, "\\@@par", "\\p@r{}") return str end local function unprotectarb(str) str = string.gsub(str, "(\\@arb)(%[.-%])(%b{})", "\\arb%2%3") str = string.gsub(str, "\\p@r{}", "\\par") return str end local function breakcmd(str) -- \edtext str = string.gsub(str, "\\(edtext.-)(%b{})(%b{})", function(tag, bodylem, bodyvar) bodylem = string.sub(bodylem, 2, -2) bodyvar = string.sub(bodyvar, 2, -2) return string.format("\\LR{\\%s{%s}{%s}}", tag, bodylem, bodyvar) end) -- \RL str = string.gsub(str, "\\(RL.-)(%b{})", function(tag, body) body = string.sub(body, 2, -2) return string.format("}\\%s{%s}\\arb{", tag, body) end) -- \LR str = string.gsub(str, "\\(LR.-)(%b{})", function(tag, body) body = string.sub(body, 2, -2) return string.format("}\\%s{%s}\\arb{", tag, body) end) -- Footnote str = string.gsub(str, "\\(Footnote.-)(%b{})", function(tag, body) body = string.sub(body, 2, -2) return string.format("}\\%s{%s}\\arb{", tag, body) end) -- Marginpar str = string.gsub(str, "\\(Marginpar.-)(%b{})", function(tag, body) body = string.sub(body, 2, -2) return string.format("}\\%s{%s}\\arb{", tag, body) end) -- Abjad str = string.gsub(str, "\\(abjad.-)(%b{})", function(tag, body) body = string.sub(body, 2, -2) return string.format("}\\aemph{\\%s{%s}}\\arb{", tag, body) end) return str end local function holdcmd(str) str = string.gsub(str, "\\(arb)(%b{})", function(tag, body) body = string.sub(body, 2, -2) body = string.gsub(body, "\\(.-)(%b{})", function(btag, bbody) bbody = string.sub(bbody, 2, -2) if string.find(btag, "@") then return holdcmd(string.format("}\\%s{%s}\\arb{", btag, bbody)) else return holdcmd(string.format("}\\%s{\\arb{%s}}\\arb{", btag, bbody)) end end) return string.format("\\%s{%s}", tag, body) end) str = string.gsub(str, "\\arb{}", "") return str end local function arbnum(str) str = string.gsub(str, "([0-9%,%-%/]+)", function(num) return string.reverse(num) end) return str end local function indnum(str) str = string.gsub(str, "([0-9%,%-%/]+)", function(num) return string.reverse(num) end) for i = 1,#numbers do str = string.gsub(str, numbers[i].a, numbers[i].b) end return str end local function takeoutabjad(str) str = string.gsub(str, "(\\abjad.?)(%b{})", function(tag, body) body = string.sub(body, 2, -2) return string.format("%s", body) end) return str end local function takeoutcapetc(str) str = string.gsub(str, "(\\cap.?)(%b{})", function(tag, body) body = string.sub(body, 2, -2) return string.format("%s", body) end) str = string.gsub(str, "\\linebreak", "") return str end local function voc(str) str = string.gsub(str, "\\arb(%b{})", function(inside) inside = string.sub(inside, 2, -2) for i = 1,#hamza do inside = string.gsub(inside, hamza[i].a, hamza[i].b) end for i = 1,#tanwin do inside = string.gsub(inside, tanwin[i].a, tanwin[i].b) end for i = 1,#trigraphs do inside = string.gsub(inside, trigraphs[i].a, trigraphs[i].b) end for i = 1,#digraphs do inside = string.gsub(inside, digraphs[i].a, digraphs[i].b) end for i = 1,#single do inside = string.gsub(inside, single[i].a, single[i].b) end for i = 1,#longv do inside = string.gsub(inside, longv[i].a, longv[i].b) end for i = 1,#shortv do inside = string.gsub(inside, shortv[i].a, shortv[i].b) end for i = 1,#punctuation do inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) end for i = 1,#null do inside = string.gsub(inside, null[i].a, null[i].b) end inside = indnum(inside) return string.format("\\txarb{%s}", inside) end) return str end local function voceasy(str) str = string.gsub(str, "\\arb(%b{})", function(inside) inside = string.sub(inside, 2, -2) for i = 1,#hamzaeasy do inside = string.gsub(inside, hamzaeasy[i].a, hamzaeasy[i].b) end for i = 1,#tanwineasy do inside = string.gsub(inside, tanwineasy[i].a, tanwineasy[i].b) end for i = 1,#trigraphseasy do inside = string.gsub(inside, trigraphseasy[i].a, trigraphseasy[i].b) end for i = 1,#digraphs do inside = string.gsub(inside, digraphs[i].a, digraphs[i].b) end for i = 1,#single do inside = string.gsub(inside, single[i].a, single[i].b) end for i = 1,#longv do inside = string.gsub(inside, longv[i].a, longv[i].b) end for i = 1,#shortv do inside = string.gsub(inside, shortv[i].a, shortv[i].b) end for i = 1,#punctuation do inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) end for i = 1,#null do inside = string.gsub(inside, null[i].a, null[i].b) end inside = indnum(inside) return string.format("\\txarb{%s}", inside) end) return str end local function fullvoc(str) str = string.gsub(str, "\\arb(%b{})", function(inside) inside = string.sub(inside, 2, -2) for i = 1,#hamzafv do inside = string.gsub(inside, hamzafv[i].a, hamzafv[i].b) end for i = 1,#tanwinfv do inside = string.gsub(inside, tanwinfv[i].a, tanwinfv[i].b) end for i = 1,#trigraphsfv do inside = string.gsub(inside, trigraphsfv[i].a, trigraphsfv[i].b) end for i = 1,#digraphsfv do inside = string.gsub(inside, digraphsfv[i].a, digraphsfv[i].b) end for i = 1,#singlefv do inside = string.gsub(inside, singlefv[i].a, singlefv[i].b) end for i = 1,#longv do inside = string.gsub(inside, longv[i].a, longv[i].b) end for i = 1,#shortv do inside = string.gsub(inside, shortv[i].a, shortv[i].b) end for i = 1,#punctuation do inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) end for i = 1,#null do inside = string.gsub(inside, null[i].a, null[i].b) end inside = indnum(inside) return string.format("\\txarb{%s}", inside) end) return str end local function fullvoceasy(str) str = string.gsub(str, "\\arb(%b{})", function(inside) inside = string.sub(inside, 2, -2) for i = 1,#hamzafveasy do inside = string.gsub(inside, hamzafveasy[i].a, hamzafveasy[i].b) end for i = 1,#tanwinfveasy do inside = string.gsub(inside, tanwinfveasy[i].a, tanwinfveasy[i].b) end for i = 1,#trigraphsfveasy do inside = string.gsub(inside, trigraphsfveasy[i].a, trigraphsfveasy[i].b) end for i = 1,#digraphsfveasy do inside = string.gsub(inside, digraphsfveasy[i].a, digraphsfveasy[i].b) end for i = 1,#singlefveasy do inside = string.gsub(inside, singlefveasy[i].a, singlefveasy[i].b) end for i = 1,#longv do inside = string.gsub(inside, longv[i].a, longv[i].b) end for i = 1,#shortv do inside = string.gsub(inside, shortv[i].a, shortv[i].b) end for i = 1,#punctuation do inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) end for i = 1,#null do inside = string.gsub(inside, null[i].a, null[i].b) end inside = indnum(inside) return string.format("\\txarb{%s}", inside) end) return str end local function novoc(str) str = string.gsub(str, "\\arb(%b{})", function(inside) inside = string.sub(inside, 2, -2) for i = 1,#hamza do inside = string.gsub(inside, hamza[i].a, hamza[i].b) end for i = 1,#tanwinnv do inside = string.gsub(inside, tanwinnv[i].a, tanwinnv[i].b) end for i = 1,#trigraphsnv do inside = string.gsub(inside, trigraphsnv[i].a, trigraphsnv[i].b) end for i = 1,#digraphs do inside = string.gsub(inside, digraphs[i].a, digraphs[i].b) end for i = 1,#single do inside = string.gsub(inside, single[i].a, single[i].b) end for i = 1,#longvnv do inside = string.gsub(inside, longvnv[i].a, longvnv[i].b) end for i = 1,#shortvnv do inside = string.gsub(inside, shortvnv[i].a, shortvnv[i].b) end for i = 1,#punctuation do inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) end for i = 1,#null do inside = string.gsub(inside, null[i].a, null[i].b) end inside = indnum(inside) return string.format("\\txarb{%s}", inside) end) return str end local function novoceasy(str) str = string.gsub(str, "\\arb(%b{})", function(inside) inside = string.sub(inside, 2, -2) for i = 1,#hamzaeasy do inside = string.gsub(inside, hamzaeasy[i].a, hamzaeasy[i].b) end for i = 1,#tanwinnv do inside = string.gsub(inside, tanwinnv[i].a, tanwinnv[i].b) end for i = 1,#trigraphsnv do inside = string.gsub(inside, trigraphsnv[i].a, trigraphsnv[i].b) end for i = 1,#digraphs do inside = string.gsub(inside, digraphs[i].a, digraphs[i].b) end for i = 1,#single do inside = string.gsub(inside, single[i].a, single[i].b) end for i = 1,#longvnv do inside = string.gsub(inside, longvnv[i].a, longvnv[i].b) end for i = 1,#shortvnv do inside = string.gsub(inside, shortvnv[i].a, shortvnv[i].b) end for i = 1,#punctuation do inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) end for i = 1,#null do inside = string.gsub(inside, null[i].a, null[i].b) end inside = indnum(inside) return string.format("\\txarb{%s}", inside) end) return str end local function transdmg(str) str = string.gsub(str, "\\arb(%b{})", function(inside) inside = string.sub(inside, 2, -2) for i = 1,#hamzatrdmg do inside = string.gsub(inside, hamzatrdmg[i].a, hamzatrdmg[i].b) end for i = 1,#tanwintrdmg do inside = string.gsub(inside, tanwintrdmg[i].a, tanwintrdmg[i].b) end for i = 1,#trigraphstrdmg do inside = string.gsub(inside, trigraphstrdmg[i].a, trigraphstrdmg[i].b) end for i = 1,#digraphstrdmg do inside = string.gsub(inside, digraphstrdmg[i].a, digraphstrdmg[i].b) end for i = 1,#singletrdmg do inside = string.gsub(inside, singletrdmg[i].a, singletrdmg[i].b) end for i = 1,#longvtrdmg do inside = string.gsub(inside, longvtrdmg[i].a, longvtrdmg[i].b) end for i = 1,#shortvtrdmg do inside = string.gsub(inside, shortvtrdmg[i].a, shortvtrdmg[i].b) end for i = 1,#punctuationtr do inside = string.gsub(inside, punctuationtr[i].a, punctuationtr[i].b) end for i = 1,#nulltr do inside = string.gsub(inside, nulltr[i].a, nulltr[i].b) end return string.format("\\txtrans{%s}", inside) end) return str end local function transdmgeasy(str) str = string.gsub(str, "\\arb(%b{})", function(inside) inside = string.sub(inside, 2, -2) for i = 1,#hamzatrdmg do inside = string.gsub(inside, hamzatrdmg[i].a, hamzatrdmg[i].b) end for i = 1,#tanwintrdmg do inside = string.gsub(inside, tanwintrdmg[i].a, tanwintrdmg[i].b) end for i = 1,#trigraphstrdmgeasy do inside = string.gsub(inside, trigraphstrdmgeasy[i].a, trigraphstrdmgeasy[i].b) end for i = 1,#digraphstrdmg do inside = string.gsub(inside, digraphstrdmg[i].a, digraphstrdmg[i].b) end for i = 1,#singletrdmg do inside = string.gsub(inside, singletrdmg[i].a, singletrdmg[i].b) end for i = 1,#longvtrdmg do inside = string.gsub(inside, longvtrdmg[i].a, longvtrdmg[i].b) end for i = 1,#shortvtrdmg do inside = string.gsub(inside, shortvtrdmg[i].a, shortvtrdmg[i].b) end for i = 1,#punctuationtr do inside = string.gsub(inside, punctuationtr[i].a, punctuationtr[i].b) end for i = 1,#nulltr do inside = string.gsub(inside, nulltr[i].a, nulltr[i].b) end return string.format("\\txtrans{%s}", inside) end) return str end local function transloc(str) str = string.gsub(str, "\\arb(%b{})", function(inside) inside = string.sub(inside, 2, -2) for i = 1,#hamzatrloc do inside = string.gsub(inside, hamzatrloc[i].a, hamzatrloc[i].b) end for i = 1,#tanwintrloc do inside = string.gsub(inside, tanwintrloc[i].a, tanwintrloc[i].b) end for i = 1,#trigraphstrloc do inside = string.gsub(inside, trigraphstrloc[i].a, trigraphstrloc[i].b) end for i = 1,#digraphstrloc do inside = string.gsub(inside, digraphstrloc[i].a, digraphstrloc[i].b) end for i = 1,#singletrloc do inside = string.gsub(inside, singletrloc[i].a, singletrloc[i].b) end for i = 1,#longvtrloc do inside = string.gsub(inside, longvtrloc[i].a, longvtrloc[i].b) end for i = 1,#shortvtrloc do inside = string.gsub(inside, shortvtrloc[i].a, shortvtrloc[i].b) end for i = 1,#finaltrloc do inside = string.gsub(inside, finaltrloc[i].a, finaltrloc[i].b) end for i = 1,#punctuationtr do inside = string.gsub(inside, punctuationtr[i].a, punctuationtr[i].b) end for i = 1,#nulltr do inside = string.gsub(inside, nulltr[i].a, nulltr[i].b) end return string.format("\\txtrans{%s}", inside) end) return str end function processvoc(str, rules) str = "\\arb{".. str.."}" str = takeoutcapetc(str) str = protectarb(str) str = breakcmd(str) str = holdcmd(str) if rules == "easy" then str = voceasy(str) elseif rules == "dflt" then str = voc(str) else end str = unprotectarb(str) return str end function processfullvoc(str, rules) str = "\\arb{".. str.."}" str = takeoutcapetc(str) str = protectarb(str) str = breakcmd(str) str = holdcmd(str) if rules == "easy" then str = fullvoceasy(str) elseif rules == "dflt" then str = fullvoc(str) else end str = unprotectarb(str) return str end function processnovoc(str, rules)