マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

それでも TeX でプログラミングしたい人のための何か (13)

あるいは 〜私の 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 で定義していることにも注意。\eltasotclt名前空間にないので衝突の可能性があり、万が一衝突した場合はエラーにする必要があるからである。

このマクロでは出力を行うため、元の Lua のコードと完全に対応しない部分がある。まず最初に改段落(\par)を行う。print(res) については、\tclt@sres を直接展開して出力させた後に改段落をしている。

以上で、「別の実装」が必要な \tclt@split@digit\tclt@remainder 以外の部分は TeX 変換が完了したことになる。