PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Caption unter Bild IN Longtable



Xabbu83
09-04-2008, 16:48
Hi.

Ich möchte in einer Tabelle mehrere Bilder einfüge und diese mit captions versehen. Jedoch scheitern bei mir sowohl Versuche mit \captionof aus cap-of und mit \figcaption aus nofloat.

Könnte mir daher bitte jemand im Beispiel unten IRGENDWIE eine Caption für die Rechtecke einfügen? Die Rechtecke sollen übrigens Bilder sein und als solche mit Abbildung bezeichnet werden landen.



\documentclass[12pt]{scrartcl} %draft
\usepackage[T1]{fontenc}
\usepackage{graphicx,color,tabularx,ngerman,longta ble}
\usepackage[latin1]{inputenc}

\begin{document}

\begin{longtable}{|p{0.4\textwidth}|p{0.4\textwidt h}|}
\hline
\rule{1cm}{1cm} & \begin{minipage}{6cm}\rule{1cm}{1cm}\end{minipage} \\
\hline
\end{longtable}

\end{document}


Danke
Xabbu

voss
09-04-2008, 16:57
Hi.

Ich möchte in einer Tabelle mehrere Bilder einfüge und diese mit captions versehen. Jedoch scheitern bei mir sowohl Versuche mit \captionof aus cap-of und mit \figcaption aus nofloat.

Könnte mir daher bitte jemand im Beispiel unten IRGENDWIE eine Caption für die Rechtecke einfügen? Die Rechtecke sollen übrigens Bilder sein und als solche mit Abbildung bezeichnet werden landen.



\documentclass[12pt]{scrartcl} %draft
\usepackage[T1]{fontenc}
\usepackage{graphicx,color,tabularx,ngerman,longta ble}
\usepackage[latin1]{inputenc}

\begin{document}

\begin{longtable}{|p{0.4\textwidth}|p{0.4\textwidt h}|}\hline
\caption{Ich bin eine Caption}\label{foo}\\
\rule{1cm}{1cm} & \begin{minipage}{6cm}\rule{1cm}{1cm}\end{minipage} \\
\hline
\end{longtable}

\end{document}



in der longtable wie eine normale Tabellenzeile. Mehr Infos durch


texdoc longtable

Herbert

Xabbu83
09-04-2008, 18:41
Ich habe mich scheinbar undeutlich ausgedrückt. Ich möchte keine Caption für die Tabelle haben, sondern Captions für die Bilder, die in der Tabelle sind.

Als Anhang hab ich meinen Wunsch nochmal als Bild angehängt.
Die Beschriftung hab ich von Hand gemacht, also das Problem ist noch nicht gelöst. ("Von Hand" ginge im Notall auch, aber dann ist das Ergebniss nicht so formatiert wie andere Captions im Dokument und es kommt auch nicht ins Abbildungsverzeichnis.)

voss
09-04-2008, 21:00
Ich habe mich scheinbar undeutlich ausgedrückt. Ich möchte keine Caption für die Tabelle haben, sondern Captions für die Bilder, die in der Tabelle sind.

Als Anhang hab ich meinen Wunsch nochmal als Bild angehängt.
Die Beschriftung hab ich von Hand gemacht, also das Problem ist noch nicht gelöst. ("Von Hand" ginge im Notall auch, aber dann ist das Ergebniss nicht so formatiert wie andere Captions im Dokument und es kommt auch nicht ins Abbildungsverzeichnis.)


\documentclass[12pt]{scrartcl} %draft
\usepackage[T1]{fontenc}
\usepackage{calc,caption}
\usepackage[latin1]{inputenc}

\begin{document}
\noindent
\fbox{\minipage{0.5\textwidth-2\fboxrule-2\fboxsep}\centering
\rule{1cm}{1cm}
\captionof{figure}{Ich bin eine Caption}
\endminipage}%
\fbox{\minipage{0.5\textwidth-2\fboxrule-2\fboxsep}\centering
\rule{1cm}{1cm}
\captionof{figure}{Ich bin noch eine Caption}
\endminipage}

\end{document}

Herbert

bischi
09-04-2008, 23:41
Oder anstatt Packet caption auch Packe capt-of (und gleicher Befehl). Vgl. l2picfaq.pdf ...

MfG Bischi

Xabbu83
10-04-2008, 06:09
Die l2picfaq hab ich auch schon gelesen. Ich nehme an, du beziehst dich auf Seite 15-16.

Leider funktioniert das nicht, was da empfohlen wird. Ich verstehe das jedenfalls so:




