Re: figureの中の図名取得

名前: しっぽ愛好家
日時: 2003-01-04 14:22:11
IPアドレス: 210.230.96.*

>>14601 >通常の\refを使いたい場合もあるので、 併用する,というのでしたら,その点を先に言っていただけると, そのように定義したのですが… 通常の \ref と併用するという場合には単に,\label が aux ファイルに 書き出す情報に ``現在のキャプション'' を追加すれば済みます. オリジナルの \label は,aux ファイルに \newlabel{<ラベル文字列>}{{<\@currentlabel の値>}{<ページ番号>}} という形式の項目を書き出し,\ref/\pageref はその結果を用います. そこで,\newlabel の第 2 引数に ``現在のキャプション'' を追加し, それを取得するようなマクロを用意すればよいわけです. というわけで,次のようなことができます. \documentclass{article} %%% パッケージ類の読み込みは省略 \makeatletter \let\@currentcaption\@empty \long\def\@caption#1[#2]#3{% \par \protected@edef\@currentcaption{#3}%%% この行を追加 \addcontentsline{\csname ext@#1\endcsname}{#1}% {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}% \begingroup \@parboxrestore \if@minipage \@setminipage \fi \normalsize \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par \endgroup} \def\label#1{% #1: label \@bsphack \protected@write\@auxout{}% {\string\newlabel{#1}{{\@currentlabel}{\@currentcaption}{\thepage}}}% %%% 直前の行では,{\@currentcaption} の部分を追加しました. \@esphack} \def\@setref#1#2#3{% \ifx#1\relax \protect\G@refundefinedtrue \nfss@text{\reset@font\bfseries ??}% \@latex@warning{Reference `#3' on page \thepage \space undefined}% \else \expandafter#2#1\@empty\spacefactor\@m{}% \fi} %%% \ref/\pageref には,\label が出力するデータの構造の変更に %%% 対応した補正を施します. \def\ref#1{\expandafter\@setref\csname r@#1\endcsname\@firstofthree{#1}} \def\pageref#1{\expandafter\@setref\csname r@#1\endcsname\@thirdofthree{#1}} \def\captionref#1{\expandafter\@setref\csname r@#1\endcsname\@secondofthree{#1}} \long\def\@firstofthree#1#2#3{#1} \long\def\@secondofthree#1#2#3{#2} \long\def\@thirdofthree#1#2#3{#3}%%% これはすでに LaTeX が用意しています. \makeatother \begin{document} \section{Externd cross-reference system}\label{sec:extend-cross-refs} As indicated in figure~\ref{fig:sample} (with caption ``\captionref{fig:sample}'') in section \ref{sec:extend-cross-refs}, \dots. \begin{figure} \includegraphics{somefigure.eps} \caption{sample figure} \label{fig:sample} \end{figure} \end{document}

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)