多年来,我一直使用 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?