我正在开发一款棋盘游戏,想剪出一张卡片原型。我将卡片设置为 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}