longtable (和 xltabular),单元格中的枚举列表和 \@minipagetrue

longtable (和 xltabular),单元格中的枚举列表和 \@minipagetrue

给出答案这个问题,我学会了重定向\@minipagetrue到表格单元格以摆脱enumerate-environments (和itemizedescription)上方的额外空间。但是,如果我在 中尝试这个技巧longtable,它将不起作用。我可以在 中设置枚举\parbox,但这样我就不需要重定向了。这是一个 MWE(取自引用的答案并进行了修改)。

这是一个功能,一个错误,还是我的误解(即用户错误)?

在此处输入图片描述

\documentclass[fontsize=11pt]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{array, longtable}
\usepackage{enumitem}
\makeatletter
\newcolumntype{P}[1]{>{\@minipagetrue}p{#1}}
\makeatother

\begin{document}

\noindent\begin{tabular}{|P{0.2 \linewidth}|P{0.2 \linewidth}|}
\hline
lipsum & 
\begin{itemize}[nosep, leftmargin=*]
\item A
\item B
\end{itemize}
lipsum \\
\hline
lipsum & lipsum\\
\hline
\end{tabular}

\bigskip

\begin{longtable}[l]{|P{0.2 \linewidth}|P{0.2 \linewidth}|}
\hline
lipsum & 
\begin{itemize}[nosep, leftmargin=*]
\item A
\item B
\end{itemize}
lipsum \\
\hline
lipsum & 
\parbox[t]{\linewidth}{\begin{itemize}[nosep, leftmargin=*]
\item A
\item B
\end{itemize}}
lipsum \\
\hline
lipsum & lipsum\\
\hline
\end{longtable}

\end{document}

答案1

我发现您问题中提到的问题可以部分通过以下列类型的定义来解决:

\newcolumntype{M}[1]{>{\minipage{\hsize}\arraybackslash}p{#1}<{\endminipage}}

有趣的是,如果删除上面的列类型定义,它将不起作用\arraybackslash。为了进行测试,请尝试以下 MWE:

\documentclass[fontsize=11pt]{article}
\usepackage{array, longtable}
\usepackage{enumitem}
\newcolumntype{M}[1]{>{\minipage{\hsize}\arraybackslash}p{#1}<{\endminipage}}
\makeatletter
\newcolumntype{P}[1]{>{\@minipagetrue}p{#1}} %this not work as expected :-(
\makeatother

\begin{document}

\begingroup
    \centering
    \setlist[itemize]{nosep, leftmargin=*}
\begin{tabular}{|P{0.2\linewidth}|P{0.2\linewidth}|}
    \hline
lipsum  &   \begin{itemize}
        \item A
        \item B
            \end{itemize}
            lipsum \\
    \hline
lipsum  &   lipsum\\
    \hline
\end{tabular}

\medskip
\begin{longtable}{|P{0.2\linewidth}|P{0.2\linewidth}|}
    \hline
lipsum  &   \begin{itemize}
        \item A
        \item B
            \end{itemize}
            lipsum \\
    \hline
lipsum  &   lipsum\\
    \hline
    \end{longtable}

\medskip
\begin{longtable}{|M{0.2\linewidth}|M{0.2\linewidth}|}
    \hline
lipsum  &   \begin{itemize}
        \item A
        \item B
            \end{itemize}
            lipsum \\
    \hline
lipsum  &   lipsum\\
    \hline
    \end{longtable}
\endgroup
\end{document}

结果如下:

在此处输入图片描述

相关内容