我的问题是,我正在制作一个火焰测试颜色表,但右列的颜色的基线位于正方形的底部,因此左侧的离子符号未对齐正方形的中间。我对 TikZ 还很陌生,所以我不知道是否有更简单的方法可以做到这一点,从而可以更简单地设置基线。我看过类似的答案,但它们都使用命令\tikz
而不是整个tikspicture
环境。这是我的示例代码:
\documentclass{article}
\usepackage{tikz}
\usepackage{tabular}
\usepackage[version=4]{mhchem}
\usepackage{chemfig}
\usepackage{array}
\begin{document}
\begin{table}[h]
\centering
\begin{tabular}{|c|c|}
\hline
Cation & Color\\
\hline
\ce{Li+} &
\begin{tikzpicture}
\fill[red]{(0,0)rectangle (1,1)};
\end{tikzpicture}\\
\hline
\ce{Sr^2+} &
\begin{tikzpicture}
\fill[orange]{(0,0)rectangle (1,1)};
\end{tikzpicture}\\
\hline
\end{tabular}
\caption{Caption}
\label{tab:my_label}
\end{table}
\end{document}
PS 在行中添加填充也非常有用,这样方块就不会直接靠在它们上方的边框上!
PPS 我知道现在的颜色不是很正确,但我想我可以自己弄清楚。
谢谢!
答案1
一个简单粗暴的解决办法:
\documentclass{article}
\usepackage{tikz}
%\usepackage{tabular}
\usepackage[version=4]{mhchem}
\usepackage{chemfig}
\usepackage{array}
\begin{document}
\begin{table}[h]
\centering
\begin{tabular}{|c|m{1cm}|}
\hline
Cation & Color\\
\hline
\ce{Li+} & \smallskip
\begin{tikzpicture}
\fill[red]{(0,0)rectangle (1,1)};
\end{tikzpicture}\\
\hline
\ce{Sr^2+} & \smallskip
\begin{tikzpicture}
\fill[orange]{(0,0)rectangle (1,1)};
\end{tikzpicture}\\
\hline
\end{tabular}
\caption{Caption}
\label{tab:my_label}
\end{table}
\end{document}
为了使图像在单元格中居中,使用了m
数组包中的列类型。
编辑:
另一个简单的解决方案是使用(旧的好的)mdwtab
表格环境包并将基线设置为当前边界框的中心:
\documentclass{article}
\usepackage{tikz}
\usepackage[version=4]{mhchem}
\usepackage{chemfig}
\usepackage{array,mdwtab}
\begin{document}
\begin{table}[h]
\centering
\begin{tabular}{|c|c|}
\hlx{hv}
Cation & Color\\
\hlx{vhv}
\ce{Li+} &
\begin{tikzpicture}[baseline=(current bounding box.center)]
\fill[purple!50]{(0,0)rectangle (1,1)};
\end{tikzpicture} \\
\hlx{vhv}
\ce{Sr^2+} & %\smallskip
\begin{tikzpicture}[baseline=(current bounding box.center)]
\fill[purple]{(0,0)rectangle (1,1)};
\end{tikzpicture}\\
\hlx{vh}
\end{tabular}
\caption{Caption}
\label{tab:my_label}
\end{table}
\end{document}