表格列部分着色以及如何在表格内垂直居中文本

表格列部分着色以及如何在表格内垂直居中文本

我有这个MWE:

\documentclass[a4paper,12pt]{article}
\usepackage{color}
\usepackage{colortbl}
\usepackage{longtable}
\usepackage{tabularx}
\usepackage[table]{xcolor}
\usepackage{multirow}
\usepackage{booktabs}
\usepackage{array}
\begin{document}
\begin{longtable}{|p{.3\textwidth}|>{\raggedright\arraybackslash}p{.7\textwidth}|}
\hline
\cellcolor{gray!30}Donnée & \cellcolor{gray!30}Définition \\
\hline
\multicolumn{2}{|p{\textwidth}|}{\cellcolor{green!30} \centering \bfseries Semis} \\
\hline
text & text
\end{longtable}
\end{document}

以下是我得到的结果: 在此处输入图片描述

为什么第二行不是完全为绿色?如何解决?

第二个问题:如何居中垂直我的文字在列里面吗?

答案1

只需替换p说明符\multicolumn即可获得更简单的代码和问题的解决方案。

顺便说一句,由于您加载了longtabletabularx,因此您可以考虑加载:它会加载前者并将 longtable 的可能性扩展到 tabularx 环境(本质上不会更改其语法)。此外,如果您加载 ,则ltablex无需加载。colorxcolor

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{colortbl}
\usepackage{ltablex} 
\usepackage[table]{xcolor}
\usepackage{multirow}
\usepackage{booktabs}
\usepackage{array}

\begin{document}

\begin{longtable}{|p{.3\textwidth}|>{\raggedright\arraybackslash}p{.7\textwidth}|}
\hline
\rowcolor{gray!30}Donnée & Définition \\
\hline
\multicolumn{2}{|c|}{\cellcolor{green!30}\bfseries Semis} \\
\hline
text & text\\
\hline
\end{longtable}

\end{document} 

在此处输入图片描述

对于垂直居中的单元格内容,最简单的方法是使用tabularx,将X列类型重新定义为m{…}而不是p{…}cellspacemakecell包允许在单元格中有较不紧密的垂直间距,不幸的是,它们都不能与表格中的颜色命令一起使用 — 不过,cellspace 可以与lcc类型一起使用,如下例中间行所示:

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{array}
\usepackage{colortbl}
\usepackage{ltablex}
\renewcommand{\tabularxcolumn}[1]{>{\raggedright\arraybackslash}m{#1}}
\newcolumntype{Y}{ >{\hsize=0.3\hsize}X}
\newcolumntype{Z}{ >{\hsize=0.7\hsize}X}
\usepackage[table]{xcolor}
\usepackage{multirow}
\usepackage{booktabs}

\usepackage{cellspace}
\setlength\cellspacetoplimit{4pt}
\setlength\cellspacebottomlimit{6pt}
\addparagraphcolumntypes{X, Y, Z}

\begin{document}

\begin{tabularx}{\linewidth}{|Y|Z|}
\hline
\rowcolor{gray!30}Donnée & Définition : Text text text text text text text text text text text text text text text text text \\
\hline
\multicolumn{2}{|Sc|}{\cellcolor{green!30}\bfseries Semis} \\
\hline
text & Text with descenders: gjpqy gjpqy gjpqy gjpqy gjpqy gjpqy gjpqy gjpqy gjpqy gjpqy gjpqy gjpqy gjpqy gjpqy gjpqy gjpqy\\
\hline
\end{tabularx}

\end{document} 

在此处输入图片描述

答案2

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[table]{xcolor}
\usepackage{ltablex,ragged2e}
\renewcommand{\tabularxcolumn}[1]{m{#1}}% or {>{\RaggedRight}m{#1}} 
\usepackage{booktabs}
\usepackage{blindtext}  
\begin{document}

\begin{tabularx}{\linewidth}{| p{0.3\textwidth} | X |}\hline
\rowcolor{gray!30}Donnée & Définition : Text text text text text text text text text text text text text text text text text\\\hline
\multicolumn{2}{|c|}{\cellcolor{green!30}\bfseries Semis} \\\hline
text & \blindtext\\
\hline
\end{tabularx}

\end{document} 

输出中缺少的行只是 pdf 查看器和放大功能的问题。

在此处输入图片描述

相关内容