subfig erkennt \subfiglabelskip nicht

Tabellen und Grafiken erstellen und anordnen


guy.brush™
Forum-Century
Forum-Century
Beiträge: 185
Registriert: So 8. Aug 2010, 19:43
Wohnort: Earth

subfig erkennt \subfiglabelskip nicht

Beitrag von guy.brush™ »

Hallo,

ich habe ein paar Bilder mithilfe des subfig Paketes eingebunden. Das ganze sieht ungefähr wie folgt aus:
  \begin{figure}
    \centering
    \subfloat[][]{\label{fig:baeume2:baum1}\subimport{chapter5/img/}{baum1.pdf_tex}}
    \quad
    \subfloat[][]{\label{fig:baeume2:baum2}\subimport{chapter5/img/}{baum2.pdf_tex}}
    \quad
    \subfloat[][]{\label{fig:baeume2:baum3}\subimport{chapter5/img/}{baum3.pdf_tex}}
    \quad
    \subfloat[][]{\label{fig:baeume2:baum4}\subimport{chapter5/img/}{baum4.pdf_tex}}\\
    \subfloat[][]{\label{fig:baeume2:baum5}\subimport{chapter5/img/}{baum5.pdf_tex}}
    \caption{blablabla}
    \label{fig:baeume2}
  \end{figure}
Sprich, die Bildunterschriften der subfloats bestehen nur aus (a), etc. ohne Text dahinter. Jetzt habe ich im Handbuch zum alten subfigure und zum neuen subfig Paket gelesen, dass hinter dem Counter noch etwas Platz gemacht wird, weshalb der Counter nicht mittig unter dem Bild steht. Als Lösung solle man \subfiglabelskip=0pt setzen. Allerdings heißt es dann "undefinied control sequence". Wieso? Warum funktioniert das nicht? Am liebsten hätte ich es sogar, wenn \subfiglabelskip=0pt nur für diese eine figure-Umgebung auf 0 gesetzt wird.

Hier ein Minimalbeispiel:
\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{subfig}
\usepackage{caption}
\usepackage{import}

\begin{document}
\subfiglabelskip=0pt
\end{document}
Bilder habe ich hier noch nicht eingefügt, weil es auch so schon eine Fehlermeldung produziert.

Auch ein \setlength{\subfiglabelskip){0pt} funktioniert nicht und es ist egal, ob es vor oder nach \begin{document} auftaucht, es funktioniert in keinem der Fälle. Wenn ich \subfiglabelskip=0pt vor \begin{document} setze, erhalte ich sogar noch die Fehlermeldung "Missing \begin{document}. \subfiglabelskip=".



Was ich auch noch nicht ganz verstanden habe, ist, ob ich \ref auch so definieren kann (nur für subfloats), dass der Output nicht etwa "42.a" ist, sondern "42 (a)" ist?


Viele Grüße,

\\ guy.brush
Arch Linux - KDE - TeXLive - Kile - \me = Advanced Newbie

Interessensschwerpunkte: Mathematik- und Formelsatz sowie mathematische (Mikro-)Typographie
Offenes Problem: negierte \xarrow-Pfeile beliebiger Länge

sommerfee
Forum-Century
Forum-Century
Beiträge: 219
Registriert: Sa 12. Jul 2008, 08:02

Re: subfig erkennt \subfiglabelskip nicht

Beitrag von sommerfee »

guy.brush™ hat geschrieben:Jetzt habe ich im Handbuch zum alten subfigure und zum neuen subfig Paket gelesen, dass hinter dem Counter noch etwas Platz gemacht wird, weshalb der Counter nicht mittig unter dem Bild steht.
Wo steht das im Handbuch zum neuen subfig-Paket? Wenn es in deinem Falle so ist, daß die Beschriftung (a), (b), ... nicht mittig unter dem Bild steht, dann ist es ein Bug, entweder im subfig- oder aber im caption-Paket.
Als Lösung solle man \subfiglabelskip=0pt setzen. Allerdings heißt es dann "undefinied control sequence". Wieso? Warum funktioniert das nicht?
Es funktioniert nicht, weil es die Länge \subfiglabelskip im subfig-Paket schlicht und einfach nicht gibt, also kann man die auch nicht setzen.

Liebe Grüße,
Axel

guy.brush™
Forum-Century
Forum-Century
Beiträge: 185
Registriert: So 8. Aug 2010, 19:43
Wohnort: Earth

