尽管项目已清除,但表中仍显示“缺少 \item”

尽管项目已清除,但表中仍显示“缺少 \item”

我需要在表格环境中使用紧凑列表。我需要tabulary表格环境,并使用itemize列表选项。

我的尝试返回错误“出现问题 - 也许缺少 \item。”

以下 MWE 复制了该问题。我刚刚更新了 MikTeX 中的所有软件包(在 Windows 上)。

\documentclass{article} 
\usepackage{tabulary} 
\begin{document} 
  \begin{tabulary}{\linewidth}{L L}  
  test &  \begin{itemize} \item table item 1 \end{itemize} \\  
  \end{tabulary}
\end{document}

正如指出的那样,当将 -environment 包装itemizeminipage环境中时,上述代码有效。

为了节省时间和空间,我创建了一个compactitemt环境以便自动包装itemizeminipage这最初给出了一个错误,但按照下面的代码重新定义环境现在可以正常工作。

\documentclass{scrbook}

\usepackage[inline]{enumitem} 
\usepackage{tabulary}

\newenvironment{compactitemt}{
    \begin{minipage}[t]{\hsize}\begin{itemize}[nosep, wide=0pt]
    }{ \end{itemize}\end{minipage} }

\begin{document}

    \begin{tabulary}{\linewidth}{| J | J |} 
        other column & 
            top line 1
            \begin{compactitemt}
                \item table item 1
            \end{compactitemt}
            bottom line 1
        \\ 
    \end{tabulary}

\end{document}

最终目标是拥有J包含列表的均匀分布的列,如下所示:

在此处输入图片描述

在上面的例子中,如果文本太短以至于没有换行符,那么第二列的宽度应该只与里面的文本一样宽,这将是理想的,但我相信我可以通过手动使用tabularx然后是l列来解决这个问题,当表格太小以至于它的宽度应该小于一行时。

在此处输入图片描述

答案1

tabulary使用 hmode 来测量每个单元格有多少数据,这意味着列表等垂直构造不起作用。它\[在试验期间局部保证安全(充当$但没有其他作用。对 itemixe 的一个非常基本的修改如下,但输出不是那么好。我会使用正常并手动tabular选择列的宽度。p{...}

\documentclass{article}
\usepackage{tabulary}
\makeatletter
\def\TY@list#1#2{%
  \renewcommand\item[1][]{ }%
  }
\def\TY@tab{%
  \setbox\z@\hbox\bgroup
  \let\[$\let\]$%
% new bit to make itemize safe
  \let\list\TY@list
  \let\enditemize\relax
  \let\endlist\relax
% end change
  \let\equation$\let\endequation$%
    \col@sep\tabcolsep
    \let\d@llarbegin\begingroup\let\d@llarend\endgroup
    \let\@mkpream\TY@mkpream
      \def\multicolumn##1##2##3{\multispan##1\relax}%
    \CT@start\TY@tabarray}
\makeatother
\begin{document}
\centering
\begin{tabulary}{\linewidth}{L L} 
test & 
\begin{itemize}
\item table item 1
\end{itemize}
\\ 
\end{tabulary}
\end{document}

在此处输入图片描述

相关内容