Die Antwort von Epllus auf die Frage Wie kann ich eine Aufzählung in einer Tabelle ohne zusätzlichen vertikalen Abstand verwenden? wollte ich auf eine longtable übertragen. Wenn die Aufzählung am Anfang der Tabellenzelle eingefügt wird, entsteht aber trotzdem eine Leerzeile. Kann man das irgendwie ändern?

\documentclass[ngerman]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{array,longtable}

\makeatletter
\newcommand{\minipagetrue}{\@minipagetrue}
\makeatother

\usepackage{enumitem}
\newlist{titemize}{itemize}{4}% neue Listenumgebung für Tabellen
\setlist[titemize]{nosep,after=\vskip-\baselineskip,
  label={\textbullet},leftmargin=*,before=\minipagetrue,}

\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}
\renewcommand\arraystretch{1.25}

\begin{document}
\begin{longtable}{@{}lP{6cm}@{}} 
  \textbf{Gebiet} & \textbf{Erläuterung} \\[5pt]
  Gebiet 1 &
    \begin{titemize}
      \item Punkt 1 
      \begin{titemize}
        \item Unterpunkt 1
        \item Unterpunkt 2
        \item etc.
      \end{titemize}
      \item Punkt 2
      \item Punkt 3
      \item Punkt 4
    \end{titemize}\\
  Gebiet 2  & 
    \begin{titemize}
      \item Punkt a
      \item etc.
    \end{titemize}\\
  Gebiet 3 & 
    Hier steht Text\\
  Gebiet 4 & 
    Hier steht Text
    \begin{titemize}
      \item Punkt I
      \item Punkt II
    \end{titemize}
\end{longtable}
\end{document}

alt text

gefragt 07 Aug '13, 15:47

esdd's gravatar image

esdd
14.2k53251
Akzeptiert: 87%

bearbeitet 30 Dez '13, 20:22

Clemens's gravatar image

Clemens
19.0k113060


Das folgende ist im wesentlichen eine Zusammenfassung der anderen Antworten, die ich aber für sinnvoll halte:

Da bei einer longtable das Vortäuschen einer minipage mit \@minipagetrue die Leerzeile vor einer Aufzählung nicht in jedem Fall verhindert, ist es besser, wie von @Stefan vorgeschlagen, eine echte minipage in die Spaltendefinition einzubauen:

