あるいは 〜私の TeX プログラム変換環境〜
前回の続き。
50〜59行目: 手続き eltaso()
[BEFORE]
function eltaso(_1) max = _1 if max > 9999 then max = 9999 end j = 0 while j < max do j = j + 1 eltaso_name(j) print(sres) end end
[AFTER]
%%(公開) \eltaso{<整数n>}
% 整数n(1〜9999の範囲)に対して, 1からnの各整数
% に対する「えるたそ名」を出力する.
\newcommand*\eltaso[1]{%
\tclt@max=#1\relax
\ifnum\tclt@max>9999 \tclt@max=9999 \fi
\par
\tclt@j=0
\@whilenum\tclt@j<\tclt@max \do{%
\advance\tclt@j 1
\tclt@eltaso@name{\tclt@j}%
\tclt@sres\par
}%
}\eltaso は公開命令であるから、規則通りの \tclt@eltaso という名前ではない。そして、公開命令は \newcommand で定義していることにも注意。\eltaso は tclt の名前空間にないので衝突の可能性があり、万が一衝突した場合はエラーにする必要があるからである。
このマクロでは出力を行うため、元の Lua のコードと完全に対応しない部分がある。まず最初に改段落(\par)を行う。print(res) については、\tclt@sres を直接展開して出力させた後に改段落をしている。
以上で、「別の実装」が必要な \tclt@split@digit と \tclt@remainder 以外の部分は TeX 変換が完了したことになる。