PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : subfig... Altes Thema neu aufgerollt



Cubo
21-08-2007, 17:00
Hallo liebes Forum,

Nun schlage ich mich schon seit x Stunden mit den subfig-Package herum, und werd einfach nicht schlau daraus! Kann mir da jemand helfen?

So habe ich die Subfigs eingebunden:


\documentclass[a4paper,10pt,oneside,final]{book}
...
\usepackage{subfig}
...
\begin{figure}[htbp]
\centering
\subfloat[links oben \label{fig:Bild1}]{\includegraphics[width=0.48\textwidth]{images/pic1.png}}
\hfill
\subfloat[rechts oben \label{fig:Bild2}]{\includegraphics[width=0.48\textwidth]{images/pic2.png}}
\\
\subfloat[links unten \label{fig:Bild3}]{\includegraphics[width=0.48\textwidth]{images/pic3.png}}
\hfill
\subfloat[rechts unten \label{fig:Bild4}]{\includegraphics[width=0.48\textwidth]{images/pic4.png}}
\caption{Bilder mit subfig}
\label{fig:bildermitsubfig}
\end{figure}
...



Resultat = gut:
Wie gewünscht werden die vier Grafiken im PDF erzeugt...


Problem: Fehlermeldungen!
...jedoch erhalte ich für jede subfig die folgende Fehlermeldung, die ich einfach nicht wegbringe...



--> wie unten mit 1.4
--> wie unten mit 1.3
--> wie unten mit 1.2
...
pdfTeX warning (dest): name{subfigure.1.1} has been referenced but does not exi
st, replaced by a fixed one
...

Hat jemand eine Idee, wie man dem entgegenwirken (oder diese Fehlermeldungen underdrücken) kann?

Besten Dank schon mal für eure Hilfe!

Freundliche Grüsse
- Andres

edico
21-08-2007, 20:27
Du hast die Syntax von label nicht begriffen; steht AFAIK in der manpage.

...
\subfloat[links oben %\label{fig:Bild1}
]{\includegraphics[width=0.48\textwidth]{images/pic1}\label{fig:Bild1}}
...

Da Du kein lauffähiges Minimalbeispiel gesendet hast, leider ungetestet.

edico

Cubo
22-08-2007, 00:38
Hallo Edico,

Besten Dank für deine Antwort, wenngleich mich diese nicht wirklich weitergebracht hat... Ich denke das mit den labels hab ich schon knapp begriffen...

Des weiteren habe ich die gepostete Code-Struktur direkt aus der auf dieser Seite empfohlenen Dokumentation zu Bildern entnommen:
http://homepage.sunrise.ch/mysunrise/dominikbischoff/l2picfaq/l2picfaq.pdf
(Seite 22, Thema subfig)... dort ist das mit den labels doch genauso gelöst, oder?... Trotzdem habe ich mal versucht, die Labels wie von dir vorgeschlagen umzustrukturieren, was aber zu keiner Besserung führte.

Oder habe ich dich falsch verstanden?

Minimalbeispiel bringt nichts...
Nach weiteren ... Stunden Code-Rumschieberei konnte ich die erhaltenen Fehler nicht mit einem Minimalbeispiel reproduzieren. Selbst, wenn ich die ganze präambel ins MB lade, läuft die subfig ohne Fehler und Probleme durch :confused:

IMHO muss also irgend ein Zusammenhang mit den subfigs und dem Gesamtdokument oder irgend einem Package vorhanden sein, wodurch diese Fehler produziert werden...

Nochmals nachgefragt:...

Kann jemand die oben aufgelisteten Warnings entziffern und ev. einen Hinweis geben?
Besteht eine Möglichkeit zur Unterdrückung der besagten Fehlermeldungen? (Der Output im PDF isch ja I.O.)


Über weitere Antworten würde ich mich sehr freuen...
-Andres

Ps. Das Gesamtprojekt wäre gratis per Mail abzugeben, falls jemand einen Blick rein werfen möchte... (2.5mb). Alternativ würde ich das Projekt gerne auch online stellen, habe aber hierzu keine Möglichkeit...

