tabularx 中枚举后的死空间

tabularx 中枚举后的死空间

我正在尝试使用 在表格中显示列表,tabularx并使用使边距/填充非常紧密enumitem

\documentclass{scrreprt}
\usepackage{tabularx}
\usepackage{enumitem}
    \setlist{nosep,leftmargin=1em}

\begin{document}
This is a long test sentence
    \begin{itemize}
        \item foo
        \item bar
    \end{itemize}
continuing here.

\vspace{2cm}

\begin{tabularx}{\textwidth}{rX}
    foo & bar
    \begin{itemize}
        \item test
        \item foobar
    \end{itemize}
    \\
    baz & barfoo \\
\end{tabularx}

\end{document}

结果

虽然边距重置在表格外部工作正常(如第一个示例所示),但一旦在表格内部(如第二个示例所示),列表后就会插入一个空白行。我该如何摆脱它?

KOMAScript(顺便说一下,我正在使用LuaLaTeX

答案1

每个列表都定义了topsep\parskip以及\partopsep 列表上方和下方的垂直空间。这些空间 <ou 可以通过两种方式删除:

  • 使用enumitem参数beforeafter(第一个例子)
  • 封装列表minipage(第二个例子)
\documentclass{scrreprt}
\usepackage{tabularx}
\usepackage{enumitem}
    \setlist{nosep,leftmargin=1em}

\begin{document}

\begin{tabularx}{\textwidth}{rX}
    foo & bar
    \begin{itemize}[after=\vspace{-\baselineskip}]
        \item test
        \item foobar
    \end{itemize}
    \\
    baz & barfoo \\
\end{tabularx}

\end{document}

在此处输入图片描述

一个更复杂的解决方案是定义新的列表,将其命名为\tabitem,它将列表封装在minipage

\documentclass{scrreprt}
\usepackage{tabularx}
\usepackage{enumitem}
\newlist{tabitem}{itemize}{1}   % <-- defined new list
\setlist[tabitem]{nosep=0pt,
                 leftmargin=*,
                 label=\textbullet,
                 after=\end{minipage},                  % <---
                 before=\begin{minipage}[t]{\linewidth}\raggedright % <---
                 }
\usepackage{lipsum}

\begin{document}

\begin{tabularx}{\textwidth}{rX}
    foo & bar
    
    \begin{tabitem}
        \item \lipsum[66]
        \item foobar
    \end{tabitem}   \\
    baz & \begin{tabitem}
        \item \lipsum[66]
        \item foobar
    \end{tabitem}   \\
text    & \lipsum[66]
\end{tabularx}

\end{document}

在此处输入图片描述

相关内容