我正在使用 Tikzset 设置节点矩阵中行和列的属性。我可以弄清楚如何影响“每一列”或“第 1 列”,但我无法弄清楚如何使用一个命令影响一列列表。以下是设置一列样式的方法。
\tikzset{
table/.style={
column 1/.style={
nodes={
text width = 1em
}}
}}
\begin{tikzpicture}
\matrix (comp) [table,matrix of nodes]
{
cell1 & cell2 &cell3 \\
cell2 & cell3 &cell4 \\
};
\end{tikzpicture}
我希望能够设置第 1 列和第 2 列的属性,但是这不起作用:
\tikzset{
table/.style={
column {1,2}/.style={
nodes={
text width = 1em
}}
}}
\begin{tikzpicture}
\matrix (comp) [table,matrix of nodes]
{
cell1 & cell2 &cell3 \\
cell2 & cell3 &cell4 \\
};
\end{tikzpicture}
答案1
这是@percusse的解决方案,如果他想添加他的答案,我很乐意撤回“我的”答案。无论如何,这只是@percusse 的原始答案,所以如果你读了这篇文章并觉得它有用,请点赞他的而不是“我的”。当然,以下两种风格是等效的。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\tikzset{my multistyler/.style 2 args={
@my multistyler/.style={column ##1/.append style={#2}},
@my multistyler/.list={#1}
}
}
\begin{tikzpicture}
\matrix (comp) [matrix of nodes,my multistyler={1,3}{text width=1em}]
{
cell1 & cell2 &cell3 & cell5 & cell7 \\
cell2 & cell3 &cell4 & cell6 & cell8 \\
};
\end{tikzpicture}
\tikzset{table/.style={my multistyler={1,3}{text width=1em}}}
\begin{tikzpicture}
\matrix (comp) [matrix of nodes,table]
{
cell1 & cell2 &cell3 & cell5 & cell7 \\
cell2 & cell3 &cell4 & cell6 & cell8 \\
};
\end{tikzpicture}
\end{document}