Text in Zelle einrücken

Tabellen und Grafiken erstellen und anordnen


bill26
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Sa 14. Mär 2009, 20:53

Text in Zelle einrücken

Beitrag von bill26 »

Hallo,

ich möchte eine Tabelle erstellen und muss teilweise zwei Zeilen für einen Eintrag verwenden, da sonst der Platz nicht reicht. In der zweiten Zeile soll der Text dann etwas eingerückt sein, damit man erkennt, dass diese Zeile mit der vorherigen zusammen hängt. Ein Minimalbeispiel sagt mehr als tausend Worte:
\documentclass[a4paper,11pt,parskip]{scrartcl}

\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{typearea}

\usepackage[babel,german=guillemets]{csquotes} 
\usepackage[T1]{fontenc}

\usepackage{multirow}
\usepackage{longtable}

\begin{document}

\begin{longtable}{l|l|l}
%-----------------------------------------------------------------------------------------------------------------

           1 									& just some short text 	& abc  										\\

           \multirow{2}{*}{2} & ich bin ein sehr langer text und erstrecke mich 	& \multirow{2}{*}{Niederlande} \\
                    					& deshalb	über zwei Zeilen (rück mich bitte ein)		&          										\\

           3 									&            12345 123 	& Frankreich  									\\	
	
%--------------------------------------------------------------------------------------------------------------------
\end{longtable}

	
\end{document}

Oder ne andere Idee wie man das schöner darstellen kann? Trennlinien erschlagen den Betrachter bei vielen Einträgen finde ich.

Danke schon mal,
bill

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2759
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Tabellensatz

Beitrag von Stefan Kottwitz »

Hallo Bill,

alternativ könntest Du die Zeilen abwechselnd leicht einfärben:
\documentclass[a4paper,11pt,parskip]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{typearea}
\usepackage[T1]{fontenc}
\usepackage{multirow}
\usepackage{longtable}
\usepackage[table]{xcolor}
\begin{document}
\begin{longtable}{lll}
%------------------------------------------------------------------------
\rowcolor[gray]{.9}1 & just some short text & abc \\
\multirow{2}{*}{2} & ich bin ein sehr langer text und erstrecke mich
                   & \multirow{2}{*}{Niederlande} \\
                   & deshalb   über zwei Zeilen (rück mich bitte ein) &\\
\rowcolor[gray]{.9}3 & 12345 123 & Frankreich
%------------------------------------------------------------------------
\end{longtable}
\end{document}
Viele Grüße,

Stefan

bill26
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Sa 14. Mär 2009, 20:53

Beitrag von bill26 »

Danke für den Hinweis. Denke das sieht gut aus mit der Farbe. Nun habe ich nur zwei Probleme:

- senkrechte Linien werden überdeckt
- Text über zwei Zeilen wird nicht korrekt angezeigt

Entschuldigung für die späte Antwort. War länger krank. Minimalbeispiel:
\documentclass[a4paper,11pt,parskip]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{typearea}
\usepackage[T1]{fontenc}
\usepackage{multirow}
\usepackage{longtable}
\usepackage[table]{xcolor}
\begin{document}
\begin{longtable}{l|l|l}
%------------------------------------------------------------------------
1 & just some short text & abc \\

\rowcolor[gray]{.9}\multirow{2}{*}{2} & ich bin ein sehr langer text und erstrecke mich& \multirow{2}{*}{Niederlande} \\
\rowcolor[gray]{.9}& deshalb   über zwei Zeilen (rück mich bitte ein) &\\

3 & 12345 123 & Frankreich
%------------------------------------------------------------------------
\end{longtable}
\end{document}
Edit: die senkrechten Linien werden zwar nicht angezeigt, aber gedruckt. Dieser Fehler (ust das überhaupt ein Fehler) ist also nicht so wichtig.

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Ohne die störenden und völlig überflüssigen vertikalen Linien:
\documentclass[a4paper,11pt,parskip]{scrartcl} 
\usepackage[latin1]{inputenc} 
\usepackage[ngerman]{babel} 
\usepackage[T1]{fontenc} 
\usepackage[table]{xcolor} 
\usepackage{ltxtable}
\usepackage{filecontents}
\begin{document} 
\begin{filecontents*}{tmptable.tex}
\begin{longtable}{lXl}
 1 & just some short text & abc \\ 
 \rowcolor[gray]{.9} 2 &  ich bin ein sehr langer text und erstrecke mich
 deshalb   über zwei Zeilen (rück mich bitte ein) & Niederlande \\
 3 & 12345 123 & Frankreich \\
\end{longtable}
\end{filecontents*}
{\def\tabularxcolumn#1{m{#1}}% verwende m- statt p-Spalten für X-Spalten
\LTXtable{\linewidth}{tmptable.tex}}

