将 TiKZ 图片排列成网格状,相互接触

将 TiKZ 图片排列成网格状,相互接触

我正在开发一款棋盘游戏,想剪出一张卡片原型。我将卡片设置为 TiKZ 图片模板,然后将它们全部放在一张长桌上,形成一个卡片网格,然后我会打印并从纸上剪下来。这是我现在拥有的 MWE:

\documentclass{scrartcl}
\usepackage{tikz}
\usepackage{longtable}

\newcommand{\card}[1]{
\begin{tikzpicture}
\draw (0,0) rectangle (50mm, 70mm);
\node (title) at (25mm, 35mm){ #1 };
\end{tikzpicture}
}

\begin{document}

\begin{longtable}{ c c c }
\card{Card 1}
&
\card{Card 2}
&
\card{Card 3}
\\
\card{Card 4}
&
\card{Card 5}
&
\card{Card 6}
\end{longtable}

\end{document}

请注意,网格中的卡片之间有垂直和水平空间。理想情况下,我希望它们直接接触,以便更容易地切割它们(工作量减少一半,因为每次切割都在两张卡片之间进行)。我遇到的另一个问题longtable是,我需要\\每 3 张卡片有一张,所以每次添加或从列表中删除一张卡片时,我都必须编辑它们。

我愿意使用任何其他类型的环境将它们放入网格中,但我不想(显著地)改变卡片模板本身。

答案1

  • 为了消除相邻行卡片之间的垂直空白,请将[baseline=(current bounding box.center)]其作为可选参数添加到tikzpicture

  • 要消除相邻列卡片之间的水平空白,请使用并在之后\setlength{\tabcolsep}{0pt}添加。%\end{tikzpicture}

结合这些变化,我们最终得到以下 MWE 和输出。

在此处输入图片描述

\documentclass{scrartcl}
\usepackage{tikz}
\usepackage{longtable}

\newcommand{\card}[1]{%
\begin{tikzpicture}[baseline=(current bounding box.center)]
\draw (0,0) rectangle (50mm, 70mm);
\node (title) at (25mm, 35mm){ #1 };
\end{tikzpicture}%
}

\begin{document}
\setlength{\tabcolsep}{0pt}
\begin{longtable}{ c c c }
\card{Card 1}
&
\card{Card 2}
&
\card{Card 3}
\\
\card{Card 4}
&
\card{Card 5}
&
\card{Card 6}
\end{longtable}

\end{document}

相关内容