edico
22-08-2007, 07:41
Ja, ich habe mich geirrt! Sorry.
Deine Warnungen beziehen sich auf hyperref. Im Kontext 'dest' (AFAIK destination) - also Deinen Referenzierungen muss es doppelte, falsche, nicht vorhandene Wechselwirkungen geben.
Daher wäre der erste Schritt zu versuchen das Problem zu isolieren.
Es könnte auch an zu alten packages liegen?

Das Minimalbeispiel ...

\listfiles
\documentclass[a4paper,10pt,oneside,final]{book}
\usepackage{graphicx,subfig}
\captionsetup{labelfont=it}
\usepackage{hyperref}
\begin{document}
\listoffigures

\begin{figure}[htbp]
\centering
\subfloat[links oben \label{fig:Bild1}
]{\includegraphics[width=0.48\textwidth]{images/pic1}}
\hfill
\subfloat[rechts oben \label{fig:Bild2}
]{\includegraphics[width=0.48\textwidth]{images/pic2}}\\
\subfloat[links unten \label{fig:Bild3}
]{\includegraphics[width=0.48\textwidth]{images/pic3}}
\hfill
\subfloat[rechts unten \label{fig:Bild4}
]{\includegraphics[width=0.48\textwidth]{images/pic4}}
\caption{Bilder mit subfig}
\label{fig:bildermitsubfig}
\end{figure}

\end{document}

... läuft ohne Warnungen durch.

Also musst Du schon mal ein MB basteln. Dann findest Du auch selbst den Fehler ..

edico

sommerfee
22-08-2007, 08:40
Minimalbeispiel bringt nichts...
Nach weiteren ... Stunden Code-Rumschieberei konnte ich die erhaltenen Fehler nicht mit einem Minimalbeispiel reproduzieren. Selbst, wenn ich die ganze präambel ins MB lade, läuft die subfig ohne Fehler und Probleme durch :confused:

Dann probiere es doch andersherum: Nimm dein komplettes Dokument als Ausgangsbasis und versuche, so viel wie möglich darin zu löschen, ohne daß der Fehler verschwindet.

Liebe Grüße,
Axel

Cubo
22-08-2007, 13:17
@edico & @Axel:

Problem lokalisiert, aber nicht gelöst...
Danke für eure hilfreichen Tipps! Es war zwar sehr zeitaufwendig, jedoch konnte ich nun duch try&error die Problemstelle lokalisieren:


Die Fehlermeldungen treten nur auf, wenn auch Minilof im Spiel ist.
Das Minilof & die Subfigs werden zwar erstellt, allerdings stimmen die Verlinkungen der Subfigs im Minilof nicht...
Daraus folgt, dass auch Hyperref rein mischt, oder?


Minimalbeispiel:
Folgend habe ich nun ein (minimal-)Beispiel zusammengestellt, welches die besagten Fehlermeldungen reproduziert:



\listfiles
\documentclass[a4paper,10pt,oneside,final]{book}
\usepackage{graphicx,subfig}
\usepackage[nohints]{minitoc}

%\usepackage{hyperref}
\usepackage[ngerman,backref,bookmarks,plainpages=false,pdfpage labels,colorlinks,%
hypertexnames={false},% % Damit keine Fehlermeldung "same page(i)"
bookmarksopen={true},% % Klappt links im PDF-Dokument auf
bookmarksopenlevel={0},% % Gibt die Aufklapp-Tiefe im PDF an.. (0 = Chapterebene)
pdftitle={LaTeX-Vorlage},%
pdfauthor={Andres Graf},%
pdfcreator={LaTeX with hyperref},%
pdfsubject={LaTeX},%
linkcolor={blue},%
citecolor={blue},%
urlcolor={blue},%
]{hyperref}

%----------------------------------
\begin{document}

\dominitoc
\dominilof

\tableofcontents
\listoffigures

\chapter{subfig und minilof}
\label{sec:subfigUndMinilof}

\section{Problem}
\label{sec:Problem}

\minitoc
\mtcskip
\minilof

\section{Fragen}
\label{sec:Fragen}


