将表格排版成电子表格的样子

将表格排版成电子表格的样子

继续努力在 LaTeX 中创建特定的计算环境,我现在尝试强制表格看起来像电子表格。它需要

  • 除第一列外,所有列的宽度均相等(例如 3 厘米)
  • 第一行和第一列具有灰色背景
  • 第一列和第一行右对齐
  • 所有其他行和列都左对齐

array我可能可以使用和包中的一堆东西来实现这一点colortbl,但到目前为止,我的努力并不成功。(例如,如果我正确对齐,那么背景就不会正确填充单元格)。

这是我目前所得到的,除了格式之外,几乎都很好:

\begin{tabular}[h]{>{\columncolor[gray]{.9}}c|*{5}{>{\hfill}p{2cm}|}}
  \hline
  \rowcolor[gray]{.9}&A&B&C&D&E\\
  \hline
  1&0&1&2&3&4\\
  \hline
  2&185&&&&\\
  \hline
  3&-31&&&&\\
  \hline
  4&-39&&&&\\
  \hline
  5&-367&&&&\\
  \hline
  6&-1159&&&&\\
  \hline
\end{tabular}

在此处输入图片描述

主要的困难似乎是将第一行的格式与其他所有行的格式不同。是否有一个 LaTeX 环境允许您更改中间表的格式?

答案1

使用 TikZ 的一种可能性:

\documentclass{article}
\usepackage[margin=1cm]{geometry}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}

\tikzset{ 
table/.style={
  matrix of nodes,
  row sep=-\pgflinewidth,
  column sep=-\pgflinewidth,
  nodes={rectangle,draw=black,text width=3cm,align=left},
  text depth=0.5ex,
  text height=1.75ex,
  nodes in empty cells
},
row 1/.style={nodes={fill=gray!10,align=right}},
column 1/.style={nodes={fill=gray!10,text width=1cm,align=right}}
}

\begin{tikzpicture}

\matrix (mat) [table]
{
& 20  & 30 & 40 & 50 & 60 \\
80 & 78 & 79 & 80 & 81 & 82 \\
80 & 78 & 79 & 80 & 81 & 82 \\
80 & 78 & 79 & 80 & 81 & 82 \\
80 & 78 & 79 & 80 & 81 & 82 \\
80 & 78 & 79 & 80 & 81 & 82 \\
};
\end{tikzpicture}

\end{document}

在此处输入图片描述

还有一种可能性是使用longtablearraycolortbl

\documentclass{article}
\usepackage[margin=1cm]{geometry}
\usepackage{array}
\usepackage{longtable}
\usepackage[table]{xcolor}

\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}

\begin{document}

{
\renewcommand\arraystretch{1.25}
\begin{longtable}{|>{\columncolor{gray!10}}R{1cm}*{5}{|L{3cm}}|}
\hline
\rowcolor{gray!10}& \hfill20  & \hfill30 & \hfill40 & \hfill50 & \hfill60 \\
\hline
80 & 78 & 79 & 80 & 81 & 82 \\
\hline
80 & 78 & 79 & 80 & 81 & 82 \\
\hline
80 & 78 & 79 & 80 & 81 & 82 \\
\hline
80 & 78 & 79 & 80 & 81 & 82 \\
\hline
80 & 78 & 79 & 80 & 81 & 82 \\
\hline
\end{longtable}
}

\end{document}

在此处输入图片描述

在最后一段代码中,我使用的方法longtable只是为了以防万一需要多页表(如果不是这样,则可以简单地使用tabular)。

答案2

使用“cals”的方法:

在此处输入图片描述

\documentclass{minimal}
\usepackage{cals}
\usepackage{xcolor}
\begin{document}
\begin{calstable}
\makeatletter
\colwidths{{5mm}{20mm}{20mm}{20mm}{20mm}{20mm}}
\alignR
\brow
\def\bgcolor{gray!20}
\def\cals@bgcolor{\bgcolor}
\cell{}\cell{A}\cell{B}\cell{C}\cell{D}\cell{E}
\erow
\brow
\def\cals@bgcolor{\bgcolor}\cell{1}\def\cals@bgcolor{}
\cell{0}\cell{1}\cell{2}\cell{3}\cell{4}
\erow
\brow
\def\cals@bgcolor{\bgcolor}\cell{2}\def\cals@bgcolor{}
\cell{185}
\cell{}\cell{}\cell{}\cell{}
\erow
\brow
\def\cals@bgcolor{\bgcolor}\cell{3}\def\cals@bgcolor{}
\cell{-31}
\cell{}\cell{}\cell{}\cell{}
\erow
\brow
\def\cals@bgcolor{\bgcolor}\cell{4}\def\cals@bgcolor{}
\cell{-39}
\cell{}\cell{}\cell{}\cell{}
\erow
\brow
\def\cals@bgcolor{\bgcolor}\cell{5}\def\cals@bgcolor{}
\cell{-367}
\cell{}\cell{}\cell{}\cell{}
\erow
\brow
\def\cals@bgcolor{\bgcolor}\cell{6}\def\cals@bgcolor{}
\cell{-1159}
\cell{}\cell{}\cell{}\cell{}
\erow
\end{calstable}
\end{document}

相关内容