Re: pdfファイルでの数式番号参照

名前: misc
日時: 2004-03-29 19:55:36
IPアドレス: 210.230.18.*

>>27699 >希望は,表示は (1),(2),...でも裏では(1.1),(1.2),...と >覚えていてくれることです。 一般には,ある LaTeX のカウンタ <somcnt> について, “hyperref の処理の内部で用いる<somecnt> の番号の形式”は \theH<somecnt> で与えられます. ただ,数式番号の場合には(amsmath パッケージによる)subequations 環境への 対処の都合で,\theHequation をユーザが再定義してもうまくいかないようです. # 実験に用いたのは hyperref 2003/07/27 v6.74h です. とりあえず,次のように対処することができそうです. \documentclass{jsbook} \usepackage{amsmath} \def\theequation{\arabic{equation}} \usepackage[dvipdfm,bookmarks=true,bookmarksnumbered=true]{hyperref} \AtBeginDvi{\special{pdf:tounicode 90ms-RKSJ-UCS2}} % \def\theHfigure{\thechapter.\arabic{figure}} % ↑一般には,このように \theH<somecnt> を \the<somecnt> とは独立に % 定義することが可能(で,\theHfigure の場合はカウンタ chapter が % 定義されているとファイル hyperref.sty 内で自動的にこのように設定されます). % \def\thefigure{\arabic{figure}} % \def\theHequation{\thechapter.\arabic{equation}} % ↑しかし,(subequations 環境への対処の都合で)数式番号の場合, % これはうまくいきません. % “hyperref の内部処理に限り \theequation に前置する文字列”の導入 \makeatletter \def\HrefPrefixForEquation{\thechapter.} \def\hyper@refstepcounter#1{% \edef\This@name{#1}% \ifx\This@name\name@of@eq%%% 数式番号の場合 \make@stripped@name{\HrefPrefixForEquation\theequation}% \let\theHequation\newname \fi \@ifundefined{theH#1}% {\expandafter\def\csname theH#1\endcsname{\arabic{#1}}}% {}% \hyper@makecurrent{#1}% \ifmeasuring@\else \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% \fi} \def\eqnarray{% \let\Hy@reserved@a\relax \def\@currentHref{}% \H@eqnarray \if@eqnstar\else \ifx\\\@currentHref\\% \else \make@stripped@name{\HrefPrefixForEquation\theequation}% \let\theHequation\newname \hyper@makecurrent{equation}% \hyper@anchorstart{\@currentHref}{}\hyper@anchorend \fi \fi} \AtBeginDocument{% \@ifpackageloaded{amsmath}{}{% \def\equation{% \let\refstepcounter\H@refstepcounter \H@equation \make@stripped@name{\HrefPrefixForEquation\theequation}% \let\theHequation\newname \hyper@makecurrent{equation}% \Hy@raisedlink{\hyper@anchorstart{\@currentHref}}% \let\refstepcounter\new@refstepcounter}}% \@ifundefined{subeqnarray}{}{% \let\H@subeqnarray\subeqnarray \let\H@endsubeqnarray\endsubeqnarray \def\subeqnarray{% \let\Hy@reserved@a\relax \H@subeqnarray \make@stripped@name{\HrefPrefixForEquation\theequation}% \let\theHequation\newname \hyper@makecurrent{equation}% \hyper@anchorstart{\@currentHref}{}\hyper@anchorend}}% } \makeatother \begin{document} \chapter{A章} \begin{equation}\label{eq:chapA} A=a^2 \end{equation} \chapter{B章} \begin{equation}\label{eq:chapB} B=b^2 \end{equation} \eqref{eq:chapB}はB章の(1)を参照している. \end{document} # もちろん,然るべき再定義を行えば,余計なところでは hyperjump 機能を使わない, # ということもできます…

この書き込みへの返事:

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