PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bilder in Tabelle am oberen rand ausrichten



peyo
18-11-2010, 06:41
Hallo Leute,

ich habe ein Problem mit meiner Tabelle in Latex.
Ich möchte gerne in eine Spalte ein Bild einfügen und der Bezugspunkt des Bildes soll die linke obere Ecke der Tabellenspalte sein.
Die Spalte daneben soll sich ebenfalls oben orientieren. Wenn ich jetzt das Bild einfüge, dann verrutscht mir der Anfangstext und fängt dann weiter unten an. Das darf aber nicht so sein.
Leider weiß ich nicht, wie ich das ändern kann.

Hier mal der Code:


\documentclass[12pt]{scrreprt}
\usepackage{multirow,tabularx}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[dvips,pdftex,top=0pt,bottom=-10pt,left=-10pt,right=0pt]{geometry}

\begin{document}
\setlength{\unitlength}{1cm}

\begin{picture}(21,29.7)(0.4,0)

\put(1,23.6){\raisebox{-\height}
{\begin{tabularx}{19cm}[t]{|p{6cm}|p{6cm}|p{6cm}|}

\hline
Nummer &
\multicolumn{2}{l}{\noindent
\begin{tabularx}{12cm}[t]{@{}p{12cm}|}\raggedright bla bla
bla bla bla bal bal bal bal s 2 mc bla bla bla bla bla bal bal bal bal s 2 mc bla bla
\end{tabularx}}\\
\hline


{\noindent\begin{tabularx}{6cm}[t]{@{}p{6cm}}\raggedright
{\includegraphics{/Testbild.jpg}}
Bild
\end{tabularx}} &

\multicolumn{2}{l}
{\noindent\begin{tabularx}{12cm}[t]{@{}p{6cm}|p{6cm}}\raggedright Text Vom Bild Text
& DimensionBild
\\\hline Pictos \linebreak\linebreak bl abla bla bla
bla bal balb
alab alb abalobal
ablblblab baalal
alalalala alalalala

la al &
Dummy
\end{tabularx}} \\
\hline \hline

& Text & Text \\ \hline

\end{tabularx}}}

\end{picture}
\end{document}


Die Ausgabe "Text vom Bild" beginnt auf der Ebene, wo das Bild endet und das müsste alles nach oben.

Ich hoffe, ich habe mein Problem deutlich gemacht,
schonmal vielen Dank für eure Hilfe,

LG, peyo

Schweinebacke
18-11-2010, 09:01
Sowohl Option dvips als auch Option pdftex bei geometry zu verwenden, ist AFAIK wenig sinnvoll. Da geometry diesbezüglich AFAIK die Voreinstellung ohnehin geändert hat, dürfte das beste sein, beide Optionen weg zu lassen. Ansonsten stimmt Deine Tabelle hinten und vorn nicht. Die picture-Umgebung ist sinnlos. Die Verwendung von tabularx ist bei Angabe fester Spaltenbreite ebenfalls sinnlos. Von all dem abgesehen, kann man den Referenzpunkt einer Box (und nichts anderes ist eine bei \includegraphics eingebundene Abbildung) mit \raisebox verschieben:
\raisebox{\dimexpr\ht\strutbox-\totalheight\relax}[\ht\strutbox][\totalheight]{\includegraphics{/Testbild.jpg}} oder:
\raisebox{\totalheight}{\includegraphics{/Testbild.jpg}}Deine Tabelle von den ganzen störenden vertikalen Linien (siehe Paket booktabs und dessen Anleitung) und sonstigen Seltsamkeiten zu befreien, sei mir erspart.

BTW: Du solltest Code als solchen einfügen, mit Hilfe der [code]-Tags einfügen.

Xenara
18-11-2010, 09:07
Weitestgehend hatte ich eine ähnliche Idee wie Schweinebacke, vielleicht nicht ganz so elegant, aber es sieht finde ich gar nicht so schlecht aus. Bei der Gelegenheit habe ich deine Tabelle noch etwas überarbeitet:



\documentclass[12pt]{scrreprt}
\usepackage{multirow,tabularx}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[dvips,pdftex,top=0pt,bottom=-10pt,left=-10pt,right=0pt]{geometry}

\usepackage{calc}
\usepackage{booktabs}

%%%%%%%%%
%% Aus l2picfaq.pdf
% neuer Befehl: \includegraphicstotab[..]{..}
% Verwendung analog wie \includegraphics
\newlength{\myx} % Variable zum Speichern der Bildbreite
\newlength{\myy} % Variable zum Speichern der Bildhöhe
\newcommand\includegraphicstotab[2][\relax]{%
% Zusätzlich eingefügt:
\raisebox{\baselineskip}{
% Abspeichern der Bildabmessungen
\settowidth{\myx}{\includegraphics[{#1}]{#2}}%
\settoheight{\myy}{\includegraphics[{#1}]{#2}}%
% das eigentliche Einfügen
%\parbox[c][1.1\myy][c]{\myx}{%
% leicht abgeändert:
\parbox[t][1.1\myy][c]{\myx}{%
\includegraphics[{#1}]{#2}}}%
}% Ende neuer Befehl
%%%%%%%%%


\begin{document}
\setlength{\unitlength}{1cm}

\begin{picture}(21,29.7)(0.4,0)
\put(1,23.6){%
\raisebox{-\height}{
\begin{tabular}[t]{p{6cm}p{6cm}p{6cm}}
\toprule
%
Nummer &
\multicolumn{2}{>{\raggedright\arraybackslash}b{12cm+2\tabcolsep}}%
{Multicolumn bla bla bla bla bla bal bal bal bal s 2 mc bla bla bla bla bla bal bal bal bal s 2 mc bla bla}\\
\midrule
%
\includegraphicstotab[width=5cm]{Testbild}
Bild
&
\multicolumn{2}{l}{%
\begin{tabular}[t]{@{}>{\raggedright\arraybackslash}p{6cm+\tabcolsep}@{}p {6cm+\tabcolsep}@{}}
Text Vom Bild Text und mehr Text und nochmehr und damits nicht langweilig wir, noch etwas Text & DimensionBild \\
\cmidrule(r){1-1}
\cmidrule(r){2-2}
Pictos \linebreak\linebreak
bl abla bla bla
bla bal balb
alab alb abalobal
ablblblab baalal
alalalala alalalala
la al & Dummy
\end{tabular}%
} \\
\midrule %
& Text & Text \\
\bottomrule
%
\end{tabular}%
}}
\end{picture}

\end{document}

peyo
18-11-2010, 10:03
Hallo Schweinebacke, Xenara

Danke für eure schnellen Antworten.
ich habe den ersten Code Teil von Schweinebacke genommen und es passt bis jetzt.

\raisebox{\dimexpr\ht\strutbox-\totalheight\relax}[\ht\strutbox][\totalheight]{\includegraphics{/Testbild.jpg}}

Danke Xenara,
deine Tabelle schaut wirklich besser aus =) das freut mich.

Die linien, die ich eingefügt hatte waren nur zur grafischen Darstellung gedacht, damit ich besser sehe wie sich die Tabelle aufbaut.

Freut mich, dass ihr mir geholfen habt.

peyo
18-11-2010, 16:20
Was mache ich, wenn ich das Bild nicht an der linken oberen Ecke haben will, sondern an der rechten oberen Ecke? was von dem Code von Schweinebacke muss ich da ändern?

:confused:

Danke schonmal für eure Bemühungen

Xenara
18-11-2010, 16:28
\hfill vor \raisebox... setzen.

peyo
18-11-2010, 16:50
ui, klasse =)

danke für die Antwort.

Ist echt super :)