指定列宽

指定列宽

我正在为表格使用以下代码。目前,它被设置为可以将所有列(第一列除外)的宽度更改为相同宽度。有人可以帮我发推文,以便我每次使用它时都可以指定列宽吗?谢谢。

\documentclass[twoside]{book}

\usepackage{tikz}
%%table 
\usetikzlibrary{matrix}
\tikzset{ 
    table/.style={
        matrix of nodes,
        row sep=-\pgflinewidth,
        column sep=-\pgflinewidth,
        nodes={
            rectangle,
            draw=gray!50,
            align=center
        },
        minimum height=1.5em,
        text depth=0.5ex,
        text height=2ex,
        nodes in empty cells,
%%
        every odd row/.style={
            nodes={fill=gray!05}
        },
        column 1/.style={
          nodes={text width=5em,font=\bfseries}
        },
        row 1/.style={
            nodes={
                fill=gray!25,
                text=black,
                text height=2.5ex,
                font=\bfseries, purple!75!black
            }
        }
    }
}

\begin{document}

\begin{tikzpicture}
\matrix[table,text width=12em]
{
first & 2nd column   & 3rd column\\
&A & B \\
& C & D \\
};
\end{tikzpicture}

\end{document}

我想把这个放在序言中,但这意味着我必须让同一个文档中的所有表格都指定相同的宽度,从现在起。

谢谢。

答案1

您是否想要这样的东西,以便您可以调整第一列以及其他列的宽度?

\documentclass{book}
\usepackage{tikz}
\usetikzlibrary{matrix}
\tikzset{
  table/.style={
    matrix of nodes,
    row sep=-\pgflinewidth,
    column sep=-\pgflinewidth,
    nodes={
      rectangle,
      draw=gray!50,
      align=center
    },
    minimum height=1.5em,
    text depth=0.5ex,
    text height=2ex,
    nodes in empty cells,
    %%
    every odd row/.style={
      nodes={fill=gray!05}
    },
    first column text width/.code={%
      \tikzset{
        column 1/.style={
          nodes={text width=##1, font=\bfseries}
        },
      }
    },
    first column text width=5em,
    row 1/.style={
      nodes={
        fill=gray!25,
        text=black,
        text height=2.5ex,
        font=\bfseries, purple!75!black
      }
    }
  }
}
\begin{document}

  \begin{tikzpicture}
    \matrix[table,text width=12em]
    {
      first & 2nd column   & 3rd column\\
      &A & B \\
      & C & D \\
    };
  \end{tikzpicture}

  \begin{tikzpicture}
    \matrix[table,text width=6em, first column text width=3em]
    {
      first & 2nd column   & 3rd column\\
      &A & B \\
      & C & D \\
    };
  \end{tikzpicture}
\end{document}

变体表

相关内容