How to draw a Cayley table
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
|
show 5 more comments
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
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 containsCapacity
) and two left columns and two right ones.
– Ignasi
Nov 12 '18 at 15:47
1
array
, nottabular
.
– 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
|
show 5 more comments
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
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
tables
edited Nov 12 '18 at 23:09
Peter Mortensen
54536
54536
asked Nov 12 '18 at 15:30
A.EA.E
15211
15211
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 containsCapacity
) and two left columns and two right ones.
– Ignasi
Nov 12 '18 at 15:47
1
array
, nottabular
.
– 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
|
show 5 more comments
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 containsCapacity
) and two left columns and two right ones.
– Ignasi
Nov 12 '18 at 15:47
1
array
, nottabular
.
– 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
|
show 5 more comments
5 Answers
5
active
oldest
votes
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}
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
.
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 thec
's in{tabular}
environment.
– GiuTeX
Nov 12 '18 at 16:12
|
show 5 more comments
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.
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*
inl|*
mean?
– manooooh
Nov 12 '18 at 16:17
2
@manooooh*{6}{l}
is short forllllll
– samcarter
Nov 12 '18 at 16:18
3
@manooooh The*
refers to the following:*{6}{l}
means “repeatl
six times”.
– egreg
Nov 12 '18 at 16:18
@jfbu Right, fixed
– egreg
Nov 12 '18 at 16:47
add a comment |
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}
+1 I'm always amazed at how efficientxinttools
is!
– Andrew
Nov 13 '18 at 7:06
@Andrew your expl3 answer does look efficient too:)
– jfbu
Nov 13 '18 at 8:05
add a comment |
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:
(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}
add a comment |
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}
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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}
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
.
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 thec
's in{tabular}
environment.
– GiuTeX
Nov 12 '18 at 16:12
|
show 5 more comments
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}
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
.
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 thec
's in{tabular}
environment.
– GiuTeX
Nov 12 '18 at 16:12
|
show 5 more comments
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}
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
.
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}
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
.
edited Nov 12 '18 at 16:22
answered Nov 12 '18 at 15:58
GiuTeXGiuTeX
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 thec
's in{tabular}
environment.
– GiuTeX
Nov 12 '18 at 16:12
|
show 5 more comments
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 thec
'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
|
show 5 more comments
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.
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*
inl|*
mean?
– manooooh
Nov 12 '18 at 16:17
2
@manooooh*{6}{l}
is short forllllll
– samcarter
Nov 12 '18 at 16:18
3
@manooooh The*
refers to the following:*{6}{l}
means “repeatl
six times”.
– egreg
Nov 12 '18 at 16:18
@jfbu Right, fixed
– egreg
Nov 12 '18 at 16:47
add a comment |
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.
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*
inl|*
mean?
– manooooh
Nov 12 '18 at 16:17
2
@manooooh*{6}{l}
is short forllllll
– samcarter
Nov 12 '18 at 16:18
3
@manooooh The*
refers to the following:*{6}{l}
means “repeatl
six times”.
– egreg
Nov 12 '18 at 16:18
@jfbu Right, fixed
– egreg
Nov 12 '18 at 16:47
add a comment |
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.
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.
edited Nov 12 '18 at 16:47
answered Nov 12 '18 at 16:14
egregegreg
712k8618923179
712k8618923179
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*
inl|*
mean?
– manooooh
Nov 12 '18 at 16:17
2
@manooooh*{6}{l}
is short forllllll
– samcarter
Nov 12 '18 at 16:18
3
@manooooh The*
refers to the following:*{6}{l}
means “repeatl
six times”.
– egreg
Nov 12 '18 at 16:18
@jfbu Right, fixed
– egreg
Nov 12 '18 at 16:47
add a comment |
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*
inl|*
mean?
– manooooh
Nov 12 '18 at 16:17
2
@manooooh*{6}{l}
is short forllllll
– samcarter
Nov 12 '18 at 16:18
3
@manooooh The*
refers to the following:*{6}{l}
means “repeatl
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
add a comment |
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}
+1 I'm always amazed at how efficientxinttools
is!
– Andrew
Nov 13 '18 at 7:06
@Andrew your expl3 answer does look efficient too:)
– jfbu
Nov 13 '18 at 8:05
add a comment |
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}
+1 I'm always amazed at how efficientxinttools
is!
– Andrew
Nov 13 '18 at 7:06
@Andrew your expl3 answer does look efficient too:)
– jfbu
Nov 13 '18 at 8:05
add a comment |
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}
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}
answered Nov 12 '18 at 16:45
jfbujfbu
46.5k66148
46.5k66148
+1 I'm always amazed at how efficientxinttools
is!
– Andrew
Nov 13 '18 at 7:06
@Andrew your expl3 answer does look efficient too:)
– jfbu
Nov 13 '18 at 8:05
add a comment |
+1 I'm always amazed at how efficientxinttools
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
add a comment |
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:
(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}
add a comment |
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:
(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}
add a comment |
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:
(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}
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:
(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}
edited Nov 13 '18 at 19:31
answered Nov 13 '18 at 5:44
AndrewAndrew
30.5k34381
30.5k34381
add a comment |
add a comment |
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}
add a comment |
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}
add a comment |
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}
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}
answered Nov 13 '18 at 20:27
CarLaTeXCarLaTeX
30.2k447127
30.2k447127
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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
, nottabular
.– 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