TeXの記憶(3) — 2つのオプション引き数

TeXの記憶(2) — 角丸の囲みを使った環境では引数があるときだけ見出しとして表示させるようにしました。これは自動的に章番号と順の番号を出力して見出しがあるときだけ表示させるというものでしたが、組版をやっていると例外的な要求がけっこうあります。

こんな感じです。

img20130413

もっと規則的に原稿が書けるだろうとか、気まぐれなことするんじゃない、と思ってイラっとしますが、フィードバックするのも面倒なので、そのまま対応しちゃってました。

そんなわけで、もって手広く対応できるように例外に対応できるように直してみました。

LaTeXの環境だとオプション引数が1つしか使えない(と思う)ので、TeXの引数のパターンマッチングに頼ることにします。

引数が

  • ゼロ:デフォルトの見出し、
  • 1つ:#1=見出し
  • 2つ:#1=見出し、#2=ワクの中の表示

というようにしました。
ワクの中の表示が頻繁に入れ替わるときは#1と#2を入れ替えたほうが入力の手間が少なくていいかもしれません。

% 修正したところだけ
\def\rei{\par\noindent
  % 次の文字が [ なら\@reiへ、なければ\@@reiへ
  \@ifnextchar[{\@rei}{\@@rei[\empty][\empty]}}
\def\endrei{\hfill\QED}
\def\@rei[#1]{%
  % 「\@rei[#1]」の次の文字が [ なら、それは\@@reiの2番目の引数になる
  \@ifnextchar[{\@@rei[#1]}{\@@rei[#1][\empty]}}
\def\@@rei[#1][#2]{%
  \ifx#2\empty
    \stepcounter{reicnt}%
    \Kadomaru{\bf 例\thechapter.\arabic{reicnt}}%
  \else
    \Kadomaru{\bf #2}%
  \fi
  \ifx#1\empty\else\space{\bf #1}\fi
  \hskip.9zw}

...

\begin{document}

%\chapterコマンドの代わり
\setcounter{chapter}{1}

\begin{rei}
...

\begin{rei}[見出し]
...

\begin{rei}[][例1.2$'$]
...

\begin{rei}[見出し][例1.2$''$]
...

\begin{rei}[][例外]
...

\begin{rei}
...

コメント