![调整列宽和垂直文本](https://linux22.com/image/405237/%E8%B0%83%E6%95%B4%E5%88%97%E5%AE%BD%E5%92%8C%E5%9E%82%E7%9B%B4%E6%96%87%E6%9C%AC.png)
我尝试了几种不同的解决方案来解决我遇到的问题,但都没有奏效。所以如果我重复了这个问题,我很抱歉。所以我有这个代码:
\begin{table}[htb]
\centering
\caption{Descrição das categorias operacionais e de design segundo a norma EN45545-1.}
\label{categorias}
\resizebox{\textwidth}{!}{%
\begin{tabular}{XXXXXX}
& & \multicolumn{4}{c}{\textbf{Categoria de design}} \\
& & \begin{tabular}[c]{@{}l@{}}Veículos\\ standard\end{tabular} & \begin{tabular}[c]{@{}l@{}}Veículos\\ automáticos sem\\ staff treinado\end{tabular} & \begin{tabular}[c]{@{}l@{}}Veículos de\\ dois andares\end{tabular} & Carruagem-cama \\
\multirow{4}{*}{\textbf{Categoria Operacional}} & \begin{tabular}[c]{@{}l@{}}Veículos de superfície que não atravessam túneis ou secções elevadas de terreno, com possibilidade de evacuação lateral\end{tabular} & HL1 & HL1 & HL1 & HL1 \\
& \begin{tabular}[c]{@{}l@{}}Veículos que atravessam túneis/secções de terreno elevadas, com possibilidade de evacuação lateral e alcance de um local de segurança num curto espaço de tempo, em caso de acidente\end{tabular} & HL2 & HL2 & HL2 & HL2 \\
& \begin{tabular}[c]{@{}l@{}}Veículos que atravessam túneis/secções de terreno elevadas, com possibilidade de evacuação lateral e alcance de um local de segurança num longo espaço de tempo, em caso de acidente\end{tabular} & HL2 & HL2 & HL2 & HL3 \\
& \begin{tabular}[c]{@{}l@{}}Veículos que atravessam túneis/secções de terreno elevadas, sem possibilidade de evacuação lateral e alcance de um local de segurança num curto espaço de tempo, em caso de acidente\end{tabular} & HL3 & HL3 & HL3 & HL3
\end{tabular}%
}
\end{table}
结果如下:
我希望它变成下面这样的效果。这基本上意味着将第二列的文本调整为较小的文本,并将文本垂直放置在第一列上。不需要背景颜色。
非常感谢大家的帮助!
答案1
我建议使用这个解决方案,只有一X
列——当然是在tabularx
环境中。我还加载了geometry
,以便有更合适的边距(如果您不使用边注),用\thead
from替换了大多数嵌套表格makecell
(这允许在标准列单元格中换行),最后使用以下booktab
命令在行之间添加了一些空间\addlinespace
:
\documentclass{article}
\usepackage{geometry}
\usepackage{tabularx, multirow, makecell, booktabs, caption}
\begin{document}
\begin{table}[htb]
\centering\setlength{\tabcolsep}{4pt}
\setlength{\extrarowheight}{2pt}
\renewcommand{\theadfont}{\small}
\caption{Descrição das categorias operacionais e de design segundo a norma EN45545-1.}
\label{categorias}
\begin{tabularx}{\linewidth}{cXcccc}%
& & \multicolumn{4}{c}{\textbf{Categoria de design}} \\
& & \thead{Veículos\\ standard} & \thead{Veículos\\ automáticos sem\\ staff treinado} & \thead{Veículos de\\ dois andares} & \thead{Carruagem-\\cama }\\
\multirow{19}{*}{\rotatebox{90}{\bfseries Categoria Operacional}} %
& Veículos de superfície que não atravessam túneis ou secções elevadas de terreno, com possibilidade de evacuação lateral & HL1 & HL1 & HL1 & HL1 \\
\addlinespace
& Veículos que atravessam túneis/secções de terreno elevadas, com possibilidade de evacuação lateral e alcance de um local de segurança num curto espaço de tempo, em caso de acidente & HL2 & HL2 & HL2 & HL2 \\
\addlinespace
& Veículos que atravessam túneis/secções de terreno elevadas, com possibilidade de evacuação lateral e alcance de um local de segurança num longo espaço de tempo, em caso de acidente & HL2 & HL2 & HL2 & HL3 \\
\addlinespace
& Veículos que atravessam túneis/secções de terreno elevadas, sem possibilidade de evacuação lateral e alcance de um local de segurança num curto espaço de tempo, em caso de acidente & HL3 & HL3 & HL3 & HL3
\end{tabularx}%
\end{table}
\end{document}
答案2
正如您(重新)发现的那样,使用\resizebox
强制tabular
环境进入文本块的宽度几乎不会产生令人满意的解决方案。因此,不要使用\resizebox
——至少不是为了调整表格大小。
我将假设X
代码片段中的列类型由包定义tabularx
。(如果这个假设是错误的,请告诉我!)以下解决方案使用tabularx
列宽不相等的环境。(请注意,相对列宽总和为5
,等于类型的列数X
。)我已经删除了tabular
标题行中的包装器——由于列类型允许自动换行,因此不需要它们C
。我还删除了第一列。根据我的经验,读者非常不喜欢不得不伸长脖子才能读到一些东西;我将字符串“Categoria operacional”塞进了标题行。
下面的截图(大致)显示了下面的代码生成的表格的上半部分。
\documentclass{article}
\usepackage[a4paper,margin=2.5cm]{geometry} % set suitable page parameters
\usepackage[portuguese]{babel}
\usepackage[T1]{fontenc}
\usepackage[skip=0.333\baselineskip]{caption} % optional
\usepackage{tabularx,ragged2e,booktabs}
%% Define variable-width raggedright and centered versions of the "X" column type:
\newcolumntype{L}[1]{>{\RaggedRight\arraybackslash%
\hsize=#1\hsize\linewidth=\hsize}X}
\newcolumntype{C}[1]{>{\Centering\arraybackslash%
\hsize=#1\hsize\linewidth=\hsize\hspace{0pt}}X}
\begin{document}
\begin{table}[htb]
\caption{Descrição das categorias operacionais e de design segundo a norma EN45545-1.}
\label{tab:categorias}
\begin{tabularx}{\textwidth}{@{} L{2.2} C{0.6}C{0.9}C{0.7}C{0.6} @{}}
\toprule
Categoria operacional & \multicolumn{4}{c@{}}{Categoria de design} \\
\cmidrule(l){2-5}
& Veículos \emph{standard} & Veículos automáticos sem staff treinado & Veículos de dois andares & Carruagemcama \\
\midrule
Veículos de superfície que não atravessam túneis ou secções elevadas de terreno, com possibilidade de evacuação lateral & HL1 & HL1 & HL1 & HL1 \\
\addlinespace
Veículos que atravessam túneis\slash secções de terreno elevadas, com possibilidade de evacuação lateral e alcance de um local de segurança num curto espaço de tempo, em caso de acidente & HL2 & HL2 & HL2 & HL2 \\
\addlinespace
Veículos que atravessam túneis\slash secções de terreno elevadas, com possibilidade de evacuação lateral e alcance de um local de segurança num longo espaço de tempo, em caso de acidente & HL2 & HL2 & HL2 & HL3 \\
\addlinespace
Veículos que atravessam túneis\slash secções de terreno elevadas, sem possibilidade de evacuação lateral e alcance de um local de segurança num curto espaço de tempo, em caso de acidente & HL3 & HL3 & HL3 & HL3 \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}