\end{document}
Da ich von vertikalen Linien gar nichts halte, habe ich es damit auch gar nicht erst ausprobiert. Wenn übrigens die zweite Zeile wirklich eingerückt werden soll, dann geht das auch:
\documentclass[a4paper,11pt,parskip]{scrartcl} 
\usepackage[latin1]{inputenc} 
\usepackage[ngerman]{babel} 
\usepackage[T1]{fontenc} 
\usepackage[table]{xcolor} 
\usepackage{ltxtable}
\usepackage{filecontents}
\usepackage{booktabs}
\begin{document} 
\begin{filecontents*}{tmptable.tex}
\begin{longtable}{l>{\hangindent 1em}Xl}
 1 & just some short text & abc \\
\addlinespace
 2 & ich bin ein sehr langer text und erstrecke mich
 deshalb   über zwei Zeilen (rück mich bitte ein) & Niederlande \\
\addlinespace
 3 & 12345 123 & Frankreich \\
\end{longtable}
\end{filecontents*}
{\def\tabularxcolumn#1{m{#1}}% verwende m- statt p-Spalten für X-Spalten
\LTXtable{\linewidth}{tmptable.tex}}

\end{document}
Mir gefällt es ohne Änderung von \tabularxcolumn übrigens besser:
\documentclass[a4paper,11pt,parskip]{scrartcl} 
\usepackage[latin1]{inputenc} 
\usepackage[ngerman]{babel} 
\usepackage[T1]{fontenc} 
\usepackage[table]{xcolor} 
\usepackage{ltxtable}
\usepackage{filecontents}
\usepackage{booktabs}
\begin{document} 
\begin{filecontents*}{tmptable.tex}
\begin{longtable}{lXl}
\toprule
Nr. & Erklärung & Land \\
\midrule
\endhead
\bottomrule
\endfoot
 1 & just some short text & abc \\
\addlinespace
 2 & ich bin ein sehr langer text und erstrecke mich
 deshalb über zwei Zeilen (rück mich bitte ein) & Niederlande \\
\addlinespace
 3 & 12345 123 & Frankreich \\
\end{longtable}
\end{filecontents*}
\LTXtable{\linewidth}{tmptable.tex}

\end{document}

Gast

Beitrag von Gast »

Hallo,

bitte nicht erschlagen ich weiss der Thread ist schon alt, aber was ist nun genau der Befehl um das einrücken der Zeile zu erreichen?

ich habe meine schnipsel mal bei euren Angehangen und auch da fkt es nicht:
\documentclass[a4paper,11pt,parskip]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[table]{xcolor}
\usepackage{ltxtable}
\usepackage{filecontents}
\begin{document}
\begin{filecontents*}{tmptable.tex}
\begin{longtable}{lXl}
 1 & just some short text & abc \\
 \rowcolor[gray]{.9} 2 &  ich bin ein sehr langer text und erstrecke mich
 deshalb   über zwei Zeilen (rück mich bitte ein) & Niederlande \\
 3 & 12345 123 & Frankreich \\
\end{longtable}
\end{filecontents*}
{\def\tabularxcolumn#1{m{#1}}% verwende m- statt p-Spalten für X-Spalten
\LTXtable{\linewidth}{tmptable.tex}}




\begin{table}[H]
	\caption{einrücken}
		\begin{tabular}{|p{1\textwidth}|}
			\hline
			Teil 1		\\
			\hline 
			- das ist eine kurz		\\
			- aber das ist eine laaaaaaaaange Zeile, die über zwei  und weitere Zeilen geschrieben werden muss und die unteren Teile muss dann eingerückt werden. aber wie? so nicht..\\
			\hline
		\end{tabular}
	
	\label{tab:einrücken}
\end{table}

\end{document}
schönes WE allerseits

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Das ">{\hangindent 1em}" in der Spaltendeklaration meines zweiten Beispiels ist der Trick. Übrigens wirst Du garantiert eine overfull \hbox gemeldet bekommen, weil "|p{1\textwidth}|" mit den beiden Strichen und Abständen zu diesen größer als \textwidth wird. Viel einfacher geht das mit tabularx und X-Spalte. Wenn ich Dein Beispiel richtig interpretiere, willst Du aber eigentlich eine Liste innerhalb einer Tabelle? Deshalb hier einmal zwei Beispiele, wobei die zweite Tabelle eben eine Liste verwendet:
\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\usepackage{mdwlist}

\newenvironment{tableitemize}{%
  \csname @minipagetrue\endcsname
  \itemize
  \leftskip=-\leftmargin
  \advance\leftskip\labelsep
  \advance\leftskip.5em
  \itemsep=0pt
  \parskip=0pt
  \parsep=0pt
}{%
  \vskip-\normalbaselineskip
  \enditemize
}

