TeXの引き数のパターンマッチング

以前にも同じような記事を書いたのですが、今回は目次表示に関係のある\numberlineの引き数の切り分けのためにパターンマッチングを使ってみました。

書籍用のtocファイルに書き込まれる\numberlineの引き数は「\numberline{1.3}…}のように\thechapter.\thesectionの形をしています。

この引き数を
1. \thechapterが1桁か2桁か
2. \thesectionが1桁か2桁か
によって処理を変更する必要があったのです。

「10.4」のような引き数を切り分けるのは以下ように定義すれば、それぞれの数字を別々に取得できます。

\def\XXX#1. #2 {処理の内容}

たとえば「\XXX{71.20}」とすれば{#1=71、#2=20」のように週次を取得することが可能です。

#2の後のスペースは必要です。スペースのない形「\def\XXX#1.#2{処理の内容}」にすると「\XXX{1.23}」の場合#1=1、#2=2となってしまい、望みの#2=23になりません。

というわけで、以下のような形で切り分けることができました。

\def\XXX#1. #2 {処理の内容}
\newcommand*{\l@section}[2]{%
  \def\numberline{この中で
    \XXX##1
    としてピリオドの前後の数字を切り分け
    ...}
    }

コメント