2024年12月7日

LaTeX advent calendar 2024でのTeX で限界を突破するがいろいろな意味で限界突破していて面白かった.

ところで途中に出てくる\manyXの実装も面白かった.自分だと普通に一つずつ加えていきそうだし,仮にこんな風に効率化しようとしてもああはならなそう.と思いながら自分だとどう書くかなと思ってやってみた.

\newcount\mycount
\newif\ifmy
\def\manyX#1#2#3{\manyXi{#2}{#1}{#3}}
\def\firstoftwo#1#2{#1}
\def\secondoftwo#1#2{#2}
\def\manyXi#1#2#3{%
  \def#2{}%
  \begingroup
    \mycount=#1
    \ifodd\mycount\mytrue\else\myfalse\fi
    \divide\mycount by 2
    \ifnum\mycount=0 \expandafter\firstoftwo\else\expandafter\secondoftwo\fi
      {\def\tmp{}}%
      {%
        \expandafter\def\expandafter\tmp\expandafter{%
          \expandafter\manyXi\expandafter{\the\mycount}{#2}{#3#3}%
        }%
      }%
    \ifmy\expandafter\firstoftwo\fi
      {%
        \expandafter\def\expandafter\tmp\expandafter{\tmp
          \expandafter\def\expandafter#2\expandafter{#2#3}%
        }%
      }{}%
  \expandafter\endgroup\tmp
}


\manyX\manyexpandafterfi{3}{\expandafter\fi}
\show\manyexpandafterfi % ->\expandafter \fi \expandafter \fi \expandafter \fi
\bye

普通だし長いし面白くないですね.というかe-TeXなしつらい.

0 件のコメント:

コメントを投稿

コメントの追加にはサードパーティーCookieの許可が必要です