表格单元格边框和文本垂直居中的问题

表格单元格边框和文本垂直居中的问题

我对第一张图片上的表格格式化很长时间,但仍然无法达到第二张图片中所示的理想效果。

我正在尝试解决两个问题:

  1. 我不明白为什么我的表格白色边框几乎不可见。有趣的是,在 Overleaf 在线生成器中我可以看到白色边框,但如果我打印 PDF 出来,它看起来就不一样了。
    我的 Overleaf 示例

  2. 文本没有垂直居中在单元格中。它的位置有点太靠下。

表格比较:(更新) 表格

\documentclass[8pt]{article}
\usepackage[table,xcdraw]{xcolor}
\usepackage{graphicx}  \usepackage[paperwidth=841pt,paperheight=595pt,top=28pt,right=28pt,bottom=28pt,left=28pt, includefoot, includehead]{geometry}
\usepackage{tabularx} 
\usepackage{listings}
\usepackage{color}  
% SET FONT
\usepackage[T1]{fontenc}
\usepackage[scaled=0.9]{helvet}
\renewcommand*{\familydefault}{\sfdefault}
% TABLES SETTING
\usepackage[font={color=darkgray,bf}]{caption} % set style of all captions
\usepackage[tablename=SAMPLE TABLE]{caption} % set default name of the table

\definecolor{lightergray}{HTML}{f4f4f4}
\definecolor{lightgray}{HTML}{ededed}
\definecolor{myPurple}{HTML}{af0c42}

\begin{document}     
\bigskip
{\renewcommand{\arraystretch}{2} % table padding
\begin{table}[h]
\arrayrulecolor{white}
\caption{\hfill\mbox{}} % to move caption of table to left
\rowcolors{2}{lightergray}{lightgray} % color for every odd and even rows
\begin{tabularx}{\textwidth}{|m{1cm}|m{5cm}|m{2.5cm}|m{1.5cm}|m{2cm}|m{2cm}|m{10.6cm}|}
\hline\rowcolor{myPurple} 
{\color[HTML]{FFFFFF} Key} & {\color[HTML]{FFFFFF} Name} & {\color[HTML]{FFFFFF} Data type} & {\color[HTML]{FFFFFF} Max. \newline length} & {\color[HTML]{FFFFFF} Is nullable} & {\color[HTML]{FFFFFF} Default value} & {\color[HTML]{FFFFFF} Description} \\ \hline
\includegraphics[scale=0.45]{PK.png} & OID & int &  & False &  &  \\ \hline
\includegraphics[scale=0.45]{FK.png} & Url & nvachar & 255 & True &  &  \\ \hline
\includegraphics[scale=0.45]{FK.png} & ServerFolder & nvachar & 255 & True &  &  \\ \hline
\includegraphics[scale=0.45]{FK.png} & OptimisticLockField & int &  & True &  &  \\ \hline
\includegraphics[scale=0.45]{FK.png} & GCRecord & int &  & True &  &  \\ \hline   
\end{tabularx}
\end{table}
} 
\end{document}

我不知道我做错了什么。有人能帮我解决吗?

答案1

\arraystretch我建议用包替换(不对称的)的使用cellspace。它允许您在带有以字母为前缀的说明符的列中定义单元格顶部和底部的最小垂直间距S(或者C如果您加载siunitx)。所以我定义了一个M包含此前缀的列类型。顺便说一句,您使用了一个tabularx环境,但没有X列,这是有问题的。

对于单元格边框,我只是改变了值\arrayrulewidth

\documentclass[8pt]{article}
\usepackage[table,xcdraw]{xcolor}
\usepackage{graphicx}
 \usepackage[paperwidth=841pt,paperheight=595pt,top=28pt,right=28pt,bottom=28pt,left=28pt, includefoot, includehead]{geometry}
\usepackage{tabularx}
\usepackage{listings}
% SET FONT
\usepackage[T1]{fontenc}
\usepackage[scaled=0.9]{helvet}
\renewcommand*{\familydefault}{\sfdefault}
% TABLES SETTING
\usepackage[font={color=darkgray,bf}]{caption} % set style of all captions
\usepackage[tablename=SAMPLE TABLE]{caption} % set default name of the table

\definecolor{lightergray}{HTML}{f4f4f4}
\definecolor{lightgray}{HTML}{ededed}
\definecolor{myPurple}{HTML}{af0c42}

