假设我想让节点矩阵的第一列采用与矩阵中其他节点不同的格式。使用 ,column 1/.style=mycol
我可以为该列指定样式,但无论我如何指定样式,如果在行中设置了某些列的关键设置,则无法覆盖这些设置。
例如,如果我在行中设置rounded corners
或,那么我随后如何使列具有除了在每个单元格中单独设置之外的功能(如我在示例中的第 2 行中所做的那样)?text depth
sharp corners
我对text depth
键特别感兴趣,因为设置text depth
会使节点中的文本居中,但我希望text depth
在行中设置,而不是在第一列中设置。有没有办法取消设置?
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\tikzset{
myrow/.style={align=center,minimum size=2cm,fill=#1,text width=2cm,anchor=center,
rounded corners,
% text depth=2cm
},
mycol/.style={sharp corners, align=center, minimum size=2cm,text width=2cm,anchor=center},
,column sep=.25cm,row sep=.25cm}
\begin{document}
\begin{tikzpicture}[
row 1/.style={nodes={myrow=red!80}},
row 2/.style={nodes={myrow=blue!60}},
column 1/.style={nodes={mycol}}]
\matrix[matrix of nodes]{
A title
& Some text
& More text
& Even more\\
|[sharp corners]|Another title
& Some text
& More text
& Even more\\
};
\end{tikzpicture}
\end{document}
答案1
关于第二个问题,如何撤消/取消设置text depth=2cm
:使用不带参数的选项:
..., text depth=, ...
关于第一个问题,如何在行样式之后执行列样式,观察Tikz 手册在第 20.3.3 节 (单元格样式和选项) 中解释道,以下样式按给定的顺序执行:column
<数字>,every odd
/even column
,row
<数字>,every odd
/even row
,row
〈行号〉column
〈列号〉。
因此,列选项会被行选项覆盖。要获取最后应用的列选项,我们必须将代码添加到行选项中,因为计数器\pgfmatrixcurrentcolumn
包含当前列号。对于给定的示例代码,这意味着:
\tikzset
{myrow/.style={rounded corners, dominant column \the\pgfmatrixcurrentcolumn/.try},
mycol/.style={sharp corners}
}
\begin{tikzpicture}%
[row 1/.style={nodes={myrow}},
dominant column 1/.style={mycol}
]
以下是完整的示例代码。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\tikzset{
myrow/.style={align=center,minimum size=2cm,fill=#1,text width=2cm,anchor=center,
rounded corners,
text depth=2cm,
dominant column \the\pgfmatrixcurrentcolumn/.try
},
mycol/.style={sharp corners, text depth=},
column sep=.25cm,row sep=.25cm}
\begin{document}
\begin{tikzpicture}[
row 1/.style={nodes={myrow=red!80}},
row 2/.style={nodes={myrow=blue!60}},
dominant column 1/.style={mycol}]
\matrix[matrix of nodes]{
A title
& Some text
& More text
& Even more\\
Another title
& Some text
& More text
& Even more\\
};
\end{tikzpicture}
\end{document}