Lua函数string.lower
不适用于西里尔字母。如何修复?
梅威瑟:
% !TeX program = lualatex
\documentclass[12pt]{article}
\usepackage{polyglossia}
\setdefaultlanguage[spelling=modern]{russian}
\setotherlanguage{english}
\defaultfontfeatures{Ligatures={TeX},Renderer=Basic}
\setmainfont{Times New Roman}
\def\ptestcyr{%
\directlua{
tex.print(string.lower("Supervisory Control And Data Acquisition"),"\string\\newline")
tex.print(string.lower("Ямало-Ненецкий Автономный Округ"))
}%
}
\begin{document}
\noindent\ptestcyr
\end{document}
答案1
正如评论中提到的,您可以编写自己的 Tim Toady 函数。
基于utf8data
此,您可以从下载https://github.com/artemshein/luv/blob/master/utf8data.lua并在https://github.com/Stepets/utf8.lua/issues/13:
\documentclass[12pt]{article}
\usepackage{polyglossia}
\usepackage{luacode}
\setdefaultlanguage[spelling=modern]{russian}
\setotherlanguage{english}
\setmainfont{DejaVu Serif}
\begin{luacode}
require("utf8data")
function timtowtdilower(str_in)
local lc_str = str_in:gsub(utf8.charpattern,utf8_uc_lc)
return lc_str
end
\end{luacode}
\def\ptestcyr{%
\directlua{
tex.print(string.lower("Supervisory Control And Data Acquisition"),"\string\\newline")
tex.print(timtowtdilower("Ямало-Ненецкий Автономный Округ"))
}%
}
\begin{document}
\noindent\ptestcyr
\end{document}
请注意,字体不同,因为我没有安装 Times New Roman。