我有一张如下所示的表格:
我的代码是:
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath,amsfonts,amssymb,tikz}
\usepackage[left=1cm,right=1cm,top=1cm,bottom=0cm]{geometry}
\begin{document}
\pagestyle{empty}
\begin{tabular}{||p{1cm}|p{6cm}|p{8.07cm}|p{1cm}||}
\hline
1 &
\begin{tikzpicture}[domain=-4:4,scale=0.8]
\draw (-0.1,2.8) -- (2.1,-1.5);
\draw (-0.1,2.8) -- (-1.1,-1.5);
\draw (-0.1,2.8) -- (3.1,0);
\end{tikzpicture}
Picture
& A & B \\
\cline{3-4}
& & C & D \\
\cline{3-4}
& & E & F \\
\cline{3-4}
& & G & H \\
\hline
\end{tabular}
\end{document}
我想清除第 2 列中 tikz 图片下方的空白,并清除第 3 列上方的空白,以便这两列中的内容水平对齐。我还希望第 1 列中的内容垂直和水平居中对齐。有人能帮我吗?提前谢谢了。杰夫
答案1
通常情况下,人们会使用多行来重叠第 3 列和图片。相反,我使用\raisebox
图片\smash
并计算最后需要多少空间。唯一的误差因子是用于将图片置于行内中心的 1.6ex。
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath,amsfonts,amssymb,tikz}
\usepackage[left=1cm,right=1cm,top=1cm,bottom=0cm]{geometry}
\newsavebox{\tempboxa}
\newsavebox{\tempboxb}
\begin{document}
\pagestyle{empty}
\savebox{\tempboxa}{\begin{tikzpicture}[domain=-4:4,scale=0.8]
\draw (-0.1,2.8) -- (2.1,-1.5);
\draw (-0.1,2.8) -- (-1.1,-1.5);
\draw (-0.1,2.8) -- (3.1,0);
\end{tikzpicture} Picture}% compute height of picture
\savebox{\tempboxb}{\begin{tabular}{||p{1cm}|p{6cm}|p{8.07cm}|p{1cm}||}
1 & & A & B \\
\cline{3-4}
& & C & D \\
\cline{3-4}
& & E & F \\
\cline{3-4}
& & G & H \\
\cline{3-4}
\end{tabular}}% compute height of tabular
\begin{tabular}{||p{1cm}|p{6cm}|p{8.07cm}|p{1cm}||}
\hline
1 & \raisebox{\dimexpr 1.6ex-\ht\tempboxa}[0pt][0pt]{\usebox{\tempboxa}}
& A & B \\
\cline{3-4}
& & C & D \\
\cline{3-4}
& & E & F \\
\cline{3-4}
& & G & H \\
\cline{3-4}
& \rule{0pt}{\dimexpr \ht\tempboxa-\ht\tempboxb-\dp\tempboxb} & &\\
\hline
\end{tabular}
\end{document}