![我怎样才能制作这张桌子?](https://linux22.com/image/474448/%E6%88%91%E6%80%8E%E6%A0%B7%E6%89%8D%E8%83%BD%E5%88%B6%E4%BD%9C%E8%BF%99%E5%BC%A0%E6%A1%8C%E5%AD%90%EF%BC%9F.png)
考虑:
我想复制这个精确的表格。我被难住了。我该怎么做?
到目前为止我已经尝试过这个代码:
\begin{center}
\begin{tabular}{|c|c|c|c|c|}
\hline \multicolumn{2}{|c|}{Color} & Numerical Value & Color & Numerical Value \\
\hline Black & \colorbox{black}{} & 0 & Green & \colorbox{green}{} \\
\hline Brown & \colorbox{brown}{} & 1 & Blue & \colorbox{blue}{}\\
\hline Red & \colorbox{red}{} & 2 & Violet & \colorbox{violet}{} \\
\hline Orange & \colorbox{orange}{} & 3 & Gray & \colorbox{gray}{} \\
\hline Yellow & \colorbox{yellow}{} & 4 & White & \colorbox{white}{} \\
\hline
\end{tabular}
\end{center}
使用上面的代码,我看起来像这样:我想修复表格的右侧,使其看起来像左侧。
如何才能使彩色表格与上面的表格宽度相同?
答案1
我会避免这种夸张的间距以及太大的方块。
我也会尽可能地避免规则,参见第二种实现。
\documentclass{article}
\usepackage{xcolor} % for '\fcolorbox' macro
\usepackage{booktabs} % for the second instance
\newcommand{\showcolor}[1]{%
\raisebox{\depth}{\fcolorbox{black}{#1}{}}%
}
\begin{document}
\begin{center}
\begin{tabular}{|l|c|c||l|c|c|@{\vphantom{$\bigg|$}}}
\hline
\multicolumn{2}{|c|}{Color} & Numerical Value &
\multicolumn{2}{c|}{Color} & Numerical Value \\
\hline
Black & \showcolor{black} & 0 & Green & \showcolor{green} & 5 \\ \hline
Brown & \showcolor{brown} & 1 & Blue & \showcolor{blue} & 6 \\ \hline
Red & \showcolor{red} & 2 & Violet & \showcolor{violet} & 7 \\ \hline
Orange & \showcolor{orange} & 3 & Gray & \showcolor{gray} & 8 \\ \hline
Yellow & \showcolor{yellow} & 4 & White & \showcolor{white} & 9 \\ \hline
\end{tabular}
\end{center}
\begin{center}
\begin{tabular}{@{} lcc @{\hspace{4em}} lcc @{}}
\toprule
Color && \begin{tabular}{@{}c@{}}Numerical \\ Value \end{tabular} &
Color && \begin{tabular}{@{}c@{}}Numerical \\ Value \end{tabular} \\
\midrule
Black & \showcolor{black} & 0 & Green & \showcolor{green} & 5 \\
Brown & \showcolor{brown} & 1 & Blue & \showcolor{blue} & 6 \\
Red & \showcolor{red} & 2 & Violet & \showcolor{violet} & 7 \\
Orange & \showcolor{orange} & 3 & Gray & \showcolor{gray} & 8 \\
Yellow & \showcolor{yellow} & 4 & White & \showcolor{white} & 9 \\
\bottomrule
\end{tabular}
\end{center}
\end{document}
答案2
我猜你想要的是\fcolorbox
,而不是\colorbox
,因为模板在颜色框周围有黑色框线。而且,如果必须严格遵守模板,你还应该修改环境,tabular
使其有 6 列而不是 5 列。
\documentclass{article}
\usepackage{xcolor} % for '\fcolorbox' macro
\newcommand\mybox[1]{\fcolorbox{black}{#1}{\phantom{::}}}
\begin{document}
\begin{center}
\renewcommand\arraystretch{1.25}
\begin{tabular}{|*{2}{l|c|c|}}
\hline
\multicolumn{2}{|c|}{Color} & Numerical Value &
\multicolumn{2}{|c|}{Color} & Numerical Value \\ \hline
Black & \mybox{black} & 0 & Green & \mybox{green} & 5 \\ \hline
Brown & \mybox{brown} & 1 & Blue & \mybox{blue} & 6 \\ \hline
Red & \mybox{red} & 2 & Violet & \mybox{violet} & 7 \\ \hline
Orange & \mybox{orange} & 3 & Gray & \mybox{gray} & 8 \\ \hline
Yellow & \mybox{yellow} & 4 & White & \mybox{white} & 9 \\ \hline
\end{tabular}
\end{center}
\end{document}
附录回答 OP 的后续请求:就我个人而言,我认为将表格宽度一直增加到 40em 不是一个好主意。(您不能将另一个框缩小很多吗?)但如果您必须将表格宽度设置为 40em,我建议您从 a 环境切换tabular
到 a环境,省略所有垂直规则,并用包的线条绘制宏tabular*
替换所有指令。hline
booktabs
\documentclass{article}
\usepackage{booktabs}
\usepackage{xcolor} % for '\fcolorbox' macro
\newcommand\mybox[1]{\fcolorbox{black}{#1}{\phantom{::}}}
\begin{document}
\begin{center}
\setlength\tabcolsep{0pt}
\renewcommand\arraystretch{1.15}
\begin{tabular*}{40em}{@{\extracolsep{\fill}} lcc lcc }
\toprule
\multicolumn{2}{l}{Color} & Numerical Value &
\multicolumn{2}{l}{Color} & Numerical Value \\ \midrule
Black & \mybox{black} & 0 & Green & \mybox{green} & 5 \\ \addlinespace
Brown & \mybox{brown} & 1 & Blue & \mybox{blue} & 6 \\ \addlinespace
Red & \mybox{red} & 2 & Violet & \mybox{violet} & 7 \\ \addlinespace
Orange & \mybox{orange} & 3 & Gray & \mybox{gray} & 8 \\ \addlinespace
Yellow & \mybox{yellow} & 4 & White & \mybox{white} & 9 \\ \bottomrule
\end{tabular*}
\end{center}
\end{document}
答案3
我怎样才能使彩色表格与上面的表格宽度相同。
或许应用该包tabularx
是实现此目的的最简单方法。它允许您指定整个表格的宽度,而其X
-column 可用于使列自动调整大小,以便表格达到所需的宽度。
我还添加了两个包:makecell
和tikz
。makecell
它有两点用处:(1)单元格接受\\
以插入换行符和(2)在单元格周围添加额外空间。后一个功能可防止内容遵守表格规则。
tikz
另一方面,包允许在 LaTeX 中绘制复杂形状。在这里,它创建一个填充颜色的框。我制作了一个宏以避免重复并帮助使代码更清晰。
下面是比你的表格更紧凑的代码。我建议尽可能保留最少的规则,只是为了清晰起见;也许将两个组分开的栏是有意义的,因此我在下面的代码中包含了它
\documentclass{article}
\usepackage{tabularx} % X-column and a thick bar
\usepackage{makecell} % Multi lined cells with extra spaceing
\usepackage[svgnames]{xcolor} % Custom colour definitions
\usepackage{tikz} % Colourful boxes
\newcommand\cbox[1]{%
\tikz[baseline=-0.7ex]
\node [minimum size=3mm, draw, fill=#1] {};}
\newcommand\xrule[1]{\noalign{\hrule height #1}}
\renewcommand\cellgape{\Gape[3pt]}
\begin{document}
\begin{table}[tbh]
\renewcommand*\arraystretch{1.2}
\centering
\begin{tabularx}{0.7\linewidth}{ % <--- Specify width here
Xcc
!{\vrule width 1pt}
Xcc
}
\xrule{1pt}
\multicolumn{2}{c}{Color}
& \makecell{Num.\\Value}
& \multicolumn{2}{c}{Color}
& \makecell{Num.\\Value} \\
\xrule{0.6pt}
Black & \cbox{Black} & 0 & Green & \cbox{Green} & 5 \\
Brown & \cbox{Brown} & 1 & Blue & \cbox{Blue} & 6 \\
Red & \cbox{Red} & 2 & Violet & \cbox{Violet} & 7 \\
Orange & \cbox{Orange} & 3 & Gray & \cbox{Gray} & 8 \\
Yellow & \cbox{Yellow} & 4 & White & \cbox{white} & 9 \\
\xrule{1pt}
\end{tabularx}
\end{table}
\end{document}