如何绘制凯莱表

如何绘制凯莱表

我正在尝试制作如下所示的凯莱表问题,但我不需要标签,例如,在顶部(容量)和左侧(w 和 v)。我只想重现完全相同的表格,而不在侧面添加“额外”位。

我忘了说我想要一个 5x5 的表格(表格内有 25 个条目),但仍然带有“外部”标题。

我成功做到了这一点。不过,我认为这太冗长了:

\[
    \begin{tabular}{>{$}l<{$}|*{6}{>{$}l<{$}}}
    ~   & 1   & a   & a^2 & a^3   & a^4     \\
    \hline\vrule height 12pt width 0pt
    1   & 1   & a   & a^2 & a^3  & a^4      \\
    a   & a   & a^2 & a^3 & a^4  & a^5      \\
    a^2 & a^2 & a^3 & a^4 & a^5  & a^6      \\
    a^3 & a^3 & a^4 & a^5 & a^6  & a^7      \\
    a^4 & a^4 & a^5 & a^6 & a^7  & a^8      \\
    \end{tabular}
\]

编辑:

\setlength\extrarowheight{3pt}
\noindent\begin{tabular}{c | c c c c c}

 & 1 & a & a^2 & a^3 & a^4  \\
\cline{1-6}
1   & 1   & a   & a^2 & a^3 & a^4 \\
a   & a   & a^2 & a^3 & a^4 & a^5 \\
a^2 & a^2 & a^3 & a^4 & a^5 & a^6 \\
a^3 & a^3 & a^4 & a^5 & a^6 & a^7 \\
a^4 & a^4 & a^5 & a^6 & a^7 & a^8 \\
\end{tabular}

答案1

基本上我刚刚回答你链接的问题并更改了几行以适应您的需要。

这是代码,后面是您将获得的输出以及对正在发生的事情的简要说明。

下面的代码生成了 2 个表格,一个表格的ANYTHING左上角有内容,第二个表格中有一个空格(只是不要在“参数”列中放置任何内容)。

\documentclass[10pt]{article}
\usepackage{array}

\begin{document}

    \setlength\extrarowheight{3pt}
\noindent\begin{tabular}{c | c c c c c}
    ANYTHING & 0 & 1 & 2 & 3 & 4  \\
    \cline{1-6}
    0 & 0 & 0 & 0 & 0 & 0 \\
    1 & 0 & 0 & $a^2$ & 25 & 25 \\
    2 & $a^2$ & 0 & 20 & 25 & 25 \\
    2 & 0 & $a^2$ & 20 & 25 & 25 \\
    2 & 0 & 0 & 20 & 25 & 25 \\
\end{tabular}


\noindent\begin{tabular}{c | c c c c c}
     & 0 & 1 & 2 & 3 & 4  \\
    \cline{1-6}
    0 & 0 & 0 & 0 & 0 & 0 \\
    1 & 0 & 0 & $a^2$ & 25 & 25 \\
    2 & $a^2$ & 0 & 20 & 25 & 25 \\
    2 & 0 & $a^2$ & 20 & 25 & 25 \\
    2 & 0 & 0 & 20 & 25 & 25 \\
\end{tabular}

\end{document}

在此处输入图片描述 在此处输入图片描述

它是如何工作的?表格由环境完成{tabular},它需要参数作为列数(或行数……只需阅读文档即可了解更多信息),该参数由参数指定{c | c c c c c}:6 列,由第一列和第二列之间的一条线分隔。'c' 代表居中这意味着该列将与中心对齐,如果您愿意,可以将其更改为l(左)或r(右)。

然后在表格中,所有条目都通过使用 来分隔&,并且\cline将您希望它跨越的列数作为参数:从第 1 列到第 6 列。

该命令\setlength\extrarowheight{3pt}增加了一些额外的行高(多么令人惊讶!)。

{array}需要根据长度进行包装\extrarowheight

答案2

您的输入几乎很好,但您可以做得更好。

\documentclass{article}
\usepackage{amsmath}
\usepackage{array}

\begin{document}

This is a Cayley table
\[
    \begin{array}{l|*{5}{l}}
        & 1   & a   & a^2 & a^3  & a^4 \\
    \hline
    1   & 1   & a   & a^2 & a^3  & a^4 \\
    a   & a   & a^2 & a^3 & a^4  & a^5 \\
    a^2 & a^2 & a^3 & a^4 & a^5  & a^6 \\
    a^3 & a^3 & a^4 & a^5 & a^6  & a^7 \\
    a^4 & a^4 & a^5 & a^6 & a^7  & a^8 \\
    \end{array} 
\]

This is the same, but with some more spacing,
\[
    \setlength{\extrarowheight}{3pt}% local setting
    \begin{array}{l|*{5}{l}}
        & 1   & a   & a^2 & a^3  & a^4 \\
    \hline
    1   & 1   & a   & a^2 & a^3  & a^4 \\
    a   & a   & a^2 & a^3 & a^4  & a^5 \\
    a^2 & a^2 & a^3 & a^4 & a^5  & a^6 \\
    a^3 & a^3 & a^4 & a^5 & a^6  & a^7 \\
    a^4 & a^4 & a^5 & a^6 & a^7  & a^8 \\
    \end{array} 
\]

