PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \captionsetup[parpic]{type=table} Bildanker bei picins setzen, wie?



sharpType
14-08-2009, 00:31
Hallo,

ich habe schon wieder so ein dummes Problem :eek:

Ich versuche gerade mit dem captions-package den Bildanker für die textumflossenden Bilder zu setzen, das der Link direkt auf dem Bild landet und nicht nur bei dem label landet.

Aber irgendwie haut das nicht so hin. Mein Ansatz:



\newenvironment{myFloatPic}[5]
{
\pichskip{1.5em}
\piccaption[#1]{\label{#2}#1}
\captionsetup[parpic]{type=figure}
\parpic[#3]{\includegraphics[#4]{#5}}
\begin{sloppypar}
}
{
\end{sloppypar}
\picskip{0}
}


Laut doku hat captions eine Extra-Option [parpic] für diesen Fall. Aber auch ohne funktioniert es nicht bzw der Link bleibt so wie vorher, landet auf dem label und nicht auf dem Bild.

Hat da jmd ein Tipp?

Vielen Dank

sommerfee
14-08-2009, 07:50
Ich versuche gerade mit dem captions-package den Bildanker für die textumflossenden Bilder zu setzen, das der Link direkt auf dem Bild landet und nicht nur bei dem label landet.

Das macht das caption-Paket von Haus aus schon so.



\captionsetup[parpic]{type=figure}


Die "type=" Option ist leider nicht ohne Nebeneffekte mit \captionsetup[...] verwendbar, sondern nur für den Gebrauch von \captionsetup ohne optionales Argument konzipiert. Durch die Hyperref-Unterstützung ist dies leider historisch so gewachsen und so gesehen war es die falsche Entscheidung von mir, die Option "type=" überhaupt in Version 3.0 einzuführen, anstatt einen eigenen Befehl daraus zu machen. In der zukünftigen Version 3.2 wird dies dann auch so sein, es wird dann \setcaptiontype{...} stattdessen geben. "type=" wird dann zwar als Alternative immer noch wie bisher funktionieren, aber aus der Dokumentation verschwinden. Dann wären Probleme wie in http://www.mrunix.de/forums/showthread.php?t=57859 auch (endlich) vorbei.

Kurz gesagt: So funktioniert das leider nicht.


Hat da jmd ein Tipp?
Ich tippe darauf, daß du das hypcap-Paket eingebunden hast. In diesem Falle setzt "type=" sowieso keinen Hyperref-Anker, das hypcap-Paket ist dann stattdessen für das Setzen der Anker zuständig. Und das hypcap-Paket unterstützt picins nicht, siehe auch caption-Dokumentation, Abschnitt über hypcap:


"Außerdem ist zu beachten, daß dann \captionsetup{type=<Typ>} keinen Hyperlink-Anker mehr setzt; dies muß dann ggf. mit dem Befehl \capstart, welcher vom hypcap-Paket angeboten wird, geschehen.
Weiterhin hat das Laden des hypcap-Paketes den Nebeneffekt, daß die Hyperlink-Anker innerhalb der Umgebungen floatingfigure (vom floatflt-Paket bereitgestellt), FPfigure & FPtable (vom fltpage-Paket bereitgestellt), figwindow (vom picinpar-Paket bereitgestellt), parpic (vom picins-Paket bereitgestellt), SCfigure (vom sidecap-Paket bereitgestellt), threeparttable (vom threeparttable-Paket bereitgestellt) und wrapfigure (vom wrapfig-Paket bereitgestellt) nicht mehr optimal platziert werden."

Trifft diese Vermutung von mir zu, ist die Abhilfe einfach: Einfach das hypcap-Paket nicht mehr laden und damit die Kontrolle über das Anker-Setzen an das caption-Paket übergeben.

Sollte diese Vermutung nicht zutreffen, wäre ein komplettes Beispiel nett. Bei dem Test-Dokument, was ich für interne Tests verwende, wird der Anker ganz automatisch korrekt auf den Anfang des Bildes gesetzt, ich habe es gerade nochmal ausprobiert.

Liebe Grüße,
Axel

sharpType
14-08-2009, 11:51
Hallo,

danke für die vielen Infos. Ich lade das hypcap Paket nicht und arbeite damit auch nicht. Die Links werden trotzdem nur auf das Label gesetzt..

Ich arbeite immer mit

\begin{myFloatPic}

\end{myFloatPic} und der floatPicDefinition oben in meinem Post. Ich guck mal nach einem Beispiel....

sommerfee
15-08-2009, 08:54
Ein Beispiel wäre nett, denn ansonsten habe ich leider keine Idee mehr, woran es liegen könnte.

Vielleicht hilft dir aber auch mein Beispiel irgendwie weiter. Ich habe einfach mal mein Testdokument etwas gekürzt und zusätzlich deine Umgebung eingearbeitet. Auch dort landet sowohl der Eintrag im Abbildungsverzeichnis, als auch \ref und \nameref auf dem Bild bzw. Bildplatzhalter und nicht auf der Beschriftung.



\documentclass[a4paper]{article}
\usepackage[bf]{caption}
\errorcontextlines=3
\sloppy

\usepackage{picins}
\usepackage[demo]{graphicx}

\usepackage{hyperref}

\newcommand\sample{Some text for our page
that is reused over and over again. }

\usepackage{shortvrb}
\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}

\begin{document}

\section{Lists}

\listoffigures

\section{References}
\newcommand*\Ref[1]{\autoref{#1}: \nameref{#1} (on page \pageref{#1})}

\noindent
\Ref{parpic.1}\\
\Ref{parpic.2}\\
\Ref{parpic.3}\\
\Ref{parpic.4}
%
\clearpage
\section{The picins package}

\newcommand\FOR{\(\displaystyle E=mc^2\)}

\piccaptioninside
%\pichskip{1.5em}
\piccaption{Einstein's formula.\label{parpic.1}}
\parpic(50mm,10mm)[s]{\FOR}
\sample\sample\sample

\piccaptionside
\piccaption{Einstein's formula.\label{parpic.2}}
\parpic(30mm,10mm)[s]{\FOR}
\sample

\piccaptiontopside
\piccaption{Einstein's formula.\label{parpic.3}}
\parpic(30mm,10mm)[sr]{\FOR}
\sample\sample

\piccaptioninside

\newenvironment{myFloatPic}[5]
{
\pichskip{1.5em}
\piccaption[#1]{\label{#2}#1}
% \captionsetup[parpic]{type=figure}
\parpic[#3]{\includegraphics[#4]{#5}}
\begin{sloppypar}
}
{
\end{sloppypar}
\picskip{0}
}

\begin{myFloatPic}{Einstein's formula.}{parpic.4}{s}{}{nix}
\sample\sample\sample
\sample\sample\sample
\sample\sample\sample
\end{myFloatPic}

\clearpage
That's all folks!
\end{document}


Kommentiert man hier das caption-Paket aus, landen die Sprünge hingegen auf der Beschriftung. (Und es gibt 4 Fehlermeldungen, weil \nameref ohne die Patches vom caption-Paket nicht mit picins funktioniert.)

Liebe Grüße,
Axel

P.S.: Welche Version des caption-Paketes kommt bei dir zum Einsatz? Das kann man in der Log-Datei nachlesen, wenn du obriges Beispiel übersetzt sollte folgendes in der Log-Datei auftauchen:


(C:\Programme\MiKTeX\tex\latex\caption\caption.sty
Package: caption 2008/08/24 v3.1j Customizing captions (AR)