PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Tabellen



4nndee
24-11-2010, 18:29
Hallo zusammen,

ich habe ein paar kleine Probleme mit Tabellen.
Ich möchte meine Tabellen gerne dynamisch, also ohne festen Wert, die volle Seitenbreite ausnutzen lassen. Das Problem dabei ist, dass die Tabellen dann immer über den rechten Rand hinaus ragen. Siehe Beispiel:



\documentclass[12pt,a4paper,oneside,titlepage]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{makeidx}
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage[left=30mm,right=20mm, top=2.5cm, bottom=2.5cm]{geometry}
\usepackage{setspace}
\usepackage[font=footnotesize ,labelfont=bf,format=plain,justification=centerlas t]{caption}
\usepackage[bibencoding=latin1, backend=bibtex8]{biblatex}
\usepackage{multirow}
\usepackage{array}
\usepackage{color}

\bibliography{bib/literatur}

\usepackage[automark]{scrpage2}
\clearscrheadfoot
\ihead{\headmark}
\ohead{Seite \pagemark}
\ifoot{\automark[section]{section}}
\setheadsepline{0.5pt}
\setfootsepline{0.5pt}

\pagestyle{scrheadings}

\renewcommand{\familydefault}{\sfdefault}
\setlength{\parskip}{\baselineskip}

\begin{document}

\subsubsection*{1. Aufnahme der Anlagendaten}
\begin{tabular}{|l|l|l|l|}
\hline
\multicolumn{4}{|p{\textwidth}|}{\textbf{Anlagenda ten =H08}} \\
\hline \hline
\multicolumn{2}{|c|}{Hersteller} & \multicolumn{2}{c|}{} \\
\hline
\multicolumn{2}{|c|}{Typ} & \multicolumn{2}{c|}{} \\
\hline
\multicolumn{2}{|c|}{Nummer} & \multicolumn{2}{c|}{} \\
\hline
$U_N$ & & $I_N$ Sammelschiene & \\
\hline
Frequenz & & $I_N$ Abgang & \\
\hline
\multirow{2}{*}{SF6 Druck bei $ 20\,^{\circ}\mathrm{C}$ } & Leistungsschalter & \multicolumn{2}{c|}{} \\
\cline{2-4}
& Sammelschiene & \multicolumn{2}{c|}{} \\
\hline
\end{tabular}

\end{document}


Ich habe noch zwei weitere Fragen zum Thema Tabellen:

Wie kann ich den Text innerhalb einer Zelle vertikal mittig ausrichten?
Wie kann ich den Text in einer Zelle ausrichten, wenn ich dieser zuvor mit p{xxcm} eine feste Breite zugeweisen habe? {p{xxcm},c} funktioniert beispielsweise nicht

mechanicus
24-11-2010, 18:32
Hi,

habe da mal was geschrieben:
http://projekte.dante.de/DanteFAQ/Tabularx

Gruß
Marco

4nndee
24-11-2010, 18:58
Bingo! Genau das wars :-)
Danke.

Wenn mir jetzt noch jemand bei der vertikalen Ausrichtung weiter helfen kann wäre das echt klasse.

Warum funktioniert das eigentlich nicht in der tabular Umgebung? Müsste ich nicht das gleiche Ergebnis haben wenn ich das so wie in meinem Beispiel machen. Gut ich meine ich sehe das es nicht so ist, aber warum? Mit \textwidth müsste ich die erste Zeile doch eigentlich auch genau auf die passende Länge bekommen?! Warum hängt sie damit aber über?

mechanicus
24-11-2010, 19:02
aber warum? Mit \textwidth müsste ich die erste Zeile doch eigentlich auch genau auf die passende Länge bekommen?! Warum hängt sie damit aber über?

LINIENDICKE-ABSTAND LINIE - TEXT DER BREITE TEXTWIDTH - ABSTAND LINIE - LINIENDICKE

Gruß
Marco

4nndee
24-11-2010, 19:17
Ah ich glaub ich habs kapiert. Bei tabular kann ich das nur für die entsprechende Zeile und nicht für die Umgebung ans sich machen und da kommen die Abstände mit dazu.
Bei tabularx leg ich direkt zu Anfang die Breite der Umgebung fest.

mechanicus
24-11-2010, 19:23
Bei tabular kann ich das nur für die entsprechende Zeile und nicht für die Umgebung ans sich machen und da kommen die Abstände mit dazu.
DAs ist so nicht ganz korrekt. DU kannst auch selbst rechnen:

\documentclass{scrartcl}
\usepackage{array,ragged2e,calc}
%\usepackage{showframe}
\begin{document}

\noindent\begin{tabular}{|>{\Centering}p{\textwidth-2\tabcolsep}|}
\hline
Hier steht Text\\
\hline
\end{tabular}
\end{document}

Gruß
Marco

4nndee
24-11-2010, 19:44
Also liegts am Einrücken des Absatzes?!

mechanicus
24-11-2010, 19:51
Also liegts am Einrücken des Absatzes?!
Das ist eine zusätzliche Fehlerquelle.

Ich habe dir ja zeigen wollen, wie deine Tabellenzeile:

|p{\textwidth}|
aufgebaut ist. Mit p{\textwidth} legst du eine Box mit der Breite \textwidth an. Aber was ist mit dem Abstand des Boxinhaltex zu den vertikalen Linien. Der kommt noch hinzu. Zusätzlich haben die Linien auch eine gewisse Breite, welche natürlich auch addiert werden wollen.

Gruß
Marco

4nndee
24-11-2010, 20:28
LINIENDICKE-ABSTAND LINIE - TEXT DER BREITE TEXTWIDTH - ABSTAND LINIE - LINIENDICKE
Ah jetzt hab ich auch verstanden was du mir damit sagen wolltest. Das Beispiel hab ich leider auch nicht direkt geblickt. Manchmal dauerts halt bisschen länger :-)

Wie kann ich denn Text in Spalten, für die ich in der Präambel ein "X" gesetzt habe, noch ausrichten? Jetzt passt die Tabelle super auf die Seite, aber der Text sitzt jetzt halt in zwei Spalten nicht mittig.

Schweinebacke
24-11-2010, 20:33
Siehe Abschnitt 4.2 der tabularx-Anleitung. Dort ist das für \raggedright gezeigt und \centering explizit ebenfalls erwähnt. Zusätzlich wird dort auf die Anleitung von array verwiesen.

mechanicus
24-11-2010, 20:35
Wie kann ich denn Text in Spalten, für die ich in der Präambel ein "X" gesetzt habe, noch ausrichten? Jetzt passt die Tabelle super auf die Seite, aber der Text sitzt jetzt halt in zwei Spalten nicht mittig.
Hier hilft auch ein Blick in die Dokumentation des Paketes array


>{\Centering}X
Benötigt ragged2e.

Gruß
Marco

4nndee
24-11-2010, 21:22
Hab ich, aber wenn man \Centering vorne klein anstatt groß schreibt kann es nicht gehen :-)

mechanicus
24-11-2010, 21:29
Hab ich, aber wenn man \Centering vorne klein anstatt groß schreibt kann es nicht gehen :-)
dass klappt dann nur mit:

>{\centering\arraybackslash}X

Gruß
Marco