slowfox
12-09-2010, 13:35
Moin!
Ich muss in einigen Tabellenzellen Aufzählungen einfügen. Leider werden dabei unerwünschte vertikale Abstände erzeugt. Ich habe versucht, dieses Problem mit Paketeinstellungen (enumitem) zu lösen, doch das war leider nicht erfolgreich. Die Internetsuche ergab zwei Lösungsvorschläge, die beide für mich nicht zufriedenstellend sind:
Der erste Lösungsvorschlag packt die Aufzählung in eine Minipage. Die Abstände verschwinden so wie gewünscht. Allerdings verwende ich die Aufzählung in X-Spalten (tabularx), d.h. ich kenne in der Regel nicht die Spaltenbreite, die ich bei diesem Lösungsvorschlag der Minipage übergeben müsste.
Der zweite Lösungsvorschlag setzt einen Schalter, doch entfernt dies nur den vertikalen Abstand vor der Aufzählung, nicht nach der Aufzählung.
Ich bin nun folgenden Weg gegangen: Ich verwende grundsätzlich den ersten Lösungsvorschlag mit der Minipage. Die Spaltenbreite lese ich aus tabularx mittels \TX@col@width aus. Da ich dass nicht direkt als Breitenangabe für die Minipage verwenden kann definiere ich mir einen neuen Bezeichner über \let\spaltenbreite\TX@col@width. Das Ergebnis ist wie gewünscht, aber ich bin mir unsicher, ob ich damit nicht irgendwelche negativen Folgen produziere, da ich mich hier im Randbereich meines Latex-Wissens aufhalte.
Mag mal jemand sicherheitshalber über meine Lösung schauen und diese beurteilen. Danke!
\documentclass[ngerman]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[doublespacing]{setspace}
\usepackage{ragged2e,array,booktabs,tabularx}
\usepackage{enumitem}
\setenumerate{leftmargin=*,label=(\roman*), widest=iv, align=left, nolistsep}
\usepackage{blindtext}
% ZU LÖSUNG 2
\makeatletter
\newcommand\novspace{\@minipagetrue}
\makeatother
% ZU EIGENE LÖSUNG
\makeatletter
\let\spaltenbreite\TX@col@width
\makeatother
\begin{document}
\begin{table}
\footnotesize
\begin{tabularx}{\textwidth}{@{}l%
>{\raggedright\arraybackslash}X%
>{\raggedright\arraybackslash}X@{}}
\toprule
Spalte 1 & Spalte 2 & Spalte 3 \\
\midrule
Zeile 1 & \blindenumerate
& und eine normale Zelle \\
\midrule
Zeile 1 & Text davor ...
\blindenumerate
... und dahinter behebt das Problem weitgehend.
& und eine normale Zelle \\
\midrule
% LÖSUNG 1
% QUELLE: http://www.undertec.de/blog/2009/10/latex-itemizeumgebungen-ohne-vertikalen-abstand-in-tabellen-einfugen.html
% PROBLEM: da eine X-Spalte verwendet wird kenne ich idR die Spaltenbreite nicht, die für die MiniPage angegeben werden muss
Zeile 1 & \begin{minipage}[t]{5cm}%
\raggedright%
\blindenumerate
\end{minipage}
& und eine normale Zelle \\
\midrule
% LÖSUNG 2
% QUELLE: http://groups.google.de/group/de.comp.text.tex/browse_thread/thread/e2d46278443ab5ae
% PROBLEM: vertikaler Abstand nach Aufzählung wird nicht entfernt
Zeile 1 & \novspace%
\blindenumerate%
& und eine normale Zelle \\
\midrule
% EIGENE LÖSUNG
% FRAGE: Schaffe ich mir mit dieser Lösung andere Probleme?
Zeile 1 & \begin{minipage}[t]{\spaltenbreite}%
\raggedright%
\blindenumerate
\end{minipage}
& und eine normale Zelle \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
Ich muss in einigen Tabellenzellen Aufzählungen einfügen. Leider werden dabei unerwünschte vertikale Abstände erzeugt. Ich habe versucht, dieses Problem mit Paketeinstellungen (enumitem) zu lösen, doch das war leider nicht erfolgreich. Die Internetsuche ergab zwei Lösungsvorschläge, die beide für mich nicht zufriedenstellend sind:
Der erste Lösungsvorschlag packt die Aufzählung in eine Minipage. Die Abstände verschwinden so wie gewünscht. Allerdings verwende ich die Aufzählung in X-Spalten (tabularx), d.h. ich kenne in der Regel nicht die Spaltenbreite, die ich bei diesem Lösungsvorschlag der Minipage übergeben müsste.
Der zweite Lösungsvorschlag setzt einen Schalter, doch entfernt dies nur den vertikalen Abstand vor der Aufzählung, nicht nach der Aufzählung.
Ich bin nun folgenden Weg gegangen: Ich verwende grundsätzlich den ersten Lösungsvorschlag mit der Minipage. Die Spaltenbreite lese ich aus tabularx mittels \TX@col@width aus. Da ich dass nicht direkt als Breitenangabe für die Minipage verwenden kann definiere ich mir einen neuen Bezeichner über \let\spaltenbreite\TX@col@width. Das Ergebnis ist wie gewünscht, aber ich bin mir unsicher, ob ich damit nicht irgendwelche negativen Folgen produziere, da ich mich hier im Randbereich meines Latex-Wissens aufhalte.
Mag mal jemand sicherheitshalber über meine Lösung schauen und diese beurteilen. Danke!
\documentclass[ngerman]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[doublespacing]{setspace}
\usepackage{ragged2e,array,booktabs,tabularx}
\usepackage{enumitem}
\setenumerate{leftmargin=*,label=(\roman*), widest=iv, align=left, nolistsep}
\usepackage{blindtext}
% ZU LÖSUNG 2
\makeatletter
\newcommand\novspace{\@minipagetrue}
\makeatother
% ZU EIGENE LÖSUNG
\makeatletter
\let\spaltenbreite\TX@col@width
\makeatother
\begin{document}
\begin{table}
\footnotesize
\begin{tabularx}{\textwidth}{@{}l%
>{\raggedright\arraybackslash}X%
>{\raggedright\arraybackslash}X@{}}
\toprule
Spalte 1 & Spalte 2 & Spalte 3 \\
\midrule
Zeile 1 & \blindenumerate
& und eine normale Zelle \\
\midrule
Zeile 1 & Text davor ...
\blindenumerate
... und dahinter behebt das Problem weitgehend.
& und eine normale Zelle \\
\midrule
% LÖSUNG 1
% QUELLE: http://www.undertec.de/blog/2009/10/latex-itemizeumgebungen-ohne-vertikalen-abstand-in-tabellen-einfugen.html
% PROBLEM: da eine X-Spalte verwendet wird kenne ich idR die Spaltenbreite nicht, die für die MiniPage angegeben werden muss
Zeile 1 & \begin{minipage}[t]{5cm}%
\raggedright%
\blindenumerate
\end{minipage}
& und eine normale Zelle \\
\midrule
% LÖSUNG 2
% QUELLE: http://groups.google.de/group/de.comp.text.tex/browse_thread/thread/e2d46278443ab5ae
% PROBLEM: vertikaler Abstand nach Aufzählung wird nicht entfernt
Zeile 1 & \novspace%
\blindenumerate%
& und eine normale Zelle \\
\midrule
% EIGENE LÖSUNG
% FRAGE: Schaffe ich mir mit dieser Lösung andere Probleme?
Zeile 1 & \begin{minipage}[t]{\spaltenbreite}%
\raggedright%
\blindenumerate
\end{minipage}
& und eine normale Zelle \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}