\documentclass[12pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{graphicx,tabularx,ngerman,longtable}
\usepackage[latin1]{inputenc}
\usepackage{caption}
%\usepackage{capt-of}


\begin{document}

\begin{longtable}{|p{0.4\textwidth}|p{0.4\textwidt h}|}\hline
\rule{1cm}{1cm} &
\begin{minipage}{5cm}
\rule{1cm}{1cm}%
\captionof{figure}{Caption}%
\end{minipage}\\
\hline
\end{longtable}

\end{document}



egal, ob man caption oder capt-of verwendet, es funktioniert nicht. In l2picfaq wird immerhin auch kein Beispiel gegeben, sondern es wird nur gesagt, dass das damit irgendwie möglich ist. Wie genau steht da nicht.

Hier mal meine Fehlerausgabe, falls jemand was damit anfangen kann.



tab2.tex(13): Fehler: ! Misplaced \noalign.
tab2.tex(13): Fehler: ! Misplaced \noalign.
tab2.tex(13): Fehler: ! Misplaced \omit.
tab2.tex(13): Fehler: ! Extra }, or forgotten \endgroup.
tab2.tex(13): Fehler: ! Missing \endgroup inserted.
tab2.tex(13): Fehler: ! Missing } inserted.
tab2.tex(13): Fehler: ! Missing \endgroup inserted.
tab2.tex(13): Fehler: ! Missing } inserted.
tab2.tex(13): Fehler: ! Extra alignment tab has been changed to \cr.
tab2.tex(14): Fehler: ! Missing } inserted.
tab2.tex(14): Fehler: ! Missing \cr inserted.
tab2.tex(14): Fehler: ! Missing } inserted.
tab2.tex(14): Fehler: ! Extra }, or forgotten \endgroup.
tab2.tex(14): Fehler: ! Undefined control sequence.
tab2.tex(1): Fehler: ! File ended while scanning use of \@iiiparbox.
tab2.tex(1): Fehler: ! Emergency stop.


@voss: Das was ich hier zeige ist nur ein Minimalbeispiel. Die eigentliche Tabelle geht nachher über ca 4 Seiten, die Lösung mit den fboxen ist daher nicht möglich.

Danke schonmal fürs mitgrübeln
Xabbu

voss
10-04-2008, 10:46
Das was ich hier zeige ist nur ein Minimalbeispiel. Die eigentliche Tabelle geht nachher über ca 4 Seiten, die Lösung mit den fboxen ist daher nicht möglich.


das ist doch völlig egal, ob du fboxen oder eine Tabelle nimmst???


