基于柱类型 c 的侧向柱类型

基于柱类型 c 的侧向柱类型

我正在尝试基于列类型 c 创建横向列类型。目前它看起来像这样:图形示例

我想将表达式“长单词”放在列的垂直中间,并消除删除文本文本文本...字段的错误。我搜索并尝试过,但没有成功。

这是我的最小工作示例:

\documentclass[11pt, a4paper]{article}
\usepackage{lmodern}
\usepackage{array}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage{tabularx}
\usepackage{rotating}

\newcolumntype{R}{>{\begin{sideways}}c<{\end{sideways}}}
\begin{document}
\begin{tabularx}{\textwidth}{|R|X|}
\hline
\rotatebox{270}{1234} & text\\
\hline
long word & text text text text text text text text text text text text text     text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text \\
\hline
\end{tabularx}
\end{document}

答案1

这里有两件事你可以做来获得你想要的效果。

第一种是重新定义\tabularxcolumn。当您调用X列类型时,tabularx会将该列转换为类型p{...}列。您可以更改此行为。

\renewcommand{\tabularxcolumn}[1]{m{#1}}

得到一个parbox居中的。请参阅文档以tabularx了解更多详细信息。

第二种方法是不使用rotating包,而是使用graphicx包的势来定义旋转发生的点。这种方法的缺点是它graphicx不提供sideways您使用的环境。因此,为此,您将定义一个新的sideways环境。

下面是一个 MWE,它说明了这一点:

\documentclass{article}
%%--------------------
\usepackage{graphicx}
\makeatletter
\newsavebox{\ingo@sideways@box}
\newenvironment{ingosideways}
  {\begin{lrbox}{\ingo@sideways@box}}
  {\end{lrbox}\rotatebox[origin=c]{90}{\usebox{\ingo@sideways@box}}}
\makeatother
%%--------------------
%%\usepackage{rotating}
\usepackage{array}
\usepackage{tabularx}
\newcolumntype{R}{>{\begin{ingosideways}}c<{\end{ingosideways}}}
%%--------------------
\usepackage{lipsum}
\pagestyle{empty}
\begin{document}

{\renewcommand{\tabularxcolumn}[1]{m{#1}}%
\begin{tabularx}{\textwidth}{| R | X |}\hline
\rotatebox[origin=c]{-90}{1234}             & text                         \\\hline
{This is a very long entry for this column} & {\let\par\relax\lipsum[1-2]} \\\hline
\end{tabularx}}

\end{document}

在此处输入图片描述

我已将重新定义括在一个组内,以便重新定义不会对文档中以后 \tabularxcolumn使用环境产生不利影响。tabularx

此外,这里的使用也lipsum带来了一些错误白色空间使得居中看起来不平衡:正确的我还临时\par在调用的范围内重新定义了此lipsum。在您自己的文档中,您不需要进行此更正!

答案2

如果tabularx不是必须的话,我建议使用以下套餐cals

在此处输入图片描述

\documentclass{article}
\usepackage{cals}
\usepackage{rotating}
\usepackage{lipsum}
\begin{document}
\begin{calstable}
\colwidths{{1.1cm}{12cm}}
\brow
\alignC\cell{1234}
\alignL\cell{text}
\erow
\brow
\alignC\cell{\vfil\begin{sideways}long word\end{sideways}}
\alignL\cell{\lipsum[1-2]}
\erow
\end{calstable}
\end{document}

相关内容