创建具有相等大小单元格的表格

创建具有相等大小单元格的表格

我正在尝试弄清楚如何创建一个单元格大小相同的表格(无论内容如何,​​每个单元格的宽度和高度都相同)。表格应该只有一个外边框,单元格之间应该没有任何内容。

这是我的代码:

{\fontsize{22}{22} \selectfont
\begin{tabular}{|ccccccccccccccc|}
\hline
X & H & C & M & O & N & O & Y & J & F & O & C & D & L & D \\
T & Z & L & O & B & O & T & O & Q & L & O & T & H & Y & F \\
O & M & W & M & C & L & F & V & S & R & V & L & R & G & I \\
V & Y & C & Y & P & O & D & Y & R & D & X & M & I & E & Z \\
E & K & O & D & V & J & D & E & C & A & B & R & A & E & O \\
J & B & N & X & L & V & P & R & I & L & V & A & C & A & A \\
A & A & E & V & V & G & J & C & I & R & A & Q & U & Y & D \\
W & L & J & S & P & B & B & G & L & L & Y & B & A & N & I \\
G & L & O & F & C & P & Z & V & S & K & O & G & E & L & F \\
A & E & C & L & E & A & T & O & V & P & U & D & J & J & K \\
T & N & H & M & R & T & B & R & R & T & I & C & Z & A & A \\
O & A & G & V & A & F & W & A & R & R & O & F & R & P & B \\
R & I & J & S & N & B & F & O & L & E & O & Z & G & E & J \\
T & Q & R & W & A & U & T & E & O & L & N & I & D & R & W \\
G & B & J & L & E & Y & C & G & E & C & O & P & M & X & J \\
\hline
\end{tabular}
}

但输出是错误的:

在此处输入图片描述

该表格是 15x15,因此最终输出应该是一个完美的正方形……单元格大小相同,单元格(列和行)之间的边距相同。

我究竟做错了什么?

答案1

使用tikz matrix

在此处输入图片描述

\documentclass{article}
\usepackage[margin=0.5cm]{geometry}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}

{
\fontsize{22}{22} \selectfont
\begin{tikzpicture}
  \matrix(table)[
  matrix of nodes,
  row sep =-\pgflinewidth,
  column sep = -\pgflinewidth,
  nodes={anchor=center,
         minimum width=1.25cm, 
         minimum height=1.25cm, 
         },
  ] 
  {X & H & C & M & O & N & O & Y & J & F & O & C & D & L & D \\
T & Z & L & O & B & O & T & O & Q & L & O & T & H & Y & F \\
O & M & W & M & C & L & F & V & S & R & V & L & R & G & I \\
V & Y & C & Y & P & O & D & Y & R & D & X & M & I & E & Z \\
E & K & O & D & V & J & D & E & C & A & B & R & A & E & O \\
J & B & N & X & L & V & P & R & I & L & V & A & C & A & A \\
A & A & E & V & V & G & J & C & I & R & A & Q & U & Y & D \\
W & L & J & S & P & B & B & G & L & L & Y & B & A & N & I \\
G & L & O & F & C & P & Z & V & S & K & O & G & E & L & F \\
A & E & C & L & E & A & T & O & V & P & U & D & J & J & K \\
T & N & H & M & R & T & B & R & R & T & I & C & Z & A & A \\
O & A & G & V & A & F & W & A & R & R & O & F & R & P & B \\
R & I & J & S & N & B & F & O & L & E & O & Z & G & E & J \\
T & Q & R & W & A & U & T & E & O & L & N & I & D & R & W \\
G & B & J & L & E & Y & C & G & E & C & O & P & M & X & J \\
  };
  \draw [black] (table-1-1.north west) -- (table-1-15.north east) -- (table-15-15.south east) -- (table-15-1.south west) -- cycle ;
\end{tikzpicture}
}
\end{document}

答案2

