我需要在表格环境中使用紧凑列表。我需要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 包装itemize
在minipage
环境中时,上述代码有效。
为了节省时间和空间,我创建了一个compactitemt
环境以便自动包装itemize
。minipage
这最初给出了一个错误,但按照下面的代码重新定义环境现在可以正常工作。
\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}