表格中文本居中与颜色标签相关的问题

表格中文本居中与颜色标签相关的问题

我正在尝试制作如下所示的基本颜色表

\documentclass{article}
 \usepackage{booktabs}
 \usepackage[dvipsnames*,svgnames]{xcolor}
 \usepackage{colortbl}
 \usepackage{array}
 \begin{document}

\begin{table}
\centering
\setlength{\aboverulesep}{0pt}
\setlength{\belowrulesep}{0pt}
\setlength{\extrarowheight}{.75ex}
\begin{tabular}{|>{\columncolor{LightSteelBlue}}c| c | c | c|}
\toprule
 \rowcolor{LightSteelBlue}  & {Mann} & {Kvinne} & {Totalt} \\ 
 \rowcolor{LightSteelBlue}  &        &          &        \\ \midrule
 \O nsker        &      &        &        \\ 
 Ballbinge       &      &        &        \\ \midrule
 \O nsker ikke   &      &        &        \\ 
 Ballbinge       &      &        &        \\ \midrule
 Totalt          &      &        &        \\ 
                 &      &        &        \\  
\bottomrule
\end{tabular}
\end{table}
\end{document}

现在我想将文本放在第一行和第一列的框内居中。我的第一个想法是使用\multirows,但结果却很糟糕。文本隐藏在颜色后面。

创建上述带有居中文本的表格的正确方法是什么?

(关于如何改善表格外观的任何其他评论也欢迎)

答案1

该软件包的用户指南第 3 页multirow解释了如何处理由colortblmultirow软件包之间的某些交互引起的问题。我相信您的 MWE 的以下修改形式(结合了用户指南中描述的解决方法)可以满足您对四个单元格内容进行居中的需求,到目前为止,这四个单元格的内容尚未正确居中。

\documentclass{article}
\usepackage{booktabs,multirow}
\usepackage[dvipsnames,svgnames,table]{xcolor}
\begin{document}
\begin{table}
\centering
\setlength{\aboverulesep}{0pt}
\setlength{\belowrulesep}{0pt}
\setlength{\extrarowheight}{.75ex}
\begin{tabular}{|>{\columncolor{LightSteelBlue}}c| c | c | c|}
\toprule 
\rowcolor{LightSteelBlue} & & & \\   
\rowcolor{LightSteelBlue} 
& \multirow{-2}{*}{Mann} & \multirow{-2}{*}{Kvinne} & \multirow{-2}{*}{Totalt} \\ 
\midrule
\O nsker        &      &        &        \\ 
Ballbinge       &      &        &        \\ 
\midrule
\O nsker ikke   &      &        &        \\ 
Ballbinge       &      &        &        \\ 
\midrule
                &      &        &        \\ 
\multirow{-2}*{Totalt}& &        &       \\
\bottomrule
\end{tabular}
\end{table}
\end{document}

在此处输入图片描述

答案2

LaTeX 逐行编写表格。此外,颜色也会在任何单元格内容之前打印出来,以便使其显示在背景中。因此,您需要“等待”到第二行并重新定位单元格内容 - 在这种情况下,将其向上移动到两行之间的大约一半。为此,很有\raisebox{<len>}{<stuff>}用。

我采用了您的 MWE,并将相应单元格的内容上移0.5\normalbaselineskip+\extrarowheight,使其位于两行之间的大约中间位置:

在此处输入图片描述

\documentclass{article}
\usepackage{booktabs}
\usepackage[dvipsnames*,svgnames]{xcolor}
\usepackage{colortbl}
\usepackage{array}
\begin{document}

\begin{table}
  \centering
  \setlength{\aboverulesep}{0pt}
  \setlength{\belowrulesep}{0pt}
  \setlength{\extrarowheight}{.75ex}
  \begin{tabular}{|>{\columncolor{LightSteelBlue}}c| c | c | c|}
    \toprule
    \rowcolor{LightSteelBlue} & & & \\ 
    \rowcolor{LightSteelBlue} & %
      \raisebox{\dimexpr0.5\normalbaselineskip+\extrarowheight}{Mann} &
      \raisebox{\dimexpr0.5\normalbaselineskip+\extrarowheight}{Kvinne} &
      \raisebox{\dimexpr0.5\normalbaselineskip+\extrarowheight}{Totalt} \\ \midrule
    \O nsker      &      &        &        \\ 
    Ballbinge     &      &        &        \\ \midrule
    \O nsker ikke &      &        &        \\ 
    Ballbinge     &      &        &        \\ \midrule
                  &      &        &        \\ 
    \raisebox{\dimexpr0.5\normalbaselineskip+\extrarowheight}{Totalt} &      &        &        \\  
    \bottomrule
  \end{tabular}
\end{table}
\end{document}

答案3

除了使用 之外,multirow您还可以使用零宽度的最后一列,在其中放置一个“不可见”规则,其高度为单元格所需的高度 ( \rule{0pt}{<height>})。由于这种类型的表格中方形单元格看起来效果最好,因此高度应与宽度相同(第一列除外)。如果您使用m-columns,文本将居中显示。然后,您可以删除multirow

我用过线编写规则,但\hline在本例中这似乎与普通的没什么区别。所有示例都存在某些 PDF 查看器中“消失”规则的问题。在 Adob​​e Reader 中,我必须将缩放比例增加到 200% 才能看到所有规则:

\documentclass[a4paper, 10pt]{article}
\usepackage{calc, hhline}
\usepackage[dvipsnames,svgnames,table]{xcolor} 

\setlength\extrarowheight{1pt}                          % Move cell content down
\newcolumntype{C}{>{\centering\arraybackslash}m{7.5ex}}
\newcolumntype{F}{>{\centering\arraybackslash\columncolor{LightSteelBlue}}m{13ex}}
\newcolumntype{L}{@{}>{\rule{0pt}{7.5ex+1\tabcolsep}}m{0pt}@{}}   % To ensure equal row height 

 % Shortcuts
\newcommand*{\blue}{\cellcolor{LightSteelBlue}}

\arrayrulecolor{gray!75}                        % Dark gray table rules

\begin{document}

\small
\begin{tabular}{|F|*{3}{C|}L}                                                    
                    \hhline{|-|-|-|-}%

                    &   \blue Mann
                    &   \blue Kvinne
                    &   \blue Total
                    &   \\
                    \hhline{|-|-|-|-}%
                    Ønsker ballbinge
                    &   
                    &   
                    &   
                    &\\
                    \hhline{|-|-|-|-}%

                    \mbox{Ønsker ikke} ballbinge
                    &   
                    &   
                    &   
                    &\\
                    \hhline{|-|-|-|-}%
                     Total
                    &   
                    &   
                    &   
                    &\\
                    \hhline{|-|-|-|-}%
        \end{tabular}
\end{document}

在此处输入图片描述

相关内容