How to draw a Cayley table












12














I'm trying to make a Cayley table like the one in the following question, but I don't want the labels, for example, on top (Capacity) and on the left side (the w's and v's). I just would like to reproduce the exact same table without the 'extra' bits on the side.



I forgot to mention I want a 5x5 table (25 entries inside the table), but still with the "outer" headings.



I managed to do this. However, this is long-winded I think:



[
begin{tabular}{>{$}l<{$}|*{6}{>{$}l<{$}}}
~ & 1 & a & a^2 & a^3 & a^4 \
hlinevrule 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}
]


EDIT:



setlengthextrarowheight{3pt}
noindentbegin{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}









share|improve this question
























  • the answer provided was excellent in the above link, I would appreciate if I can get a similar answer.
    – A.E
    Nov 12 '18 at 15:36






  • 3




    Just take Gonzalo's answer and delete first line (the one which contains Capacity) and two left columns and two right ones.
    – Ignasi
    Nov 12 '18 at 15:47






  • 1




    array, not tabular.
    – egreg
    Nov 12 '18 at 16:03






  • 1




    You Need to put $a^2$ when you want to use math!
    – GiuTeX
    Nov 12 '18 at 16:19






  • 1




    @A.E As it is, the added code produces tons of errors.
    – egreg
    Nov 12 '18 at 16:19
















12














I'm trying to make a Cayley table like the one in the following question, but I don't want the labels, for example, on top (Capacity) and on the left side (the w's and v's). I just would like to reproduce the exact same table without the 'extra' bits on the side.



I forgot to mention I want a 5x5 table (25 entries inside the table), but still with the "outer" headings.



I managed to do this. However, this is long-winded I think:



[
begin{tabular}{>{$}l<{$}|*{6}{>{$}l<{$}}}
~ & 1 & a & a^2 & a^3 & a^4 \
hlinevrule 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}
]


EDIT:



setlengthextrarowheight{3pt}
noindentbegin{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}









share|improve this question
























  • the answer provided was excellent in the above link, I would appreciate if I can get a similar answer.
    – A.E
    Nov 12 '18 at 15:36






  • 3




    Just take Gonzalo's answer and delete first line (the one which contains Capacity) and two left columns and two right ones.
    – Ignasi
    Nov 12 '18 at 15:47






  • 1




    array, not tabular.
    – egreg
    Nov 12 '18 at 16:03






  • 1




    You Need to put $a^2$ when you want to use math!
    – GiuTeX
    Nov 12 '18 at 16:19






  • 1




    @A.E As it is, the added code produces tons of errors.
    – egreg
    Nov 12 '18 at 16:19














12












12








12


4





I'm trying to make a Cayley table like the one in the following question, but I don't want the labels, for example, on top (Capacity) and on the left side (the w's and v's). I just would like to reproduce the exact same table without the 'extra' bits on the side.



I forgot to mention I want a 5x5 table (25 entries inside the table), but still with the "outer" headings.



I managed to do this. However, this is long-winded I think:



[
begin{tabular}{>{$}l<{$}|*{6}{>{$}l<{$}}}
~ & 1 & a & a^2 & a^3 & a^4 \
hlinevrule 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}
]


EDIT:



setlengthextrarowheight{3pt}
noindentbegin{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}









share|improve this question















I'm trying to make a Cayley table like the one in the following question, but I don't want the labels, for example, on top (Capacity) and on the left side (the w's and v's). I just would like to reproduce the exact same table without the 'extra' bits on the side.



I forgot to mention I want a 5x5 table (25 entries inside the table), but still with the "outer" headings.



I managed to do this. However, this is long-winded I think:



[
begin{tabular}{>{$}l<{$}|*{6}{>{$}l<{$}}}
~ & 1 & a & a^2 & a^3 & a^4 \
hlinevrule 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}
]


EDIT:



setlengthextrarowheight{3pt}
noindentbegin{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}






tables






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 12 '18 at 23:09









Peter Mortensen

54536




54536










asked Nov 12 '18 at 15:30









A.E

14711




14711












  • the answer provided was excellent in the above link, I would appreciate if I can get a similar answer.
    – A.E
    Nov 12 '18 at 15:36






  • 3




    Just take Gonzalo's answer and delete first line (the one which contains Capacity) and two left columns and two right ones.
    – Ignasi
    Nov 12 '18 at 15:47






  • 1




    array, not tabular.
    – egreg
    Nov 12 '18 at 16:03






  • 1




    You Need to put $a^2$ when you want to use math!
    – GiuTeX
    Nov 12 '18 at 16:19






  • 1




    @A.E As it is, the added code produces tons of errors.
    – egreg
    Nov 12 '18 at 16:19


















  • the answer provided was excellent in the above link, I would appreciate if I can get a similar answer.
    – A.E
    Nov 12 '18 at 15:36






  • 3




    Just take Gonzalo's answer and delete first line (the one which contains Capacity) and two left columns and two right ones.
    – Ignasi
    Nov 12 '18 at 15:47






  • 1




    array, not tabular.
    – egreg
    Nov 12 '18 at 16:03






  • 1




    You Need to put $a^2$ when you want to use math!
    – GiuTeX
    Nov 12 '18 at 16:19






  • 1




    @A.E As it is, the added code produces tons of errors.
    – egreg
    Nov 12 '18 at 16:19
















