我相信我的问题非常简单,一定有一个非常简单的方法来解决这个问题,但是因为我对 Latex 还很陌生。我有多个表,它们都包含不同的字符长度,我想要的是将它们全部设置为相同的宽度
\begin{table} [h]
\caption {Question} \label{tab:Question}
\begin{center}
\begin{tabular}{llrrrrrr}
\toprule
\multicolumn{2}{l}{x} & Blue \\
\multicolumn{2}{l}{y} & Green \\
\multicolumn{2}{l}{z} & Red \\
\bottomrule
\end{tabular}
\end{center}
\end{table}
现在假设我还在使用另一个如下所示的表:
\begin{table} [h]
\caption {Question} \label{tab:Question}
\begin{center}
\begin{tabular}{llrrrrrr}
\toprule
\multicolumn{2}{l}{x} & Just a random text to illustrate \\
\multicolumn{2}{l}{y} & my \\
\multicolumn{2}{l}{z} & point \\
\bottomrule
\end{tabular}
\end{center}
\end{table}
现在,当我编译表格时,它们自然会有不同的大小,因为每列的长度都不一样。因此,我所寻找的是使宽度大小相同。
希望我的回答简洁明了。非常感谢您的帮助!
答案1
目前还不清楚您是否希望列或表的宽度相等。好吧,在两种情况下,使用tabularx
表格环境都很方便。例如,对于后一种情况,您可以将它们写成:
\documentclass{article}
\usepackage{booktabs, makecell, tabularx}
\setcellgapes{2pt}
\newcolumntype{L}{>{\raggedright\arraybackslash\linespread{0.84}\selectfont}X}
%---------------- show page layoutdon't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\begin{document}
\begin{table}[ht]
\makegapedcells
\caption {Question} \label{tab:Question-1}
\centering
\begin{tabularx}{0.4\linewidth}{>{\raggedright}p{3em} L} % <---
\toprule
x & Blue \\
y & Green \\
z & Red \\
\bottomrule
\end{tabularx}
\end{table}
\begin{table}[ht]
\caption {Question} \label{tab:Question-2}
\makegapedcells
\centering
\begin{tabularx}{0.4\linewidth}{>{\raggedright}p{3em} L} % <---
\toprule
x & Just a random text to illustrate \\
y & my \\
z & point \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
其中0.4\linewidth
确定表格的宽度。当然,合理的表格最大宽度是\linewidth
。以上 MWE 产生:
(红线表示文本边框)
如您所见,在某些情况下,如果单元格中的文本长度超过规定的单元格宽度,则文本会被分成多行。