xparse,\IfBooleanTでの\refstepcounerがうまくいかない件

xparse,\IfBooleanTでの\refstepcounerがうまくいかない件

- matuoka jin の投稿
返信数: 2
platexで処理していますが、
xparseで * の有無でカウンターを処理しようとしてます。
参照が前提なので\IfBooleanTの中で\refstepcounterを用いてますが、
\refでの反映がされません。

\documentclass{article}
\usepackage{xparse}
\newcounter{CNTA}
\NewDocumentCommand\test{ s m }{%
\textbf{#2. \IfBooleanT{#1}{\refstepcounter{CNTA}\theCNTA}}%
}
\begin{document}
\test*{FOO}\label{XXX}

[\ref{XXX}]
\end{document}

なにが問題なのでしょうか。

matuoka jin への返信

Re: xparse,\IfBooleanTでの\refstepcounerがうまくいかない件

- 帯田 木偶太 の投稿
自分は xparse というパッケージに触れたことがないので外しているかも
しれませんが…

\refstepcounter を、\textbf によるグループの中で実行しているために、
\refstepcounter による \current@label への代入が無視されてしまって
いるのではないでしょうか。

次のようにすると、ブラケット中に数字が出力されます。

\documentclass{article}
\usepackage{xparse}
\newcounter{CNTA}
\NewDocumentCommand\test{ s m }{%
\IfBooleanT{#1}{\refstepcounter{CNTA}}%
\textbf{#2. \IfBooleanT{#1}{\theCNTA}}%
}
\begin{document}
\test*{FOO}\label{XXX}

[\ref{XXX}]

\end{document}
帯田 木偶太 への返信

Re: xparse,\IfBooleanTでの\refstepcounerがうまくいかない件

- matuoka jin の投稿
ありがとうございます。
使い慣れないパッケージを使った事が原因であると思い込んでました.