# [XeTeX] Hypertarget preview in Skim

Peter Dyballa Peter_Dyballa at Web.DE
Mon Jun 29 23:26:59 CEST 2009

Am 27.06.2009 um 02:07 schrieb Ross Moore:

> The view that Skim shows you would be dependent upon
> the position of the destination anchor that specifies
>
> The pictures that you present would then suggest that with
> pdfTeX, the anchor is raised by 1cm or so, whereas with XeTeX
> it just occurs on the baseline of the text constituting the

I'm having a bit of trouble with pdfTeX and hyperref. The
hypertargets are created inside a longtable environment, at top of
the page. The code is like this:

\hypertarget{Projekte}{\ifxetex
& \multicolumn{2}{l}{\textcolor{Maroon}{\kopf{Projekte}}}\\[9.375mm]
\else
& \multicolumn{2}{l}{\textcolor{DarkRed}{\LARGE\so{Projekte}}}\
\[9.375mm]
\fi}

which pdfTeX does not seem to accept:

[2]
pdftex: define anchor at line 402: Projekte
! Incomplete \iffalse; all text was ignored after line 402.
<inserted text>
\fi
l.402 \fi}

! Missing \endgroup inserted.
<inserted text>
\endgroup
l.402 \fi}

! Undefined control sequence.
<argument> \kopf
{Projekte}
l.402 \fi}

! Extra \else.
<argument> \ifxetex & \multicolumn {2}{l}{\textcolor {Maroon}{\kopf
{Projekte}}}\\[9.375mm]\else

& \multicolumn {2}{l}{\textcolor {DarkRed}
{\LARGE \so {Projekte}}}\\[9.375mm]\fi
l.402 \fi}

! Extra \fi.
\hypertarget #1#2->\ifHy at nesting \hyper@@anchor {#1}{#2}\else
\hyper@@anchor {#1}{\relax }#2\fi

l.402 \fi}

pdftex: define anchor at line 433: page.3
[3]

because I don't want to write so complicated:

\ifxetex
& \multicolumn{2}{l}{\hypertarget{Praxis}{\textcolor{Maroon}{\kopf
{Berufliche Praxis}}}}\\[9.375mm]
\else
& \multicolumn{2}{l}{\hypertarget{Praxis}{\textcolor{DarkRed}
{\LARGE\so{Berufliche Praxis}}}}\\[9.375mm]
\fi

XeTeX accepts both… PdfTeX created a second line of text above the
target, and actually this became the target! When I corrected the
hypertarget error I could observe Skim falling back to the XeTeX
behaviour – and then I saw the second line. So there is no bug,
except that I would like to see a different behaviour.

>
> You should be able to check this using other PDF viewers:
> scale up to 300% or so, then click the hyperlink.
> Does the window position the view of the target at the top
> of the anchor text, or to its baseline?
>
>
>  hyperref  has an option  'raiselinks'  to control this extra
> vertical positioning. So try setting
> and see if that changes anything.

TeXShop, and Skim) jump at 300 % to the baseline. At around 100 %
Skim positions the upper corner of the view exactly at the baseline
while the other viewers raise their corners… The LOG file tells
whether raiselinks was set to true.

>
>
> Note that driver files   hdvips.def   hdvipson.def   hvtexmrk.def
> each have a line:    \def\Hy at raisedlink{}
> which cancels any possible implementation of raising anchors.

This would have been a too silly mistake! Interestingly I found that
when I pass any of the options dvipdfmx or xetex or none to hyperref,
different things are reported:

dvipdfmx	=> *hyperref using driver hdvipdfm*
xetex		=> *hyperref using driver hdvipdfm*
<nothing>	=> *hyperref using default driver hdvipdfm*

so with hyperref v6.78r it works to not set any driver.

A strange message is inserted just before geometry reports parameters
and dimensions or in the console before the auxiliary files are read in:

*geometry detected driver: pdftex*

Is this just a typo or is this a serious bug?

--
Greetings

Pete

Make it simple, as simple as possible but no simpler.
– Albert Einstein