PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle



Quroll
13-01-2011, 10:35
Hi

ich habe mir zur Erstellung von Tabellen das Pdf-Dokument von Axel Reichert durchgelesen http://dante.ctan.org/tex-archive/info/german/tabsatz/tabsatz.pdf und verstehe leider nicht die Kurzbeispiele in seinem Text (Tabelle9). Kann mir bitte jemand ein funktionierendes, ähnliches Kurzbeispiel posten zu Tabelle 9.
Ziel ist es \armultirow in Tabellen verwenden zu können.
Selbstverständlich wäre eine andere Lösung, wie ich mehrzeiligen Text mittig in eine \multirow erzeuge, wenn neben der Reihe in einer Zeile \cmidrule verwendet wird, sehr willkommen.
Vielen Dank

Quroll

bobmalaria
13-01-2011, 11:04
hi,

in diesem beispiel wird ein neuer befehl definiert, eben besagtes \armultirow. dieses enthaelt einen \multicolumn eintrag welchem drei variablen mitgegeben werden #1 #2 und #3

#1 ist hierbei die anzahl der spalten die verwendet werden soll
#2 welcher spaltentyp verwendet werden soll
#3 ist dann der eigentliche text

\newcommand{\armultirow}[3]{%
\multicolumn{#1}{#2}{%
\begin{picture}(0,0)%
\put(0,0){%
\begin{tabular}[t]{@{}#2@{}}%
#3%
\end{tabular}%
}%
\end{picture}%
}%
}%

in der folge wird ja ein beispiel angegeben. darin wird der spaltentyp V verwendet. dieser wurde ein paar seiten vorher definiert


\newcolumntype{V}[1]{%
>{\scriptsize\raggedright\hspace{0pt}}p{#1}%
}

das ganze dann in der tabelle


...
\multicolumn{2}{N}{Ohne Sicherungen} &
\armultirow{1}{V{5em}@{}}{%
Höchstzulässiger Erdungswiderstand bei
Berührungsspannung%
} \\
\\
\\
\cmidrule(lr){3-4}
&
&
\multicolumn{1}{N}{Type} &
\multicolumn{1}{N}{Preis} \\
&
\multicolumn{1}{N}{\unit{V}} &
&
\multicolumn{1}{N}{DM} \\
\cmidrule(r){1-1}...

es wird eine V spalte mit der breite 5em gesetzt. wenn du dich ueber das
@{} wunderst das manchmal auftaucht, dieses erlaubt ein makro vor oder nach einem spaltentyp aufzurufen.

so geht z.b. :
@{}c@{} oder auch
@{}l@{}. in den {} laesst sich jeweils etwas unterbringen, oder eben auch nicht! laesst man die {} leer, dann werden abstaende die normalerweise links oder rechts der spalte automatisch eingefuegt wuerden unterdrueckt.

um das beispiel zum laufen zu bringen braucht es vermutlich die pakete array und booktabs.

hier noch als ganzes beispiel das laufen sollte, ich habe \raggedright durch \RaggedRight aus dem ragged2e paket ersetzt und ausserdem microtype geladen was sich sehr gut auf die umbrueche der worte auswirkt


\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[babel]{microtype}

\usepackage{array}
\usepackage{booktabs}
\usepackage{ragged2e}


\newcolumntype{V}[1]{%
>{\scriptsize\RaggedRight\hspace{0pt}}p{#1}%
}

\newcolumntype{N}{>{\scriptsize}l}

\newcommand{\armultirow}[3]{%
\multicolumn{#1}{#2}{%
\begin{picture}(0,0)%
\put(0,0){%
\begin{tabular}[t]{@{}#2@{}}%
#3%
\end{tabular}%
}%
\end{picture}%
}%
}%


\begin{document}

\begin{table}
\centering
\caption{Textmenge im Tabellenkopf}
\begin{tabular}{NNNNN}
\toprule
Reihe & Spannung & \multicolumn{2}{N}{Ohne Sicherungen} &
\armultirow{1}{V{5em}@{}}{%
Höchstzulässiger Erdungswiderstand bei%
Berührungsspannung%
} \\
\\
\\
\cmidrule(lr){3-4}
&
&
\multicolumn{1}{N}{Type} &
\multicolumn{1}{N}{Preis} \\
&
\multicolumn{1}{N}{V} &
&
\multicolumn{1}{N}{DM} \\
\cmidrule(r){1-1}
\cmidrule(r){2-2}
\cmidrule(r){3-3}
\cmidrule(r){4-4}
\cmidrule(r){5-5}
... & & & & \\
\bottomrule
\end{tabular}
\end{table}



\end{document}


http://www.mrunix.de/forums/attachment.php?attachmentid=4273&stc=1&d=1294914135
gruss

Quroll
13-01-2011, 11:53
Danke für die ausführliche Antwort. Es funktioniert :D.
Bislang bin ich ohne umdefinition von Varibalen und Makros ausgekommen, weswegen ich es wohl nicht verstanden habe. Jetzt versteh ich es ein ein Stück mehr :).

Gruß

Quroll
13-01-2011, 12:45
So jetzt hab ich noch ein Problem. Wie bekomme ich es bei diesem Beipsiel das der Text in der Mitte der Tabelle steht?



\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{booktabs,multirow}

\begin{document}

\begin{table}
\centering
\caption{Textmenge im Tabellenkopf}
\begin{tabular}{llll}
\toprule
\multirow{6}{14mm}{bla} & \multirow{6}{30mm}{Text steht nicht in der Mitte} &$+$&$\pm$\\ \cmidrule{3-4}
& &\multicolumn{2}{c}{$\pm$}\\
& &\multicolumn{2}{c}{$+$}\\
& &\multicolumn{2}{c}{$-$}\\ \cmidrule{3-4}
& &\multicolumn{2}{c}{$+$}\\
& &\multicolumn{2}{c}{$+$}\\
\bottomrule
\end{tabular}
\end{table}

\end{document}


http://s3.directupload.net/images/110113/temp/lv9d76dg.png (http://s3.directupload.net/file/d/2403/lv9d76dg_png.htm)

bobmalaria
13-01-2011, 12:54
hi,

das liegt wohl an der spaltendefinition. ich wuerde dann einfach nochmal mit einem \multicolumn{1}{c}{\multirow...} eine zentrierung erzwingen. bei mir sieht es so etwas besser aus


\begin{tabular}{@{}l|l|ll@{}}
\toprule
\multirow{6}{8mm}{bla} & \multicolumn{1}{c}{\multirow{6}{30mm}{Text steht
nicht in der Mitte}} &$+$&$\pm$\\ \cmidrule{3-4}
& &\multicolumn{2}{c}{$\pm$}\\
& &\multicolumn{2}{c}{$+$}\\
& &\multicolumn{2}{c}{$-$}\\ \cmidrule{3-4}
& &\multicolumn{2}{c}{$+$}\\
& &\multicolumn{2}{c}{$+$}\\
\bottomrule
\end{tabular}

http://www.mrunix.de/forums/attachment.php?attachmentid=4274&stc=1&d=1294919757

vielelicht kannst du mit p{breite} auch bessere spaltenbreiten vorgeben.

Quroll
13-01-2011, 12:59
Ähm also ich würde behaupten, dass auch bei Dir der Text vertikal nicht in der Mitte steht :).

newbie
13-01-2011, 21:56
Hallo,
ich habe auch ein kleines Problem was Tabellen betrifft. Und zwar ist der Text in beiden Spalten nicht auf gleicher Höhe. Hier ein Minimalbsp:


\usepackage[USenglish]{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[margin=10pt,font=small,labelfont=bf,
labelsep=endash]{caption}

\usepackage{booktabs}

\usepackage{tabularx}
\usepackage{paralist}
%\newcommand*{\sii}{\setdefaultleftmargin{1em}{1em }{1em}{1em}{1em}{1em}}
\makeatletter
\newcommand*{\storeenum}{%
\expandafter\xdef\csname
stored@\@enumctr\endcsname{\expandafter\the\value{ \@enumctr}}%
}%
\newcommand*{\restoreenum}{%
\setcounter{\@enumctr}{\csname stored@\@enumctr\endcsname}%
}
\makeatother

\usepackage{mdwlist}

\begin{document}

\noindent\begin{tabularx}{\textwidth}{p{12cm}p{2cm }}

\toprule
\begin{compactenum}
\item Welcome words and setting
\storeenum
\end{compactenum} & 5 min \\
\begin{compactenum}
\restoreenum
\item Brainstorming
\storeenum
\end{compactenum} & 10 min \\

\bottomrule
\end{tabularx}

end{document}

Was mache ich falsch? Der text der ersten spalte erscheint immer etwas niedriger als der Text in der zweiten Spalte, z.B. "Welcome words and setting" steht niedriger als "5 min".

Bin für jeden Vorschlag dankbar!

Sepp99
13-01-2011, 22:40
@newbie
Dein Beispiel ist nicht lauffähig, selbst wenn ich ein
\documentclass einfüge!

Gruß, Sepp.-