我可以看到可以通过 tabularx 包实现相对列宽,如下图所示这个问题。我希望我的表格能够覆盖整个文本宽度,并提供相对列宽来指示应如何分配空间。但是,我的表格已经应用了特定格式,我无法协调格式的实现和相对列宽。
下面显示的是我已用最小工作示例生成的表格的图像,其代码也在下面。我现在拥有的是一个横跨整个文本宽度的表格。它有一个标题行,具有特定的文本格式和单元格颜色。后续行具有交替的彩色背景。现在,列宽设置为足够长以容纳表中的数据。我想要结合 tabularx 包(或任何其他实现此目标的包/功能)的功能,以表示列的相对宽度(对于下面的示例)应分别为 0.15、0.15、0.55 和 0.15,同时仍保留其余的表格格式。这样,列实际上就横跨整个文本宽度。我找不到这样做的方法!
生成上表的当前最小工作示例
\documentclass{article}
\usepackage[letterpaper,margin=1in]{geometry} % Handles geometry of page layout
\usepackage[table]{xcolor} % Colors tables nicely
\usepackage{tabularx}
\definecolor{greyblue}{rgb}{0.6353,0.6863,0.7686}
% Defines command \rowstyle for specifying style for entire row
\newcolumntype{+}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand {\rowstyle}[1]{\gdef\currentrowstyle{#1} %
#1\ignorespaces
}
\begin{document}
{\rowcolors{2}{black!5}{black!15} % Specify alternating row colors
\begin{table}[h]
\label{table_1} \centering
\begin{tabularx}{\linewidth}{ +c^c^l^c }
\hline
\rowcolor{greyblue} \rowstyle{\bfseries} % Specify the header row is grey-blue in color and bold
Header 1 & Header 2 & Really Long Header 3 & Header 4 \\ % Header row
A & B & CDEFGHIJKLMNOPQRSTUVWXY & Z \\
1 & 2 & 345 & 6 \\
\hline
\end{tabularx}
\end{table}
}
\end{document}
答案1
像这样?
梅威瑟:
\documentclass{article}
\usepackage[letterpaper,margin=1in]{geometry} % Handles geometry of page layout
\usepackage[table]{xcolor} % Colors tables nicely
\usepackage{tabularx}
\definecolor{greyblue}{rgb}{0.6353,0.6863,0.7686}
% Defines command \rowstyle for specifying style for entire row
\newcolumntype{+}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcolumntype{C}{>{\centering\arraybackslash}X} % <-- new
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcommand {\rowstyle}[1]{\gdef\currentrowstyle{#1} %
#1\ignorespaces
}
\begin{document}
\begin{table}[htb]
\renewcommand\arraystretch{1.2}
\rowcolors{2}{black!5}{black!15} % Specify alternating row colors
\centering
\caption{}% label has sence only if it is present
\label{table_1}
\begin{tabularx}{\linewidth}{+>{\hsize=0.15\hsize}C ^ % <-- changed
>{\hsize=0.15\hsize}C ^ % <-- changed
>{\hsize=0.55\hsize}L % <-- changed
>{\hsize=0.15\hsize}C } % <-- changed
\hline
\rowcolor{greyblue}\rowstyle{\bfseries} % Specify the header row is grey-blue in color and bold
Header 1 & Header 2 & Really Long Header 3 & Header 4 \\ % Header row
A & B & CDEFGHIJKLMNOPQRSTUVWXY & Z \\
1 & 2 & 345 & 6 \\
\hline
\end{tabularx}
\end{table}
\end{document}