Beitrag von guy.brush™ »

Im subfig manual auf Seite 44 (bzw. 52 in der pdf-Seite)

However, by default the caption may not be perfectly centered, so \subfiglabelskip is reduced to zero points to ensure that there is not any extra space hidden in the sub-caption.
Arch Linux - KDE - TeXLive - Kile - \me = Advanced Newbie

Interessensschwerpunkte: Mathematik- und Formelsatz sowie mathematische (Mikro-)Typographie
Offenes Problem: negierte \xarrow-Pfeile beliebiger Länge

sommerfee
Forum-Century
Forum-Century
Beiträge: 219
Registriert: Sa 12. Jul 2008, 08:02

Beitrag von sommerfee »

guy.brush™ hat geschrieben:Im subfig manual auf Seite 44 (bzw. 52 in der pdf-Seite)
Tatsache! :shock:

Aber es ist trotzdem definitiv falsch. Beim subfigure-Paket war es so, aber beim subfig-Paket wird stattdessen geprüft, ob der Text leer ist, und wenn ja wird hinter (a) usw. nichts (und damit auch kein zusätzliches Leerzeichen) gesetzt, was die Zentrierung kaputt machen würde. Das haben Steven und ich extra so eingebaut.

(Und der Text ist eine Erläuterung zum Code, und in dem Code ist kein \subfiglabelskip zu finden, also ist es inkonsistent.)

Der Prozess, der vom subfigure-Paket zum subfig-Paket geführt hat, und auch parallel vom caption-Paket 1/2 zum caption-Paket 3, war ein kontinuierlicher, und keiner, der zuerst komplett am Reißbrett entworfen worden war. Da ist während der Entwicklung vieles von Steven (= subfigure- und subfig-Autor) und mir (= caption-Autor) umgeworfen und dann doch anders gemacht worden. Dieser Satz in der Dokumentation ist wohl ein Überbleibsel dieses Prozesses, welcher übersehen worden ist.

guy.brush™
Forum-Century
Forum-Century
Beiträge: 185
Registriert: So 8. Aug 2010, 19:43
Wohnort: Earth

Beitrag von guy.brush™ »

Hehe, ja, das Beispiel war auch noch im Handbuch zum alten subfigure Paket :). Dort stand das auch noch mit im Quellcode. Also mein Output sieht wie folgt aus:

Bild

Die Beschriftung (a) bis (e) kommt von den subfloats, der ganze Rest inkl. (1) bis (4) sieht Teil der Bilder bzw. dazugehörigen Beschriftungsdateien. Bei dem Bild handelt es sich um ein Ausschnit eines Screenshots von der kompilierten .pdf Datei.


Dabei sieht ein einzelnes Bild z.B. so aus: *klick*


Ich habe die Bilder via Inkscape gemacht und als .pdf gespeichert mit der zusätzlichen Option, dass der Text nicht im .pdf, sondern als .tex Datei gespeichert wird. Der Quelltext sieht dann wie in meinem Startpost aus.



Edit: Obwohl es heißt, subfig benötige das caption Paket, so funktioniert das auch ohne. Keine Ahnung, ab wann man es bräuchte. Ich nutze ja eher nur Basisfunktionen des subfig Paktes :).
Arch Linux - KDE - TeXLive - Kile - \me = Advanced Newbie

Interessensschwerpunkte: Mathematik- und Formelsatz sowie mathematische (Mikro-)Typographie
Offenes Problem: negierte \xarrow-Pfeile beliebiger Länge

sommerfee
Forum-Century
Forum-Century
Beiträge: 219
Registriert: Sa 12. Jul 2008, 08:02

Beitrag von sommerfee »

guy.brush™ hat geschrieben:Also mein Output sieht wie folgt aus:
Da fallen mir spontan folgende Gründe ein:

1. Du hast irgendwelche Ränder, Formatierungen etc. für die Beschriftungen gesetzt, die dieses Ergebnis verursachen.

oder

2. Die Bilder selbst sind nicht zentriert, d.h. der weiße Rand um sie herum ist nicht gleichartig. Das kann man am einfachsten überprüfen, indem man die Bilder in eine \fbox{...} setzt.
Dabei sieht ein einzelnes Bild z.B. so aus: *klick*
Ich habe daraus mal folgendes Beispiel gebastelt und kann keinen Fehler entdecken, bei mir sind die Beschriftungen perfekt zentriert:
\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{subfig}
%\usepackage{import}
\usepackage{graphicx}

