こんにちは
山下と申します.カウンターの値についてお尋ねさせて下さい.
ネットで検索したところ,表や図などの
\caption{...}
に脚注を入れる場合,普通に \footnote{...} を入れることはできず,
\protect\footnotemark
を入れ,表などを出てから
\footnotetext{...}
で注釈本体を入れねばならない,と知りました.
そうしましたら,脚注番号がなぜか1つ飛びます.
末尾に書く例では脚注番号が「1」になるべきところ,「2」になっています.
表の前に
\addtocounter{footnote}{-1}
と入れれば調整できるのは分かるのですが,「勝手に1つ飛ぶ」という現象が気持ち悪く,他に何とかする方法はないものかと思い,お尋ねする次第です.
以上,ご存知の方,ご教示お願い致します.
以下,サンプルです.
\documentclass[a4j,10pt]{jsarticle}
%\setcounter{footnote}{0}
\begin{document}
%\addtocounter{footnote}{-1}
\begin{table}[!h]
\caption{テスト\protect\footnotemark}
\begin{center}
\begin{tabular}{lll}\hline
1 & 2 & 3 \\\hline
\end{tabular}
\end{center}
\end{table}
\footnotetext{テスト脚注}
\end{document}
> キャプションは内部的に二回処理されるからです.
jarticle.cls と jsarticle.cls とでは \@makecaption の定義が違うので、二回処理されることの影響の出方が異なるみたいですね (jarticle.cls の場合は、キャプションが長いときに影響が出ますが、jsarticle.cls の場合は、キャプションの長さに関係なく影響が出てしまいます)。
適当なパッケージで既に対処がなされてそうな気もしますが、簡単には次のようにしても回避できるようです (memoir.cls の処理を参考にしました):
\documentclass{jsarticle}
\makeatletter
% from: jsarticle.cls
\long\def\@makecaption#1#2{{\small
\advance\leftskip .0628\linewidth
\advance\rightskip .0628\linewidth
\vskip\abovecaptionskip
\let\save@footnotemark\footnotemark % <-- added
\renewcommand{\footnotemark}[1][]{} % <-- added
\sbox\@tempboxa{#1\hskip1zw\relax #2}%
\let\footnotemark\save@footnotemark % <-- added
\ifdim \wd\@tempboxa <\hsize \centering \fi
#1\hskip1zw\relax #2\par
\vskip\belowcaptionskip}}
\makeatother
\begin{document}
\begin{table}
\caption{キャプションの説明文\protect\footnotemark}
\end{table}
\footnotetext{脚註の文字列。}
\end{document}