the answer provided was excellent in the above link, I would appreciate if I can get a similar answer.
– A.E
Nov 12 '18 at 15:36




the answer provided was excellent in the above link, I would appreciate if I can get a similar answer.
– A.E
Nov 12 '18 at 15:36




3




3




Just take Gonzalo's answer and delete first line (the one which contains Capacity) and two left columns and two right ones.
– Ignasi
Nov 12 '18 at 15:47




Just take Gonzalo's answer and delete first line (the one which contains Capacity) and two left columns and two right ones.
– Ignasi
Nov 12 '18 at 15:47




1




1




array, not tabular.
– egreg
Nov 12 '18 at 16:03




array, not tabular.
– egreg
Nov 12 '18 at 16:03




1




1




You Need to put $a^2$ when you want to use math!
– GiuTeX
Nov 12 '18 at 16:19




You Need to put $a^2$ when you want to use math!
– GiuTeX
Nov 12 '18 at 16:19




1




1




@A.E As it is, the added code produces tons of errors.
– egreg
Nov 12 '18 at 16:19




@A.E As it is, the added code produces tons of errors.
– egreg
Nov 12 '18 at 16:19










5 Answers
5






active

oldest

votes


















9














Basically I've just taken the answer to the question you linked and changed few lines to adapt to your needs.



Here's the code, followed by the output you will get and a brief explanation of what's going on.



The code below produces 2 tables, in one there's written ANYTHING in the top left corner, in the second one there's a white space (just don't put anything in the column "argument".



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

begin{document}

setlengthextrarowheight{3pt}
noindentbegin{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}


noindentbegin{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}


enter image description hereenter image description here



How does it work? A table is done with the environment {tabular}, which requires as argument the numer of columns (or rows... just read the documentation to know more) which is specified by the argument {c | c c c c c}: 6 columns divided by a line between the first and the second col. The 'c' stands for centered meaning that the column will be aligned to the center, if you want you can change it to l (left) or r (right).



Then in the tables all the entries are done by spacing them with &, and the cline takes as argument the number of columns that you want it to span: from column 1 to column 6.



The command setlengthextrarowheight{3pt} adds some extra row height (how surprising!).



Package {array} is needed for the length extrarowheight.






share|improve this answer



















  • 1




    this is good however I wanted a 5x5 table
    – A.E
    Nov 12 '18 at 16:00






  • 1




    Cheers pal, much appreciated.
    – A.E
    Nov 12 '18 at 16:02






  • 1




    if you could briefly explain what you did line by line, It would be more beneficial so I know what you've done
    – A.E
    Nov 12 '18 at 16:03






  • 1




    much appreciated
    – A.E
    Nov 12 '18 at 16:11










  • I added more on the meaning of the c's in {tabular} environment.
    – GiuTeX
    Nov 12 '18 at 16:12



















12














Your input is almost good, but you can do better.



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}


With array, each cell is assumed to be in math mode. The setting of extrarowheight will not propagate to other instances of array, because [...] forms a group.



enter image description here






share|improve this answer



















  • 1




    I prefer the method above as it is easier to follow(in my eyes anyway) but thanks for your answer
    – A.E
    Nov 12 '18 at 16:16








  • 1




    What does * in l|* mean?
    – manooooh
    Nov 12 '18 at 16:17






  • 2




    @manooooh *{6}{l} is short for llllll
    – samcarter
    Nov 12 '18 at 16:18






  • 3




    @manooooh The * refers to the following: *{6}{l} means “repeat l six times”.
    – egreg
    Nov 12 '18 at 16:18










  • @jfbu Right, fixed
    – egreg
    Nov 12 '18 at 16:47



















10














