我想在表格单元格内放置一个条目,然后遇到了 tabu/longtabu 包。tabularx
它提供了一个X
允许包含条目的列,即跨多行的内容。
我的目标是创建一个包含两列的表格,该表格居中,宽度仅与其内容所需的宽度相同(不跨越、扩展……!)。然而,似乎我总是必须指定宽度:
\begin{longtabu} to \linewidth [c]{|r|X[-l]|} % \linewidth is not what I want
some text & \begin{itemize}[label={},leftmargin=*]
\item 11
\item 22
\end{itemize}
\end{longtabu}
我可以\linewidth
用类似的东西来代替10cm
,但那是一个静态且愚蠢的解决方案。我基本上不知道所需的宽度,因为我在运行时动态填充表格内的项目。
与之不同的是tabular
,它仅分布在实际需要的宽度上,但不允许换行:
\begin{tabular}{rl} % works like I want it to work
some text & \begin{itemize}[label={},leftmargin=*] % fails
\item 11
\item 22
\end{itemize}
\end{tabular}
我正在寻找一个简单的解决方案(没有使用命令重新定义的黑客解决方案,...)来解决表格内项目化这样的简单问题。
答案1
使用varwidth
包的简单解决方案:
\begin{table}
\centering
\setlength{\tabcolsep}{3pt} % add some value otherwise LaTeX puts no space at all between the columns
\begin{tabular}{rl}
\LaTeX~is: & \begin{varwidth}[t]{\linewidth}\begin{itemize}[nosep,after=\strut,label={},leftmargin=0pt]
\item Nice and powerful,
\item but sometimes off target.
\end{itemize}\end{varwidth}
\end{tabular}
\end{table}
将导致
注1:如果希望左列内容垂直居中,请替换t
为。c
注 2:指定\linewidth
只是varwidth
一种解决方法,因为我不知道实际的最大列宽。请确保您的分项不要太宽,并且不会占用超过列可以提供的空间。
答案2
TikZ
解决方法:
\documentclass{article}
\usepackage{enumitem}
\usepackage{tikz}
\begin{document}
\noindent
\begin{tabular}{|r|l|} % works like I want it to work
\hline
some text &
\begin{tikzpicture}[anchor=west, y=.5cm]
\node[anchor=west] at (0, 0) {looooooooooooong item};
\node[anchor=west] at (0,-1) {short item};
\node[anchor=west] at (0,-2) {tiny};
\end{tikzpicture}
\\
\hline
\end{tabular}
\end{document}
结果:
不要使用垂直线,也不要\hline
;我使用它们是为了突出显示这个 1×2 的表格。