PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Itemize in Tablelle einfügen



uwetex
27-11-2004, 15:45
Hallo,

Ich bin neu in Tex/Latex und habe eine (wahrscheinlich) dumme Frage. Ich möchte eine Aufzählung innerhalb einer Tabelle verwenden. Folgender Code führt bei mir allerdings immer zu einem Fehler, und zwar "something's wrong - perhaps a missing item :

\documentclass[a4paper,12pt]{article}
\usepackage[ansinew]{inputenc}
\sloppy
\nonfrenchspacing

\begin{document}

\begin{tabular}{|l||l|l||l|l|}
\hline
&\multicolumn{2}{l|}{Singular}&\multicolumn{2}{l|}{Plural}\\
\cline{2-5}
&English&\textbf{Gaeilge}&English&\textbf{Gaeilge}\\
\hline\hline
\begin{itemize}
\item Hallo
\end{itemize}
1st Person&at me&\textbf{agam}&at us&\textbf{againn}\\
2nd Person&at you&\textbf{agat}&at you&\textbf{agaibh}\\
3rd Person&at him&\textbf{aige}&at them&\textbf{acu}\\
&at her&\textbf{aici}& & \\
\hline
\end{tabular}

\end{document}

Setze ich die \begin{itemize}-section jedoch vor die Tabelle funktioniert alles. Wie kann ich es schaffen innerhalb einer Tabelle eine {itemize} oder {enumerate} - Section zu plazieren ?

Vielen Dank im vorraus

Uwe

edico
27-11-2004, 18:03
Ich kann deine hübsche Schrift nicht besonders gut lesen ...
Der Fehler liegt zunächst darin, dass die Liste nicht in eine Zelle, sondern quasi in eine Zeile gepackt wird, die dann ferner nicht abgeschlossen wird.
Eine Lösung erscheint mir mit minipage sinnhaft, soweit ich es verstehe, dass du die Liste in die linke Spalte packen willst. Im Falle, dass sie zentriert stehen soll, könntest du mit multicolumn arbeiten.
So könnte ich es mir vorstellen:
...
\begin{table}[H]
%\begin{tabular}{| l | l | l | l | l |}
\begin{tabular}{|p{3cm}| l | l | l | l |}
\hline
& \multicolumn{2}{c|}{Singular} &\multicolumn{2}{c|}{Plural} \\
\cline{2-5}
& English &\textbf{Gaeilge} & English &\textbf{Gaeilge} \\
\hline
%--- Beginn Liste ---
\begin{minipage}{3cm} % selbe Breite wie linke Spalte!
\vspace{1mm} % Zellenabstand
\begin{itemize}
\item Hallo
\end{itemize}
\vspace{1mm} % Zellenabstand
\end{minipage}
&&&&\\
%--- Ende Liste ---
1st Person & at me & \textbf{agam} & at us & \textbf{againn} \\
2nd Person & at you & \textbf{agat} & at you & \textbf{agaibh} \\
3rd Person & at him & \textbf{aige} & at them & \textbf{acu} \\
& at her & \textbf{aici} & & \\
\hline
\end{tabular}
\end{table}
...
... Ich habe die Doppellinien verjüngt. Es gibt dazu einige DIN-Überlegungen, aber das ist letztendlich ja auch Geschmackssache. Ich erkenne nicht, dass es der Übersichtlichkeit oder der Schönheit dient ... so what!
edico

uwetex
28-11-2004, 12:43
Danke erstmal und sorry für die Schriftart

werde das nachher ausprobieren

Verwende übrigens MikTex in Verbindung mit WinTex2000, macht das ein unterschied, welche Environement man verwendet oder ist Tex=Tex ?

Uwe

blubb
28-11-2004, 14:50
Eigentlich ist TeX = TeX.
Wobei du LaTeX verwendest.
Lies mal http://www.dante.de/faq/de-tex-faq/html/uebersicht.html durch.
Hilft vielleicht weiter.

uwetex
28-11-2004, 19:20
Hallo nochmal,

danke, hab's ausprobiert hat wunderbar funktioniert. Habe aber gleich das nächste Problem:

Ich habe über der Tabelle eine \subsection{abc} und ich wollte das er das dann in dem Format darstellt:

1.1 aaa
1.2 aab
1.3 abc
Tabelle
1.4 abd
1.5 abf

