我有以下代码:
\begin{tikzpicture}
\matrix [draw,column sep={1mm, 4cm},nodes=draw]
{
\node(a) {123}; & \node (b) {1}; & \node {1}; \\
\node {12}; & \node {12}; & \node {1}; \\
\node {1}; & \node {123}; & \node {1}; \\
};
\draw [<->,red,thick] (a.center) -- (b.center) node [above,midway] {1cm};
\end{tikzpicture}
在 tikz 手册中,我看到列 sep = {spacing list}
但是当我将距离添加到间距列表时,它似乎不会影响矩阵中列之间的距离。我要做的是按列或行指定矩阵中节点之间的距离。
答案1
我不确定我是否真的了解您想要实现的目标,但也许以下内容可以帮助您:
钛钾Z 手册解释说存在选项column sep
和,row sep
您可以使用它们分别设置矩阵节点之间的列距和行距。
这两个选项都采用所谓的“间距列表”。此间距列表可能只包含一个值(距离),在大多数情况下,这足以设置相关距离。
但是,如果此列表中给出了多个值,并且它们是距离,则所有这些距离将加在一起。此外,此列表的最后一个值可能是between origins
或,between borders
它将设置各个节点中心之间的距离或边界之间的距离,后者是默认值。
因此,以下内容可以解释如何将多个距离相加添加到选项中:
\documentclass[tikz, border=1cm]{standalone}
\begin{document}
\begin{tikzpicture}
\matrix [draw, column sep={1cm, 5pt}, row sep={0.5cm}, nodes=draw]
{
\node (a) {123}; & \node {1}; & \node {1}; \\
\node (c) {12}; & \node {12}; & \node {1}; \\
\node {1}; & \node (b) {123}; & \node {1}; \\
};
\draw [cyan] (a.north -| b.west) -- (b.north west);
\draw [<->, red, thick] (a.east) -- ++({1cm+5pt},0) node [above, midway, font=\tiny] {1cm + 5pt};
\draw [<->, red, thick] (b.east) -- ++({1cm+5pt},0) node [above, midway, font=\tiny] {1cm + 5pt};
\draw [<->, red, thick] (a.south) -- ++(0,-0.5cm) node [right, midway, font=\tiny] {0.5cm};
\end{tikzpicture}
\end{document}
答案2
正如评论和其他答案所解释的那样,您给出的列表column sep
将被添加以获取最后一列 sep。
如果您希望每列都有一个特定的列分隔符,则需要为每列设置一个,或者使用( )column sep
的可选参数,该参数的值将添加到默认值中。因此,在不改变的情况下,您可以这样做&
\pgfmatrixnextcell
column sep
column sep=0pt
\matrix[
draw,
column sep={between origins},
nodes=draw] {
\node(a) {123}; &[1cm] \node (b) {1}; &[4cm] \node {1}; \\
\node {12}; & \node {12}; & \node {1}; \\
\node {1}; & \node {123}; & \node {1}; \\
};
但我相信像下面这样使用的键column separations bo
更有用(bo
= 起源之间)。可以为between borders
和行定义类似的键。
的额外分组##1
确保您可以使用{min(1cm,width("Test"))},5cm}
作为参数,并且,
函数的min
不会影响内部工作。但是,您不能对每列使用另一个“间距列表”,但您可以使用+
而不是,
将多个值相加。
代码
\documentclass[tikz]{standalone}
\tikzset{
column separations bo/.style={
/utils/exec=\def\pgfmathcounter{0},
/utils/temp/.style={
/utils/exec=\edef\pgfmathcounter{\pgfinteval{\pgfmathcounter+1}},
/tikz/column \pgfmathcounter/.append style={column sep={{##1},between origins}}},
/utils/temp/.list={#1}}}
\begin{document}
\begin{tikzpicture}
\matrix[
draw,
column separations bo={1cm,4cm},
nodes=draw] {
\node(a) {123}; & \node (b) {1}; & \node {1}; \\
\node {12}; & \node {12}; & \node {1}; \\
\node {1}; & \node {123}; & \node {1}; \\
};
\path [<->,red,thick,above] (a.center) edge node {1cm} ++(right:1cm)
(b.center) edge node {4cm} ++(right:4cm);
\end{tikzpicture}
\end{document}