
itemize
Ich möchte eine -Liste in eine -Umgebung einbinden table
, und zwar kompakt und um Platz zu sparen. Allerdings entsteht oberhalb der Liste eine große Lücke, wenn sie in der Tabelle steht, aber nicht nach einem Absatz im normalen Text:
\documentclass[12pt]{scrbook}
%\usepackage[autooneside=false, headsepline, plainheadsepline, automark]{scrlayer-scrpage}
\linespread{1}
\usepackage{paralist}
\usepackage{enumitem} % enumerate?
\usepackage{tabularx}
\begin{document}
some text
\begin{compactitem} \item point1 \item point2 \end{compactitem}
\begin{table}[ht!]
\setlength{\leftmargini}{7pt}
\begin{tabularx}{\linewidth}{l | X | X }\hline \hline
& ECB& FED\\ \hline
M1 & \begin{itemize}[noitemsep,topsep=0pt] \item point1 \item point2 \end{itemize}
& \begin{compactitem} \item point1 \item point2 \end{compactitem}
\end{tabularx}
\end{table}
\end{document}
Wie Sie sehen, habe ich sowohl das compactitem
from- paralist
Paket als auch itemize
from enumitem
mit seinen Optionen getestet [noitemsep,topsep=0pt]
. Sie erzeugen leicht unterschiedliche Höhen. Dies funktioniert zwischen normalen Absätzen, in der Tabelle jedoch nicht.Ich möchte, dass sich „Punkt1“ auf der gleichen Ebene befindet wie „M1“.
Dieses hier, mit einer leichten Einrückung, die bei einem Zeilenumbruch sichtbar ist (das Wort "Assets" beginnt etwas weiter rechts als das Wort "during"), ist das Ergebnis von
\begin{minipage}[t]{\hsize}\begin{compactitem}
\item Assets can be \textbf{difficult to value} during periods of hyperinflation
\end{compactitem}\end{minipage}
Vergleich der beiden vorgeschlagenen Lösungen:Das folgende MWE vergleicht die beiden Lösungen direkt und definiert neue Umgebungen mit dem Namen compactitemt
und compactitemm
.
\documentclass%[12pt,abstracton,titlepage,parskip=false, no, no,twoside=true,open=right]
{scrbook}
%\usepackage[autooneside=false, headsepline, plainheadsepline, automark]{scrlayer-scrpage}
%\usepackage{listings}
\usepackage{paralist}
%\usepackage{newtxtext}%antpolt mathpazo %\usepackage{mathptmx} %\usepackage{newtxtext}
\usepackage{enumitem} % enumerate?
\newenvironment{compactitemm}{\begin{minipage}[t]{\hsize}\begin{compactitem}}{\end{compactitem}\end{minipage}} %this solution requires enumitem package
\newenvironment{compactitemt}{\begin{itemize}[nosep, wide=0pt,
%left=0pt %for neat, wide=0pt %for flush left to save space
before={\begin{minipage}[t]{\hsize}},
after ={\end{minipage}} ] }{ \end{itemize} }
\renewcommand{\familydefault}{\sfdefault}
\usepackage{tabularx}
\begin{document}
\begin{table}
\setlength{\leftmargini}{7pt} %this impacts the left margin of itemize package, i.e. ``stuff 2'' in table. 7pt aligns with the other solution.
\begin{tabularx}{\linewidth}{X | X }\hline
\multicolumn{2}{c}{stuff 1}\\ \hline
\begin{compactitemt}
\item x This line should break and we see where the next begins
\item y
\item z
\end{compactitemt}
& \begin{compactitemt}
\item a This line should break and we see where the next begins
\item b
\end{compactitemt}\\ \hline
\multicolumn{2}{c}{stuff 2}\\ \hline
\begin{compactitemm}
\item x This line should break and we see where the next begins
\item y
\item z This line should break and we see where the next begins
\end{compactitemm}
& \begin{compactitemm}
\item a This line should break and we see where the next begins
\item b
\end{compactitemm}\\ \hline
\end{tabularx}
\caption{MWE}
\end{table}
\end{document}
Antwort1
- Wenn Sie die Umgebung verwenden
compactitem
, müssen Sie sie in\begin{minipage}[t]{\hsize}
und\end{minipage}
Anweisungen einschließen. Wenn Sie eine
itemize
Umgebung zusammen mit demenumitem
Paket verwenden, können Sie die Anweisungen hinzufügenbefore={\begin{minipage}[t]{\hsize}}, after ={\end{minipage}}
zur Liste der Optionen, die zu gehören
\begin{itemize}
.
\documentclass[12pt]{scrbook}
\usepackage{paralist,enumitem,tabularx}
\begin{document}
\begin{table}[ht!]
\setlength\extrarowheight{2pt} % optional, for a slighly more open "look"
\setlength{\leftmargini}{7pt}
\begin{tabularx}{\linewidth}{l | X | X }
\hline \hline
& ECB & FED\\
\hline
M1 & \begin{itemize}[nosep, left=0pt,
before={\begin{minipage}[t]{\hsize}},
after ={\end{minipage}} ]
\item point1
\item point2
\end{itemize}
& \begin{minipage}[t]{\hsize}
\begin{compactitem}
\item point1
\item point2
\end{compactitem}
\end{minipage}\\
\hline
\end{tabularx}
\end{table}
\end{document}
Antwort2
Für den oberen Bereich reicht es aus, LaTeX glauben zu lassen, dass die Zelle eine Minipage ist. Dafür habe ich einen \compress
Befehl aus einer Antwort auf eine Frage auf dieser Site übernommen. Für den unteren Bereich müssen Sie am Ende ein negatives \baselineskip hinzufügen.
\documentclass[12pt]{scrbook}
%\usepackage[autooneside=false, headsepline, plainheadsepline, automark]{scrlayer-scrpage}
\linespread{1}
\usepackage{paralist}
\usepackage{enumitem} % enumerate?
\usepackage{tabularx}
\makeatletter
\newcommand{\compress}{\@minipagetrue}
\makeatother
\begin{document}
some text
\begin{compactitem} \item point1 \item point2 \end{compactitem}
\begin{table}[ht!]
\setlength{\leftmargini}{7pt}
\begin{tabularx}{\linewidth}{l | >{\compress}X |>{\compress} X }\hline \hline
& ECB& FED\\ \hline
M1 & \begin{itemize}[nosep, after=\vspace{-\baselineskip}] \item point1 \item point2 \end{itemize}\\
\hline
& & \begin{compactitem} \item point1 \item point2 \end{compactitem}\leavevmode\vspace*{-\baselineskip}
\\
\hline
\end{tabularx}
\end{table}
\end{document}