Some automatizing is in order here



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}/11mathbb{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 1else a^{#1}fi
xintFor #2 in {0, 1, 2, 3, 4}:
{%
&thebnumexpr 4^(#1+#2) /: 11relax
}%
\
}%
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 1else a^{#1}fi
xintFor* #2 in {0123456789}:
{%
&thebnumexpr 2^(#1+#2) /: 11relax
}%
\
}%
end{array}
]
end{document}


enter image description here






share|improve this answer





















  • +1 I'm always amazed at how efficient xinttools is!
    – Andrew
    Nov 13 '18 at 7:06










  • @Andrew your expl3 answer does look efficient too :)
    – jfbu
    Nov 13 '18 at 8:05



















5














Perhaps I over automate, but I'd want to have a macro CayleyTable that produces the Cayley table of the corresponding cyclic group, so that the commands:



  CayleyTable{3}
CayleyTable{4}
CayleyTable[x]{9}


would produce:



enter image description here



(An optional argument gives the name of the generator, which defaults to a). Arguably, CyclicGroupCayleyTable would be a better name. In any case,
here's the code:



documentclass{article}
usepackage{array}
setlength{extrarowheight}{3pt}% local setting

usepackage{xparse}

ExplSyntaxOn
int_new:N l_n_int
tl_new:N l_gen_tl
cs_new_protected:Npn print_exponent #1 {% {l_gen_tl}^{#1}
int_compare:nTF {#1=0}{1}{l_gen_tl int_compare:nT{#1>1}{^{#1}}}
}
cs_new_protected:Npn print_Cayley_header:n #1 {
& print_exponent {int_eval:n{#1-1}}
}
cs_new_protected:Npn print_Cayley_cell:nn #1 #2 {
& print_exponent {int_eval:n { int_mod:nn {#1+#2-2}{l_n_int}} }
}
cs_new_protected:Npn print_Cayley_row:n #1 {
print_exponent {int_eval:n {#1-1}}
int_step_inline:nn {l_n_int} {print_Cayley_cell:nn {##1}{#1}} \
}
NewDocumentCommandCayleyTable{ O{a} m}{
tl_set:Nn l_gen_tl {#1}
int_set:Nn l_n_int {#2}
[
begin{array}{c|*{int_eval:n{l_n_int+1}}{c}}
int_step_function:nN {l_n_int} print_Cayley_header:n
\hline
int_step_function:nN {l_n_int} print_Cayley_row:n
end{array}
]
}
ExplSyntaxOff

begin{document}

CayleyTable{3}

CayleyTable{4}

CayleyTable[x]{9}

end{document}





share|improve this answer































    0














    With 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}
    pgfmathsetmacrotot{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}
    {pgfmathsetmacromyplus{myrow+mycol}pgfmathsetmacromyexp{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}


    enter image description here






    share|improve this answer





















      Your Answer








      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "85"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: false,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: null,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f459639%2fhow-to-draw-a-cayley-table%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      5 Answers
      5






      active

      oldest

      votes








      5 Answers
      5






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      9














      Basically I've just taken the answer to the question you linked and changed few lines to adapt to your needs.



      Here's the code, followed by the output you will get and a brief explanation of what's going on.



      The code below produces 2 tables, in one there's written ANYTHING in the top left corner, in the second one there's a white space (just don't put anything in the column "argument".



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

      begin{document}

      setlengthextrarowheight{3pt}
      noindentbegin{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}


      noindentbegin{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}


      enter image description hereenter image description here



      How does it work? A table is done with the environment {tabular}, which requires as argument the numer of columns (or rows... just read the documentation to know more) which is specified by the argument {c | c c c c c}: 6 columns divided by a line between the first and the second col. The 'c' stands for centered meaning that the column will be aligned to the center, if you want you can change it to l (left) or r (right).



      Then in the tables all the entries are done by spacing them with &, and the cline takes as argument the number of columns that you want it to span: from column 1 to column 6.



      The command setlengthextrarowheight{3pt} adds some extra row height (how surprising!).



      Package {array} is needed for the length extrarowheight.






      share|improve this answer



















      • 1




        this is good however I wanted a 5x5 table
        – A.E
        Nov 12 '18 at 16:00






      • 1




        Cheers pal, much appreciated.
        – A.E
        Nov 12 '18 at 16:02






      • 1




        if you could briefly explain what you did line by line, It would be more beneficial so I know what you've done
        – A.E
        Nov 12 '18 at 16:03






      • 1




        much appreciated
        – A.E
        Nov 12 '18 at 16:11










      • I added more on the meaning of the c's in {tabular} environment.
        – GiuTeX
        Nov 12 '18 at 16:12
















      9














      Basically I've just taken the answer to the question you linked and changed few lines to adapt to your needs.



      Here's the code, followed by the output you will get and a brief explanation of what's going on.



      The code below produces 2 tables, in one there's written ANYTHING in the top left corner, in the second one there's a white space (just don't put anything in the column "argument".



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

      begin{document}

      setlengthextrarowheight{3pt}
      noindentbegin{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}


      noindentbegin{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}


      enter image description hereenter image description here



      How does it work? A table is done with the environment {tabular}, which requires as argument the numer of columns (or rows... just read the documentation to know more) which is specified by the argument {c | c c c c c}: 6 columns divided by a line between the first and the second col. The 'c' stands for centered meaning that the column will be aligned to the center, if you want you can change it to l (left) or r (right).



      Then in the tables all the entries are done by spacing them with &, and the cline takes as argument the number of columns that you want it to span: from column 1 to column 6.



      The command setlengthextrarowheight{3pt} adds some extra row height (how surprising!).



      Package {array} is needed for the length extrarowheight.






      share|improve this answer



















      • 1




        this is good however I wanted a 5x5 table
        – A.E
        Nov 12 '18 at 16:00






      • 1




        Cheers pal, much appreciated.
        – A.E
        Nov 12 '18 at 16:02






      • 1




        if you could briefly explain what you did line by line, It would be more beneficial so I know what you've done
        – A.E
        Nov 12 '18 at 16:03






      • 1




        much appreciated
        – A.E
        Nov 12 '18 at 16:11










      • I added more on the meaning of the c's in {tabular} environment.
        – GiuTeX
        Nov 12 '18 at 16:12














      9












      9








      9






      Basically I've just taken the answer to the question you linked and changed few lines to adapt to your needs.



      Here's the code, followed by the output you will get and a brief explanation of what's going on.



      The code below produces 2 tables, in one there's written ANYTHING in the top left corner, in the second one there's a white space (just don't put anything in the column "argument".



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

      begin{document}

      setlengthextrarowheight{3pt}
      noindentbegin{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}


      noindentbegin{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}


      enter image description hereenter image description here



      How does it work? A table is done with the environment {tabular}, which requires as argument the numer of columns (or rows... just read the documentation to know more) which is specified by the argument {c | c c c c c}: 6 columns divided by a line between the first and the second col. The 'c' stands for centered meaning that the column will be aligned to the center, if you want you can change it to l (left) or r (right).



      Then in the tables all the entries are done by spacing them with &, and the cline takes as argument the number of columns that you want it to span: from column 1 to column 6.



      The command setlengthextrarowheight{3pt} adds some extra row height (how surprising!).



      Package {array} is needed for the length extrarowheight.






      share|improve this answer














      Basically I've just taken the answer to the question you linked and changed few lines to adapt to your needs.



      Here's the code, followed by the output you will get and a brief explanation of what's going on.



      The code below produces 2 tables, in one there's written ANYTHING in the top left corner, in the second one there's a white space (just don't put anything in the column "argument".



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

      begin{document}

      setlengthextrarowheight{3pt}
      noindentbegin{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}


      noindentbegin{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}


      enter image description hereenter image description here



      How does it work? A table is done with the environment {tabular}, which requires as argument the numer of columns (or rows... just read the documentation to know more) which is specified by the argument {c | c c c c c}: 6 columns divided by a line between the first and the second col. The 'c' stands for centered meaning that the column will be aligned to the center, if you want you can change it to l (left) or r (right).



      Then in the tables all the entries are done by spacing them with &, and the cline takes as argument the number of columns that you want it to span: from column 1 to column 6.



      The command setlengthextrarowheight{3pt} adds some extra row height (how surprising!).



      Package {array} is needed for the length extrarowheight.







      share|improve this answer














      share|improve this answer



      share|improve this answer








      edited Nov 12 '18 at 16:22

























      answered Nov 12 '18 at 15:58









      GiuTeX

      661317




      661317








      • 1




        this is good however I wanted a 5x5 table
        – A.E
        Nov 12 '18 at 16:00






      • 1




        Cheers pal, much appreciated.
        – A.E
        Nov 12 '18 at 16:02






      • 1




        if you could briefly explain what you did line by line, It would be more beneficial so I know what you've done
        – A.E
        Nov 12 '18 at 16:03






      • 1




        much appreciated
        – A.E
        Nov 12 '18 at 16:11










      • I added more on the meaning of the c's in {tabular} environment.
        – GiuTeX
        Nov 12 '18 at 16:12














      • 1




        this is good however I wanted a 5x5 table
        – A.E
        Nov 12 '18 at 16:00






      • 1




        Cheers pal, much appreciated.
        – A.E
        Nov 12 '18 at 16:02






      • 1




        if you could briefly explain what you did line by line, It would be more beneficial so I know what you've done
        – A.E
        Nov 12 '18 at 16:03






      • 1




        much appreciated
        – A.E
        Nov 12 '18 at 16:11










      • I added more on the meaning of the c's in {tabular} environment.
        – GiuTeX
        Nov 12 '18 at 16:12








      1




      1




      this is good however I wanted a 5x5 table
      – A.E
      Nov 12 '18 at 16:00




      this is good however I wanted a 5x5 table
      – A.E
      Nov 12 '18 at 16:00




      1




      1




      Cheers pal, much appreciated.
      – A.E
      Nov 12 '18 at 16:02




      Cheers pal, much appreciated.
      – A.E
      Nov 12 '18 at 16:02




      1




      1




      if you could briefly explain what you did line by line, It would be more beneficial so I know what you've done
      – A.E
      Nov 12 '18 at 16:03




      if you could briefly explain what you did line by line, It would be more beneficial so I know what you've done
      – A.E
      Nov 12 '18 at 16:03




      1




      1




      much appreciated
      – A.E
      Nov 12 '18 at 16:11




      much appreciated
      – A.E
      Nov 12 '18 at 16:11












      I added more on the meaning of the c's in {tabular} environment.
      – GiuTeX
      Nov 12 '18 at 16:12




      I added more on the meaning of the c's in {tabular} environment.
      – GiuTeX
      Nov 12 '18 at 16:12











      12














      Your input is almost good, but you can do better.



      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}


      With array, each cell is assumed to be in math mode. The setting of extrarowheight will not propagate to other instances of array, because [...] forms a group.



      enter image description here






      share|improve this answer



















      • 1




        I prefer the method above as it is easier to follow(in my eyes anyway) but thanks for your answer
        – A.E
        Nov 12 '18 at 16:16








      • 1




        What does * in l|* mean?
        – manooooh
        Nov 12 '18 at 16:17






      • 2




        @manooooh *{6}{l} is short for llllll
        – samcarter
        Nov 12 '18 at 16:18






      • 3




        @manooooh The * refers to the following: *{6}{l} means “repeat l six times”.
        – egreg
        Nov 12 '18 at 16:18










      • @jfbu Right, fixed
        – egreg
        Nov 12 '18 at 16:47
















      12














      Your input is almost good, but you can do better.



      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}


      With array, each cell is assumed to be in math mode. The setting of extrarowheight will not propagate to other instances of array, because [...] forms a group.



      enter image description here






      share|improve this answer



















      • 1




        I prefer the method above as it is easier to follow(in my eyes anyway) but thanks for your answer
        – A.E
        Nov 12 '18 at 16:16








      • 1




        What does * in l|* mean?
        – manooooh
        Nov 12 '18 at 16:17






      • 2




        @manooooh *{6}{l} is short for llllll
        – samcarter
        Nov 12 '18 at 16:18






      • 3




        @manooooh The * refers to the following: *{6}{l} means “repeat l six times”.
        – egreg
        Nov 12 '18 at 16:18










      • @jfbu Right, fixed
        – egreg
        Nov 12 '18 at 16:47














      12












      12








      12






      Your input is almost good, but you can do better.



      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}


      With array, each cell is assumed to be in math mode. The setting of extrarowheight will not propagate to other instances of array, because [...] forms a group.



      enter image description here






      share|improve this answer














      Your input is almost good, but you can do better.



      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}


      With array, each cell is assumed to be in math mode. The setting of extrarowheight will not propagate to other instances of array, because [...] forms a group.



      enter image description here







      share|improve this answer














      share|improve this answer



      share|improve this answer








      edited Nov 12 '18 at 16:47

























      answered Nov 12 '18 at 16:14









      egreg

      710k8618853170




      710k8618853170








      • 1




        I prefer the method above as it is easier to follow(in my eyes anyway) but thanks for your answer
        – A.E
        Nov 12 '18 at 16:16








      • 1




        What does * in l|* mean?
        – manooooh
        Nov 12 '18 at 16:17






      • 2




        @manooooh *{6}{l} is short for llllll
        – samcarter
        Nov 12 '18 at 16:18






      • 3




        @manooooh The * refers to the following: *{6}{l} means “repeat l six times”.
        – egreg
        Nov 12 '18 at 16:18










      • @jfbu Right, fixed
        – egreg
        Nov 12 '18 at 16:47














      • 1




        I prefer the method above as it is easier to follow(in my eyes anyway) but thanks for your answer
        – A.E
        Nov 12 '18 at 16:16








      • 1




        What does * in l|* mean?
        – manooooh
        Nov 12 '18 at 16:17






      • 2




        @manooooh *{6}{l} is short for llllll
        – samcarter
        Nov 12 '18 at 16:18






      • 3




        @manooooh The * refers to the following: *{6}{l} means “repeat l six times”.
        – egreg
        Nov 12 '18 at 16:18










      • @jfbu Right, fixed
        – egreg
        Nov 12 '18 at 16:47








      1




      1




      I prefer the method above as it is easier to follow(in my eyes anyway) but thanks for your answer
      – A.E
      Nov 12 '18 at 16:16






      I prefer the method above as it is easier to follow(in my eyes anyway) but thanks for your answer
      – A.E
      Nov 12 '18 at 16:16






      1




      1




      What does * in l|* mean?
      – manooooh
      Nov 12 '18 at 16:17




      What does * in l|* mean?
      – manooooh
      Nov 12 '18 at 16:17




      2




      2




      @manooooh *{6}{l} is short for llllll
      – samcarter
      Nov 12 '18 at 16:18




      @manooooh *{6}{l} is short for llllll
      – samcarter
      Nov 12 '18 at 16:18




      3




      3




      @manooooh The * refers to the following: *{6}{l} means “repeat l six times”.
      – egreg
      Nov 12 '18 at 16:18




      @manooooh The * refers to the following: *{6}{l} means “repeat l six times”.
      – egreg
      Nov 12 '18 at 16:18












      @jfbu Right, fixed
      – egreg
      Nov 12 '18 at 16:47




      @jfbu Right, fixed
      – egreg
      Nov 12 '18 at 16:47











      10














      Some automatizing is in order here



      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}/11mathbb{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 1else a^{#1}fi
      xintFor #2 in {0, 1, 2, 3, 4}:
      {%
      &thebnumexpr 4^(#1+#2) /: 11relax
      }%
      \
      }%
      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 1else a^{#1}fi
      xintFor* #2 in {0123456789}:
      {%
      &thebnumexpr 2^(#1+#2) /: 11relax
      }%
      \
      }%
      end{array}
      ]
      end{document}


      enter image description here






      share|improve this answer





















      • +1 I'm always amazed at how efficient xinttools is!
        – Andrew
        Nov 13 '18 at 7:06










      • @Andrew your expl3 answer does look efficient too :)
        – jfbu
        Nov 13 '18 at 8:05
















      10














      Some automatizing is in order here



      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}/11mathbb{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 1else a^{#1}fi
      xintFor #2 in {0, 1, 2, 3, 4}:
      {%
      &thebnumexpr 4^(#1+#2) /: 11relax
      }%
      \
      }%
      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 1else a^{#1}fi
      xintFor* #2 in {0123456789}:
      {%
      &thebnumexpr 2^(#1+#2) /: 11relax
      }%
      \
      }%
      end{array}
      ]
      end{document}


      enter image description here






      share|improve this answer





















      • +1 I'm always amazed at how efficient xinttools is!
        – Andrew
        Nov 13 '18 at 7:06










      • @Andrew your expl3 answer does look efficient too :)
        – jfbu
        Nov 13 '18 at 8:05














      10












      10








      10






      Some automatizing is in order here



      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}/11mathbb{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 1else a^{#1}fi
      xintFor #2 in {0, 1, 2, 3, 4}:
      {%
      &thebnumexpr 4^(#1+#2) /: 11relax
      }%
      \
      }%
      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 1else a^{#1}fi
      xintFor* #2 in {0123456789}:
      {%
      &thebnumexpr 2^(#1+#2) /: 11relax
      }%
      \
      }%
      end{array}
      ]
      end{document}


      enter image description here






      share|improve this answer












      Some automatizing is in order here



      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}/11mathbb{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 1else a^{#1}fi
      xintFor #2 in {0, 1, 2, 3, 4}:
      {%
      &thebnumexpr 4^(#1+#2) /: 11relax
      }%
      \
      }%
      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 1else a^{#1}fi
      xintFor* #2 in {0123456789}:
      {%
      &thebnumexpr 2^(#1+#2) /: 11relax
      }%
      \
      }%
      end{array}
      ]
      end{document}


      enter image description here







      share|improve this answer












      share|improve this answer



      share|improve this answer










      answered Nov 12 '18 at 16:45









      jfbu

      46.1k66148




      46.1k66148












      • +1 I'm always amazed at how efficient xinttools is!
        – Andrew
        Nov 13 '18 at 7:06










      • @Andrew your expl3 answer does look efficient too :)
        – jfbu
        Nov 13 '18 at 8:05


















      • +1 I'm always amazed at how efficient xinttools is!
        – Andrew
        Nov 13 '18 at 7:06










      • @Andrew your expl3 answer does look efficient too :)
        – jfbu
        Nov 13 '18 at 8:05
















      +1 I'm always amazed at how efficient xinttools is!
      – Andrew
      Nov 13 '18 at 7:06




      +1 I'm always amazed at how efficient xinttools is!
      – Andrew
      Nov 13 '18 at 7:06












      @Andrew your expl3 answer does look efficient too :)
      – jfbu
      Nov 13 '18 at 8:05




      @Andrew your expl3 answer does look efficient too :)
      – jfbu
      Nov 13 '18 at 8:05











      5














      Perhaps I over automate, but I'd want to have a macro CayleyTable that produces the Cayley table of the corresponding cyclic group, so that the commands:



        CayleyTable{3}
      CayleyTable{4}
      CayleyTable[x]{9}


      would produce:



      enter image description here



      (An optional argument gives the name of the generator, which defaults to a). Arguably, CyclicGroupCayleyTable would be a better name. In any case,
      here's the code:



      documentclass{article}
      usepackage{array}
      setlength{extrarowheight}{3pt}% local setting

      usepackage{xparse}

      ExplSyntaxOn
      int_new:N l_n_int
      tl_new:N l_gen_tl
      cs_new_protected:Npn print_exponent #1 {% {l_gen_tl}^{#1}
      int_compare:nTF {#1=0}{1}{l_gen_tl int_compare:nT{#1>1}{^{#1}}}
      }
      cs_new_protected:Npn print_Cayley_header:n #1 {
      & print_exponent {int_eval:n{#1-1}}
      }
      cs_new_protected:Npn print_Cayley_cell:nn #1 #2 {
      & print_exponent {int_eval:n { int_mod:nn {#1+#2-2}{l_n_int}} }
      }
      cs_new_protected:Npn print_Cayley_row:n #1 {
      print_exponent {int_eval:n {#1-1}}
      int_step_inline:nn {l_n_int} {print_Cayley_cell:nn {##1}{#1}} \
      }
      NewDocumentCommandCayleyTable{ O{a} m}{
      tl_set:Nn l_gen_tl {#1}
      int_set:Nn l_n_int {#2}
      [
      begin{array}{c|*{int_eval:n{l_n_int+1}}{c}}
      int_step_function:nN {l_n_int} print_Cayley_header:n
      \hline
      int_step_function:nN {l_n_int} print_Cayley_row:n
      end{array}
      ]
      }
      ExplSyntaxOff

      begin{document}

      CayleyTable{3}

      CayleyTable{4}

      CayleyTable[x]{9}

      end{document}





      share|improve this answer




























        5














        Perhaps I over automate, but I'd want to have a macro CayleyTable that produces the Cayley table of the corresponding cyclic group, so that the commands:



          CayleyTable{3}
        CayleyTable{4}
        CayleyTable[x]{9}


        would produce:



        enter image description here



        (An optional argument gives the name of the generator, which defaults to a). Arguably, CyclicGroupCayleyTable would be a better name. In any case,
        here's the code:



        documentclass{article}
        usepackage{array}
        setlength{extrarowheight}{3pt}% local setting

        usepackage{xparse}

        ExplSyntaxOn
        int_new:N l_n_int
        tl_new:N l_gen_tl
        cs_new_protected:Npn print_exponent #1 {% {l_gen_tl}^{#1}
        int_compare:nTF {#1=0}{1}{l_gen_tl int_compare:nT{#1>1}{^{#1}}}
        }
        cs_new_protected:Npn print_Cayley_header:n #1 {
        & print_exponent {int_eval:n{#1-1}}
        }
        cs_new_protected:Npn print_Cayley_cell:nn #1 #2 {
        & print_exponent {int_eval:n { int_mod:nn {#1+#2-2}{l_n_int}} }
        }
        cs_new_protected:Npn print_Cayley_row:n #1 {
        print_exponent {int_eval:n {#1-1}}
        int_step_inline:nn {l_n_int} {print_Cayley_cell:nn {##1}{#1}} \
        }
        NewDocumentCommandCayleyTable{ O{a} m}{
        tl_set:Nn l_gen_tl {#1}
        int_set:Nn l_n_int {#2}
        [
        begin{array}{c|*{int_eval:n{l_n_int+1}}{c}}
        int_step_function:nN {l_n_int} print_Cayley_header:n
        \hline
        int_step_function:nN {l_n_int} print_Cayley_row:n
        end{array}
        ]
        }
        ExplSyntaxOff

        begin{document}

        CayleyTable{3}

        CayleyTable{4}

        CayleyTable[x]{9}

        end{document}





        share|improve this answer


























          5












          5








          5






          Perhaps I over automate, but I'd want to have a macro CayleyTable that produces the Cayley table of the corresponding cyclic group, so that the commands:



            CayleyTable{3}
          CayleyTable{4}
          CayleyTable[x]{9}


          would produce:



          enter image description here



          (An optional argument gives the name of the generator, which defaults to a). Arguably, CyclicGroupCayleyTable would be a better name. In any case,
          here's the code:



          documentclass{article}
          usepackage{array}
          setlength{extrarowheight}{3pt}% local setting

          usepackage{xparse}

          ExplSyntaxOn
          int_new:N l_n_int
          tl_new:N l_gen_tl
          cs_new_protected:Npn print_exponent #1 {% {l_gen_tl}^{#1}
          int_compare:nTF {#1=0}{1}{l_gen_tl int_compare:nT{#1>1}{^{#1}}}
          }
          cs_new_protected:Npn print_Cayley_header:n #1 {
          & print_exponent {int_eval:n{#1-1}}
          }
          cs_new_protected:Npn print_Cayley_cell:nn #1 #2 {
          & print_exponent {int_eval:n { int_mod:nn {#1+#2-2}{l_n_int}} }
          }
          cs_new_protected:Npn print_Cayley_row:n #1 {
          print_exponent {int_eval:n {#1-1}}
          int_step_inline:nn {l_n_int} {print_Cayley_cell:nn {##1}{#1}} \
          }
          NewDocumentCommandCayleyTable{ O{a} m}{
          tl_set:Nn l_gen_tl {#1}
          int_set:Nn l_n_int {#2}
          [
          begin{array}{c|*{int_eval:n{l_n_int+1}}{c}}
          int_step_function:nN {l_n_int} print_Cayley_header:n
          \hline
          int_step_function:nN {l_n_int} print_Cayley_row:n
          end{array}
          ]
          }
          ExplSyntaxOff

          begin{document}

          CayleyTable{3}

          CayleyTable{4}

          CayleyTable[x]{9}

          end{document}





          share|improve this answer














          Perhaps I over automate, but I'd want to have a macro CayleyTable that produces the Cayley table of the corresponding cyclic group, so that the commands:



            CayleyTable{3}
          CayleyTable{4}
          CayleyTable[x]{9}


          would produce:



          enter image description here



          (An optional argument gives the name of the generator, which defaults to a). Arguably, CyclicGroupCayleyTable would be a better name. In any case,
          here's the code:



          documentclass{article}
          usepackage{array}
          setlength{extrarowheight}{3pt}% local setting

          usepackage{xparse}

          ExplSyntaxOn
          int_new:N l_n_int
          tl_new:N l_gen_tl
          cs_new_protected:Npn print_exponent #1 {% {l_gen_tl}^{#1}
          int_compare:nTF {#1=0}{1}{l_gen_tl int_compare:nT{#1>1}{^{#1}}}
          }
          cs_new_protected:Npn print_Cayley_header:n #1 {
          & print_exponent {int_eval:n{#1-1}}
          }
          cs_new_protected:Npn print_Cayley_cell:nn #1 #2 {
          & print_exponent {int_eval:n { int_mod:nn {#1+#2-2}{l_n_int}} }
          }
          cs_new_protected:Npn print_Cayley_row:n #1 {
          print_exponent {int_eval:n {#1-1}}
          int_step_inline:nn {l_n_int} {print_Cayley_cell:nn {##1}{#1}} \
          }
          NewDocumentCommandCayleyTable{ O{a} m}{
          tl_set:Nn l_gen_tl {#1}
          int_set:Nn l_n_int {#2}
          [
          begin{array}{c|*{int_eval:n{l_n_int+1}}{c}}
          int_step_function:nN {l_n_int} print_Cayley_header:n
          \hline
          int_step_function:nN {l_n_int} print_Cayley_row:n
          end{array}
          ]
          }
          ExplSyntaxOff

          begin{document}

          CayleyTable{3}

          CayleyTable{4}

          CayleyTable[x]{9}

          end{document}






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 13 '18 at 19:31

























          answered Nov 13 '18 at 5:44









          Andrew

          30.4k34381




          30.4k34381























              0














              With 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}
              pgfmathsetmacrotot{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}
              {pgfmathsetmacromyplus{myrow+mycol}pgfmathsetmacromyexp{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}


              enter image description here






              share|improve this answer


























                0














                With 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}
                pgfmathsetmacrotot{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}
                {pgfmathsetmacromyplus{myrow+mycol}pgfmathsetmacromyexp{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}


                enter image description here






                share|improve this answer
























                  0












                  0








                  0






                  With 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}
                  pgfmathsetmacrotot{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}
                  {pgfmathsetmacromyplus{myrow+mycol}pgfmathsetmacromyexp{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}


                  enter image description here






                  share|improve this answer












                  With 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}
                  pgfmathsetmacrotot{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}
                  {pgfmathsetmacromyplus{myrow+mycol}pgfmathsetmacromyexp{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}


                  enter image description here







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 13 '18 at 20:27









                  CarLaTeX

                  30k447127




                  30k447127






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to TeX - LaTeX Stack Exchange!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.





                      Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                      Please pay close attention to the following guidance:


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f459639%2fhow-to-draw-a-cayley-table%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Florida Star v. B. J. F.

                      Danny Elfman

                      Lugert, Oklahoma