包含多列的 tabularx 的高度

包含多列的 tabularx 的高度

我想在多列文本块的左侧添加一个垂直标签。我发现最简单的方法是使用multicol环境作为表格中的一个单元格tabularx。问题是结果tabularx有太多的垂直空白,大概是因为多列环境填充了太多。我愿意接受不使用下面展示的策略的解决方案。MWE 尝试了两次:

\documentclass[article,oneside,letterpaper]{memoir}
    \usepackage{multicol}
    \usepackage{multirow}
    \usepackage{lipsum}
    \usepackage{tabularx}
    \usepackage{graphicx}

\begin{document}
    \begin{tabularx}{\linewidth}{ | l | X  }
        \cline{1-1}
        \multirow{1}{*}{\rotatebox[origin=c]{90}{Margin Label~}}&\\
            & \begin{multicols}{3}
            \lipsum*[1-2]
            \end{multicols} \\
        \cline{1-1}
    \end{tabularx}

    \begin{tabularx}{\linewidth}{ | l | X  }
        \cline{1-1}
        \rotatebox[origin=c]{90}{Margin Label~} & 
            \begin{multicols*}{3}
            \lipsum*[1-2]
            \end{multicols*}\\
        \cline{1-1}
    \end{tabularx}
\end{document}

答案1

multicols*在盒子里面使用会发出警告,但包multicols仍然会使用。

主要问题是,X柱子不会\parbox消除环境周围的垂直空间multicols。您还应该以柱子r为参考点进行旋转。

\documentclass[article,oneside,letterpaper]{memoir}
\usepackage[latin]{babel} % just to avoid most Underfull box messages
\usepackage{multicol}
\usepackage{lipsum}
\usepackage{tabularx}
\usepackage{graphicx}

\begin{document}
\noindent
\begin{tabularx}{\linewidth}{ | l | X  }
\cline{1-1}
\rotatebox[origin=r]{90}{Margin Label\ } &
  \begin{minipage}[t]{\hsize} % a minipage removes almost all vertical space
  \hrule height 0pt % set a reference point
  \vspace{-\baselineskip} % remove an extra vertical space
  \begin{multicols}{3}
  \lipsum*[1-2]
  \end{multicols}
  \end{minipage}
\\
\cline{1-1}
\end{tabularx}
\end{document}

在此处输入图片描述

相关内容