あるいは 〜私の 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 変換が完了したことになる。