继续努力在 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}
还有一种可能性是使用longtable
、array
和colortbl
:
\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}