PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : zu breiter array in tabular mit fester spaltenbreite



momo
12-09-2009, 10:36
Hallo,

meine Tabelle {tabular} hat feste Spaltenbreiten, Zelle 1 enthält einen array, der aber breiter ist als die fest vorgegebene Breite in der {tabular} für diese Spalte.

1.Frage:
Wie korrigiere (vergrößere) ich die {tabular}-Spalte auf die gerade benötigte, richtige Breite?
Hintergrund: Die folgenden Seiten sollen die gleichen festen Spaltenbreiten haben

2.Frage:
Beim {array} in Zelle 1 habe ich einen arraystretch vorgenommen.
Wie bekomme ich nun für das \raggedright in Zelle 3 den gleichen Zeilenabstand hin?

Danke für Eure Hilfe,
Annette



\documentclass[landscape]{article}
\usepackage[left=10mm,right=1mm,top=5mm,bottom=20mm,showframe]{geometry}
\usepackage{amsmath}
%
\begin{document}
\begin{tabular}{|p{3cm}|p{3cm}|p{3cm}|p{3cm}|}
\renewcommand{\arraystretch}{2}
\begin{array}[t]{@{}llll}
D1: & \dfrac{a^b}{c^d} &=& 1111111111111111111111111111111 \\
D2: & 2^1 &=& 2 \\
\end{array}
&
12
&
\raggedright
Definition:\\
bla1 bla bla bla bla bla bla bla bla bla bla bla bla bla bla
bla2 bla bla bla bla bla bla bla bla bla bla bla bla bla bla
&
14
\\\hline
\end{tabular}
\end{document}

u_fischer
12-09-2009, 13:06
1. Du könntest longtable statt tabular benutzen. Du musst dann aber einen der Spaltentypen l benutzen:


\documentclass[landscape]{article}
\usepackage[left=10mm,right=1mm,top=5mm,bottom=20mm,showframe]{geometry}
\usepackage{amsmath,longtable}
%
\begin{document}

\begin{longtable}{|l|p{3cm}|p{3cm}|p{3cm}|}
\renewcommand{\arraystretch}{2}
\begin{array}[t]{@{}llll}
D1: & \dfrac{a^b}{c^d} &=& 1111111111111111111111111111111 \\
D2: & 2^1 &=& 2 \\
\end{array}
&
12
&
\raggedright\renewcommand\baselinestretch{2}\selec tfont
Definition:\\
bla1 bla bla bla bla bla bla bla bla bla bla bla bla bla bla
bla2 bla bla bla bla bla bla bla bla bla bla bla bla bla bla
&
14
\\\hline\newpage
a & b & c & d
\end{longtable}
\end{document}


2. \raggedright\renewcommand\baselinestretch{2}\selec tfont
Definition:\\

Mache dir aber nicht zuviele Illusionen: Zeilen auf gleiche Höhe zu bekommen, kann schwer werden, wenn eine der Zeilen großes Material wie arrays enthält.

momo
12-09-2009, 14:00
Hallo Ulrike,

Was macht die "longtable", bzw. das "l"?

Ich habe 2 A4-Querseiten, die beide 4 feste Spalten mit jeweils den gleichen Spaltenbreiten haben sollen (so dass man sie sozusagen "übereinanderlegen" kann):