\begin{document}
\begin{figure} 
    \centering
    \subfloat[][]{\label{fig:baeume2:baum1}\fbox{\includegraphics{baum2}}}
    \quad
    \subfloat[][]{\label{fig:baeume2:baum2}\includegraphics{baum2}}
    \quad
    \subfloat[][]{\label{fig:baeume2:baum3}\includegraphics{baum2}}
    \quad
    \subfloat[][]{\label{fig:baeume2:baum4}\includegraphics{baum2}}\\
    \subfloat[][]{\label{fig:baeume2:baum5}\includegraphics{baum2}}
    \caption{blablabla}
    \label{fig:baeume2}
  \end{figure}
\end{document}
Obwohl es heißt, subfig benötige das caption Paket, so funktioniert das auch ohne.
Nein, das subfig-Paket lädt automatisch das caption-Paket. Wenn du in die Log-Datei deines Dokumentes schaust, wirst du sehen, daß es daher auch ohne explizites \usepackage{caption} geladen wird.

Liebe Grüße,
Axel

guy.brush™
Forum-Century
Forum-Century
Beiträge: 185
Registriert: So 8. Aug 2010, 19:43
Wohnort: Earth

Beitrag von guy.brush™ »

Hmm...ja, das kann sein. Den Text speichere ich extra in einer .tex Datei. Ich habe die file gerade nur überflogen, aber ich vermute fast, dass es daran liegt. Werde es nachher oder morgen genauer anschauen, muss gerade noch etwas anderes machen.

Die Datei, die von Inkscape generiert wird, sieht dabei so aus:
%% Creator: Inkscape inkscape 0.48.1, www.inkscape.org
%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
%% Accompanies image file 'baum2.pdf' (pdf, eps, ps)
%%
%% To include the image in your LaTeX document, write
%%   \input{<filename>.pdf_tex}
%%  instead of
%%   \includegraphics{<filename>.pdf}
%% To scale the image, write
%%   \def\svgwidth{<desired width>}
%%   \input{<filename>.pdf_tex}
%%  instead of
%%   \includegraphics[width=<desired width>]{<filename>.pdf}
%%
%% Images with a different path to the parent latex file can
%% be accessed with the `import' package (which may need to be
%% installed) using
%%   \usepackage{import}
%% in the preamble, and then including the image with
%%   \import{<path to file>}{<filename>.pdf_tex}
%% Alternatively, one can specify
%%   \graphicspath{{<path to file>/}}
%% 
%% For more information, please see info/svg-inkscape on CTAN:
%%   http://tug.ctan.org/tex-archive/info/svg-inkscape

\begingroup
  \makeatletter
  \providecommand\color[2][]{%
    \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}
    \renewcommand\color[2][]{}%
  }
  \providecommand\transparent[1]{%
    \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}
    \renewcommand\transparent[1]{}%
  }
  \providecommand\rotatebox[2]{#2}
  \ifx\svgwidth\undefined
    \setlength{\unitlength}{34.4pt}
  \else
    \setlength{\unitlength}{\svgwidth}
  \fi
  \global\let\svgwidth\undefined
  \makeatother
  \begin{picture}(1,1)%
    \put(0,0){\includegraphics[width=\unitlength]{baum2.pdf}}%
    \put(0.14388825,-0.03083339){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$i$}}}%
    \put(0.792852,0.86626436){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$j$}}}%
  \end{picture}%
\endgroup
Ist leider immer etwas Gefrickel, bis der Text an der richtigen Stelle steht, da in Inkscape dann ja immer der Code steht und nicht der Output.
Arch Linux - KDE - TeXLive - Kile - \me = Advanced Newbie

Interessensschwerpunkte: Mathematik- und Formelsatz sowie mathematische (Mikro-)Typographie
Offenes Problem: negierte \xarrow-Pfeile beliebiger Länge

sommerfee
Forum-Century
Forum-Century
Beiträge: 219
Registriert: Sa 12. Jul 2008, 08:02

Beitrag von sommerfee »

guy.brush™ hat geschrieben:Die Datei, die von Inkscape generiert wird, sieht dabei so aus:
Und diese Datei mit \subimport importiert und in eine \fbox gesetzt, sieht so aus:
Dateianhänge
baum2.png
baum2.png (2.23 KiB) 2656 mal betrachtet

Antworten