%SUBFIG:
\begin{figure}[htbp]
\centering
\subfloat[links oben \label{fig:Bild1}
]{\includegraphics[width=0.48\textwidth]{images/pic1}}
\hfill
\subfloat[rechts oben \label{fig:Bild2}
]{\includegraphics[width=0.48\textwidth]{images/pic1}}\\
\subfloat[links unten \label{fig:Bild3}
]{\includegraphics[width=0.48\textwidth]{images/pic1}}
\hfill
\subfloat[rechts unten \label{fig:Bild4}
]{\includegraphics[width=0.48\textwidth]{images/pic1}}
\caption{Bilder mit subfig}
\label{fig:bildermitsubfig}
\end{figure}

\end{document}
%------------------------------


Fehlermeldungen:
Zur Übersicht nochmals die Fehlermeldungen:


...
--> wie unten mit 1.4
--> wie unten mit 1.3
--> wie unten mit 1.2
...
pdfTeX warning (dest): name{subfigure.1.1} has been referenced but does not exi
st, replaced by a fixed one
...


Resultierendes PDF:
--> Das MB erzeugt das angehängte PDF

Fragen:


Ist dieses Problem bekannt? (bin nicht fündig geworden...)
Sieht jemand einen Zusammenhang zwischen den Fehlermeldungen bezglich Minilof, Subfig & Hyperref?
Irgendwelche Vorschlge zum weiteren Vorgehen?

Ps. Das Problem ist behoben, wenn ich die minilofs weglasse. Diese werden
jedoch benötigt!

Recht herzlichen Dank schon mal für eure Hilfe...

Grüsse
-Andres

sommerfee
22-08-2007, 15:39
Danke für das Beispiel!

Ich habe mal ein wenig damit herumgespielt, aber auf die schnelle auch keine Lösung gefunden... :(

Hat das noch ein paar Tage Zeit? Dann werde ich dem am Wochenende mal ein wenig hinterhersteigen. Die hyperref-Anbindung in subfig ist leider etwas.....komisch und dies ist leider nicht das erste Beispiel, was mit der Kombination subfig+hyperref Probleme macht...

Liebe Grüße,
Axel

sommerfee
22-08-2007, 15:41
Dies Beispiel läuft anstandslos (mit an sich Deinen bekannten Daten) incl. minitoc package und hyperref durch.

Sobald ich dort ein \dominilof einfüge, gibt es aber wieder die gleichen Warnungen wie bei Andres Beispiel, zumindest bei mir (MikTeX 2.6, Update wöchentlich). Aus der log-Datei:

pdfTeX warning (dest): name{subfigure.1.4} has been referenced but does not e
xist, replaced by a fixed one

pdfTeX warning (dest): name{subfigure.1.3} has been referenced but does not exi
st, replaced by a fixed one

pdfTeX warning (dest): name{subfigure.1.2} has been referenced but does not exi
st, replaced by a fixed one

pdfTeX warning (dest): name{subfigure.1.1} has been referenced but does not exi
st, replaced by a fixed one

Ohne \dominilof kommen zwar diese Warnungen nicht, dafür aber (zurecht):

Package minitoc(hints) Warning: W0057
(minitoc(hints)) You have used \minilof,
(minitoc(hints)) but not \dominilof.

Gruß,
Axel

Cubo
22-08-2007, 16:07
Hallo Axel,

Wollte auch gerade auf edicos Beitrag antworten (gelöscht?)... jedenfalls fehlte da wie du schon schreibst das "\dominilof"...

Wenn dieser \dominilof-Befehl drinn ist, gibts wieder die selben Fehlermeldungen und Probleme wie vorgehend schon beschrieben...

Es würde mich natürlich riesig freuen, wenn du dich dieser Gelegenheit mal annehmen möchtest (auch, wenns erst am WE ist... lieber spät als gar nicht:))