usw. Macht er aber nicht. Er setzt die Tabelle ganz an den Schluß unter alle \section s. Wie kann ich das verhindern? Also es ensteht dabei

1.1 aaa
1.2 aab
1.3 aac
1.4 abd
1.5 abf
Tabelle

Außerdem habe ich noch das Problem, daß die Tabelle über mehrere Seiten gehen soll, er aber die Seite nicht automatisch umbricht. Ich habe das jetzt so gelöst, daß ich die Tabelle einfach am Ende der Seite schließe und am Anfang der nächsten Seite öffne, das gefällt mir aber nicht wirklich, weil wenn man was in die Tabelle einfügt, muß man das jedes Mal mitberücksichtigen. Gibt es einen Befehl, der Tabellen automatisch über mehrere Seiten verteilt ?

Uwe
P.S.: Sorry, neue stellen wohl ganz schön bescheuerte Fragen

blubb
28-11-2004, 21:18
Ich glaube du machst gerade einen beliebten Anfängerfehler: Du verwechselst Tabelle (=tabular) und Tafel (=table).

Dein erstes Problem scheint mir ein Positionierungsproblem mit der Gleitumgebung table zu sein.
Details dazu in den FAQ 6.1.1 Wieso werden die meisten meiner Abbildungen an das Ende des Kapitels oder Dokuments verschoben?

Die Ausgabe aller bisherigen Abbildungen und Tafeln erzwingen kannst du mit \clearpage. (oder besser \cleardoublepage, je nach Klasse und Vorgaben).

Das zweite ist das Problem der Tabellen über mehrere Seiten.
1) Mit tabular geht das nicht, und 2) in Kombination mit einer Tafel (table) erst recht nicht.

Zu 2) Eine Gleitumgebuung ist ein Bereich einer Seite der gleitet, nicht gleich mehrere Seiten.

zu 1) Statt tabular gibt es einige Pakete die andere Tabellenumgebungen anbieten:
http://texcatalogue.sarovar.org/entries/supertabular.html
http://texcatalogue.sarovar.org/entries/longtable.html (mein Favorit)
http://texcatalogue.sarovar.org/entries/xtab.html
http://texcatalogue.sarovar.org/entries/ltxtable.html

Blubb

mwanaheri
29-11-2004, 08:44
Hallo nochmal,
Ich habe über der Tabelle eine \subsection{abc} und ich wollte das er das dann in dem Format darstellt:
<snip>
Außerdem habe ich noch das Problem, daß die Tabelle über mehrere Seiten gehen soll, er aber die Seite nicht automatisch umbricht. Ich habe das jetzt so gelöst, daß ich die Tabelle einfach am Ende der Seite schließe und am Anfang der nächsten Seite öffne, das gefällt mir aber nicht wirklich, weil wenn man was in die Tabelle einfügt, muß man das jedes Mal mitberücksichtigen. Gibt es einen Befehl, der Tabellen automatisch über mehrere Seiten verteilt ?

Uwe
P.S.: Sorry, neue stellen wohl ganz schön bescheuerte Fragen

Um Himmels Willen, was machst du mit der armen Tafel? Zunächst einmal: \begin{table} ist eine Gleitumgebung, wird also dahin gepackt, wo sie
gut unterzubringen ist. Das ist häufig nicht der Ort, wo sie im Quelltext steht.

\begin{tabular}{...} leitet eine Tabelle ein. Ein gutes Paket zum Setzen
längerer Tabellen ist tabularx.

Mir scheint allerdings, dass du die Tabellenumgebung missbrauchen willst,
um Layout zu gestalten. Das solltest du lassen. LaTeX ist nicht html. Wenn ich mit diesem Verdacht recht habe, lass uns doch mal wissen, wie es hinterher aussehen soll.

uwetex
29-11-2004, 13:14
Hallo,
erstmal vielen Dank für die nette Hilfe, und, ja, es stimmt wohl, ich versuche wohl TEX als HTML zu mißbrauchen, ich habe früher HTML programmiert und das sieht dann in TEX aus wie "Bad habits". Genaugenommen ist es sogar noch schlimmer und ich bin zum Erstellen von Texten bisher MS-Word gewohnt und will wohl parout versuchen, die Vorgehensweise von Word in Tex zu erzwingen.
Was ich vorhabe ist eigentlich ganz einfach. Ich habe ein sehr langes Dokument, daß ich untergliedert habe in \part{irgendwas} \chapter{irgendwas} \section{irgendwas} und \subsection{irgendwas}

