2007/01/18(木)06:05
ディスプレイ数式モードとは異なる系統の式番号をつける
【目的】本文中に挿入する囲み記事の中で使う式番号を本文とは独立させて使いたい.かつ,式番号は奥村氏のokumacroにある MARU を用いて丸数字にしたい.
【解決案】以下の5行をプレアンブルに挿入(要amsmathパッケージ).
《注》ここに示したコードは私用目的で作成したものであり,動作の保証は致しかねます.悪しからずご了承の程を.
\newcounter{maru} % 丸付き数式番号のカウンタを宣言
\setcounter{maru}{0} % 数式番号の初期化
\def\incmaru{\refstepcounter{maru}}
\def\putmaru{\tag*{\MARU{\themaru}\quad}}
\def\initmaru{\setcounter{maru}{0}}
なお,これを実行するには amsmath.sty と okumacro.sty が必要なので,プレアンブルの先頭に以下の2行を追加しておく.
\usepackage{okumacro}
\usepackage{amsmath}
【使用法】
(1)まず \incmaru によってカウンタを増やす.次に番号なしの数式環境を始める.環境内で数式番号を付けたいところに \putmaru と書く.
\incmaru
\label{ラベル}
\begin{equation*}
<ここに数式を書く> \putmaru
\end{equation*}
なお,ラベルは数式環境の直前か直後に置くこと.数式環境の内部で \label を使うとエラーになる.
(2)数式番号を初期化したい場合は,その位置に
\initmaru
と書く.
【使用例】
%--------------------------------------------------------ここから
$a$と$c$の間には次の関係が成り立つ.
\begin{equation}
a=c
\end{equation}
\begin{FRAME}
証明:
\incmaru
\label{eq1}
\begin{equation*}
a=b \putmaru
\end{equation*}
さらに
\incmaru
\label{eq2}
\begin{equation*}
b=c \putmaru
\end{equation*}
ゆえに\MARU{\ref{eq1}}と\MARU{\ref{eq2}}より
\begin{equation*}
a=c
\end{equation*}
である.
\end{FRAME}
また,$p$と$q$の間には次の関係が成り立つ.
\begin{equation}
p>q
\end{equation}
%--------------------------------------------------------ここまで
【補足】カウンタの更新と式番号の表示を1つのコマンドにまとめたかったので,
\newcommand{\putmarunum}
{\refstepcounter{marunum}\tag*{\MARU{\themarunum}\quad}}
という試作品を書いてみた.しかしこの方法だと,式に付けたラベルを参照したとき式番号が誤った値になるという不具合が生じた.したがって【解決案】に示した通り,不本意ながら \incmaru と \putmaru に分割することとした.
この問題を解決するための方法はあると思うが,【解決案】で一応当初の目的は達成できたので,深く立ち入らないことにする.
後日気が向いて作る気になったときのために,一応アイディアの覚書き.
数式環境内で使う式番号を副系統にする/しないをスイッチできるようにすればよかろう.この場合,スイッチをオンにする手続きとオフにする手続きの2つが必要(あと簡単な初期化も).
スイッチをオンにすると,それ以降の数式環境では副系統の式番号が表示される.スイッチをオフにすると元に戻り,主系統の番号が表示される...といった塩梅.
スイッチオンの手続き
1.式番号のカウンタ equation の値をバックアップ
2.式番号の表示型式 \theequation をバックアップ(\let でできるのか?)
3.記憶しておいた副系統の式番号値をカウンタ equation にセット.
4.\theequation を副系統で使用する型式に再定義.
スイッチオフの手続き
1.式番号のカウンタ equation の値をバックアップ
2.バックアップしておいた主系統の式番号値をカウンタ equation にセット.
3.\theequation を主系統で使用する型式(バックアップしていたもの)に再定義.
こんな感じでどうだろう.