\newcolumntype{P}[1]{%
    >{\begin{minipage}[t]{#1}\raggedright\arraybackslash}p{#1}<{\end{minipage}}}

Warum eine minipage dafür sinnvoll ist, findet man u.a. in den Antworten auf die Frage Wann sollte ich minipage statt parbox verwenden?

Dann gibt es (mindestens) zwei Möglichkeiten eine kompakte Aufzählung in einer Tabelle unterzubringen.

(1) Mit dem Paket enumitem und einer für diesen Zweck definierten Aufzählung titemize

\usepackage{enumitem}
\newlist{titemize}{itemize}{4}% neue Listenumgebung für Tabellen
\setlist[titemize]{nosep, label=\textbullet, leftmargin=*, after=\strut}

(2) Mit dem Paket paralist und einer neu definierten Umgebung mycompactitem (siehe Antwort von @Bettina)

\usepackage[alwaysadjust]{paralist}
\setdefaultitem{\textbullet}{\textbullet}{\textbullet}{\textbullet}
\newenvironment{mycompactitem}{\begin{compactitem}}{\strut\end{compactitem}}

Das\strut sorgt in beiden Fällen dafür, dass die letzte Aufzählungszeile die richtige Tiefe hat. Nähere Informationen dazu findet man u.a. in der Antwort auf die Frage Was macht der Befehl strut?

Beide Lösungen funktionieren sowohl für tabular als auch longtable Tabellen, wobei das Paket enumitem an sich sehr viel mehr Einstellungsmöglichkeiten bietet.

alt text

Permanenter link

beantwortet 19 Aug '13, 11:13

esdd's gravatar image

esdd
14.2k53251

bearbeitet 19 Aug '13, 12:10

Du könntest eine echte minipage in die Spaltendefinition einbauen:

\newcolumntype{P}[1]{>{\begin{minipage}[t]{#1}\raggedright\arraybackslash}p{#1}<{\end{minipage}\endgraf}}

Dann würde ich after=\vskip-\baselineskip entfernen.

Permanenter link

beantwortet 07 Aug '13, 17:08

stefan's gravatar image

stefan ♦♦
5.8k12234

Kannst Du erläutern, was \endgraf ist, wieso man es hier braucht und warum \par nicht funktioniert?

(08 Aug '13, 05:13) Clemens

@Clemens Vielleicht lohnt sich das als eigene Frage mit einem Minibeispiel, wo par in einer Tabelle fehlschlägt. Ich erinnere mich, dass ein Fehler auftrat, weshalb ich das "Ersatzpar" :-) wählte.

(08 Aug '13, 06:12) stefan ♦♦
1

\par wird von array umdefiniert.

(08 Aug '13, 06:29) Herbert
1

@stefan: Das \endgraf führt bei mir leider zu einer ungewünschten Leerzeile, wenn die Tabellenzelle nicht mit einer Aufzählung endet. Im Beispiel also zwischen Gebiet 3 und 4. Lass ich den Befehl dort weg und verwende dafür after=\strut sieht es bei mir gut aus.

(08 Aug '13, 06:33) esdd

Ich habe damals als Lösung für das Problem \usepackage(paralist) in Verbindung mit einer eigenen Umgebung im Internet gefunden. Deren Definition wurde vor die Tabelle gesetzt, in der dann mycompactitem statt itemize verwendet wurde:

\newenvironment{mycompactitem}{%
\vspace*{-3ex}% verkleinert den oberen vertikalen Abstand
\begin{compactitem}[\textbullet]%
}{
\vspace*{-3ex}%  verkleinert den unteren vertikalen Abstand
\end{compactitem}%
}

Damit die Lösung gleichzeitig für table-Umgebungen funktioniert, ist es aber besser die Abstände bei der Definition von mycompactitem nicht mit \vspace*{-3ex} zu korrigieren, sondern statt dessen den Vorschlag von @Stefan für die geänderte Spaltendefinition zu nutzen. Warum sich eine minipage eignet, ist in den Antworten auf die Frage Wann sollte ich minipage statt parbox verwenden? erläutert.

\documentclass[ngerman]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{array,longtable}

\usepackage[alwaysadjust]{paralist}
\setdefaultitem{\textbullet}{\textbullet}{\textbullet}{\textbullet}

\newenvironment{mycompactitem}{%
  \begin{compactitem}%
  }{%
  \strut\end{compactitem}%
}

\newcolumntype{P}[1]{>{\begin{minipage}[t]{#1}\raggedright\arraybackslash}p{#1}<{\end{minipage}}}
\renewcommand\arraystretch{1.25}

\begin{document}
\begin{longtable}{@{}P{3cm}P{6cm}@{}}
  \textbf{Gebiet} & \textbf{Erläuterung} \\[5pt]
  Gebiet 1 &
    \begin{mycompactitem}
      \item Punkt 1 
        \begin{compactitem}
          \item Unterpunkt 1
          \item Unterpunkt 2
          \item etc.
        \end{compactitem}
      \item Punkt 2
      \item Punkt 3
      \item Punkt 4
    \end{mycompactitem} \\
  Gebiet 2 & 
    \begin{mycompactitem}
      \item Punkt 1 
      \item Punkt 4
    \end{mycompactitem} \\
  Gebiet 3 & 
    Hier steht Text\\
  Gebiet 4 mit weiterer Erläuterung & 
    Hier steht Text 
      \begin{mycompactitem}
        \item Punkt I
        \item Punkt II
      \end{mycompactitem} 
\end{longtable}
\end{document}

alt text

Permanenter link

beantwortet 08 Aug '13, 09:22

Bettina's gravatar image

Bettina
65541923

bearbeitet 10 Aug '13, 06:55

esdd's gravatar image

esdd
14.2k53251

1

@Bettina In der Doku von paralist habe ich jetzt einen Weg gefunden, der ohne das Paket enumitem auskommt. Da sich das Ergebnis nicht ändert, habe ich das direkt in deinen Code eingefügt.

(08 Aug '13, 15:14) esdd

@Bettina Ich hab den Text mal etwas angepasst und auf Stefans Vorschlag verwiesen. Reicht der Link zum Unterschied von parbox und minipage als Erklärung von Stefans Vorschlag aus?

(10 Aug '13, 06:52) esdd

@esdd Ich denke schon, dass der Link ausreicht. Was macht eigentlich der Befehl \strut?

(11 Aug '13, 03:28) Bettina

@Bettina vielleicht hilft dir das hier weiter.

(11 Aug '13, 14:27) Epllus
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×185
×31
×15

Frage gestellt: 07 Aug '13, 15:47

Frage wurde angeschaut: 5,541 Mal

Zuletzt aktualisiert: 30 Dez '13, 20:22