PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabellenformatierung



newby4ty
01-06-2005, 21:38
Hallo,

fange erst gerade mit Latex an. Habe Version Latex2e hier. Als Arbeitsoberfläche dient Technikcenter als Aufsatz zu Miktex.

Tabellen kann ich schon erstellen .Aber bei einem Problem komme ich nicht weiter. Auch googel hilft da nicht wirklich.

Folgendes habe ich:

\begin{table}[H]
\centering
\begin{tabular}{|p{3cm}|p{3cm}|p{3cm}|p{3cm}|}
\hline
Technische Ausstattungen & Abteilung 1 & Abteilung 2& Abteilung 3 \\
\hline
\hline
Telefon & X & X & X \\
\hline
Faxgerät & X & X & X \\
\hline
Kopierergerät & X & X & X \\
\hline
PC & X & X & \\
\hline
Internet/E-Mail & & X & \\
\hline
\end{tabular}
\caption{Kommunikative Ausstattung }
\label{tab:KommunikativeAusstattung}
\end{table}


Ich will also alle Spalten eine feste Breite zuweisen! Wie erreiche ich es, daß zusätzlich der Text in den Spalten 2 bis 4 (von links) zentriert ausgerichtetet ist?

Mit "cp{3cm}" geht es nicht!

Wer kann helfen?

Vielen Dank im vorraus!

neptun
02-06-2005, 16:54
Hallo,

meine Lösung ist zwar nicht elegant, aber brauchbar als Notlösung: du könntest jede Zelle, die zentriert werden soll, folgendermassen aufbauen:

\begin{center}
Text
\end{center}

Gruss, neptun

daswaldhorn
02-06-2005, 17:16
Hallo,

nach \begin{document} folgendes einfügen:
\newcommand{\PreserveBackslash}[1]{\let \temp = \\ #1 \let\\=\temp}
\let\RdB=\PreserveBackslashund dann in der Tabellendeklaration das schreiben
\begin{tabular}{|p{3cm}|p{3cm}|>{\RdB\centering}p{3cm}|p{3cm}|}rechtsbündig geht dann mit >{\RdB\raggedleft}

Grüße, Carsten

newby4ty
05-06-2005, 10:25
Hallo neptun, Hallo Carsten!

Ich danke euch für die Hilfen!
Leider hatte ich den Einfall, wie du neptun, auch schon, jedoch führt das zu einer unmöglichen Formatierung in meinen Fall. Deshalb war diese Hilfe nicht ganz so ergiebig, aber dennoch besten Dank!

Hi Carsten,
deine neuer Befehl funktioniert perfekt! Dafür möchte ich mich herzlichst bedanken. Jedoch verstehe ich ihn leider nicht!
Könntest du mir ihn vielleicht erklären?

Ich wünsche euch beiden einen schönen Sonntag noch!

Gruß
Newby4ty

daswaldhorn
05-06-2005, 10:39
Hallo newby4ty,

also die Befehle \raggedleft, \raggedright und \centering definieren den Zeilenumbruch \\ in der Tabelle neu; es würde also nur Kauderwelsch rauskommen wenn man die nur allein benutzt. Deshalb muss die Bedeutung des \\ gesichert werden und das machen diese zwei Zeilen mit dem \PreserveBackslash.
Keine Angst, ich hab mir das nicht selber ausgedacht. :) Ich habs auch nur hier im Forum gefunden, und im LaTeX-Begleiter von Goossens, Mittelbach und Samarin stehts auch drin.

Ebenfalls noch einen schönen Sonntag.

Grüße, Carsten

