创建居中表格,并动态扩展至所需空间

创建居中表格,并动态扩展至所需空间

我想在表格单元格内放置一个条目,然后遇到了 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 的表格。

相关内容