tabularray 和 itemize 兼容性

tabularray 和 itemize 兼容性

包是否tabularrayitemize环境不兼容?简单的 MWE 是:

\documentclass{article}
\usepackage{tabularray}

\begin{document}

\begin{tblr}{%
colspec={Xl}, hlines, vlines
}
text & text\\
\begin{itemize}
    \item text 1
    \item text 2
\end{itemize} & text 3 \\
\end{tblr}

\end{document}

我收到很多错误,例如“出现问题 - 可能缺少 \item。\end”,但输出还是产生了。这个问题可以修复吗?

谢谢。

答案1

我可以提供一个解决方法:

\documentclass{article}
\usepackage{tabularray,varwidth,enumitem}

\begin{document}

\noindent
\begin{tblr}{
  colspec={Xl}, hlines, vlines
}
text & text\\
\begin{varwidth}[t]{\linewidth}
\begin{itemize}[topsep=0pt,parsep=0pt]
    \item abc def abc def abc def abc def
          abc def abc def abc def abc def
          abc def abc def abc def abc def
    \item abc def abc def abc def abc def
          abc def abc def abc def abc def
          abc def abc def abc def abc def\strut
\end{itemize}
\end{varwidth} & text 3 \\
abc def abc def abc def abc def
abc def abc def abc def abc def
abc def abc def abc def abc def
 & xyz
\end{tblr}

\end{document}

在此处输入图片描述

答案2

https://github.com/lvjr/tabularray/issues/36

我已经将varwidth库和measure选项添加到包中。您可以使用和选项tabularray将垂直材料放入单元格内。您也可以将其设置为默认选项。\UseTblrLibrary{varwidth}measure=vboxmeasure=vbox

\documentclass{article}

\usepackage{tabularray}
\UseTblrLibrary{varwidth}

\begin{document}

\begin{tblr}{
  colspec = {Xl}, hlines, vlines,
  measure = vbox,
}
  text & text \\
  \begin{itemize}
    \item text 1
    \item text 2
  \end{itemize} & text 3 \\
\end{tblr}

% set "measure=vbox" as default
\SetTblrInner{measure=vbox}

\begin{tblr}{
  colspec = {Xl}, hlines, vlines,
}
  text & text \\
  \begin{itemize}
    \item text 1
    \item text 2
  \end{itemize} & text 3 \\
\end{tblr}

\end{document}

在此处输入图片描述

您可以从下载最新的软件包文件 https://github.com/lvjr/tabularray/raw/main/tabularray.sty 或者等待2021N9月1日的版本。我需要在下一个版本发布之前更新手册。

tabular但最好使用@egreg 的解决方案,因为在项目化单元格周围有额外的垂直空间(和环境也是如此tabularx)。

答案3

将环境封闭在宽度为 的itemize范围内。minipage\hsize

在此处输入图片描述

\documentclass{article}
\usepackage{tabularray}
\begin{document}
\noindent
\begin{tblr}{%
colspec={Xl}, hlines, vlines
}
text & text\\
\begin{minipage}{\hsize}
  \begin{itemize}
    \item text 1
    \item text 2
  \end{itemize}
\end{minipage}
& text 3 \\
\end{tblr}

\end{document}

答案4

这是建议使用的itemize解决tabularray方案官方文档

\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{varwidth}
\usepackage{enumitem}

\begin{document}

\noindent
\begin{tblr}{
  colspec={Xl}, measure=vbox, hlines, vlines, stretch=-1
}
text & text\\
\begin{itemize}[nosep]
    \item abc def abc def abc def abc def
          abc def abc def abc def abc def
          abc def abc def abc def abc def
    \item abc def abc def abc def abc def
          abc def abc def abc def abc def
          abc def abc def abc def abc def
\end{itemize} & text 3 \\
abc def abc def abc def abc def
abc def abc def abc def abc def
abc def abc def abc def abc def
 & xyz
\end{tblr}

特别请注意,该stretch=-1选项避免了列表上方和下方的垂直空间。

如果您也像我一样想避免列表前出现水平空格,请\setlength{\leftmargini}{.25cm}在 之前的任何位置设置itemize

相关内容