Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
#!/usr/bin/env lua5.1 -- This file: (find-angg "LUA/texcatcodes.lua") -- See: (find-angg "LUA/oldglyphs.lua") -- (find-LATEXfile "2009unilog-dnc.tex" "\\usepackage{edrx08}") -- (find-angg "dednat4/examples/edrx08.sty" "glyphs") -- (find-LATEXgrep "grep --color -nH --null -e raw-text *.tex") -- (find-eevfile "eev-math-glyphs.el" "defun eev-math-glyphs-edrx") -- (find-TH "glyphs") -- http://angg.twu.net/glyphs.html -- (find-LATEX "istanbulglyphs.el") -- -- Most of my .tex files until 2014 were written in raw-text-unix with -- one-byte glyphs. This file implements SOME functions to convert -- files in that format to the new format with unibyte glyphs, but -- this is a mess! -- -- (find-LATEX "2009unilog-dnc.tex") -- (find-LATEXfile "2009unilog-dnc.tex" "\\usepackage{edrx08}") -- (find-angg "dednat4/examples/edrx08.sty" "glyphs") -- -- (defun e () (interactive) (find-fline "~/LUA/texcatcodes.lua")) -- -- (find-sh "./texcatcodes.lua arg1 arg2") -- -- «.getdef» (to "getdef") -- «.bslify» (to "bslify") -- «.Triples» (to "Triples") -- «.translation» (to "translation") -- «getdef» (to ".getdef") getdef = function (li) if not li:match"^\\catcode" then return end local c,def = li:match"\\def([^{}]+)(%b{})" if not c then return end return c, def:sub(2,-2) end getdefs = function (bigstr) local A = {} for li in bigstr:gmatch"([^\n]+)" do if getdef(li) then table.insert(A, {getdef(li)}) end end return A end gendefs = function (bigstr) return cow(function () for li in bigstr:gmatch"([^\n]+)" do if getdef(li) then coy(getdef(li)) end end end) end -- «bslify» (to ".bslify") -- backslashify bslify1 = function (c) return format("\\%d", string.byte(c, 1)) end bslify = function (str) return '"'..(str:gsub("[\1-\9\11-\31\127-\255]", bslify1))..'"' end string.bslify = bslify -- = bslify("\5") -- «Triples» (to ".Triples") -- (find-angg "LUA/lua50init.lua" "SetL") Triples = SetL.new() Triples.entry = function (def) if not Triples:has(def) then Triples:add(def, {}) end return Triples:val(def) end Triples.goodchars0 = function () local cs = Set.new() for k,v in Triples:gen() do if v.old and v.new then cs:add(v.old) end end return cs:ks() end Triples.goodchars = function () return table.concat(Triples.goodchars0()) end Triples.substs = function () local ss = {} for k,v in Triples:gen() do if v.old and v.new then ss[v.old] = v.new end end return ss end Triples.getdefault = function () -- (find-LATEX "edrxchars.tex") -- (find-angg "dednat4/examples/edrx08.sty") bigstrnew = ee_readfile "~/LATEX/edrxchars.tex" bigstrold = ee_readfile "~/dednat4/examples/edrx08.sty" for c,def in gendefs(bigstrold) do Triples.entry(def).old = c end for c,def in gendefs(bigstrnew) do Triples.entry(def).new = c end -- Triples.entry("\\pi").old = "\21" -- Triples.entry("\\epsilon").old = "\5" -- oldchars = Triples.goodchars() substs = Triples.substs() end Triples.subst = function (bigstr) return bigstr:gsub("["..oldchars.."]", substs) end --[[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "texcatcodes.lua" Triples.getdefault() = Triples:ksc(" ") = bslify(Triples:goodchars()) = bslify(oldchars) -- PPV(Triples.substs()) PPV(Triples:val("\\sigma")) PPV(Triples:val("\\pi")) PPV(Triples.entry("\\pi")) --]] Translate = Class { type = "Translate", __index = { translatables = function () end, nontranslatables = function () end, }, } sortchars = function (str) local cs = SetL.new() for c in str:gmatch(".") do cs:add(c) end return cs:ksc("") end non_translatable_chars_in = function (bigstr) local bigstr = bigstr:gsub("[^\1-\8\11-\31\127-\255]", "") -- del non-ascii local bigstr = bigstr:gsub("["..oldchars.."]", "") -- del translatables return sortchars(bigstr) end --[[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "texcatcodes.lua" = sortchars "Hello! Bye!" -- (find-angg "LATEX/2008hyp.tex") bigstr = ee_readfile "~/LATEX/2008hyp.tex" bigstr = ee_readfile "~/LATEX/2008notations.tex" = non_translatable_chars_in(bigstr) --]] -- «translation» (to ".translation") -- AB = {} BC = {} AC = {} badAs = SetL.new() goodAs = SetL.new() BC["\\varepsilon"] = "ε" BC["\\underline"] = "▁" oldchars = "\4\5\14\16\17\18\20\21\23\28\31\130\162\164\165\166\167\168\169\172".. "\173\174\175\179\180\183\184\197\198\203\204\206\207\208\209\215\216\219\221".. "\222\229\238\240\241\247\253\254" translation = { [ "\4"] = "δ", [ "\5"] = "ε", [ "\14"] = "σ", [ "\16"] = "⟧", [ "\17"] = "⟦", [ "\18"] = "ρ", [ "\20"] = "θ", [ "\21"] = "π", [ "\23"] = "⊓", [ "\28"] = "τ", [ "\31"] = "∨", ["\130"] = "∞", ["\162"] = "∘", ["\164"] = "⊗", ["\165"] = "⊕", ["\166"] = "𝐛", ["\167"] = "⊤", ["\168"] = "⠆", ["\169"] = "≥", ["\172"] = "¬", ["\173"] = "▁", ["\174"] = "⊥", ["\175"] = "𝐫", ["\179"] = "¹", ["\180"] = "∧", ["\183"] = "·", ["\184"] = "π", ["\197"] = "∫", ["\198"] = "Σ", ["\203"] = "𝐭", ["\204"] = "∩", ["\206"] = "∃", ["\207"] = "ω", ["\208"] = "𝐬", ["\209"] = "⅋", ["\215"] = "×", ["\216"] = "Ω", ["\219"] = "ν", ["\221"] = "∈", ["\222"] = "Θ", ["\229"] = "Π", ["\238"] = "♮", ["\240"] = "λ", ["\241"] = "◻", ["\247"] = "⊔", ["\253"] = "∀", ["\254"] = "∪" } translation["\182"] = "<<limp>>" translation["\182"] = "→" translation["\171"] = "«" translation["\187"] = "»" oldchars2 = table.concat(sorted(keys(translation)), "") --[[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "texcatcodes.lua" = oldchars = oldchars2 --]] -- Command-line arguments: a,b,c = ... if a == "-trans" then bigstrold = ee_readfile(b) bigstrnew, nc = bigstrold:gsub("["..oldchars.."]", translation) bigstrnew, nc = bigstrold:gsub("[\1-\8\11-\31\127-\255]", translation) bigstrnew2,nu = bigstrnew:gsub("raw%-text%-unix", "utf-8-unix") print(nc, nu) ee_writefile(c, bigstrnew2) end -- (find-fline "~/LATEX/2010kockdiff.tex") -- (find-sh "~/LUA/texcatcodes.lua -trans ~/LATEX/2010kockdiff.tex") -- (find-sh0 "~/LUA/texcatcodes.lua -trans ~/LATEX/2010kockdiff.tex > /tmp/o") -- (find-LATEXsh "~/LUA/texcatcodes.lua -trans 2010kockdiff.tex /tmp/foo") -- (find-fline "/tmp/foo") --[[ ;; (find-eevfile "eev-math-glyphs.el" "920") (find-einsert '(920 928 931 937 948 949 952 955 957 960 961 963 964 969 8868 8869 8743 8744 8835 8704 8707 9633 9744 8758 8712 9675 8745 8746 8747 8711 8734 8805 185 8851 8852 8523 8853 8855 8594 8888 9480 9838 9623 9629 8988 8989)) --]] --[[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "texcatcodes.lua" OldCatcode = Class { type = "OldCatcode", new = function (c, d) return OldCatcode {c=c, d=d} end, fromline = function (li) if not li:match"^\\catcode" then return end local c,def = li:match"\\def([^{}]+)(%b{})" if not c then return end return OldCatcode {c=c, d=def:sub(2,-2)} end, __index = { tolatex = function (occ) return format("\\catcode`%s=13 \\def%s{%s}", occ.c, occ.c, occ.d) end, }, } = OldCatcode.new("@", "At"):tolatex() --]] -- (find-es "lua5" "cow-and-coy") --[[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "texcatcodes.lua" bigstrnew = ee_readfile "~/LATEX/edrxchars.tex" bigstrold = ee_readfile "~/dednat4/examples/edrx08.sty" for c,def in gendefs(bigstrnew) do BC[def] = c end for c,def in gendefs(bigstrold) do local a = c if BC[def] then table.insert(AB, {a, BC[def]}) goodAs:add(a) AC[a] = BC[def] else badAs:add(a) print("No translation for "..bslify(a).." -> "..def) end end -- PPV(AB) -- PPV(badAs) = badAs:ksc(""):bslify() = goodAs:ksc(""):bslify() for c in goodAs:ksc(""):gmatch"." do printf(" [%6s] = \"%s\",\n", c:bslify(), AC[c]) end for c,def in gendefs(bigstrold) do print(c:bslify(), def) end PPV(AC) PPV(getdefs(bigstrnew)) PPV(getdefs(bigstrold)) for c,def in gendefs(bigstrold) do Triples.entry(def).old = c end for c,def in gendefs(bigstrnew) do Triples.entry(def).new = c end oldchars = Triples.goodchars() substs = Triples.substs() f = function (c) return format("\\%d", string.byte(c, 1)) end = oldchars:gsub(".", f) -- PPV(substs) -- _____ ___ ____ ___ -- |_ _/ _ \| _ \ / _ \ -- | || | | | | | | | | | -- | || |_| | |_| | |_| | -- |_| \___/|____/ \___/ -- Translations = SetL.new() -- (find-LATEXgrep "grep -niH -e kock *") -- (find-fline "~/LATEX/edrxchars.tex") -- (find-fline "~/dednat4/examples/") -- (find-fline "~/dednat4/examples/edrx08.sty") -- (find-sh0 "lua51 -e 'print(tonumber(\"2293\", 16))'") -- (find-sh0 "lua51 -e 'print(tonumber(\"214B\", 16))'") -- (insert 8523) = f("@") gcs = map(f, Triples.goodchars()) PPV(gcs) = table.concat(gcs) Triples.texs = function (f) local ks = Set.new() f = f or function (v) return true end for k,v in Triples:gen() do if f(v) then ks:add(k) end end return ks:ks() end PPV(map(f, Triples.goodchars())) PPV(table.concat(map(f, Triples.goodchars()))) = Triples.keys PPV(Triples.texs()) PPV(Triples.texs(function (v) return v.new end)) PPV(Triples.texs(function (v) return v.old end)) print("\64") --]]