Bus errorとSegmentation faultに困ったら見るブログ

物理の研究者による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【TeX】現在の式番号を用意したカウンターに保存しておいて後で使う

やりたいことは
文章前半に出てきた式(19)という式番号を何らかの変数に代入して保存
文章後半で、その式をもう一度書いて、そのときの式番号を(19)にしたい


一応、これを簡単にできる方法は過去の記事にまとめた

■ 過去記事 : 【TeX】数式番号に章番号を付加・途中の式番号から

\begin{align}
 A=B
\end{align}
% 上記の式番号が(19)

% 中略

\setcounter{equation}{18}
\begin{align}
 A=B
\end{align}
% 式の内容は上記の式(19)と同じなので、この式にも(19)と付けたい
\setcounter{equation}{30}
% 30は適当に書いたので、この式の直前の番号ときちんと接続する数字を書く

この方法でもとりあえず目的は達成できます(上の記事ではこの方法について書いてる)
ただ、19とか30って数字は中略の部分に文章に当たらしいい式を追加したらずれてしまう
なのでまた修正しないといけない・・・・・
めんどくさいし、たぶんミスる・・・・


そ こ で 、
最初の式(19)の直前に現在の式番号を変数に代入して保存しておく
それを2度目の式(19)のときに\setcounterで代入してやれば、特に何も気にする必要がなくなるはず

ただ、\setcounterで値を設定できるのはequationとかsectionとかデフォルトで入っている変数のみ
どんな変数があるかは以下にまとめられていた

■ 参考 : カウンタ


ユーザーが新しくカウンターを用意する方法は、

\newcounter{hoge1}
\setcounter{hoge1}{5}

みたいな感じでOK
これでhoge1というカウンターに5を代入できる
また、hoge1というカウンタに入っている数字を参照するときは、\value{hoge1}のようにする



これを使って、上記の式を書き直すと、

% hoge1とhoge2というカウンタを用意する
\newcounter{hoge1}
\newcounter{hoge2}

% 式(19)の前にhoge1に今の式番号を保存、18が代入されているはず
\setcounter{hoge1}{\value{equation}}
\begin{align}
 A=B
\end{align}
% 上記の式番号が(19)

% 中略


% setcounterで式番号を18にする前に、現在の式番号をhoge2に保存しておく、後で元の数字に戻すときに使うので
\setcounter{hoge2}{\value{equation}}
% ここでequationに18を代入する、これで次の式が(19)になる
\setcounter{equation}{\value{hoge1}}
\begin{align}
 A=B
\end{align}

% 式番号を元の数字に戻す
\setcounter{equation}{\value{hoge2}}

これで、中略の部分に式を追加しても特に新しくここを修正する必要はなくなった