Eine dieser \sections soll eine chronologische Aufzählung von Ereignissen werden. Diese chronologische ist sehr lang und wird sich über mehrere Seiten erstrecken. Dabei wollte ich das so machen, daß ich in der linken (kurzen) Spalte die Zeiträume eintrage und in die rechte, lange Spalte die Ereignisse, die in diesem Zeitraum geschehen sind als \begin{itemized}-Liste eintrage. Das mit der Itemized-Liste hat nach edico's Vorschlag funktioniert. Also es sieht jetzt so aus:

\begin{table}[H]
\begin{tabular}{|p{3cm}| l | }
1993-1994 & \begin{itemize}
\item a
\item b
\end{itemize}
\\
\hline
\end{tabular}
\end{table}

Was nicht funktioniert ist wie gesagt die Plazierung der Tabelle (die er mir jetzt nicht unter die \section{Chronologie} plaziert, wo sie im Quelltext steht sondern unter alle \section s. Und was auch nicht funktioniert ist das Seitenende, er bricht die Tabelle nicht auf die neue Seite um sondern die Items und Jahreszahlen laufen auf der bestehenden Seite ins Nirvana. Dank blubb's Hilfe, weiß ich jetzt wohl aber, wie ich mit dem Problem umzugehen habe und werde mal schauen, wie ich die Gleitumgebung richtig plazieren kann und ob ich eine geeignete Tabellenumgebung unter den genannten finden kann. Vielen Dank für die Hilfe

Uwe

blubb
29-11-2004, 13:34
Bei deinem Beispiel stelle ich mir nur zwei Fragen:
Warum Gleitumgebung, warum Tabelle?

Zur Gleitumgebung

Eine dieser \sections soll eine chronologische Aufzählung von Ereignissen werden. Also hast du keinen Verweis auf eine Tabelle, sondern einfach nur Text der folgt.
Wozu eine Gleitumgebung?

Zur Klarstellung: table und tabular haben nichts miteinander zu tun. Sie werden häufig gemeinsam genutzt (weil Tafeln meistens Tabellen enthalten), aber es ist nicht zwingend. Du kannst tabular ganz normal im Text nutzen.

Zu deiner Tabelle:
Versuch mal

\section{Chronologie}
\begin{description}
\item[1993--1944]
\begin{itemize}
\item a
\item b
\end{itemize}
\end{description}

Die Einrückungstiefe, Aussehen des \items etc. kannst du anpassen. (Finde gerade keinen Link dazu, aber es geht (und wenn du dir eine Liste selbst definierst
http://noodle.med.yale.edu/latex/latex2e-html/ltx-260.html
http://noodle.med.yale.edu/latex/latex2e-html/ltx-19.html
)

blubb
29-11-2004, 13:43
Selbstdefinierte Umgebung, und falls es entschiedend ist in Kommentaren gleich mit Rahmen.

\documentclass{scrartcl}
%\usepackage{framed}
\newenvironment{chronik}%
{
% \begin{framed}
\begin{list}{}{\labelwidth3cm\leftmargin3cm}%
}{ \end{list}
% \end{framed}
}
\begin{document}


\section{Chronologie}
\begin{chronik}
\item[1993--1944]
\begin{itemize}
\item a
\item b
\end{itemize}
\item[1993--1944]
\begin{itemize}
\item a
\item b
\end{itemize}
\end{chronik}

\end{document}

mwanaheri
29-11-2004, 15:55
Hallo,
\begin{table}[H]
....
\end{table}
...
Uwe

Eleganter ist die Lösung mit der geschachtelten description/itemize Umgebung,
vor allem, wenn du sie nach Bedarf umgestaltest. Mindestens aber lass die Tafel weg. Die Anweisung besagt nämlich: ,,Pack das nächste dahin, wo es passt'',
auch wenn du versuchst, es mit [H] einzuschränken. Wenn man das gesagt hat, darf man sich nicht wundern, warum es dahin gepackt wird, wo es passt -- bei langen Tabellen kann das leicht das Textende sein.