用希腊字母替换 betababel-code

用希腊字母替换 betababel-code

多年来,我一直使用 betababel 包来输入希腊文。现在我改用 Lualatex,但该包似乎无法使用它,这很合理,因为你可以直接输入希腊文。有没有办法用“原始”希腊字母替换 tex 文件中的 betacode?例如:我想替换:

\bcode{lo/gos}

简单来说:

λόγος

对于所有其他字形也是如此。

以下示例显示 betababel 不起作用:

\documentclass[12pt]{scrbook}
\usepackage[polutonikogreek, ngerman]{babel}
\usepackage[ngerman]{betababel}
\usepackage{fontspec}
%\defaultfontfeatures{Ligatures=TeX}
%\newfontfeature{Microtype}{protrusion=default;expansion=default;}

\begin{document}
    \bcode{lo/gos}
\end{document}

答案1

这似乎效果不错

\documentclass{article}

\usepackage{fontspec}
\setmainfont{GFS Artemisia}

\usepackage{luacode} 

% Here we go: A new unicode \bcode command

\begin{luacode*}
    function betacode2utf(t)

        -- uppercase length 5
        t = string.gsub(t, [[%*%(/|A]], [[ᾍ]])
        t = string.gsub(t, [[%*%(/|a]], [[ᾍ]])
        t = string.gsub(t, [[%*%(/|H]], [[ᾝ]])
        t = string.gsub(t, [[%*%(/|h]], [[ᾝ]])
        t = string.gsub(t, [[%*%(/|W]], [[ᾭ]])
        t = string.gsub(t, [[%*%(/|w]], [[ᾭ]])
        t = string.gsub(t, [[%*%(=|A]], [[ᾏ]])
        t = string.gsub(t, [[%*%(=|a]], [[ᾏ]])
        t = string.gsub(t, [[%*%(=|H]], [[ᾟ]])
        t = string.gsub(t, [[%*%(=|h]], [[ᾟ]])
        t = string.gsub(t, [[%*%(=|W]], [[ᾯ]])
        t = string.gsub(t, [[%*%(=|w]], [[ᾯ]])
        t = string.gsub(t, [[%*%(\|A]], [[ᾋ]])
        t = string.gsub(t, [[%*%(\|a]], [[ᾋ]])
        t = string.gsub(t, [[%*%(\|H]], [[ᾛ]])
        t = string.gsub(t, [[%*%(\|h]], [[ᾛ]])
        t = string.gsub(t, [[%*%(\|W]], [[ᾫ]])
        t = string.gsub(t, [[%*%(\|w]], [[ᾫ]])
        t = string.gsub(t, [[%*%)/|A]], [[ᾌ]])
        t = string.gsub(t, [[%*%)/|a]], [[ᾌ]])
        t = string.gsub(t, [[%*%)/|H]], [[ᾜ]])
        t = string.gsub(t, [[%*%)/|h]], [[ᾜ]])
        t = string.gsub(t, [[%*%)/|W]], [[ᾬ]])
        t = string.gsub(t, [[%*%)/|w]], [[ᾬ]])
        t = string.gsub(t, [[%*%)=|A]], [[ᾎ]])
        t = string.gsub(t, [[%*%)=|a]], [[ᾎ]])
        t = string.gsub(t, [[%*%)=|H]], [[ᾞ]])
        t = string.gsub(t, [[%*%)=|h]], [[ᾞ]])
        t = string.gsub(t, [[%*%)=|W]], [[ᾮ]])
        t = string.gsub(t, [[%*%)=|w]], [[ᾮ]])

        -- uppercase length 4
        t = string.gsub(t, [[%*%(/A]], [[Ἅ]])
        t = string.gsub(t, [[%*%(/a]], [[Ἅ]])
        t = string.gsub(t, [[%*%(/E]], [[Ἕ]])
        t = string.gsub(t, [[%*%(/e]], [[Ἕ]])
        t = string.gsub(t, [[%*%(/H]], [[Ἥ]])
        t = string.gsub(t, [[%*%(/h]], [[Ἥ]])
        t = string.gsub(t, [[%*%(/I]], [[Ἵ]])
        t = string.gsub(t, [[%*%(/i]], [[Ἵ]])
        t = string.gsub(t, [[%*%(/O]], [[Ὅ]])
        t = string.gsub(t, [[%*%(/o]], [[Ὅ]])
        t = string.gsub(t, [[%*%(/U]], [[Ὕ]])
        t = string.gsub(t, [[%*%(/u]], [[Ὕ]])
        t = string.gsub(t, [[%*%(/W]], [[Ὥ]])
        t = string.gsub(t, [[%*%(/w]], [[Ὥ]])
        t = string.gsub(t, [[%*%(=A]], [[Ἇ]])
        t = string.gsub(t, [[%*%(=a]], [[Ἇ]])
        t = string.gsub(t, [[%*%(=H]], [[Ἧ]])
        t = string.gsub(t, [[%*%(=h]], [[Ἧ]])
        t = string.gsub(t, [[%*%(=I]], [[Ἷ]])
        t = string.gsub(t, [[%*%(=i]], [[Ἷ]])
        t = string.gsub(t, [[%*%(=U]], [[Ὗ]])
        t = string.gsub(t, [[%*%(=u]], [[Ὗ]])
        t = string.gsub(t, [[%*%(=W]], [[Ὧ]])
        t = string.gsub(t, [[%*%(=w]], [[Ὧ]])
        t = string.gsub(t, [[%*%(\A]], [[Ἃ]])
        t = string.gsub(t, [[%*%(\a]], [[Ἃ]])
        t = string.gsub(t, [[%*%(\E]], [[Ἓ]])
        t = string.gsub(t, [[%*%(\e]], [[Ἓ]])
        t = string.gsub(t, [[%*%(\H]], [[Ἣ]])
        t = string.gsub(t, [[%*%(\h]], [[Ἣ]])
        t = string.gsub(t, [[%*%(\I]], [[Ἳ]])
        t = string.gsub(t, [[%*%(\i]], [[Ἳ]])
        t = string.gsub(t, [[%*%(\O]], [[Ὃ]])
        t = string.gsub(t, [[%*%(\o]], [[Ὃ]])
        t = string.gsub(t, [[%*%(\U]], [[Ὓ]])
        t = string.gsub(t, [[%*%(\u]], [[Ὓ]])
        t = string.gsub(t, [[%*%(\W]], [[Ὣ]])
        t = string.gsub(t, [[%*%(\w]], [[Ὣ]])
        t = string.gsub(t, [[%*%(|A]], [[ᾉ]])
        t = string.gsub(t, [[%*%(|a]], [[ᾉ]])
        t = string.gsub(t, [[%*%(|H]], [[ᾙ]])
        t = string.gsub(t, [[%*%(|h]], [[ᾙ]])
        t = string.gsub(t, [[%*%(|W]], [[ᾩ]])
        t = string.gsub(t, [[%*%(|w]], [[ᾩ]])
        t = string.gsub(t, [[%*%)/A]], [[Ἄ]])
        t = string.gsub(t, [[%*%)/a]], [[Ἄ]])
        t = string.gsub(t, [[%*%)/E]], [[Ἔ]])
        t = string.gsub(t, [[%*%)/e]], [[Ἔ]])
        t = string.gsub(t, [[%*%)/H]], [[Ἤ]])
        t = string.gsub(t, [[%*%)/h]], [[Ἤ]])
        t = string.gsub(t, [[%*%)/I]], [[Ἴ]])
        t = string.gsub(t, [[%*%)/i]], [[Ἴ]])
        t = string.gsub(t, [[%*%)/O]], [[Ὄ]])
        t = string.gsub(t, [[%*%)/o]], [[Ὄ]])
        t = string.gsub(t, [[%*%)/W]], [[Ὤ]])
        t = string.gsub(t, [[%*%)/w]], [[Ὤ]])
        t = string.gsub(t, [[%*%)=A]], [[Ἆ]])
        t = string.gsub(t, [[%*%)=a]], [[Ἆ]])
        t = string.gsub(t, [[%*%)=H]], [[Ἦ]])
        t = string.gsub(t, [[%*%)=h]], [[Ἦ]])
        t = string.gsub(t, [[%*%)=I]], [[Ἶ]])
        t = string.gsub(t, [[%*%)=i]], [[Ἶ]])
        t = string.gsub(t, [[%*%)=W]], [[Ὦ]])
        t = string.gsub(t, [[%*%)=w]], [[Ὦ]])
        t = string.gsub(t, [[%*%)\E]], [[Ἒ]])
        t = string.gsub(t, [[%*%)\e]], [[Ἒ]])
        t = string.gsub(t, [[%*%)\I]], [[Ἲ]])
        t = string.gsub(t, [[%*%)\i]], [[Ἲ]])
        t = string.gsub(t, [[%*%)\O]], [[Ὂ]])
        t = string.gsub(t, [[%*%)\o]], [[Ὂ]])
        t = string.gsub(t, [[%*%)|A]], [[ᾈ]])
        t = string.gsub(t, [[%*%)|a]], [[ᾈ]])
        t = string.gsub(t, [[%*%)|H]], [[ᾘ]])
        t = string.gsub(t, [[%*%)|h]], [[ᾘ]])
        t = string.gsub(t, [[%*%)|W]], [[ᾨ]])
        t = string.gsub(t, [[%*%)|w]], [[ᾨ]])

        -- uppercase length 3
        t = string.gsub(t, [[%*%(A]], [[Ἁ]])
        t = string.gsub(t, [[%*%(a]], [[Ἁ]])
        t = string.gsub(t, [[%*%(E]], [[Ἑ]])
        t = string.gsub(t, [[%*%(e]], [[Ἑ]])
        t = string.gsub(t, [[%*%(H]], [[Ἡ]])
        t = string.gsub(t, [[%*%(h]], [[Ἡ]])
        t = string.gsub(t, [[%*%(I]], [[Ἱ]])
        t = string.gsub(t, [[%*%(i]], [[Ἱ]])
        t = string.gsub(t, [[%*%(O]], [[Ὁ]])
        t = string.gsub(t, [[%*%(o]], [[Ὁ]])
        t = string.gsub(t, [[%*%(U]], [[Ὑ]])
        t = string.gsub(t, [[%*%(u]], [[Ὑ]])
        t = string.gsub(t, [[%*%(W]], [[Ὡ]])
        t = string.gsub(t, [[%*%(w]], [[Ὡ]])
        t = string.gsub(t, [[%*%)A]], [[Ἀ]])
        t = string.gsub(t, [[%*%)a]], [[Ἀ]])
        t = string.gsub(t, [[%*%)E]], [[Ἐ]])
        t = string.gsub(t, [[%*%)e]], [[Ἐ]])
        t = string.gsub(t, [[%*%)H]], [[Ἠ]])
        t = string.gsub(t, [[%*%)h]], [[Ἠ]])
        t = string.gsub(t, [[%*%)I]], [[Ἰ]])
        t = string.gsub(t, [[%*%)i]], [[Ἰ]])
        t = string.gsub(t, [[%*%)O]], [[Ὀ]])
        t = string.gsub(t, [[%*%)o]], [[Ὀ]])
        t = string.gsub(t, [[%*%)W]], [[Ὠ]])
        t = string.gsub(t, [[%*%)w]], [[Ὠ]])
        t = string.gsub(t, [[%*%+I]], [[Ϊ]])
        t = string.gsub(t, [[%*%+i]], [[Ϊ]])
        t = string.gsub(t, [[%*%+U]], [[Ϋ]])
        t = string.gsub(t, [[%*%+u]], [[Ϋ]])
        t = string.gsub(t, [[%*/A]], [[Ά]])
        t = string.gsub(t, [[%*/a]], [[Ά]])
        t = string.gsub(t, [[%*/E]], [[Έ]])
        t = string.gsub(t, [[%*/e]], [[Έ]])
        t = string.gsub(t, [[%*/H]], [[Ή]])
        t = string.gsub(t, [[%*/h]], [[Ή]])
        t = string.gsub(t, [[%*/I]], [[Ί]])
        t = string.gsub(t, [[%*/i]], [[Ί]])
        t = string.gsub(t, [[%*/O]], [[Ό]])
        t = string.gsub(t, [[%*/o]], [[Ό]])
        t = string.gsub(t, [[%*/U]], [[Ύ]])
        t = string.gsub(t, [[%*/u]], [[Ύ]])
        t = string.gsub(t, [[%*/W]], [[Ώ]])
        t = string.gsub(t, [[%*/w]], [[Ώ]])
        t = string.gsub(t, [[%*\A]], [[Ὰ]])
        t = string.gsub(t, [[%*\a]], [[Ὰ]])
        t = string.gsub(t, [[%*\E]], [[Ὲ]])
        t = string.gsub(t, [[%*\e]], [[Ὲ]])
        t = string.gsub(t, [[%*\H]], [[Ὴ]])
        t = string.gsub(t, [[%*\h]], [[Ὴ]])
        t = string.gsub(t, [[%*\I]], [[Ὶ]])
        t = string.gsub(t, [[%*\i]], [[Ὶ]])
        t = string.gsub(t, [[%*\O]], [[Ὸ]])
        t = string.gsub(t, [[%*\o]], [[Ὸ]])
        t = string.gsub(t, [[%*\U]], [[Ὺ]])
        t = string.gsub(t, [[%*\u]], [[Ὺ]])
        t = string.gsub(t, [[%*\W]], [[Ὼ]])
        t = string.gsub(t, [[%*\w]], [[Ὼ]])
        t = string.gsub(t, [[%*S1]], [[Σ]])
        t = string.gsub(t, [[%*s1]], [[Σ]])
        t = string.gsub(t, [[%*S2]], [[Σ]])
        t = string.gsub(t, [[%*s2]], [[Σ]])
        t = string.gsub(t, [[%*S3]], [[Ϲ]])
        t = string.gsub(t, [[%*s3]], [[Ϲ]])
        t = string.gsub(t, [[%*|A]], [[ᾼ]])
        t = string.gsub(t, [[%*|a]], [[ᾼ]])
        t = string.gsub(t, [[%*|H]], [[ῌ]])
        t = string.gsub(t, [[%*|h]], [[ῌ]])
        t = string.gsub(t, [[%*|W]], [[ῼ]])
        t = string.gsub(t, [[%*|w]], [[ῼ]])

        -- uppercase length 2
        t = string.gsub(t, [[%*A]], [[Α]])
        t = string.gsub(t, [[%*a]], [[Α]])
        t = string.gsub(t, [[%*B]], [[Β]])
        t = string.gsub(t, [[%*b]], [[Β]])
        t = string.gsub(t, [[%*C]], [[Ξ]])
        t = string.gsub(t, [[%*c]], [[Ξ]])
        t = string.gsub(t, [[%*D]], [[Δ]])
        t = string.gsub(t, [[%*d]], [[Δ]])
        t = string.gsub(t, [[%*E]], [[Ε]])
        t = string.gsub(t, [[%*e]], [[Ε]])
        t = string.gsub(t, [[%*F]], [[Φ]])
        t = string.gsub(t, [[%*f]], [[Φ]])
        t = string.gsub(t, [[%*G]], [[Γ]])
        t = string.gsub(t, [[%*g]], [[Γ]])
        t = string.gsub(t, [[%*H]], [[Η]])
        t = string.gsub(t, [[%*h]], [[Η]])
        t = string.gsub(t, [[%*I]], [[Ι]])
        t = string.gsub(t, [[%*i]], [[Ι]])
        t = string.gsub(t, [[%*J]], [[Σ]])
        t = string.gsub(t, [[%*j]], [[Σ]])
        t = string.gsub(t, [[%*K]], [[Κ]])
        t = string.gsub(t, [[%*k]], [[Κ]])
        t = string.gsub(t, [[%*L]], [[Λ]])
        t = string.gsub(t, [[%*l]], [[Λ]])
        t = string.gsub(t, [[%*M]], [[Μ]])
        t = string.gsub(t, [[%*m]], [[Μ]])
        t = string.gsub(t, [[%*N]], [[Ν]])
        t = string.gsub(t, [[%*n]], [[Ν]])
        t = string.gsub(t, [[%*O]], [[Ο]])
        t = string.gsub(t, [[%*o]], [[Ο]])
        t = string.gsub(t, [[%*P]], [[Π]])
        t = string.gsub(t, [[%*p]], [[Π]])
        t = string.gsub(t, [[%*Q]], [[Θ]])
        t = string.gsub(t, [[%*q]], [[Θ]])
        t = string.gsub(t, [[%*R]], [[Ρ]])
        t = string.gsub(t, [[%*r]], [[Ρ]])
        t = string.gsub(t, [[%*S]], [[Σ]])
        t = string.gsub(t, [[%*s]], [[Σ]])
        t = string.gsub(t, [[%*T]], [[Τ]])
        t = string.gsub(t, [[%*t]], [[Τ]])
        t = string.gsub(t, [[%*U]], [[Υ]])
        t = string.gsub(t, [[%*u]], [[Υ]])
        t = string.gsub(t, [[%*W]], [[Ω]])
        t = string.gsub(t, [[%*w]], [[Ω]])
        t = string.gsub(t, [[%*X]], [[Χ]])
        t = string.gsub(t, [[%*x]], [[Χ]])
        t = string.gsub(t, [[%*Y]], [[Ψ]])
        t = string.gsub(t, [[%*y]], [[Ψ]])
        t = string.gsub(t, [[%*Z]], [[Ζ]])
        t = string.gsub(t, [[%*z]], [[Ζ]])

        -- lowercase length 4
        t = string.gsub(t, [[A%(/|]], [[ᾅ]])
        t = string.gsub(t, [[a%(/|]], [[ᾅ]])
        t = string.gsub(t, [[A%(=|]], [[ᾇ]])
        t = string.gsub(t, [[a%(=|]], [[ᾇ]])
        t = string.gsub(t, [[A%(=]], [[ἇ]])
        t = string.gsub(t, [[a%(=]], [[ἇ]])
        t = string.gsub(t, [[A%(\|]], [[ᾃ]])
        t = string.gsub(t, [[A%)/|]], [[ᾄ]])
        t = string.gsub(t, [[a%)/|]], [[ᾄ]])
        t = string.gsub(t, [[A%)=|]], [[ᾆ]])
        t = string.gsub(t, [[a%)=|]], [[ᾆ]])
        t = string.gsub(t, [[H%(/|]], [[ᾕ]])
        t = string.gsub(t, [[h%(/|]], [[ᾕ]])
        t = string.gsub(t, [[H%(=|]], [[ᾗ]])
        t = string.gsub(t, [[h%(=|]], [[ᾗ]])
        t = string.gsub(t, [[H%(=]], [[ἧ]])
        t = string.gsub(t, [[h%(=]], [[ἧ]])
        t = string.gsub(t, [[H%(\|]], [[ᾓ]])
        t = string.gsub(t, [[h%(\|]], [[ᾓ]])
        t = string.gsub(t, [[H%)/|]], [[ᾔ]])
        t = string.gsub(t, [[h%)/|]], [[ᾔ]])
        t = string.gsub(t, [[H%)=|]], [[ᾖ]])
        t = string.gsub(t, [[h%)=|]], [[ᾖ]])
        t = string.gsub(t, [[W%(/|]], [[ᾥ]])
        t = string.gsub(t, [[w%(/|]], [[ᾥ]])
        t = string.gsub(t, [[W%(=|]], [[ᾧ]])
        t = string.gsub(t, [[w%(=|]], [[ᾧ]])
        t = string.gsub(t, [[W%(=]], [[ὧ]])
        t = string.gsub(t, [[w%(=]], [[ὧ]])
        t = string.gsub(t, [[W%(\|]], [[ᾣ]])
        t = string.gsub(t, [[w%(\|]], [[ᾣ]])
        t = string.gsub(t, [[W%)/|]], [[ᾤ]])
        t = string.gsub(t, [[w%)/|]], [[ᾤ]])
        t = string.gsub(t, [[W%)=|]], [[ᾦ]])
        t = string.gsub(t, [[w%)=|]], [[ᾦ]])

        -- lowercase length 3
        t = string.gsub(t, [[A%(/]], [[ἅ]])
        t = string.gsub(t, [[a%(/]], [[ἅ]])
        t = string.gsub(t, [[A%(\]], [[ἃ]])
        t = string.gsub(t, [[a%(\]], [[ἃ]])
        t = string.gsub(t, [[A%(|]], [[ᾁ]])
        t = string.gsub(t, [[a%(|]], [[ᾁ]])
        t = string.gsub(t, [[A%)/]], [[ἄ]])
        t = string.gsub(t, [[a%)/]], [[ἄ]])
        t = string.gsub(t, [[A%)=]], [[ἆ]])
        t = string.gsub(t, [[a%)=]], [[ἆ]])
        t = string.gsub(t, [[A%)\]], [[ἂ]])
        t = string.gsub(t, [[a%)\]], [[ἂ]])
        t = string.gsub(t, [[A%)|]], [[ᾀ]])
        t = string.gsub(t, [[a%)|]], [[ᾀ]])
        t = string.gsub(t, [[A/|]], [[ᾴ]])
        t = string.gsub(t, [[a/|]], [[ᾴ]])
        t = string.gsub(t, [[A=|]], [[ᾷ]])
        t = string.gsub(t, [[a=|]], [[ᾷ]])
        t = string.gsub(t, [[A\|]], [[ᾲ]])
        t = string.gsub(t, [[a\|]], [[ᾲ]])
        t = string.gsub(t, [[E%(/]], [[ἕ]])
        t = string.gsub(t, [[e%(/]], [[ἕ]])
        t = string.gsub(t, [[E%(\]], [[ἓ]])
        t = string.gsub(t, [[e%(\]], [[ἓ]])
        t = string.gsub(t, [[E%)/]], [[ἔ]])
        t = string.gsub(t, [[e%)/]], [[ἔ]])
        t = string.gsub(t, [[E%)\]], [[ἒ]])
        t = string.gsub(t, [[e%)\]], [[ἒ]])
        t = string.gsub(t, [[H%(/]], [[ἥ]])
        t = string.gsub(t, [[h%(/]], [[ἥ]])
        t = string.gsub(t, [[H%(\]], [[ἣ]])
        t = string.gsub(t, [[h%(\]], [[ἣ]])
        t = string.gsub(t, [[H%(|]], [[ᾑ]])
        t = string.gsub(t, [[h%(|]], [[ᾑ]])
        t = string.gsub(t, [[H%)/]], [[ἤ]])
        t = string.gsub(t, [[h%)/]], [[ἤ]])
        t = string.gsub(t, [[H%)=]], [[ἦ]])
        t = string.gsub(t, [[h%)=]], [[ἦ]])
        t = string.gsub(t, [[H%)|]], [[ᾐ]])
        t = string.gsub(t, [[h%)|]], [[ᾐ]])
        t = string.gsub(t, [[H/|]], [[ῄ]])
        t = string.gsub(t, [[h/|]], [[ῄ]])
        t = string.gsub(t, [[H=|]], [[ῇ]])
        t = string.gsub(t, [[h=|]], [[ῇ]])
        t = string.gsub(t, [[H\|]], [[ῂ]])
        t = string.gsub(t, [[h\|]], [[ῂ]])
        t = string.gsub(t, [[I%(/]], [[ἵ]])
        t = string.gsub(t, [[i%(/]], [[ἵ]])
        t = string.gsub(t, [[I%(=]], [[ἷ]])
        t = string.gsub(t, [[i%(=]], [[ἷ]])
        t = string.gsub(t, [[I%(\]], [[ἳ]])
        t = string.gsub(t, [[i%(\]], [[ἳ]])
        t = string.gsub(t, [[I%)/]], [[ἴ]])
        t = string.gsub(t, [[i%)/]], [[ἴ]])
        t = string.gsub(t, [[I%)=]], [[ἶ]])
        t = string.gsub(t, [[i%)=]], [[ἶ]])
        t = string.gsub(t, [[I%)\]], [[ἲ]])
        t = string.gsub(t, [[i%)\]], [[ἲ]])
        t = string.gsub(t, [[O%(/]], [[ὅ]])
        t = string.gsub(t, [[o%(/]], [[ὅ]])
        t = string.gsub(t, [[O%(\]], [[ὃ]])
        t = string.gsub(t, [[o%(\]], [[ὃ]])
        t = string.gsub(t, [[O%)/]], [[ὄ]])
        t = string.gsub(t, [[o%)/]], [[ὄ]])
        t = string.gsub(t, [[O%)\]], [[ὂ]])
        t = string.gsub(t, [[o%)\]], [[ὂ]])
        t = string.gsub(t, [[U%(/]], [[ὕ]])
        t = string.gsub(t, [[u%(/]], [[ὕ]])
        t = string.gsub(t, [[U%(=]], [[ὗ]])
        t = string.gsub(t, [[u%(=]], [[ὗ]])
        t = string.gsub(t, [[U%(\]], [[ὓ]])
        t = string.gsub(t, [[u%(\]], [[ὓ]])
        t = string.gsub(t, [[U%)/]], [[ὔ]])
        t = string.gsub(t, [[u%)/]], [[ὔ]])
        t = string.gsub(t, [[U%)=]], [[ὖ]])
        t = string.gsub(t, [[u%)=]], [[ὖ]])
        t = string.gsub(t, [[U%)\]], [[ὒ]])
        t = string.gsub(t, [[u%)\]], [[ὒ]])
        t = string.gsub(t, [[W%(/]], [[ὥ]])
        t = string.gsub(t, [[w%(/]], [[ὥ]])
        t = string.gsub(t, [[W%(\]], [[ὣ]])
        t = string.gsub(t, [[w%(\]], [[ὣ]])
        t = string.gsub(t, [[W%(|]], [[ᾡ]])
        t = string.gsub(t, [[w%(|]], [[ᾡ]])
        t = string.gsub(t, [[W%)/]], [[ὤ]])
        t = string.gsub(t, [[w%)/]], [[ὤ]])
        t = string.gsub(t, [[W%)=]], [[ὦ]])
        t = string.gsub(t, [[w%)=]], [[ὦ]])
        t = string.gsub(t, [[W%)|]], [[ᾠ]])
        t = string.gsub(t, [[w%)|]], [[ᾠ]])
        t = string.gsub(t, [[W/|]], [[ῴ]])
        t = string.gsub(t, [[w/|]], [[ῴ]])
        t = string.gsub(t, [[W=|]], [[ῷ]])
        t = string.gsub(t, [[w=|]], [[ῷ]])
        t = string.gsub(t, [[W\|]], [[ῲ]])
        t = string.gsub(t, [[w\|]], [[ῲ]])

        -- lowercase length 2
        t = string.gsub(t, [[A%(]], [[ἁ]])
        t = string.gsub(t, [[a%(]], [[ἁ]])
        t = string.gsub(t, [[A%)]], [[ἀ]])
        t = string.gsub(t, [[a%)]], [[ἀ]])
        t = string.gsub(t, [[A/]], [[ά]])
        t = string.gsub(t, [[a/]], [[ά]])
        t = string.gsub(t, [[A=]], [[ᾶ]])
        t = string.gsub(t, [[a=]], [[ᾶ]])
        t = string.gsub(t, [[A\]], [[ὰ]])
        t = string.gsub(t, [[a\]], [[ὰ]])
        t = string.gsub(t, [[A|]], [[ᾳ]])
        t = string.gsub(t, [[a|]], [[ᾳ]])
        t = string.gsub(t, [[E%(]], [[ἑ]])
        t = string.gsub(t, [[e%(]], [[ἑ]])
        t = string.gsub(t, [[E%)]], [[ἐ]])
        t = string.gsub(t, [[e%)]], [[ἐ]])
        t = string.gsub(t, [[E/]], [[έ]])
        t = string.gsub(t, [[e/]], [[έ]])
        t = string.gsub(t, [[E\]], [[ὲ]])
        t = string.gsub(t, [[e\]], [[ὲ]])
        t = string.gsub(t, [[H%(]], [[ἡ]])
        t = string.gsub(t, [[h%(]], [[ἡ]])
        t = string.gsub(t, [[H%)]], [[ἠ]])
        t = string.gsub(t, [[h%)]], [[ἠ]])
        t = string.gsub(t, [[H/]], [[ή]])
        t = string.gsub(t, [[h/]], [[ή]])
        t = string.gsub(t, [[H=]], [[ῆ]])
        t = string.gsub(t, [[h=]], [[ῆ]])
        t = string.gsub(t, [[H\]], [[ὴ]])
        t = string.gsub(t, [[h\]], [[ὴ]])
        t = string.gsub(t, [[H|]], [[ῃ]])
        t = string.gsub(t, [[h|]], [[ῃ]])
        t = string.gsub(t, [[I%(]], [[ἱ]])
        t = string.gsub(t, [[i%(]], [[ἱ]])
        t = string.gsub(t, [[I%)]], [[ἰ]])
        t = string.gsub(t, [[i%)]], [[ἰ]])
        t = string.gsub(t, [[I/]], [[ί]])
        t = string.gsub(t, [[i/]], [[ί]])
        t = string.gsub(t, [[I=]], [[ῖ]])
        t = string.gsub(t, [[i=]], [[ῖ]])
        t = string.gsub(t, [[I\]], [[ὶ]])
        t = string.gsub(t, [[i\]], [[ὶ]])
        t = string.gsub(t, [[O%(]], [[ὁ]])
        t = string.gsub(t, [[o%(]], [[ὁ]])
        t = string.gsub(t, [[O%)]], [[ὀ]])
        t = string.gsub(t, [[o%)]], [[ὀ]])
        t = string.gsub(t, [[O/]], [[ό]])
        t = string.gsub(t, [[o/]], [[ό]])
        t = string.gsub(t, [[O\]], [[ὸ]])
        t = string.gsub(t, [[o\]], [[ὸ]])
        t = string.gsub(t, [[S1]], [[σ]])
        t = string.gsub(t, [[s1]], [[σ]])
        t = string.gsub(t, [[S2]], [[ς]])
        t = string.gsub(t, [[s2]], [[ς]])
        t = string.gsub(t, [[S3]], [[ϲ]])
        t = string.gsub(t, [[s3]], [[ϲ]])
        t = string.gsub(t, [[U%(]], [[ὑ]])
        t = string.gsub(t, [[u%(]], [[ὑ]])
        t = string.gsub(t, [[U%)]], [[ὐ]])
        t = string.gsub(t, [[u%)]], [[ὐ]])
        t = string.gsub(t, [[U/]], [[ύ]])
        t = string.gsub(t, [[u/]], [[ύ]])
        t = string.gsub(t, [[U=]], [[ῦ]])
        t = string.gsub(t, [[u=]], [[ῦ]])
        t = string.gsub(t, [[U\]], [[ὺ]])
        t = string.gsub(t, [[u\]], [[ὺ]])
        t = string.gsub(t, [[W%(]], [[ὡ]])
        t = string.gsub(t, [[w%(]], [[ὡ]])
        t = string.gsub(t, [[W%)]], [[ὠ]])
        t = string.gsub(t, [[w%)]], [[ὠ]])
        t = string.gsub(t, [[W/]], [[ώ]])
        t = string.gsub(t, [[w/]], [[ώ]])
        t = string.gsub(t, [[W=]], [[ῶ]])
        t = string.gsub(t, [[w=]], [[ῶ]])
        t = string.gsub(t, [[W\]], [[ὼ]])
        t = string.gsub(t, [[w\]], [[ὼ]])
        t = string.gsub(t, [[W|]], [[ῳ]])
        t = string.gsub(t, [[w|]], [[ῳ]])

        -- lowercase length 1
        t = string.gsub(t, [[A]], [[α]])
        t = string.gsub(t, [[a]], [[α]])
        t = string.gsub(t, [[B]], [[β]])
        t = string.gsub(t, [[b]], [[β]])
        t = string.gsub(t, [[C]], [[ξ]])
        t = string.gsub(t, [[c]], [[ξ]])
        t = string.gsub(t, [[D]], [[δ]])
        t = string.gsub(t, [[d]], [[δ]])
        t = string.gsub(t, [[E]], [[ε]])
        t = string.gsub(t, [[e]], [[ε]])
        t = string.gsub(t, [[F]], [[φ]])
        t = string.gsub(t, [[f]], [[φ]])
        t = string.gsub(t, [[G]], [[γ]])
        t = string.gsub(t, [[g]], [[γ]])
        t = string.gsub(t, [[H]], [[η]])
        t = string.gsub(t, [[h]], [[η]])
        t = string.gsub(t, [[I]], [[ι]])
        t = string.gsub(t, [[i]], [[ι]])
        t = string.gsub(t, [[J]], [[ς]])
        t = string.gsub(t, [[j]], [[ς]])
        t = string.gsub(t, [[K]], [[κ]])
        t = string.gsub(t, [[k]], [[κ]])
        t = string.gsub(t, [[L]], [[λ]])
        t = string.gsub(t, [[l]], [[λ]])
        t = string.gsub(t, [[M]], [[μ]])
        t = string.gsub(t, [[m]], [[μ]])
        t = string.gsub(t, [[N]], [[ν]])
        t = string.gsub(t, [[n]], [[ν]])
        t = string.gsub(t, [[O]], [[ο]])
        t = string.gsub(t, [[o]], [[ο]])
        t = string.gsub(t, [[P]], [[π]])
        t = string.gsub(t, [[p]], [[π]])
        t = string.gsub(t, [[Q]], [[θ]])
        t = string.gsub(t, [[q]], [[θ]])
        t = string.gsub(t, [[R]], [[ρ]])
        t = string.gsub(t, [[r]], [[ρ]])
        t = string.gsub(t, [[S]], [[σ]])
        t = string.gsub(t, [[s]], [[σ]])
        t = string.gsub(t, [[T]], [[τ]])
        t = string.gsub(t, [[t]], [[τ]])
        t = string.gsub(t, [[U]], [[υ]])
        t = string.gsub(t, [[u]], [[υ]])
        t = string.gsub(t, [[W]], [[ω]])
        t = string.gsub(t, [[w]], [[ω]])
        t = string.gsub(t, [[X]], [[χ]])
        t = string.gsub(t, [[x]], [[χ]])
        t = string.gsub(t, [[Y]], [[ψ]])
        t = string.gsub(t, [[y]], [[ψ]])
        t = string.gsub(t, [[Z]], [[ζ]])
        t = string.gsub(t, [[z]], [[ζ]])

        t = string.gsub(t, [[%(]], [[ʽ]])
        t = string.gsub(t, [[%)]], [[ʼ]])
        t = string.gsub(t, [[/]], [[́]])
        t = string.gsub(t, [[:]], [[·]])
        t = string.gsub(t, [[=]], [[͂]])
        t = string.gsub(t, [[_]], [[—]])
        t = string.gsub(t, [[\]], [[`]])

        -- sigma specials
        t = string.gsub(t, [[σ$]], [[ς]])
        t = string.gsub(t, [[(σ)(%s)]], [[ς%2]])
        t = string.gsub(t, [[(σ)(%p)]], [[ς%2]])
        t = string.gsub(t, [[(σ)(·)]], [[ς%2]])
        t = string.gsub(t, [[(σ)(—)]], [[ς%2]])

        tex.print(t)
    end
\end{luacode*}

\begingroup
\catcode`\$0
$catcode`$\12
$catcode`$_12
$makeatletter
$gdef$bcode{$begingroup $catcode`$\12 $catcode`$_12 $bcode@i}
$gdef$bcode@i#1{%
    $endgroup
    $directlua{betacode2utf([[#1]])}
}
$endgroup

\begin{document}

Something short: \bcode{lo/gos, ei)=dos. ei)=dos; ei)=dos: lo/gos}

Something longer:
\bcode{
    kate/bhn xqe\s ei)s *peiraia= meta\ *glau/kwnos tou= *)ari/stwnos proseuco/meno/s te th=| qew=| kai\ a(/ma th\n e(orth\n boulo/menos qea/sasqai ti/na tro/pon poih/sousin a(/te nu=n prw=ton a)/gontes. kalh\ me\n ou)=n moi kai\ h( tw=n e)pixwri/wn pomph\ e)/docen ei)=nai, ou) me/ntoi h(=tton e)fai/neto pre/pein h(\n oi( *qra=|kes e)/pempon. proseuca/menoi de\ kai\ qewrh/santes a)ph=|men pro\s to\ a)/stu. katidw\n ou)=n po/rrwqen h(ma=s oi)/kade w(rmhme/nous *pole/marxos o( *kefa/lou e)ke/leuse dramo/nta to\n pai=da perimei=nai/ e( keleu=sai. kai/ mou o)/pisqen o( pai=s labo/menos tou= i(mati/ou, keleu/ei u(ma=s, e)/fh, *pole/marxos perimei=nai. kai\ e)gw\ metestra/fhn te kai\ h)ro/mhn o(/pou au)to\s ei)/h. ou(=tos, e)/fh, o)/pisqen prose/rxetai: a)lla\ perime/nete. a)lla\ perimenou=men, h)= d' o(\s o( *glau/kwn.
}
\end{document}

在此处输入图片描述

答案2

jtauber-script 在使用 python 2 进行一些修改后可以运行。

# beta2unicode.py
#
# Version 2004-11-23
#
# James Tauber
# http://jtauber.com/
#
# You are free to redistribute this, but please inform me of any errors
#
# USAGE:
#
# trie = beta2unicodeTrie()
# beta = "LO/GOS\n";
# unicode, remainder = trie.convert(beta)
#
# - to get final sigma, string must end in \n
# - remainder will contain rest of beta if not all can be converted

class Trie:
    def __init__(self):
        self.root = [None, {}]

    def add(self, key, value):
        curr_node = self.root
        for ch in key:
            curr_node = curr_node[1].setdefault(ch, [None, {}])
        curr_node[0] = value

    def find(self, key):
        curr_node = self.root
        for ch in key:
            try:
                curr_node = curr_node[1][ch]
            except KeyError:
                return None
        return curr_node[0]

    def findp(self, key):
        curr_node = self.root
        remainder = key
        for ch in key:
            try:
                curr_node = curr_node[1][ch]
            except KeyError:
                return (curr_node[0], remainder)
            remainder = remainder[1:]
        return (curr_node[0], remainder)

    def convert(self, keystring):
        valuestring = ""
        key = keystring
        while key:
            value, key = self.findp(key)
            if not value:
                return (valuestring, key)
            valuestring += value
        return (valuestring, key)

def beta2unicodeTrie():
    t = Trie()

    t.add("*A",      u"\u0391")
    t.add("*B",      u"\u0392")
    t.add("*G",      u"\u0393")
    t.add("*D",      u"\u0394")
    t.add("*E",      u"\u0395")
    t.add("*Z",      u"\u0396")
    t.add("*H",      u"\u0397")
    t.add("*Q",      u"\u0398")
    t.add("*I",      u"\u0399")
    t.add("*K",      u"\u039A")
    t.add("*L",      u"\u039B")
    t.add("*M",      u"\u039C")
    t.add("*N",      u"\u039D")
    t.add("*C",      u"\u039E")
    t.add("*O",      u"\u039F")
    t.add("*P",      u"\u03A0")
    t.add("*R",      u"\u03A1")
    t.add("*S",      u"\u03A3")
    t.add("*T",      u"\u03A4")
    t.add("*U",      u"\u03A5")
    t.add("*F",      u"\u03A6")
    t.add("*X",      u"\u03A7")
    t.add("*Y",      u"\u03A8")
    t.add("*W",      u"\u03A9")

    t.add("A",      u"\u03B1")
    t.add("B",      u"\u03B2")
    t.add("G",      u"\u03B3")
    t.add("D",      u"\u03B4")
    t.add("E",      u"\u03B5")
    t.add("Z",      u"\u03B6")
    t.add("H",      u"\u03B7")
    t.add("Q",      u"\u03B8")
    t.add("I",      u"\u03B9")
    t.add("K",      u"\u03BA")
    t.add("L",      u"\u03BB")
    t.add("M",      u"\u03BC")
    t.add("N",      u"\u03BD")
    t.add("C",      u"\u03BE")
    t.add("O",      u"\u03BF")
    t.add("P",      u"\u03C0")
    t.add("R",      u"\u03C1")

    t.add("S\n",    u"\u03C2")
    t.add("S,",     u"\u03C2,")
    t.add("S.",     u"\u03C2.")
    t.add("S:",     u"\u03C2:")
    t.add("S}",     u"\u03C2:")
    t.add("S;",     u"\u03C2;")
    t.add("S]",     u"\u03C2]")
    t.add("S@",     u"\u03C2@")
    t.add("S_",     u"\u03C2_")
    t.add("S",      u"\u03C3")

    t.add("T",      u"\u03C4")
    t.add("U",      u"\u03C5")
    t.add("F",      u"\u03C6")
    t.add("X",      u"\u03C7")
    t.add("Y",      u"\u03C8")
    t.add("W",      u"\u03C9")

    t.add("I+",     U"\u03CA")
    t.add("U+",     U"\u03CB")

    t.add("A)",     u"\u1F00")
    t.add("A(",     u"\u1F01")
    t.add("A)\\",   u"\u1F02")
    t.add("A(\\",   u"\u1F03")
    t.add("A)!",    u"\u1F02")
    t.add("A(!",    u"\u1F03")
    t.add("A)/",    u"\u1F04")
    t.add("A(/",    u"\u1F05")
    t.add("E)",     u"\u1F10")
    t.add("E(",     u"\u1F11")
    t.add("E)\\",   u"\u1F12")
    t.add("E(\\",   u"\u1F13")
    t.add("E)!",    u"\u1F12")
    t.add("E(!",    u"\u1F13")
    t.add("E)/",    u"\u1F14")
    t.add("E(/",    u"\u1F15")
    t.add("H)",     u"\u1F20")
    t.add("H(",     u"\u1F21")
    t.add("H)\\",   u"\u1F22")
    t.add("H(\\",   u"\u1F23")
    t.add("H)!",    u"\u1F22")
    t.add("H(!",    u"\u1F23")
    t.add("H)/",    u"\u1F24")
    t.add("H(/",    u"\u1F25")
    t.add("I)",     u"\u1F30")
    t.add("I(",     u"\u1F31")
    t.add("I)\\",   u"\u1F32")
    t.add("I(\\",   u"\u1F33")
    t.add("I)!",    u"\u1F32")
    t.add("I(!",    u"\u1F33")
    t.add("I)/",    u"\u1F34")
    t.add("I(/",    u"\u1F35")
    t.add("O)",     u"\u1F40")
    t.add("O(",     u"\u1F41")
    t.add("O)\\",   u"\u1F42")
    t.add("O(\\",   u"\u1F43")
    t.add("O)!",    u"\u1F42")
    t.add("O(!",    u"\u1F43")
    t.add("O)/",    u"\u1F44")
    t.add("O(/",    u"\u1F45")
    t.add("U)",     u"\u1F50")
    t.add("U(",     u"\u1F51")
    t.add("U)\\",   u"\u1F52")
    t.add("U(\\",   u"\u1F53")
    t.add("U)!",    u"\u1F52")
    t.add("U(!",    u"\u1F53")
    t.add("U)/",    u"\u1F54")
    t.add("U(/",    u"\u1F55")
    t.add("W)",     u"\u1F60")
    t.add("W(",     u"\u1F61")
    t.add("W)\\",   u"\u1F62")
    t.add("W(\\",   u"\u1F63")
    t.add("W)!",    u"\u1F62")
    t.add("W(!",    u"\u1F63")
    t.add("W)/",    u"\u1F64")
    t.add("W(/",    u"\u1F65")

    t.add("A)=",    u"\u1F06")
    t.add("A(=",    u"\u1F07")
    t.add("H)=",    u"\u1F26")
    t.add("H(=",    u"\u1F27")
    t.add("I)=",    u"\u1F36")
    t.add("I(=",    u"\u1F37")
    t.add("U)=",    u"\u1F56")
    t.add("U(=",    u"\u1F57")
    t.add("W)=",    u"\u1F66")
    t.add("W(=",    u"\u1F67")

    t.add("*A)",     u"\u1F08")
    t.add("*)A",     u"\u1F08")
    t.add("*A(",     u"\u1F09")
    t.add("*(A",     u"\u1F09")
    #
    t.add("*(\A",    u"\u1F0B")
    t.add("*A)/",    u"\u1F0C")
    t.add("*)/A",    u"\u1F0C")
    t.add("*A(/",    u"\u1F0F")
    t.add("*(/A",    u"\u1F0F")
    t.add("*E)",     u"\u1F18")
    t.add("*)E",     u"\u1F18")
    t.add("*E(",     u"\u1F19")
    t.add("*(E",     u"\u1F19")
    #
    t.add("*(\E",    u"\u1F1B")
    t.add("*E)/",    u"\u1F1C")
    t.add("*)/E",    u"\u1F1C")
    t.add("*E(/",    u"\u1F1D")
    t.add("*(/E",    u"\u1F1D")

    t.add("*H)",     u"\u1F28")
    t.add("*)H",     u"\u1F28")
    t.add("*H(",     u"\u1F29")
    t.add("*(H",     u"\u1F29")
    t.add("*H)\\",   u"\u1F2A")
    t.add(")\\*H",   u"\u1F2A")
    t.add("*)\\H",   u"\u1F2A")
    t.add("*H)!",    u"\u1F2A")
    t.add(")!*H",    u"\u1F2A")
    t.add("*)!H",    u"\u1F2A")
    #
    t.add("*H)/",    u"\u1F2C")
    t.add("*)/H",    u"\u1F2C")
    #
    t.add("*)=H",    u"\u1F2E")
    t.add("(/*H",    u"\u1F2F")
    t.add("*(/H",    u"\u1F2F")
    t.add("*I)",     u"\u1F38")
    t.add("*)I",     u"\u1F38")
    t.add("*I(",     u"\u1F39")
    t.add("*(I",     u"\u1F39")
    #
    #
    t.add("*I)/",    u"\u1F3C")
    t.add("*)/I",    u"\u1F3C")
    #
    #
    t.add("*I(/",    u"\u1F3F")
    t.add("*(/I",    u"\u1F3F")
    #
    t.add("*O)",     u"\u1F48")
    t.add("*)O",     u"\u1F48")
    t.add("*O(",     u"\u1F49")
    t.add("*(O",     u"\u1F49")
    #
    #
    t.add("*(\O",    u"\u1F4B")
    t.add("*O)/",    u"\u1F4C")
    t.add("*)/O",    u"\u1F4C")
    t.add("*O(/",    u"\u1F4F")
    t.add("*(/O",    u"\u1F4F")
    #
    t.add("*U(",     u"\u1F59")
    t.add("*(U",     u"\u1F59")
    #
    t.add("*(/U",    u"\u1F5D")
    #
    t.add("*(=U",    u"\u1F5F")

    t.add("*W)",     u"\u1F68")
    t.add("*W(",     u"\u1F69")
    t.add("*(W",     u"\u1F69")
    #
    #
    t.add("*W)/",    u"\u1F6C")
    t.add("*)/W",    u"\u1F6C")
    t.add("*W(/",    u"\u1F6F")
    t.add("*(/W",    u"\u1F6F")

    t.add("*A)=",    u"\u1F0E")
    t.add("*)=A",    u"\u1F0E")
    t.add("*A(=",    u"\u1F0F")
    t.add("*W)=",    u"\u1F6E")
    t.add("*)=W",    u"\u1F6E")
    t.add("*W(=",    u"\u1F6F")
    t.add("*(=W",    u"\u1F6F")

    t.add("A\\",    u"\u1F70")
    t.add("A!",     u"\u1F70")
    t.add("A/",     u"\u1F71")
    t.add("E\\",    u"\u1F72")
    t.add("E!",     u"\u1F72")
    t.add("E/",     u"\u1F73")
    t.add("H\\",    u"\u1F74")
    t.add("H!",     u"\u1F74")
    t.add("H/",     u"\u1F75")
    t.add("I\\",    u"\u1F76")
    t.add("I!",     u"\u1F76")
    t.add("I/",     u"\u1F77")
    t.add("O\\",    u"\u1F78")
    t.add("O!",     u"\u1F78")
    t.add("O/",     u"\u1F79")
    t.add("U\\",    u"\u1F7A")
    t.add("U!",     u"\u1F7A")
    t.add("U/",     u"\u1F7B")
    t.add("W\\",    u"\u1F7C")
    t.add("W!",     u"\u1F7C")
    t.add("W/",     u"\u1F7D")

    t.add("A)/|",   u"\u1F84")
    t.add("A(/|",   u"\u1F85")
    t.add("H)|",    u"\u1F90")
    t.add("H(|",    u"\u1F91")
    t.add("H)/|",   u"\u1F94")
    t.add("H)=|",   u"\u1F96")
    t.add("H(=|",   u"\u1F97")
    t.add("W)|",    u"\u1FA0")
    t.add("W(=|",   u"\u1FA7")

    t.add("A=",     u"\u1FB6")
    t.add("H=",     u"\u1FC6")
    t.add("I=",     u"\u1FD6")
    t.add("U=",     u"\u1FE6")
    t.add("W=",     u"\u1FF6")

    t.add("I\\+",   u"\u1FD2")
    t.add("I!+",    u"\u1FD2")
    t.add("I/+",    u"\u1FD3")
    t.add("I+/",    u"\u1FD3")
    t.add("U\\+",   u"\u1FE2")
    t.add("U!+",    u"\u1FE2")
    t.add("U/+",    u"\u1FE3")

    t.add("A|",     u"\u1FB3")
    t.add("A/|",    u"\u1FB4")
    t.add("H|",     u"\u1FC3")
    t.add("H/|",    u"\u1FC4")
    t.add("W|",     u"\u1FF3")
    t.add("W|/",    u"\u1FF4")
    t.add("W/|",    u"\u1FF4")

    t.add("A=|",    u"\u1FB7")
    t.add("H=|",    u"\u1FC7")
    t.add("W=|",    u"\u1FF7")

    t.add("R(",     u"\u1FE4")
    t.add("*R(",    u"\u1FEC")
    t.add("*(R",    u"\u1FEC")

#    t.add("~",      u"~")
#    t.add("-",      u"-")

#    t.add("(null)", u"(null)")
#    t.add("&", "&")

    t.add("0", u"0")
    t.add("1", u"1")
    t.add("2", u"2")
    t.add("3", u"3")
    t.add("4", u"4")
    t.add("5", u"5")
    t.add("6", u"6")
    t.add("7", u"7")
    t.add("8", u"8")
    t.add("9", u"9")

    t.add("@", u"@")
    t.add("$", u"$")

    t.add(" ", u" ")

    t.add(".", u".")
    t.add(",", u",")
    t.add("'", u"'")
    t.add(":", u":")
    t.add(";", u";")
    t.add("_", u"_")

    t.add("[", u"[")
    t.add("]", u"]")

    t.add("\n", u"")


    return t

import sys

t = beta2unicodeTrie()

import re
BCODE = re.compile(r'\\bcode{[^}]*}')

for line in open(sys.argv[1]):
    matches = BCODE.search(line)
    for match in BCODE.findall(line):
        bcode = match[7:-1]
        a, b = t.convert(bcode.upper())
        if b:
            raise IOError("failed conversion '%s' in '%s'" % (b, line))
        converted = a.encode("utf-8")
        line = line.replace(match, converted)

    print(line.rstrip())

不过还有一件事。当最后一个 sigma“ς”位于 \bcode{}-Makro 的末尾时,它不会像这样转换。例如这里:

\bcode{ei)=dos}

如何让脚本识别位于末尾括号之前的“s”,并将其转换为 unicode U+03C2?

相关内容