多段弾

多段弾

たとえば、複数レベルの箇条書きに使用できるものを書きたいと思います。

I. タイトル

  1. 字幕

    a. サブサブタイトル

    ...

LaTexでは

 \def\startitems
 {
  \begingroup
  \parindent\z@
  \@itemdepth\@ne
  \@totalleftmargin\csname leftmargin\romannumeral\the\@itemdepth\endcsname
  \leftskip\@totalleftmargin
  \everypar
  {
    \llap{
      \makebox[\labelsep][l]
      {
        \csname labelitem\romannumeral\the\@itemdepth\endcsname
      }
    }
  }
  \obeylines
}

\def\stopitems
{
  \bottom
  \par
\endgroup
}
\def\up
{
  \par
  \begingroup
\advance\@itemdepth\@ne
\advance\@totalleftmargin\csname leftmargin\romannumeral\the\@itemdepth\endcsname
\leftskip\@totalleftmargin
}

\def\down
{
    \par
    \endgroup
}

\def\bottom
{
  \ifnum\@itemdepth>\@ne
    \down\bottom
  \fi
}

問題なく動作していますが、プレーン TeX で実行する必要があるのですが、その方法がわかりません。どなたか助けていただけませんか?

答え1

これはあなたが望むものに近いでしょうか?

\catcode`@=11
\newdimen\itemmargin
\itemmargin=3em
\newcount\itemdepth
\def\startitems{%
  \par
  \begingroup
  \advance\itemdepth\@ne
  \parindent\z@
  \csname item\romannumeral\itemdepth\endcsname\z@
  \advance\leftskip\itemmargin
  }
\def\stopitems{%
  \par
  \endgroup}

\def\itemd@pth{\romannumeral\itemdepth}
\newcount\itemi
\newcount\itemii
\newcount\itemiii
\def\labelitemi{\uppercase\expandafter{\romannumeral\itemi}.}
\def\labelitemii{\number\itemii.}
\def\labelitemiii{%
  \ifcase\itemiii\or
    a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m\or
    n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\fi.}

\def\item{%
  \advance\csname item\itemd@pth\endcsname\@ne
  \par\leavevmode\llap{\csname labelitem\itemd@pth\endcsname\enspace}\ignorespaces
}

\catcode`@=12

\startitems
\item Something
  \startitems
  \item Second level
    \startitems
    \item Well
    \item done
    \stopitems
  \item Again second
  \stopitems
\item Back to first
\stopitems

\bye

ここに画像の説明を入力してください

関連情報