为多行设置列或行样式 tikzset

为多行设置列或行样式 tikzset

我正在使用 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}

相关内容