neptun
07-06-2005, 07:32
Hallo,
diese Formatierungsmöglichkeit kommt mir gerade sehr gelegen :)
Ich kämpfe mit einer Riesentabelle, die sich über mehrere Seiten erstreckt.
Ich habe die von daswaldhorn geschilderte Möglichkeit eingesetzt, um die unschönen Löcher in den schmalen Spalten zu vermeiden - allerdings unter Einsatz von \raggedright statt \centering, .
Klappt an sich gut - nur ein klitzekleines Problem bleibt bestehen: die erste Zeile ist jeweils indentiert :(
Ich habe an verschiedenen Stellen versucht, \noindent einzusetzen - keine Wirkung.
Was kann man hier tun?
Danke, neptun

MaWueste
09-06-2005, 13:30
Ich suche verzweifelt nach der Möglichkeit in der supertabular oder longtable-Umgebung die Spalten linksbündig zu setzen.

Leider funktioniert das mit den hier angegebenen Befehlen komischerweise nicht.

Gibbbet noch was Anderes???
Boahhh ich verzweifle fast.. sitz schon zwei Tage daran und krieg das nicht hin.
Ma
....

:confused: :confused: :confused: :confused:

neptun
09-06-2005, 15:00
Hallo MaWueste,

also, bei kommt es (bis auf einen Schönheitsfehler) linksbündig hin auf folgende Weise:

in meiner Prämbel steht:


\newcommand{\PreserveBackslash}[1]{\let \temp = \\ #1 \let\\=\temp}
\let\RdB=\PreserveBackslash

Anfang der Tabelle (landscape, deshalb so breit)


\begin{longtable}{|>{\RdB\raggedright}p{2.1cm}
|>{\RdB\raggedright}p{2.6cm}|>{\RdB\raggedright}p{2.8cm}
|>{\RdB\raggedright}p{6.2cm}|>{\RdB\raggedright}p{9cm}|}

Der Schönheitsfehler besteht darin, dass die erste Zeile jeweils indentiert ist. Was tun? :confused:

neptun
25-06-2005, 08:24
Hallo,
ich möchte in folgender Frage noch einmal nachhaken - ich würde mich freuen, wenn jemand helfen könnte:

Der Schönheitsfehler besteht darin, dass die erste Zeile jeweils indentiert ist. Was tun? :confused:
Danke, neptun

bischi
25-06-2005, 09:51
Nur so ne Frage - ist das Ganze bei Standardeinstellungen nicht automatisch linksbündig?(also bei mir schon...) also mit

\begin{tabular}{|p{3cm}|p{3cm}|}

MfG Bischi

neptun
25-06-2005, 13:43
Bei der Standardeinstellung kommt Blocksatz - ohne Indentierung der ersten Zeile.

Bei meiner Riesentabelle, die sich über mehrere Seiten erstreckt und bei der einige Spalten sehr schmal sind, möchte ich keinen Blocksatz, sondern linksbündigen Flattersatz. Ich hoffe dass ich die typographischen Ausdrücke richtig benutzt habe; jedenfalls soll wegen der schmalen Spalten der Text keinen Block bilden, er soll links gerade sein und rechts flattern - um die unschönen Löcher mittendrin zu vermeiden :(

Also habe ich den Hinweis von daswaldhorn aufgegriffen, und es ist fast so rausgekommen, wie ich es wünschte.

Bis eben auf einen Schönheitsfehler: erste Zeile ist jeweils leicht indentiert.

Was tun?

Gruss, neptun

pospiech
28-06-2005, 08:19
Der Schönheitsfehler besteht darin, dass die erste Zeile jeweils indentiert ist. Was tun?

Dann hast du entweder eine Leerzeile, oder er macht von sich aus einen neuen Paragraphen. Füg mal vor dem Text ein \noindent ein.

Matthias

hac
22-09-2005, 11:53
Hallo neptun,

danke für den Tip - genau das habe ich schon seit längerem gesucht.

Jedoch klappt es bei mir noch nicht ganz, LaTeX schmeisst folgenden Fehler raus:


(./input-tables/table_conv-definitions.tex
! Undefined control sequence.
\RdB #1->\let \temp
= \\ #1 \let \\=\temp
l.18 |>{\RdB\raggedright}p{2.2cm}|}

danach geht es weiter mit



?
! Use of \LT@array doesn't match its definition.
\new@ifnextchar ...served@d = #1\def \reserved@a {
#2}\def \reserved@b {#3}\f...
l.18 |>{\RdB\raggedright}p{2.2cm}|}

?
! Use of \LT@array doesn't match its definition.
<argument> \def \reserved@a *
{\def \crcr {\LT@crcr \noalign {\nobreak }}\let...
l.18 |>{\RdB\raggedright}p{2.2cm}|}

?
! Use of \LT@array doesn't match its definition.
\new@ifnextchar ...served@d = #1\def \reserved@a {
#2}\def \reserved@b {#3}\f...
l.18 |>{\RdB\raggedright}p{2.2cm}|}

?
! Use of \LT@array doesn't match its definition.
<argument> \def \reserved@a *
{\@xtabularcr }\reserved@a
l.18 |>{\RdB\raggedright}p{2.2cm}|}


Irgendeine Idee, woran es liegen könnte? Zu erst dache ich, es läge daran, dass ich nicht longtable benutze; habe es installiert, ändere aber nichts.

Ich habe den code 1-zu-1 von neptun übernommen.

countbela666
22-09-2005, 18:05
Hast du \usepackage{array} eingebunden?

Grüße,
Marcel

pospiech
22-09-2005, 18:11
Nur als Anmerkung:



fange erst gerade mit Latex an. Habe Version Latex2e hier.
Version LaTeX2e ist irgentwas zwischen 1994 und 2005 und damit eine vollkommen irrelevante Aussage. Solltest du LaTeX (ohne 2e) benutzen müsstest du schon die letzten 10 Jahre auf dem Mond gelebt haben.

Viel interessanter ist also die Aussage welche Version die Distribution (Miktex) hat. Bei Miktex sollte das 2.4 sein.

Matthias

hac
22-09-2005, 18:16
Hey super - es klappt! Danke :)

Ja, aber jetzt habe ich das selbe Problem wie oben, die erste Zeile hat jeweils einen einschub.

Ich habe den Befehl


\noindent

in jede Zeile vor den Text eingefügt, tut sich aber nix...

neptun
22-09-2005, 20:36
hallo hac,

Das Problem wurde in der Zwischenzeit gelöst - ich habe meine Gedanken allerdings momentan bei ganz anderen Themen. Ich klebe mal auf die Schnelle die Codeschnipsel ein, die meiner Erinnerung nach relevant sind. Falls es nicht klappt, dann kann ich gerne am Wochende wieder in dieses Problem "eintauchen".

...
\newcommand{\vk}{\setlength\parskip{-15pt} \vspace{-15pt}}
...
\begin{document}
...
&
\vk\begin{itemize}
\item eins
\item zwei
\end{itemize}
\par
&
...
\end{document}


Hoffentlich klappt es mit diesem Minimalbeispiel!
Gruss, neptun

hac
23-09-2005, 12:08
Hallo neptun,

nee, klappt leider nicht. Als Resultat hüpft die 2. Zeile nach dem Einschub vor die erste Zeile - die erste (eingeschobene) Zeile bleibt unverändert.

Sieht ungefähr so aus:

vorher:


Adner and Levinthal
(2000, p. 64)


nachher:

(2000, p. 64)

Adner and Levinthal


Wäre für weitere Tips sehr dankbar...

Gruss

hac