\end{document}

对于array,每个单元格都假定处于数学模式。 的设置\extrarowheight不会传播到 的其他实例array,因为\[...\]形成了一个组。

在此处输入图片描述

答案3

这里需要一些自动化

\documentclass{article}
\usepackage{amsmath, amssymb}
\usepackage{array}

\usepackage{xinttools}
\usepackage{bnumexpr}
\begin{document}

This is a Cayley table
\[
    \begin{array}{l|*{5}{l}}
        & 1   & a   & a^2 & a^3  & a^4 \\
    \hline
    1   & 1   & a   & a^2 & a^3  & a^4 \\
    a   & a   & a^2 & a^3 & a^4  & a^5 \\
    a^2 & a^2 & a^3 & a^4 & a^5  & a^6 \\
    a^3 & a^3 & a^4 & a^5 & a^6  & a^7 \\
    a^4 & a^4 & a^5 & a^6 & a^7  & a^8 \\
    \end{array} 
\]

This is the same, but with some more spacing,
\[
    \setlength{\extrarowheight}{3pt}% local setting
    \begin{array}{l|*{5}{l}}
        & 1   & a   & a^2 & a^3  & a^4 \\
    \hline
    1   & 1   & a   & a^2 & a^3  & a^4 \\
    a   & a   & a^2 & a^3 & a^4  & a^5 \\
    a^2 & a^2 & a^3 & a^4 & a^5  & a^6 \\
    a^3 & a^3 & a^4 & a^5 & a^6  & a^7 \\
    a^4 & a^4 & a^5 & a^6 & a^7  & a^8 \\
    \end{array} 
\]

Again, but illustrating that $a=4$ generates a cyclic sub-group of order
$5$ of $(\mathbb{Z}/11\mathbb{Z})^*$:
\[
    \setlength{\extrarowheight}{3pt}% local setting
    \begin{array}{c|*{5}{c}}
        & 1   & a   & a^2 & a^3  & a^4 \\
    \hline
    \xintFor #1 in {0, 1, 2, 3, 4}:
    {\ifnum #1=0 1\else a^{#1}\fi 
       \xintFor #2 in {0, 1, 2, 3, 4}:
      {%
       &\thebnumexpr 4^(#1+#2) /: 11\relax
      }%
    \\
    }%
    \end{array} 
\]
and $a=2$ generates the full group:
\[
    \setlength{\extrarowheight}{3pt}% local setting
    \begin{array}{c|*{10}{c}}
        & 1 & a  \xintFor*#1 in {23456789}:{&a^{#1}}\\
    \hline
    \xintFor* #1 in {0123456789}:
    {\ifnum #1=0 1\else a^{#1}\fi 
       \xintFor* #2 in {0123456789}:
      {%
       &\thebnumexpr 2^(#1+#2) /: 11\relax
      }%
    \\
    }%
    \end{array} 
\]
\end{document}

在此处输入图片描述

答案4

\foreach

\documentclass{article}
\usepackage{etoolbox}
\usepackage{tikz}
\tikzset{mynode/.style={anchor=base,  
    inner sep=0pt,
    text height=12pt, text depth=6pt, text width=18pt, text centered}}
\newcommand{\CayleyTable}[2][a]{%
\vcenter{\hbox{\begin{tikzpicture}
\pgfmathsetmacro\tot{int(#2-1)}
\foreach \i in {0,1,...,\tot}
{
\node[mynode] (hh-\i) at (\i *24pt,24pt) {\ifnumequal{\i}{0}{$1$}{\ifnumequal{\i}{1}{$#1$}{${#1}^{\i}$}}};
\node[mynode] (vv-\i) at (-24pt-\pgflinewidth,-\i *24pt) {\ifnumequal{\i}{0}{$1$}{\ifnumequal{\i}{1}{$#1$}{${#1}^{\i}$}}};
}
\foreach \myrow in {0,1,...,\tot} 
{\foreach \mycol in {0,1,...,\tot} 
{\pgfmathsetmacro\myplus{\myrow+\mycol}\pgfmathsetmacro\myexp{int(mod(\myplus,#2))}
\node[mynode] at (\myrow*24pt,-\mycol*24pt) {\ifnumequal{\myexp}{0}{$1$}{\ifnumequal{\myexp}{1}{$#1$}{${#1}^{\myexp}$}}};}}
\draw ([yshift=-2pt]hh-\tot.south east) -- ([yshift=-2pt]hh-0.south west) -- ++(-24pt, 0);
\draw ([xshift=2pt]vv-\tot.south east) -- ([xshift=2pt]vv-0.north east) -- ++(0,24pt);
\end{tikzpicture}}}%
}
\begin{document}
\[
  \CayleyTable{3}
 \]
 \[
  \CayleyTable[x]{4}
 \]
 \[
  \CayleyTable[y]{5}
\]
 \end{document}

在此处输入图片描述

相关内容