Die eine Spalte (mit dem array) nimmt jetzt ein bisschen mehr als 6cm in Anspruch - dadurch ist es nicht mehr so wie auf der 2.Seite (da ist die gleiche tabular: \begin{tabular}{|p{6cm}|p{3.5cm}|p{4cm}|p{9cm}|}

Ich hätte gerne gewußt wieviel Platz genau die array-Spalte braucht, dann hätte ich die "übergeordnete" tabular-Spalte genau so breit gesetzt.
Weißt Du wie ich's meine?

Noch eine Frage zur Dokumentenklasse:
Die Seitenbreite ist ausgeschöpft, daher kam ich auch nur mit dieser Einstellung hin:
\documentclass[11pt,a4paper,landscape,fleqn]{article}
\usepackage[left=10mm,right=5mm,top=10mm,bottom=5mm,showframe]{geometry}
Ich wollte das paket 'scrartcl' genommen, aber da gab es eine Fehlermeldung.
Ist das also ok für meinen Bedarf?

Und: Danke!! Mit Deiner Hilfe bin ich die Tage für meine Verhältnisse ein "Riesenstück" weitergekommen - Ich habe alle Deine Hinweise beherzigt!

Gruß
Annette

u_fischer
12-09-2009, 14:48
Hast du mein Beispiel ausprobiert? Inwiefern löst es dein Problem nicht?

Bei so einem simplen Dokument sollte es egal sein, ob du article oder scrartcl benutzt.

Du solltest aber nicht bei der ersten Fehlermeldung verschreckt den Rückzug antreten. 90% aller Fehler sind simple "Bedienungsfehler", also Tippfehler oder falsche Syntax, die sich leicht korrigieren lassen.

momo
12-09-2009, 15:16
Ja, ich habe Dein Beispiel ausprobiert, da tut es das auch.

Im Original habe ich für jede A4-Seite eine extra Datei, mit include eingebunden.

Sollte ich also beide Blätter zu einer Datei zusammenfassen und Dein Beispiel mit longtable regelt das dann - seitenübergreifend?

Annette

u_fischer
12-09-2009, 15:26
1. Verwende nicht \include sondern \input.
2. Warum versuchst du es nicht einfach? Schlimmstenfalls gibt es einen Fehler oder du erhältst nicht das gewünschte Ergebnis. Explodieren wird dein Computer nicht.

momo
12-09-2009, 20:47
..sorry, ich hatte zunächst das Ende deines Beispiels nicht registriert:
deshalb wußte ich nicht so recht, wie ich das machen kann.

\\\hline\newpage
a & b & c & d
\end{longtable}

ok, die Spaltenbreiten sind jetzt gleich, aber ich kämpfe noch:

1.).. mit den warnings der vollen/leeren boxen ... die Spalten sind jetzt z.T. viel breiter als in longtable angegeben.
.. Wie kann ich das lösen?

2.).. mit der multicolumn, die jetzt eine Fehlermeldung produziert:
" misplaced \omit."


\multicolumn{2}{p{13cm+4\tabcolsep}}{%
\textbf{blabla}
}

3.) .. mit der "subsection*", die ich am Anfang jeder Seite in Zellen der ersten Zeile hatte und die jetzt innerhalb der longtable wären...

Annette

momo
13-09-2009, 01:28
Hallo, ich habe noch mal ein Minimalbeispiel zu meinen Problemen gemacht:



\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage{amsmath, longtable}
%
\begin{document}
\begin{longtable}{|l|p{8cm}|p{3cm}|p{3cm}|p{8cm}|}
Potenzgesetze, Wurzelgesetze & & & \\
\endhead
%
%--------------------c11---------------------
\raggedright
\textbf{Definitionen für ...}
&
%--------------------c12--------------------------
xxx
&
%--------------------c13--------------------------
&
%--------------------c14--------------------------
\textbf{blablabla:}
\\\hline
%
%--------------------c21--------------------------
\begin{array}[t]{@{}lll}
a^n &:=& \underbrace {a \cdot a \cdot \dotsc \cdot a} \\
a^1 &:=& a \\
a^0 &:=& 1 \\
\end{array}
& b & c & d
\\\hline\newpage
a & b & c & d
\end{longtable}
\end{document}
% EOF
%


Und meine Fragen:

Warum ist Spalte "xxx" so breit, wo ich sie doch nur auf 3cm gesetzt habe..
im Vergleich zu Spalte "blablabla" mit 8cm? Kann man das nicht "fix" setzen, zumindest bis auf 1 Spalte?

Wie mache ich eine multicolumn aus Zeile 2, Spalte 1+2 ?

Wie mache ich eine multirow aus Spalte 4, Zeile 1+2 ?

Vielleicht hat ja jemand noch eine Idee?

rais
13-09-2009, 12:11
Moin moin,




\begin{longtable}{|l|p{8cm}|p{3cm}|p{3cm}|p{8cm}|}

(...)
Warum ist Spalte "xxx" so breit, wo ich sie doch nur auf 3cm gesetzt habe..
im Vergleich zu Spalte "blablabla" mit 8cm? Kann man das nicht "fix" setzen, zumindest bis auf 1 Spalte?

"xxx" befindet sich doch in der zweiten Spalte, soll also 8 cm breit sein ... BTW: Du hast fünf Spalten deklariert, von denen Du nur vier nutzt.

MfG

momo
13-09-2009, 20:59
.. danke Rainer, ich sollte den Humor nicht verlieren .. und eventuell früher Schluß machen, wenn die Konzentration so nachläßt.