caption に入れた footnotemark によるカウンターの値

caption に入れた footnotemark によるカウンターの値

- 匿 名 の投稿
返信数: 3
こんにちは

山下と申します.カウンターの値についてお尋ねさせて下さい.

ネットで検索したところ,表や図などの
\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}
匿 名 への返信

Re: caption に入れた footnotemark によるカウンターの値

- 本田 知亮 の投稿
キャプションは内部的に二回処理されるからです.
本田 知亮 への返信

Re: caption に入れた footnotemark によるカウンターの値

- ut の投稿

> キャプションは内部的に二回処理されるからです.

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}
ut への返信

Re: caption に入れた footnotemark によるカウンターの値

- 匿 名 の投稿
本田知亮様,ut 様

山下です.ご回答ありがとうございました.

> キャプションは内部的に二回処理されるからです.

分かりました.要するに仕様なので仕方ないことなのですね.

ut 様の教えて頂いた方法が,中身はよくわかりませんが,対処としては分かりやすいので,この方法で対応させて頂きます.

ありがとうございました.