这是一个非 TikZ 解决方案。它允许您生成宽度(和高度)的方形表格\tablewidth。以下屏幕截图中的第一个表格使用宽度\textwidth和字体大小22.74pt22pt默认情况下不可用,除非您添加一些额外的包);第二个表格使用宽度0.5\textwidth和字体大小9pt

在此处输入图片描述

在此处输入图片描述

\documentclass{article}
\usepackage[margin=1cm]{geometry} % set suitable page parameters
\usepackage{tabularx}
    \newcolumntype{C}{>{\centering\arraybackslash}X}
\newlength\tablewidth
\newlength\celldim

\newcommand{\ProduceTable}{%
    \setlength\tabcolsep{0pt}
    \setlength\celldim{\dimexpr(\tablewidth-2\arrayrulewidth)/15\relax}
    \setlength\extrarowheight{\dimexpr\celldim-\baselineskip\relax}
    \centering
    \begin{tabularx}{\tablewidth}{|*{15}{C}|}
    \hline
    X&H&C&M&O&N&O&Y&J&F&O&C&D&L&D \\
    T&Z&L&O&B&O&T&O&Q&L&O&T&H&Y&F \\
    O&M&W&M&C&L&F&V&S&R&V&L&R&G&I \\
    V&Y&C&Y&P&O&D&Y&R&D&X&M&I&E&Z \\
    E&K&O&D&V&J&D&E&C&A&B&R&A&E&O \\
    J&B&N&X&L&V&P&R&I&L&V&A&C&A&A \\
    A&A&E&V&V&G&J&C&I&R&A&Q&U&Y&D \\
    W&L&J&S&P&B&B&G&L&L&Y&B&A&N&I \\
    G&L&O&F&C&P&Z&V&S&K&O&G&E&L&F \\
    A&E&C&L&E&A&T&O&V&P&U&D&J&J&K \\
    T&N&H&M&R&T&B&R&R&T&I&C&Z&A&A \\
    O&A&G&V&A&F&W&A&R&R&O&F&R&P&B \\
    R&I&J&S&N&B&F&O&L&E&O&Z&G&E&J \\
    T&Q&R&W&A&U&T&E&O&L&N&I&D&R&W \\
    G&B&J&L&E&Y&C&G&E&C&O&P&M&X&J \\[1ex]
    \hline
    \end{tabularx}}

\begin{document}

\begin{table}
    \fontsize{20.74}{20.74}\selectfont % '22pt' not available in default font family
    \setlength{\tablewidth}{1\textwidth}
    \ProduceTable
\end{table}

\begin{table}
    \ttfamily
    \fontsize{9}{9}\selectfont 
    \setlength{\tablewidth}{0.5\textwidth} 
    \ProduceTable
\end{table}
\end{document}

答案3

这是另一种变体,使用普通的表格、固定宽度的m-columns 和 1 厘米高、0 宽度的规则重定向 ( >{}) 到 0 宽度的列 (F)。- mcolumns 将单元格内容垂直居中。我定义了两个新列 (M 和 F) 来稍微清理一下代码。

您唯一需要的附加包是大批。 我用几何学只是为了有更合理的利润。

如果您更喜欢自适应边距的表格,可以使用以下公式计算列宽\dimexpr:从总文本宽度(左右边距之间的距离)中减去两条规则(垂直线)的宽度array,然后将结果除以 15。使用相同的计算方法找到行高,即:

\newcolumntype{M}{>{\centering\arraybackslash}m{\dimexpr((\textwidth-2\arrayrulewidth)/15)\relax}}
%  The column width
\newcolumntype{F}{>{\rule{0pt}{\dimexpr((\textwidth-2\arrayrulewidth)/15)\relax}}m{0pt}}
%  The row height

当然,我可以定义一个新命令,而不是重复计算,但由于只有两个地方,我可以辩解不这样做。我

在此处输入图片描述

\documentclass{article}
\usepackage[margin=2cm]{geometry} % set suitable margins
\usepackage{array}