\begin{document}
\begin{tabularx}{\linewidth}{|>{\hangindent 1em}X|}
  \hline
  Teil 1      \\
  \hline
  -- das ist eine kurz      \\
  -- aber das ist eine laaaaaaaaange Zeile, die über zwei  und weitere Zeilen
  geschrieben werden muss und die unteren Teile muss dann eingerückt
  werden. aber wie? so nicht..\\
  \hline
\end{tabularx}

\bigskip

\begin{tabularx}{\linewidth}{|X|}
\hline
Teil 2\\
\hline
\begin{tableitemize}
\item das eine kurze
\item  aber das ist eine laaaaaaaaange Zeile, die über zwei  und weitere Zeilen
  geschrieben werden muss und die unteren Teile muss dann eingerückt
  werden. aber wie? so nicht
\end{tableitemize}\\
\hline
\end{tabularx}
Ich finde diese Kästen übrigens schrecklich! Dezent eingesetzte horizontale Linien lasse ich mir noch gefallen, aber so etwas ...

Gast

Beitrag von Gast »

nabend Koma,

genau dass habe ich gesucht:
\begin{tabularx}{\linewidth}{|>{\hangindent 0.8em}X|} 
mit dem richtigen FAktor versehen und es fkt. wies soll.

Ja mit deiner Meinung hinsichtlich des Layout dieseer "Tabelle" stimme ich dir zu, nur leider fehlen mir derzeit die Alternativen, ich weiss das Tabellen in Latex nicht leicht sind, aber in Word will ich es nicht schreiben, die tabellen sind derzeit das Manko bei der DA...

VG

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Es geht nicht darum, ob Tabellen leicht oder schwer zu erstellen sind. Es geht mir eher um die Typografie der Tabellen. Vertikale Linien und Rahmen um Tabellen sind einfach nur störend. Ich empfehle hierzu die Anleitung des sehr empfehlenswerten Paket booktabs, sowie tabsatz (erreichbar über die zweite Zeile meiner Signatur). Ich gehe außerdem davon aus, dass die Problematik hier im Forum schon mehrfach von unterschiedlichen Leuten beleuchtet wurde.

Wenn die spezielle Tabelle eine Art Infokasten (ebenfalls ein sogenanntes Konsultationselement) sein soll, dann würde ich hier schlicht auch die horizontale Linie weglassen. Wenn Du den Rahmen darum unbedingt haben willst, fallen mir auf Anhieb zwei brauchbare Möglichkeiten ein:
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{framed}

\DeclareNewTOC[type=beachte,% Verzeichnistyp
  float,% Gleitumgebungen "beachte" und "beachte*" definieren
  floatpos=htbp,% statt Standardgleitposition tbp auch h erlauben
  listname={Verzeichnis der Merkk\"asten},% Verzeichnistitel
  name={Zur Beachtung},% Präfix für die \caption-Beschriftung
  nonfloat% Nicht gleitende Umgebung "beachte-" definieren
]{mrk}

\begin{document}

\listofbeachtes

\begin{framed}
\subsection*{Zur Beachtung}
\begin{itemize}
\item \blindtext
\item \blindtext
\item \blindtext
\end{itemize}
\end{framed}

\blindtext

\begin{beachte-}% Das soll nicht gleiten
  \KOMAoptions{captions=nooneline}
  \setkomafont{caption}{\bfseries}
  \setkomafont{captionlabel}{\bfseries}
  \setlength{\fboxrule}{1pt}
  \setlength{\fboxsep}{1em}
  \fbox{\begin{minipage}{\dimexpr \linewidth-2\fboxrule-2\fboxsep\relax}
      \captionabove{Was ich sagen wollte}
      \begin{itemize}
      \item \blindtext
      \item \blindtext
      \end{itemize}
    \end{minipage}}
\end{beachte-}

\blindtext

\begin{beachte}% Das soll bei Bedarf gleiten
  \KOMAoptions{captions=nooneline}
  \setkomafont{caption}{\bfseries}
  \setkomafont{captionlabel}{\bfseries}
  \setlength{\fboxrule}{1pt}
  \setlength{\fboxsep}{1em}
  \fbox{\begin{minipage}{\dimexpr \linewidth-2\fboxrule-2\fboxsep\relax}
      \captionabove{Was ich sagen wollte}
      \begin{itemize}
      \item \blindtext
      \item \blindtext
      \end{itemize}
    \end{minipage}}
\end{beachte}

\blindtext

\end{document}
Natürlich sollte man, nachdem man sich für eine Variante entscheiden hat, eine Umgebung dafür definieren. Um dabei den Inhalt der Umgebung in eine \fbox packen zu können, kann man entweder die lrbox (siehe usrguide) verwenden oder das Paket environ.

Antworten