使用 varwidth 使段落在表格中居中

使用 varwidth 使段落在表格中居中

下面的代码实现了我想要的功能,除了Vp选项一样的行为,但我想要的是m选项。

\documentclass[12pt]{memoir}
\usepackage{varwidth}
\begin{document}
\begin{tabular}{lV{2in}}\hline
Cat & Animal\newline Cute\newline Very furry\newline Spotted\\
\end{tabular}
\end{document}

如果我使用,m我必须手动找出第二列中最长项目的长度,但是“Cat”这个词却像我想要的那样垂直居中。

\documentclass[12pt]{memoir}
\usepackage{varwidth}
\begin{document}
\begin{tabular}{lm{2in}}\hline
Cat & Animal\newline Cute\newline Very furry\newline Spotted\\
\end{tabular}
\end{document}

它们看起来是这样的:

两个例子,左边是 m 右边是 V

我只找到了V通过互联网搜索;该varwidth手册的内容令人惊讶地稀少。

我如何获得一个结合了 和 的 的表选项arraymvarwidth如果这很重要,V我实际上正在使用memoir的实现。array

答案1

环境{NiceTabular}( nicematrix2021-10-18 ≥ 6.3) 支持Vvarwidth 带有可选参数,在方括号之间mpb表示垂直位置。因此,您直接获得了预期的输出。

\documentclass[12pt]{memoir}
\usepackage{varwidth}
\usepackage{nicematrix}

\begin{document}

\begin{NiceTabular}{lV[m]{2in}}\hline
Cat & Animal\newline Cute\newline Very furry\newline Spotted\\
\end{NiceTabular}

\end{document}

上述代码的输出

评论:该字母V还支持键rlc用于水平对齐。

答案2

我不知道这varwidth定义了V列类型。现在我知道了!;-)

它的定义是

\newcolumntype{V}[1]{%
  >{\begin{varwidth}[t]{#1}\narrowragged\let\\\tabularnewline}%
  l%
  <{\@finalstrut\@arstrutbox\end{varwidth}}}

所以你应该得到你想要的

\documentclass[12pt]{memoir}
\usepackage{varwidth}

\makeatletter
\newcolumntype{M}[1]{%
  >{\begin{varwidth}{#1}\narrowragged\let\\\tabularnewline\strut}%
  l%
  <{\@finalstrut\@arstrutbox\end{varwidth}}}
\makeatother

\begin{document}
\begin{tabular}{lM{2in}}\hline
Cat & Animal\newline Cute\newline Very furry\newline Spotted\\
\end{tabular}
\end{document}

请注意,memoir加载array(实际上它有这样的代码);对于其他类,需要添加

\usepackage{array}

在此处输入图片描述

答案3

我不确定我是否完全理解了您的问题,但是这个答案是否给出了您想要的输出?如果是这样,我想问题就是语法是否适合您。

\documentclass[12pt]{memoir}
\usepackage{stackengine}
\setstackEOL{\newline}
\setstackgap{L}{13pt}
\begin{document}
\begin{tabular}{ll}\hline
Cat & \Centerstack[l]{Animal\newline Cute\newline Very furry\newline Spotted}\\
\end{tabular}
\end{document}

在此处输入图片描述

相关内容