\newcolumntype{M}{>{\centering\arraybackslash}m{1cm}} % Horizontal and vertically 
                                                      % centred cells 
\newcolumntype{F}{>{\rule{0pt}{1cm}}m{0pt}}           % Minimum 1 cm heigh rows 

\begin{document}

  \setlength\tabcolsep{0pt}             % Remove space between columns
  \renewcommand{\arraystretch}{0}       % Remove space between rows 
  \centering
  \fontsize{22}{22}\selectfont          % Gives 22.74pt 
                                        % unless you load a scalable font
  \begin{tabular}{|*{15}{M}|F}
  \hline
  X & H & C & M & O & N & O & Y & J & F & O & C & D & L & D & \\
  T & Z & L & O & B & O & T & O & Q & L & O & T & H & Y & F & \\
  O & M & W & M & C & L & F & V & S & R & V & L & R & G & I & \\
  V & Y & C & Y & P & O & D & Y & R & D & X & M & I & E & Z & \\
  E & K & O & D & V & J & D & E & C & A & B & R & A & E & O & \\
  J & B & N & X & L & V & P & R & I & L & V & A & C & A & A & \\
  A & A & E & V & V & G & J & C & I & R & A & Q & U & Y & D & \\
  W & L & J & S & P & B & B & G & L & L & Y & B & A & N & I & \\
  G & L & O & F & C & P & Z & V & S & K & O & G & E & L & F & \\
  A & E & C & L & E & A & T & O & V & P & U & D & J & J & K & \\
  T & N & H & M & R & T & B & R & R & T & I & C & Z & A & A & \\
  O & A & G & V & A & F & W & A & R & R & O & F & R & P & B & \\
  R & I & J & S & N & B & F & O & L & E & O & Z & G & E & J & \\
  T & Q & R & W & A & U & T & E & O & L & N & I & D & R & W & \\
  G & B & J & L & E & Y & C & G & E & C & O & P & M & X & J & \\
  \hline
  \end{tabular}

\end{document}

答案4

与。{NiceTabular}nicematrix

   \documentclass{article}
   \usepackage{nicematrix,tikz}

   \begin{document}

   \setlength{\tabcolsep}{0pt}
   \setlength{\arrayrulewidth}{0pt}
   \begin{NiceTabular}{>{\rule[-4pt]{0pt}{14pt}}c*{14}{c}}[columns-width=14pt]
   X & H & C & M & O & N & O & Y & J & F & O & C & D & L & D \\
   T & Z & L & O & B & O & T & O & Q & L & O & T & H & Y & F \\
   O & M & W & M & C & L & F & V & S & R & V & L & R & G & I \\
   V & Y & C & Y & P & O & D & Y & R & D & X & M & I & E & Z \\
   E & K & O & D & V & J & D & E & C & A & B & R & A & E & O \\
   J & B & N & X & L & V & P & R & I & L & V & A & C & A & A \\
   A & A & E & V & V & G & J & C & I & R & A & Q & U & Y & D \\
   W & L & J & S & P & B & B & G & L & L & Y & B & A & N & I \\
   G & L & O & F & C & P & Z & V & S & K & O & G & E & L & F \\
   A & E & C & L & E & A & T & O & V & P & U & D & J & J & K \\
   T & N & H & M & R & T & B & R & R & T & I & C & Z & A & A \\
   O & A & G & V & A & F & W & A & R & R & O & F & R & P & B \\
   R & I & J & S & N & B & F & O & L & E & O & Z & G & E & J \\
   T & Q & R & W & A & U & T & E & O & L & N & I & D & R & W \\
   G & B & J & L & E & Y & C & G & E & C & O & P & M & X & J \\
   \CodeAfter
     \tikz \draw (1-|1) rectangle (last-|last) ;
   \end{NiceTabular}

   \end{document}

上述代码的输出

相关内容