Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

hyperref -- refstepcounter (bug???)

32 views
Skip to first unread message

Marco Daniel

unread,
Aug 14, 2011, 7:06:03 AM8/14/11
to
Hallo,

im Forum mrunix gab es einen Beitrag, in der ich die Anweisung
refstepcounter nutze, welches durch hyperref modifiziert wird.
http://www.mrunix.de/forums/showthread.php?p=333738#post333738

Das Beispiel ist unten aufgeführt. Wenn man die Zeile
\ifvmode\else\leavevmode\
auskommentiert, dann verrutschen die Tags. Natürlich gibt es noch andere
Lösungsansätze, welche ich hier nicht diskutieren wollte. Vielleicht ist
das ja eine mögliche Erweiterung für hyperref.

\documentclass[11pt,a4paper]{scrreprt}
\usepackage{amsmath, amssymb, tabularx}
\usepackage{showframe,lipsum}
\usepackage{hyperref}
\makeatletter
\def\refstepcounter#1{%
\ifvmode\else\leavevmode\fi%ergaenzt
\ifHy@pdfstring
\else
\H@refstepcounter{#1}%
\edef\This@name{#1}%
\ifx\This@name\name@of@slide
\else
\if@skiphyperref
\else
\if@hyper@item
\stepcounter{Item}%
\hyper@refstepcounter{Item}%
\@hyper@itemfalse
\else
\hyper@refstepcounter{#1}%
\fi
\fi
\fi
\fi
}
\makeatother

\newcommand{\tagarray}{%
\refstepcounter{equation}%
(\theequation)%
}

\begin{document}
\begin{equation}
1+1=2\label{1}
\end{equation}

\noindent\begin{tabularx}{\linewidth}{@{}lrcl>{\raggedleft\arraybackslash}X@{}}
\rlap{\rule{\textwidth}{1pt}}Anode: & $\frac{1}{2}O_{2}+2e^{-}$ &
$\longrightarrow$ & $O^{2-}$ & \tagarray\label{2}\\
Kathode: & $H_{2}+O^{2-}$ & $\longrightarrow$ & $H_{2}O+2e^{-}$
&\tagarray\label{3}\\
Gesamtreaktion: & $H_{2}+\frac{1}{2}O_{2}$ & $\longrightarrow$ &
$H_{2}O$ &\tagarray\label{4}
\end{tabularx}

\begin{equation}
1+1=2\label{5}
\end{equation}
\lipsum[1]
\ref{1}\qquad\ref{2}\qquad\ref{3}\qquad\ref{4}\qquad\ref{5}
\end{document}

Viele Grüße
Marco

Heiko Oberdiek

unread,
Aug 14, 2011, 9:05:08 AM8/14/11
to
Marco Daniel <marcoda...@googlemail.com> wrote:

> im Forum mrunix gab es einen Beitrag, in der ich die Anweisung
> refstepcounter nutze, welches durch hyperref modifiziert wird.
> http://www.mrunix.de/forums/showthread.php?p=333738#post333738

U.a. setzt es einen Anker. Das geht in TeX leider nicht transparent,
da dazu ein Whatsit (\special o.ä.) verwendet werden muss.

> Das Beispiel ist unten aufgeführt. Wenn man die Zeile
> \ifvmode\else\leavevmode\
> auskommentiert,

Diese Zeile sollte auf *keinen* Fall in \refstepcounter stehen,
da dass einen Mode-Wechsel verursacht. Wenn ein Mode-Wechsel
nötig ist, sollte er außerhalb von \refstepcounter erfolgen.

--
Heiko Oberdiek

Marco Daniel

unread,
Aug 14, 2011, 11:47:29 AM8/14/11
to

schrieb Heiko Oberdiek, Am 14.08.2011 15:05:
> Diese Zeile sollte auf *keinen* Fall in \refstepcounter stehen,
> da dass einen Mode-Wechsel verursacht. Wenn ein Mode-Wechsel
> nötig ist, sollte er außerhalb von \refstepcounter erfolgen.

Danke für die Rückmeldung. Ist auch komplett nachvollziehbar.

Gruß
Marco

Manuel Kuehner

unread,
Aug 14, 2011, 5:53:41 PM8/14/11
to
On 14 Aug., 17:47, Marco Daniel <marcodaniel1...@googlemail.com>
wrote:

Hallo zusammen, das gehört zwar nicht hierher - aber als
"Normalsterblicher" ist das lustig! (also, dass man das
nachvollziehbar findet)

Beste Grüße
Manuel

0 new messages