PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bilder in Tabelle ...



Huschpuscheldi
24-07-2010, 19:28
Hallo!
Schon wieder komm ich nicht weiter.
Ich möchte eine Tabelle erstellen in der Bilder zu sehen sind. Diese Bilder sollen in ihrer Zelle zentriert sein und eine Bildunterschrift haben. Aber diese Bilder sollen nicht im Abbildungsverzeichnis erscheinen und auch nicht durchnummeriert sein, so wie normale Bilder mitten im Text. Nur die Tabelle soll im Tabellenverzeichnis erscheinen.
Ich hoffe das war verständlich...

Soweit bin ich:

\documentclass[12pt,pdftex,a4paper]{scrreprt}
\usepackage{ngerman}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{bibgerm}
\usepackage{graphicx}

\begin{document}
\begin{table}
\begin{center}
\begin{tabular}{|c|c|c|c|c|c|c|}
\hline
\multicolumn{7}{|c|}{Das ist eine Tabelle}\\
\hline
XYZ & 1 & 2 & 3 & 4 & 5 & 6 \\
\hline
A& \includegraphics[width=2cm]{Bild1} & \includegraphics[width=2cm]{Bild2} & & & & \\
\hline
B& & & & & & \\
\hline
C& & & & & & \\
\hline
\end{tabular}
\caption{Eine große Tabelle}
\end{center}
\end{table}

\end{document}

Bild2 ist kleiner als Bild1 und ist am unteren Rand seiner Zelle, soll aber zentriert sein.
Habe das schon mit vspace probiert, hat sich aber nichts getan.
Hab auch schon mit \begin{figure} ausprobiert, aber ohne Erfolg.

Danke schonmal

Stefan_K
24-07-2010, 19:32
Hallo,

lade das Paket array:

\usepackage{array}
Für Spalten mit vertikaler Zentrierung verwende m-Spalten:

\begin{tabular}{|c|m{2cm}|m{2cm}|c|c|c|c|}

Viele Grüße,

Stefan