Das Problem ist nur, dass ich die Vorlage eigentlich heute Abend abgeben sollte (was ohnehin nicht realistisch ist:() ... Es ist leider sehr schwierig, einem Word-User-Chef zu erklären, warum man sich mit solchen "LaTeX"-Problemen rumkämpft...

Über weitere Lösungsvorschläge würde ich mich deshalb sehr freuen...

Grüsse
-Andres

sommerfee
22-08-2007, 17:12
Über weitere Lösungsvorschläge würde ich mich deshalb sehr freuen...

Einfach die Unterabbildungen aus dem Abbildungsverzeichnis rausnehmen (geht mit \setcounter{lofdepth}{1} oder so ähnlich, sollte in der subfig-Doku zu finden sein), frei nach dem Motto dort lieber gar keine Hyperlinks als falsche Hyperlinks?

Gruß,
Axel

edico
22-08-2007, 17:52
Ja, den Beitrag hab ich schnell wieder eingezogen, da ich etwas übersehen hatte ;-)

Die Warnungen habe ich nur dann nicht, wenn ich
...
\subfloat[][]{\includegraphics[width=...
...
setze, also keine 'list_entry' und subcaptions.
Dann kann ich allerdings keine manuellen Überschriften definieren, sondern dann wird automatisch (a)...(d) für die Bilder geschrieben.

Die Links der einzelnen Bilder stimmen bei mir auch sowieso nicht ...

edico

P.S. ich habe folgende Variante zu oben vergessen (es ist mal wieder alles hektisch hier):
...
\subfloat[][links-oben]{\includegraphics[width....
...
Dann realisiere ich die Subcaptions, aber die Links fehlen. Die Warnungen tauchen allerdings auch nicht auf.

Cubo
23-08-2007, 23:52
Hallo und Besten Dank für eure Antworten!
(Sorry für die Verspätung, war etwas unter Stress)

Zwischenlösung1: @Axel
Die von dir vorgeschlagene Idee bez. \setcounter{lofdepth}{1} finde ich eine gute Zwischenlösung, da dann (falls das Problem irgendwann mal behoben ist) einfach diese zeile ausprozentuiert werden kann. Allerdings ist mir die Umsetzung nicht gelungen... der Befehl wurde einfach ignoriert (ist nichts passiert)... :confused:

Zwischenlösung2: @Edico
Auch diese Zwischenlösung finde ich gut(zweite Variante) (und funktioniert sogar:)). Falls das ganze (inkl. \labels) mal funktionieren sollte, muss allerdings eine ganze Menge Code rumgeschoben werden...

Stand nach 24h Latex:
Nach vielen weiteren Stunden try&error konnte ich das Problem etwas eingrenzen:

Das Problem liegt nicht bei \minilof des minitoc-Packages
Es muss ein Konflikt zwischen subfig und hyperref vorliegen

Dies habe ich aus den folgenden Facts geschlossen:

Wenn ich das subfig-Package mit den Optionen [lofdepth,lotdepth] lade, werden die Subfigs (jedes Subfig der Hauptfig untergeordnet) auch im normalen Abbildungsverzeichnis dargestellt. Dabei treten die selben Fehlermeldungen wie vorgehend beschrieben auf (hier mit deaktiviertem minilof).
Ich habe eine eigene Float-Umgebung names "Code" definiert. Diese habe ich fälschlicherweise VOR dem hyperref-Package platziert. Dadurch haben sich genau die gleichen Fehler wie bei den Subfigs ergeben (...replaced by a fixed one...). Nachdem diese Umgebung nach Hyperref platziert wurde, hat alles geklapt. --> Hyperref muss also im Spiel sein.
Interessant ist auch, dass die Seitenzahlen im Abbildungsverzeichnis / Minilof stimmen. Klickt man jedoch auf den Link, springt das Dokument zur ersten Seite des PDFs. --> Hyperref?



Offene Frage zum Tüfteln:

Kann jemand die oben dargestellten Feststellungen und Fehlermeldungen (weiter oben) zu einer Schlussfolgerung kombinieren? Gibt das irgendwie Sinn?


Lg
-Andres

Ps. hab irgendwo etwas bez. dem Package caption aufgeschnappt... könnte dieses ev. Probleme bereiten?

sommerfee
24-08-2007, 10:17
Die von dir vorgeschlagene Idee bez. \setcounter{lofdepth}{1} finde ich eine gute Zwischenlösung, da dann (falls das Problem irgendwann mal behoben ist) einfach diese zeile ausprozentuiert werden kann. Allerdings ist mir die Umsetzung nicht gelungen... der Befehl wurde einfach ignoriert (ist nichts passiert)... :confused:

Vielleicht hebelt minitoc diesen Mechanismus wieder aus!? Müsste ich mir mal anschauen... Versuche mal die Brutalomethode

\makeatletter
\let\@listsubcaptions\@gobble
\makeatother

nach dem Laden von subfig aus.



Offene Frage zum Tüfteln:

Kann jemand die oben dargestellten Feststellungen und Fehlermeldungen (weiter oben) zu einer Schlussfolgerung kombinieren? Gibt das irgendwie Sinn?


Ja, es ergibt Sinn, und ich hatte ja schon erwähnt, daß die hyperref-Unterstützung von subfig komisch ist und es nicht das einzige Problem dieser Art ist. Ohne Teile von subfig neu zu schreiben, wird man es wohl auch nicht lösen können.



Ps. hab irgendwo etwas bez. dem Package caption aufgeschnappt... könnte dieses ev. Probleme bereiten?

Wenn man subfig mit der Option "caption=false" lädt, wird das caption-Paket nicht mehr geladen. (Es wird dann zwar noch caption3.sty geladen, das ist aber nur ein Teilpaket, was subfig gewisse Mechanismen zur Verfügung stellt, und nichts mit Listeneinträgen oder hyperref am Hut hat.) Das ist aber das erste, was ich ausprobiert hatte, nachdem ich dein Beispiel bekommen hatte :D

Gruß,
Axel

Cubo
24-08-2007, 11:43
Hallo Axel, Zwischenlösung funktioniert:



\makeatletter
\let\@listsubcaptions\@gobble
\makeatother


Dein Vorschlag für die folgende Zwischenlösung funktioniert bestens! Ich werde fortan diese drei Zeilen nach dem subfig-Package laden.



...ohne Teile von subfig neu zu schreiben, wird man es wohl auch nicht lösen können...


... das heisst konkret abwarten und Tee trinken bis zur nächsten subfig-version? Wenn dem so ist, wundere ich mich nur, dass im Netz nicht mehr Probleme bez. subfig und den oben gezeigten Fehlermeldungen zu finden ist...

... Ein ähnliches Resultat kann ja auch mit dem multicol-Package erzeugt werden. Gibt es da noch sonst irgendwelche "Konkurrenz-Produkte"?

Ps. Mich würde interessieren, ob es hier Leute gibt, die subfig ohne Probleme im Einsatz haben (Vielleicht in Kombination mit anderen Packages?)?

- Lg
Andres

sommerfee
24-08-2007, 13:58
Hallo Andres,



... das heisst konkret abwarten und Tee trinken bis zur nächsten subfig-version?

Die wird es wohl leider nicht geben, zumindest nicht von Steven Cochran, dem Autor des Paketes. Ich werde deswegen auch, sobald caption v3.1 draußen ist, nachhaltig versuchen, das subfig-Paket übernehmen zu können. Deswegen sammele ich auch schon seit einiger Zeit Probleme, die das subfig-Paket betreffen. Sollte ich Steven immer noch nicht erreichen können, bestehen auch alternative Pläne, in Koorperation mit einem weiteren Paketautor. So oder so wird es eine Lösung geben. Gerade weil diesbezüglich auch viel Support bei mir anfällt - es ist eben oftmals für den User nicht offensichtlich, ob nun mein caption-Paket oder das subfig-Paket der Übeltäter ist - habe ich ein Eigeninteresse daran.



Wenn dem so ist, wundere ich mich nur, dass im Netz nicht mehr Probleme bez. subfig und den oben gezeigten Fehlermeldungen zu finden ist...

Doch, die gibt es, suche mal nach "subfig hyperref problems". Das gemeine hieran ist, daß man nur schwer eine Logik dahinter zu fassen bekommt. Manche Dokumente machen unerwartet Probleme, wenn man sie erweitert, manche, wenn man was wegläßt (jeweils ohne die Pakete, die das Dokument verwendet, zu ändern!), daher bin ich auch so froh um dein kleines Beispiel.

Ein weiteres Beispiel, was diesbezüglich Probleme macht, ist übrigens die subfig-Dokumentation selbst.



... Ein ähnliches Resultat kann ja auch mit dem multicol-Package erzeugt werden. Gibt es da noch sonst irgendwelche "Konkurrenz-Produkte"?

Wie ich schon andeutete, ist die hyperref-Unterstützung von subfig etwas komisch. Das führt dazu, daß es selbst ohne weitere Pakete Probleme geben kann, ich habe z.B. diesbezüglich ein Beispiel, welches wirklich nur subfig und hyperref lädt.

Ansonsten sind natürlich alle Pakete potentielle Stör-Kandidaten, die irgendwas mit dem Abbildungsverzeichnis machen.

Liebe Grüße,
Axel

Cubo
24-08-2007, 15:16
Hallo Axel,



...werde ich nachhaltig versuchen, das subfig-Paket übernehmen zu können...

Sehr interessant! Ist mir eine Ehre, mich mit einem zukünftigen subfig-entwickler unterhalten zu dürfen! ;-) Ich wünsch dir auf alle Fälle schon jetzt viel Erfolg dabei und werde sicherlich zu den ersten Anwerndern gehören... Zwischenzeitlich werde ich (und die Studis) mit deinen drei Zeilen Code leben können.



...daher bin ich auch so froh um dein kleines Beispiel...

...gern geschehen ;-)

Da ich an dir scheinbar einen Experten bezüglich Hyperref und Co. gefunden habe, möchte ich die Gelegenheit nicht auslassen, dich gleich mit einem weiteren Problem zu konfrontieren (oder sollte ich lieber einen neuen Thread auf machen?)

Index-Verlinkung stimmt nicht (angezeigte Seitenzahlen schon):

Habe folgendes Problem mit dem erzeugten Index:

Index wird wie gewünscht erstellt
Angezeigte Seitenzahlen stimmen....
Jedoch springen die Links (die den Seitenzahlen hinterlegt sind) nicht zur richtigen Stelle im Dokument
...interessant ist, dass diese Links zwar zu der im PDF gedruckten Seitenzahl springen, jedoch immer abzüglich der Anzahl Seiten im \frontmatter...
Beispiel: Ich habe 10 Seiten \frontmatter (i, ii, iii ...). Auf Seite 15 (inkl. frontmatter = Seite 25) habe ich einen Index-Eintrag erstellt. Dieser Eintrag wird im Indexverzeichnis korrekt mit der Seitenzahl 15 angezeigt. Klicke ich nun auf den Link, gelange ich auf Seite 5 (Seite 15 Mainmatter - 10 Seiten Frontmatter = S5)


... scheint also irgend ein Offset-Fehler bei Hyperref zu sein...

Siehst du da vielleicht gleich eine Lösung? Ein Minimalbeispiel wird wohl hier sehr schwierig... Falls diese benötigt wird, werde ich dieses nachliefern, dauert aber bestimmt länger...

Besten Dank schon mal! ... Und das mit den Subfigs funktioniert ja mit kleinen Einschränkungen bestens....

Lg
- Andres

sommerfee
24-08-2007, 15:40
Hallo Andres,



Da ich an dir scheinbar einen Experten bezüglich Hyperref und Co. gefunden habe

Nö :D

Im Ernst: Meine hyperref-Kenntnisse sind sehr lokal, die Dinge, die mein caption-Paket betreffen (also die "Einmischung" von hyperref in \caption, dem Abbildungsverzeichnis sowie dem float- und dem longtable-Paket, Setzen von Ankern etc.), kenne ich sehr gut, den Rest eigentlich überhaupt nicht, da bin dann auch "nur" Anwender.

Bzgl. deines Indexproblemes habe ich keine Ahnung.


(oder sollte ich lieber einen neuen Thread auf machen?)

Halte ich für eine gute Idee.

Liebe Grüße,
Axel