我想在多列文本块的左侧添加一个垂直标签。我发现最简单的方法是使用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}