\usepackage{cellspace} 
\setlength{\cellspacetoplimit}{10pt}
\setlength{\cellspacebottomlimit}{10pt}% table padding
\newcolumntype{M}[1]{ >{\mbox{}}S{m{#1}}}

\begin{document}
\bigskip

\begin{table}[h]
\arrayrulecolor{white}\arrayrulewidth=1pt
\caption{\hfill\mbox{}} % to move caption of table to left
\rowcolors{2}{lightergray}{lightgray} % color for every odd and even rows
\begin{tabularx}{\textwidth}{|m{1cm}|M{5cm}|M{2.5cm}|M{1.5cm}|M{2cm}|M{2cm}|>{\arraybackslash}M{10.6cm}|}
\hline\rowcolor{myPurple}
{\color[HTML]{FFFFFF} Key} & {\color[HTML]{FFFFFF} Name} & {\color[HTML]{FFFFFF} Data type} & {\color[HTML]{FFFFFF} Max. \newline length} & {\color[HTML]{FFFFFF} Is nullable} & {\color[HTML]{FFFFFF} Default value} & {\color[HTML]{FFFFFF} Description} \\ \hline
 & OID & int & & False & & \\ \hline
 & Url & nvachar & 255 & True & & \\ \hline
 & ServerFolder & nvachar & 255 & True & & \\ \hline
 & OptimisticLockField & int & & True & & \\ \hline
 & GCRecord & int & & True & & \\ \hline
\end{tabularx}
\end{table}

\end{document} 

在此处输入图片描述

答案2

也许你喜欢这种不同的方法:

  • 用于在表格中包含图像的是\adjustimage来自adjustbox包的宏
  • 定义\adjustboxset图像基线到其垂直中心以及周围的额外垂直空间
  • 列类型已更改,但最后一列除外p{<width>}
  • 对于最后一列,不清楚它们的单元格是否有多行文本以及应该如何对齐。在下面的 mwe 中假设它是多行的,应该垂直居中
  • 为了缩短彩色单元格中文本颜色的书写时间,定义了新的颜色名称wht(白色)
  • 第一行单元格的颜色用于\rowcolor覆盖表格颜色呈现。这个表格的代码更短更清晰(我认为是列表)

与您的代码相比,下面 mwe 中的主要变化在代码中指示<--

\documentclass[8pt]{article}
\usepackage[table,xcdraw]{xcolor}
\usepackage[paperwidth=841pt,paperheight=595pt,
            margin=28pt, includefoot, includehead]{geometry}
\usepackage{adjustbox}   % <--- instead of includegraphicx
\usepackage{tabularx}
% SET FONT
\usepackage[T1]{fontenc}
\usepackage[scaled=0.9]{helvet}
\renewcommand*{\familydefault}{\sfdefault}
% TABLES SETTING
\usepackage[font={color=darkgray,bf}]{caption} % set style of all captions
\usepackage[tablename=SAMPLE TABLE]{caption} % set default name of the table

\definecolor{lightergray}{HTML}{f4f4f4}
\definecolor{lightgray}{HTML}{ededed}
\definecolor{myPurple}{HTML}{af0c42}

\definecolor{wht}{HTML}{FFFFFF}     % <--- new

\usepackage{lipsum}

\begin{document}
\begin{table}[h]
    \arrayrulecolor{white}
    \adjustboxset{width=\linewidth,valign=c, margin=0pt 3pt 0pt 3pt} % <-- new
\caption{\hfill\mbox{}} % to move caption of table to left
    \rowcolors{2}{lightergray}{lightgray} % color for every odd and even rows
\begin{tabularx}{\textwidth}{|p{1cm}|p{5cm}|p{2.5cm}|p{1.5cm}|p{2cm}|p{2cm}|m{10.6cm}|}
    \hline\rowcolor{myPurple}
\textcolor{wht}{Key}
     &  \textcolor{wht}{Name} 
        &   \textcolor{wht}{ata type} 
            &   \begin{tabular}{>{\color{wht}}l}    % <--- new
                Max.\\ 
                length
                \end{tabular} 
                &   \textcolor{wht}{Is nullable} 
                    &   \textcolor{wht}{Default value} 
                        &   \textcolor{wht}{Description}    \\
    \hline
\adjustimage{}{example-image-duck}  
    & OID           & int       &       & False &   & \lipsum[11] \\ \hline
%
\adjustimage{}{example-image-duck}  
    & Url           & nvachar   & 255   & True  &   &  \\ \hline
\adjustimage{}{example-image-duck}  
    & ServerFolder  & nvachar   & 255   & True  &   &  \\ \hline
\adjustimage{}{example-image-duck}
    & OptimisticLockField   
                    & int       &       & True  &   &  \\ \hline
\adjustimage{}{example-image-duck}  
    & GCRecord      & int       &       & True  &   &  \\ \hline
\end{tabularx}
\end{table}
\end{document}

在此处输入图片描述

相关内容