包是否tabularray
与itemize
环境不兼容?简单的 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=vbox
measure=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
或者等待2021N
9月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
。