\documentclass[12pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{graphicx,tabularx,ngerman,longtable}
\usepackage[latin1]{inputenc}
\usepackage{caption}
\newcommand\Caption[1]{\par\vspace{\abovecaptionskip}%
\refstepcounter{figure}%
\addcontentsline{lof}{subsection}{#1}%
Abbildung~\thefigure: #1}

\begin{document}

\begin{longtable}{|p{0.4\textwidth}|p{0.4\textwidt h}|}\hline
\rule{1cm}{1cm} \Caption{meine Unterschrift}\label{Foo}&
\begin{minipage}{5cm}
\rule{1cm}{1cm}%
\Caption{Caption}%
\end{minipage}\\
\hline
\end{longtable}

Wie Tabelle~\ref{Foo} zeigt, blah ...

\listoffigures

\end{document}

Herbert

Xabbu83
10-04-2008, 15:31
Einen herzlichen Dank schonmal für die Lösung des "Caption in der Tabelle" Problems. Daran sich den Befehl selbst zu definieren hatte ich noch garnicht gedacht (und ich hätte es wohl auch nicht hinbekommen). Das Problem ist auch FAST gelöst, nur fehlen unten im Abbildungsverzeichnis noch die Abbildungsnummern zu deinem Captionbefehl. Wie bekommt man die im richtigen Abstand vor den Abbildungstitel? (siehe angeh. PDF)




\documentclass[12pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{graphicx,tabularx,ngerman,longtable,am smath}
\usepackage[latin1]{inputenc}
\usepackage{caption}

\newcommand\Caption[1]{\par\vspace{\abovecaptionskip}%
\refstepcounter{figure}%
\addcontentsline{lof}{subsection}{#1}%
Abbildung~\thefigure: #1}

\numberwithin{figure}{section}

\begin{document}
%Normale Figure
\begin{figure}\rule{2cm}{1cm}\caption{normales /caption in Figure}\end{figure}

%mit \captionof
\rule{3cm}{2cm}\\ \captionof{figure}{Der /captionof im normalen Text}

%Die longtable
\begin{longtable}{|p{0.3\textwidth}|p{0.7\textwidt h}|}\hline
text Bla Bla \par text Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla text \par text Bla
&
\begin{minipage}[t]{\linewidth}\vspace{0.1mm}\centering\rule{3cm}{3cm } \Caption{Der /Captionbefehl von voss}\vspace{0.1mm}\end{minipage}\\
\hline
\end{longtable}

\listoffigures

\end{document}



@voss: Das geht mit den fboxen (meiner Meinung nach) nicht, weil die Zellen alle verschieden viel Inhalt haben. Das wäre ein riesiges Gefummel die ganzen Boxen über 4 Seiten hinweg alle gleichlang zu halten, damit man noch von Tabellenzeilen reden kann.

voss
10-04-2008, 17:03
Einen herzlichen Dank schonmal für die Lösung des "Caption in der Tabelle" Problems. Daran sich den Befehl selbst zu definieren hatte ich noch garnicht gedacht (und ich hätte es wohl auch nicht hinbekommen). Das Problem ist auch FAST gelöst, nur fehlen unten im Abbildungsverzeichnis noch die Abbildungsnummern zu deinem Captionbefehl. Wie bekommt man die im richtigen Abstand vor den Abbildungstitel? (siehe angeh. PDF)




\documentclass[12pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{graphicx,tabularx,ngerman,longtable,am smath}
\usepackage[latin1]{inputenc}
\usepackage{caption}

\newcommand\Caption[1]{\par\vspace{\abovecaptionskip}%
\refstepcounter{figure}%
\addcontentsline{lof}{figure}{\protect\numberline{ \thefigure}{\ignorespaces #1}}%
Abbildung~\thefigure: #1}

\numberwithin{figure}{section}

\begin{document}
%Normale Figure
\begin{figure}\rule{2cm}{1cm}\caption{normales /caption in Figure}\end{figure}

%mit \captionof
\rule{3cm}{2cm}\\ \captionof{figure}{Der /captionof im normalen Text}

%Die longtable
\begin{longtable}{|p{0.3\textwidth}|p{0.7\textwidt h}|}\hline
text Bla Bla \par text Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla text \par text Bla
&
\begin{minipage}[t]{\linewidth}\vspace{0.1mm}\centering\rule{3cm}{3cm } \Caption{Der /Captionbefehl von voss}\vspace{0.1mm}\end{minipage}\\
\hline
\end{longtable}

\listoffigures

\end{document}




siehe oben ...

Herbert

sommerfee
10-04-2008, 17:39
Alternative Idee statt einem eigenen \Caption:



\documentclass[12pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{graphicx,tabularx,ngerman,longtable,am smath}
\usepackage[latin1]{inputenc}
\usepackage{caption}
\AtBeginDocument{\let\OrigCaption\caption}

\numberwithin{figure}{section}

\begin{document}
%Normale Figure
\begin{figure}\rule{2cm}{1cm}\caption{normales /caption in Figure}\end{figure}

%mit \captionof
\rule{3cm}{2cm}\\ \captionof{figure}{Der /captionof im normalen Text}

%Die longtable
\begin{longtable}{|p{0.3\textwidth}|p{0.7\textwidt h}|}\hline
text Bla Bla \par text Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla text \par text Bla
&
\begin{minipage}[t]{\linewidth}%
\vspace{0.1mm}\centering\rule{3cm}{3cm}%
\let\caption\OrigCaption
\captionof{figure}{Der /Captionbefehl von voss}%
\vspace{0.1mm}%
\end{minipage}\\
\hline
\end{longtable}

\listoffigures

\end{document}


Der Vorteil wäre, daß alle beim caption-Paket eingestellten Optionen auch hier greifen.

Xabbu83
10-04-2008, 18:38
Herzlichen Dank, Voss Lösung mit dem neuen Befehl funktioniert einwandfrei. In Verbindung mit \includegraphicstotab aus l2picfaq läuft jetzt alles prima.

Danke
Xabbu

voss
10-04-2008, 19:00
Alternative Idee statt einem eigenen \Caption:
Der Vorteil wäre, daß alle beim caption-Paket eingestellten Optionen auch hier greifen.

Axel,
kannst du das nicht irgendwie in caption einbauen?

Herbert

sommerfee
10-04-2008, 20:11
Axel,
kannst du das nicht irgendwie in caption einbauen?

Du meinst z.B. ein \Caption, \CaptionOf, \CaptionSetup, welches in Umgebungen wie longtable, SCfigure etc. die ursprünglichen Befehle anstelle der durch die Umgebung umdefinierten verwendet? Ja, daran habe ich auch schon gedacht, als ich obrigen Beitrag verfasst hatte.

Vorschläge für die Benennung? Die Befehle mit erstem großen Buchstaben haben sich ja für Kommandos eingebürgert, die in die Präambel gehören, wie wäre es also mit \origcaption usw.? Hmm, gefällt mir nicht, bessere Vorschläge für die Benennung?

Liebe Grüße,
Axel

voss
10-04-2008, 20:28
Du meinst z.B. ein \Caption, \CaptionOf, \CaptionSetup, welches in Umgebungen wie longtable, SCfigure etc. die ursprünglichen Befehle anstelle der durch die Umgebung umdefinierten verwendet? Ja, daran habe ich auch schon gedacht, als ich obrigen Beitrag verfasst hatte.

Vorschläge für die Benennung? Die Befehle mit erstem großen Buchstaben haben sich ja für Kommandos eingebürgert, die in die Präambel gehören, wie wäre es also mit \origcaption usw.? Hmm, gefällt mir nicht, bessere Vorschläge für die Benennung?


Vielleicht sollte man lieber eine Option einführen, damit es nicht noch
einen neuen Befehl gibt. Beispielsweise \captionsetup{table=true} .

Oder alternativ captionof gleich so umdefinieren, dass es geht.

Was meinst du?

Herbert

sommerfee
10-04-2008, 20:41
Vielleicht sollte man lieber eine Option einführen, damit es nicht noch
einen neuen Befehl gibt. Beispielsweise \captionsetup{table=true} .

Man könnte \captionsetup{type=figure} so gestalten, daß \caption etc. wieder passend richtig besetzt werden. ABER: \captionsetup ist innerhalb dieser Umgebungen auch umdefiniert, und jetzt innerhalb dieser Umgebungen das Argument zu parsen, um ein "type=" zu erkennen... Aber auf der anderen Seite wäre das vielleicht wirklich die beste Einbindung. Ich denke darüber nach und spiele am Wochenende mal ein wenig damit rum...


Oder alternativ captionof gleich so umdefinieren, dass es geht.

Da \captionof nur aus \captionsetup{type*=xxx} + \caption besteht, wäre das dann damit sowieso gleich mit abgefrühstückt.

Danke für die gute Idee!

Liebe Grüße,
Axel

bischi
07-09-2008, 12:15
Hallo Axel,

ist das Problem jetzt eigentlich in der neuen Caption-Version gelöst?

MfG Bischi

sommerfee
07-09-2008, 12:34
Nein. Ich hatte ein wenig damit herumgespielt, aber es zeichnete sich schnell ab, daß das nicht mit einer speziellen \captionsetup-Option oder gar völlig automatisch innerhalb weniger Stunden implementierbar ist, also ist das ganze erstmal in meine TODO-Liste für später gewandert, sorry.

Was aber einfach ginge, wäre ein Behelfsbefehl a la \RestoreCaptionCommands, den man dann in die Minipage schreiben müsste und der dann \caption, \captionsetup, \captionlistentry etc. auf die "normalen" Befehle zurücksetzt. Wäre das ausreichend?

Gruß,
Axel

bischi
07-09-2008, 13:15
Nein. Ich hatte ein wenig damit herumgespielt, aber es zeichnete sich schnell ab, daß das nicht mit einer speziellen \captionsetup-Option oder gar völlig automatisch innerhalb weniger Stunden implementierbar ist, also ist das ganze erstmal in meine TODO-Liste für später gewandert, sorry.

Kein Problem :D


Was aber einfach ginge, wäre ein Behelfsbefehl a la \RestoreCaptionCommands, den man dann in die Minipage schreiben müsste und der dann \caption, \captionsetup, \captionlistentry etc. auf die "normalen" Befehle zurücksetzt. Wäre das ausreichend?

Was hältst du von folgender Lösung:



\documentclass[12pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{graphicx,tabularx,ngerman,longtable}
\usepackage[latin1]{inputenc}

\usepackage{caption}
\AtBeginDocument{\let\OrigCaption\caption}
\newcommand{\UseCaptionofInLongtable}{\let\caption \OrigCaption}

\begin{document}

\begin{longtable}{|p{0.4\textwidth}|p{0.4\textwidt h}|}\hline
\rule{1cm}{1cm} &
\begin{minipage}{5cm}
\rule{1cm}{1cm}%
\UseCaptionofInLongtable
\captionof{figure}{Bildunterschrift}%
\end{minipage}\\
\hline
\end{longtable}

\end{document}


Mfg Bischi

PS: Das könnte man dann so als "Hack" ins l2picfaq.pdf aufnehmen - und du informierst mich dann einfach, sobald du das sauber gelöst hast ;)

sommerfee
10-09-2008, 20:02
PS: Das könnte man dann so als "Hack" ins l2picfaq.pdf aufnehmen - und du informierst mich dann einfach, sobald du das sauber gelöst hast ;)

Ok. Ich werde sowieso demnächst Anpassungen an die kommende hypcap-Version vornehmen, vielleicht/hoffentlich springt dann bei der Gelegenheit auch eine bessere Lösung für dieses Problem raus. Ich habe auch schon einige Ideen, aber noch keine Zeit gefunden, die Realisierung zu prüfen.

Liebe Grüße,
Axel