--
TeXblog (http://texblog.net)

Huschpuscheldi
24-07-2010, 19:57
mit m{2cm} Kann ich nur die Spaltenbreite verändern, das Bild bleibt an dem unteren Rand der Zelle...

Wie kann ich die Bilder bennenen? Mit caption{} gehts nicht

Schweinebacke
24-07-2010, 20:06
\documentclass[12pt,a4paper,pagesize]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{bibgerm}
\usepackage{array}
\usepackage[demo]{graphicx}

\begin{document}
\begin{table}
\centering
\begin{tabular}{|c|>{\centering}m{2cm}|>{\centering}m{2cm}|c|c|c|c|}
\hline
\multicolumn{7}{|c|}{Das ist eine Tabelle}\\
\hline
XYZ & 1 & 2 & 3 & 4 & 5 & 6 \\
\hline
A& \includegraphics[width=2cm]{Bild1} \\ Bild 1
& \includegraphics[width=2cm]{Bild2} \\ Bild 2 & & & & \\
\hline
B& & & & & & \\
\hline
C& & & & & & \\
\hline
\end{tabular}
\caption{Eine große Tabelle}
\end{table}

\end{document}Die center-Umgebung habe ich ersetzt, weil sie zusätzlichen vertikalen Abstand erzeugt. Siehe dazu auch l2tabu (http://ctan.org/pkg/l2tabu). Innerhalb der Tabelle kann man natürlich statt \centering auch \raggedright verwenden oder auch beides weglassen und dann \\ vor der Bildunterschrift durch \newline oder \par ersetzen.

Stefan_K
24-07-2010, 20:07
mit m{2cm} Kann ich nur die Spaltenbreite verändern, das Bild bleibt an dem unteren Rand der Zelle...

Bei mir werden Bilder so mittig. Zum Testen habe ich genau Deinen Code verwendet, nur die demo-Option für graphicx angegeben, da ich Deine Bilder ja nicht habe. Trotz unterschiedlicher Höhe (\includegraphics[height=2cm]{Bild2} etc.) wird bei mir vertikal zentriert.
Mit der demo-Option werden statt nicht vorhandener Bilder schwarze Rechtecke angezeigt.

Du könntest hier jeweils die aktuelle Version des Minimalbeispiels angebem (mit dem Versuch, der nicht funktioniert).

Ansonsten könnte der Trick mit dem Einfügen von \vspace{0pt} klappen, wie in Vertical alignment of graphics (http://texblog.net/latex-archive/graphics/includegraphics-top-align/) angesprochen.


Wie kann ich die Bilder bennenen? Mit caption{} gehts nicht

Beschriftung von Bildern innerhalb von Tabellen - das klingt nach einem problematischen Layout. Du könntest \captionof aus dem caption-Paket verwenden. Doch da sowieso nichts in das Abbildungsverzeichnis soll, kann man doch den Text direkt mit in die Tabellenzelle schreiben.

Stefan

Huschpuscheldi
24-07-2010, 21:08
Hier mal das minimalbeispiel:

\documentclass[12pt,pdftex,a4paper]{scrreprt}
\usepackage{ngerman}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{bibgerm}
\usepackage[demo]{graphicx}
\usepackage{array}

\begin{document}
\begin{table}
\begin{center}
\begin{tabular}{|c|c|m{2cm}|c|c|c|c|}
\hline
\multicolumn{7}{|c|}{Das ist eine Tabelle}\\
\hline
XYZ & 1 & 2 & 3 & 4 & 5 & 6 \\
\hline
A& \includegraphics[width=2cm]{Bild1} & \includegraphics[width=2cm,height=1cm]{Bild2} & & & & \\
\hline
B& & & & & & \\
\hline
C& & & & & & \\
\hline
\end{tabular}
\caption{Eine große Tabelle}
\end{center}
\end{table}

\end{document}

Der rechte Balken (width=2cm,height=1cm) soll vertikal und horizontal zentriert sein.

Außerdem fällt mir gerade auf, das der Text in der linken Spalte (A, B, C,...) auch zentriert sein soll, oder am oberen Rand der Zelle. Wie mache ich das?

Und warum erscheint die Tabelle auf einer separaten Seite?

Stefan_K
24-07-2010, 21:27
Der rechte Balken (width=2cm,height=1cm) soll vertikal und horizontal zentriert sein.

Außerdem fällt mir gerade auf, das der Text in der linken Spalte (A, B, C,...) auch zentriert sein soll, oder am oberen Rand der Zelle.

All das klappt bei mir, wenn ich den Tabellenbeginn so ändere:

\begin{tabular}{|c|m{2cm}|m{2cm}|c|c|c|c|}


Und warum erscheint die Tabelle auf einer separaten Seite?

Am Minimalbeispiel, das nur eine Seite enthält, ist es nicht erkennbar. Jedoch probier mal [!htbp], damit erlaubst Du die meisten Platzierungsmöglichkeiten, also

\begin{table}[!htbp]

Stefan

Huschpuscheldi
24-07-2010, 21:35
Also mit

\begin{tabular}{|c|m{2cm}|m{2cm}|c|c|c|c|}

klappt es jetzt auch

vorher hatte ich

\begin{tabular}{|c|c|m{2cm}|c|c|c|c|}

Da ging es nicht.

In der linken Spalte ist jetzt auch das "A" zentriert, das war mit meinem Minimalbeispiel noch nicht der Fall...

Ist es denn sinnvoll anstelle des "c" immer "m{2cm}" einzutragen, damit alle Bilder vertikal zentriert sind?

So ganz hab ich das mit dem m{2cm} noch nicht verstanden, hab das mal in verschiedenen Spalten ausprobiert und es macht nie das was ich erwarte... :(

Beispiel:

\documentclass[12pt,pdftex,a4paper]{scrreprt}
\usepackage{ngerman}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{bibgerm}
\usepackage[demo]{graphicx}
\usepackage{array}

\begin{document}

\begin{table}[!htbp]
\begin{center}
\begin{tabular}{|c|m{2cm}|m{2cm}|c|c|c|c|}
\hline
\multicolumn{7}{|c|}{Das ist eine Tabelle}\\
\hline
XYZ & 1 & 2 & 3 & 4 & 5 & 6 \\
\hline
A& \includegraphics[width=2cm]{Bild1} & \includegraphics[width=2cm,height=1cm]{Bild2} & \includegraphics[width=0.5cm,height=1cm]{Bild3} & \includegraphics[width=1cm,height=0.5cm]{Bild4} & \includegraphics[width=2cm,height=.51cm]{Bild5} & \\
\hline
B& & & & & & \\
\hline
C& & & & & & \\
\hline
\end{tabular}
\caption{Eine große Tabelle}
\end{center}
\end{table}

\end{document}

Warum ist der Balken in Spalte 3 nicht vertikal zentriert?

Huschpuscheldi
24-07-2010, 22:07
Diese Tabellenumgebung macht mich noch Wahnsinnig!

\documentclass[12pt,pdftex,a4paper]{scrreprt}
\usepackage{ngerman}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{bibgerm}
\usepackage[demo]{graphicx}
\usepackage{array}

\begin{document}

\begin{table}[!htbp]
\begin{center}
\begin{tabular}{|c|m{2cm}|m{2cm}|c|c|m{2cm}|m{3cm} |}
\hline
\multicolumn{7}{|c|}{Das ist eine Tabelle}\\
\hline
XYZ & 1 & 2 & 3 & 4 & 5 & 6 \\
\hline
A &
\includegraphics[width=2cm]{Bild1} Das ist der Text für die 1. Spalte & \includegraphics[width=2cm,height=1cm]{Bild2} Das ist der Text zu Spalte 2 & \includegraphics[width=0.5cm,height=1cm]{Bild3} &
\includegraphics[width=1cm,height=0.5cm]{Bild4} &
\includegraphics[width=2cm,height=0.5cm]{Bild5} Und hier ist der Text für die 5te Spalte, der ist etwas länger &
\includegraphics[width=1.5cm,height=1.5cm]{Bild5} \\
\hline
B& & & & & & \\
\hline
C& & & & & & \\
\hline
\end{tabular}
\caption{Eine große Tabelle}
\end{center}
\end{table}

\end{document}


In Spalte 6 soll das Quadrat AUCH horizontal zentriert sein, ich kriegs nicht hin...

Außerdem ist auch die Benenung der Spalten (1,2,3,...) mal zentriert und mal nicht, es soll aber immer zentriert sein. So wie ich das sehe wird mit "m{..cm}" alles links ausgerichtet, will ich aber nicht.
Beim Text wäre es mir auch lieber wenn der am unteren Rand der Zelle wäre...
Kann Latex das überhaupt, oder verlange ich hier zuviel???

Stefan_K
24-07-2010, 22:51
In Spalte 6 soll das Quadrat AUCH horizontal zentriert sein, ich kriegs nicht hin...

Außerdem ist auch die Benenung der Spalten (1,2,3,...) mal zentriert und mal nicht, es soll aber immer zentriert sein. So wie ich das sehe wird mit "m{..cm}" alles links ausgerichtet, will ich aber nicht.

Man kann sowohl \centering (http://texblog.net/help/latex/centering.html) in die Zellen schreiben als auch, effektiver, in den Tabellenkopf. Ändere die Zeile im Minimalbeispiel einmal so, dann siehst Du es:

\begin{tabular}{|c|>{\centering}m{2cm}|>{\centering}m{2cm}|c|c|%
>{\centering}m{2cm}|>{\centering\arraybackslash}m{3cm} |}


>{Befehl} fügt einen Befehl ein, der in allen Zellen dieser Spalte angewendet wird, hier \centering. Damit wird sowohl vertikal (m-Spalte) als auch horizontal zentriert.


Kann Latex das überhaupt, oder verlange ich hier zuviel???

LaTeX kann das. Wenn Du schon fragst :cool: zuviel verlangst Du vielleicht in dem Sinne, dass Du möchtest, es solle einfach funktionieren, ohne dass Du eine Anleitung bzw. Dokumentation liest, wie etwa die array-Doku (http://tug.ctan.org/tex-archive/macros/latex/required/tools/array.pdf). Du findest sie auf Deinem Rechner mit

texdoc (http://texblog.net/hypertext-help/latex-tools/texdoc/) array

auf der Kommandozeile bzw. mit der Eingabeaufforderung. Man weiß es vielleicht nicht oder findet es nicht auf Anhieb, daher einfach der Hinweis darauf.

Das ziemlich kompliziert aussehende Gebastel ist allerdings auch ein Zeichen dafür, dass ein logisches Textsatzsystem wie LaTeX nicht das optimale Werkzeug für diesen Zweck ist. Oder dass solche Grafiken mit Bildunterschriften in Tabellen unüblich sind.

Stefan

voss
25-07-2010, 09:52
In Spalte 6 soll das Quadrat AUCH horizontal zentriert sein, ich kriegs nicht hin...

Außerdem ist auch die Benenung der Spalten (1,2,3,...) mal zentriert und mal nicht, es soll aber immer zentriert sein. So wie ich das sehe wird mit "m{..cm}" alles links ausgerichtet, will ich aber nicht.
Beim Text wäre es mir auch lieber wenn der am unteren Rand der Zelle wäre...
Kann Latex das überhaupt, oder verlange ich hier zuviel???

sicher geht das! Nebenbei:
- Tabellen haben eigentlich Überschriften, Bilder Unterschriften
- Lass endlich die Option pdftex weg
- benutze babel, statt ngerman
- Viele Linien machen eine Tabelle unübersichtlich


\documentclass[12pt,a4paper,ngerman]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[demo]{graphicx}
\usepackage{array,ragged2e}
\newcolumntype{M}[1]{>{\Centering}m{#1}}

\begin{document}

\begin{table}[!htbp]
\centering
\caption{Eine große Tabelle}
\begin{tabular}{|c|M{2cm}|M{2cm}|c|c|M{2cm}|M{3cm} |}\hline
\multicolumn{7}{|c|}{Das ist eine Tabelle}\\\hline
XYZ & 1 & 2 & 3 & 4 & 5 & 6 \\\hline
A &
\includegraphics[width=2cm]{Bild1} Das ist der Text für die 1. Spalte & \includegraphics[width=2cm,height=1cm]{Bild2} Das ist der Text zu Spalte 2 & \includegraphics[width=0.5cm,height=1cm]{Bild3} &
\includegraphics[width=1cm,height=0.5cm]{Bild4} &
\includegraphics[width=2cm,height=0.5cm]{Bild5} Und hier ist der Text für die 5te Spalte, der ist etwas länger &
\includegraphics[width=1.5cm,height=1.5cm]{Bild5} \\\hline
B& & & & & & \\\hline
C& & & & & & \\\hline
\end{tabular}
\end{table}

\end{document}


Herbert

Schweinebacke
25-07-2010, 10:56
Außerdem ist auch die Benenung der Spalten (1,2,3,...) mal zentriert und mal nicht, es soll aber immer zentriert sein. So wie ich das sehe wird mit "m{..cm}" alles links ausgerichtet, will ich aber nicht.
Das liegt vermutlich schlicht daran, dass Du meine sämtlichen Vorschläge aus Beitrag #4 (http://www.mrunix.de/forums/showpost.php?p=317242&postcount=4) ignorierst.

Huschpuscheldi
25-07-2010, 13:19
sicher geht das! Nebenbei:
- Tabellen haben eigentlich Überschriften, Bilder Unterschriften
- Lass endlich die Option pdftex weg
- benutze babel, statt ngerman
- Viele Linien machen eine Tabelle unübersichtlich


\documentclass[12pt,a4paper,ngerman]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[demo]{graphicx}
\usepackage{array,ragged2e}
\newcolumntype{M}[1]{>{\Centering}m{#1}}

\begin{document}

\begin{table}[!htbp]
\centering
\caption{Eine große Tabelle}
\begin{tabular}{|c|M{2cm}|M{2cm}|c|c|M{2cm}|M{3cm} |}\hline
\multicolumn{7}{|c|}{Das ist eine Tabelle}\\\hline
XYZ & 1 & 2 & 3 & 4 & 5 & 6 \\\hline
A &
\includegraphics[width=2cm]{Bild1} Das ist der Text für die 1. Spalte & \includegraphics[width=2cm,height=1cm]{Bild2} Das ist der Text zu Spalte 2 & \includegraphics[width=0.5cm,height=1cm]{Bild3} &
\includegraphics[width=1cm,height=0.5cm]{Bild4} &
\includegraphics[width=2cm,height=0.5cm]{Bild5} Und hier ist der Text für die 5te Spalte, der ist etwas länger &
\includegraphics[width=1.5cm,height=1.5cm]{Bild5} \\\hline
B& & & & & & \\\hline
C& & & & & & \\\hline
\end{tabular}
\end{table}

\end{document}


Herbert

Dieses Beispiel erzeugt bei mir 5 Fehler, als ich das ä und das ß mit ae und ss ersetzt habe waren es nurnoch 2 Fehler. :confused: Hat laut Fehlermeldung anscheinend beides mit utf8 zutun

Stefan_K
25-07-2010, 13:29
Hat laut Fehlermeldung anscheinend beides mit utf8 zutun

Das stimmt. Du solltest bei der Option latin1 bleiben oder Deinen Editor auf utf8 umstellen. Diese Option ist Editor- bzw. systemspezifisch.

Stefan

Huschpuscheldi
25-07-2010, 13:48
Das liegt vermutlich schlicht daran, dass Du meine sämtlichen Vorschläge aus Beitrag #4 (http://www.mrunix.de/forums/showpost.php?p=317242&postcount=4) ignorierst.

Ignoriert hab ich sie nicht, sind wohl im Eifer des Gefechts untergegangen...
Sieht ganz gut aus, danke.
\centering bezieht sich ja auf den gesamten Inhalt einer Zelle, demnach denke ich das es nicht einfach ist den Text z.B. "Bild1" an den unteren Rand der Zelle zu setzen, oder?
Das wäre das Tüpfelchen auf dem i. Aber wenns zu aufwändig ist, lass ichs so.

Danke für eure Hilfe!

Schweinebacke
26-07-2010, 07:34
Statt vertikal zentrierter Zellen (Type m) zu verwenden, kann man auch unten ausgerichtete Zellen (Type b → array-Anleitung) verwenden. Den Abstand zwischen Bild und Unterschrift variabel gestalten würde ich hingegen nicht. Dann schon eher, die Bilder in eine Tabellenzeile und die Unterschriften in eine eigene. Dann aber nicht mehr vertikal zentriert, sondern normale p-Spalten.