Matrix using tikz package
I am working on my dissertation and I have no idea how I should do this in LaTeX.
And the shading definitely is challenging.
I have only been able to do this so far, I am still an amateur at it.
usepackage{color}
newcommandx{times}
newcommandy{cellcolor{green}}
begin{document}
begin{equation*}
left[
begin{array}{ccc}
y & y & y \
& y & y R \
& & y \
end{array}
right]left[
begin{array}{c}
\
a_j \
\
end{array}
right]=
end{equation*}
end{document}
tikz-pgf math-mode equations matrices
New contributor
add a comment |
I am working on my dissertation and I have no idea how I should do this in LaTeX.
And the shading definitely is challenging.
I have only been able to do this so far, I am still an amateur at it.
usepackage{color}
newcommandx{times}
newcommandy{cellcolor{green}}
begin{document}
begin{equation*}
left[
begin{array}{ccc}
y & y & y \
& y & y R \
& & y \
end{array}
right]left[
begin{array}{c}
\
a_j \
\
end{array}
right]=
end{equation*}
end{document}
tikz-pgf math-mode equations matrices
New contributor
add a comment |
I am working on my dissertation and I have no idea how I should do this in LaTeX.
And the shading definitely is challenging.
I have only been able to do this so far, I am still an amateur at it.
usepackage{color}
newcommandx{times}
newcommandy{cellcolor{green}}
begin{document}
begin{equation*}
left[
begin{array}{ccc}
y & y & y \
& y & y R \
& & y \
end{array}
right]left[
begin{array}{c}
\
a_j \
\
end{array}
right]=
end{equation*}
end{document}
tikz-pgf math-mode equations matrices
New contributor
I am working on my dissertation and I have no idea how I should do this in LaTeX.
And the shading definitely is challenging.
I have only been able to do this so far, I am still an amateur at it.
usepackage{color}
newcommandx{times}
newcommandy{cellcolor{green}}
begin{document}
begin{equation*}
left[
begin{array}{ccc}
y & y & y \
& y & y R \
& & y \
end{array}
right]left[
begin{array}{c}
\
a_j \
\
end{array}
right]=
end{equation*}
end{document}
tikz-pgf math-mode equations matrices
tikz-pgf math-mode equations matrices
New contributor
New contributor
edited 2 days ago
Tarini Ramsewak
New contributor
asked 2 days ago
Tarini RamsewakTarini Ramsewak
334
334
New contributor
New contributor
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
With TikZ matrix
:
documentclass{article}
usepackage{amsmath}
usepackage{tikz}
usetikzlibrary{matrix, positioning, patterns, backgrounds}
tikzset{
every matrix/.append style={
matrix of math nodes,
nodes in empty cells,
inner sep=0pt,
outer sep=0pt,
column sep=-pgflinewidth,
row sep=-pgflinewidth,
},
mylargenode/.style={
text centered,
text width=30pt,
text height=20pt,
text depth=10pt,
},
mylongnode/.style={
text centered,
text width=20pt,
text height=40pt,
text depth=30pt,
},
mysmallnode/.style={
text centered,
text width=20pt,
text height=20pt,
text depth=10pt,
},
mylonglargenode/.style={
text centered,
text width=30pt,
text height=40pt,
text depth=30pt,
},
}
begin{document}
With delimiters like in your image:
[
begin{tikzpicture}
matrix[
nodes={mylargenode},
column 6/.style={nodes={mysmallnode}},
row 6/.style={nodes={mylonglargenode}}
] (A) {%
&&&&&|[draw=blue, fill=blue!10!white]| \
&&&&&|[draw=blue, fill=blue!30!white]|\
&&&&&|[draw=blue, fill=blue!50!white]|\
&&&&&|[draw=blue,dotted]| \
&&&&&|[draw=blue, fill=blue!70!white]|\
&&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
};
begin{scope}[on background layer]
foreach ind in {1,2,3,5}
{
draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
node[anchor=north east] at (A-ind-ind.north east) {R};
}
end{scope}
draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
node[font=Huge,shift={(1,3)}] at (A) {$0$};
matrix[
right =of A.north east,
anchor=north west,
nodes={mysmallnode}
] (B) {%
underline{a}_1 \
underline{a}_2 \
underline{a}_3 \
\
underline{a}_M\
underline{b}\
};
foreach ind in {1,2,...,5}{
draw (B-ind-1.south west) -- (B-ind-1.south east);
}
draw[dotted] (B-4-1.north) -- (B-4-1.south);
matrix[
right =4em of B.north east,
anchor=north west,
nodes={draw,mysmallnode}
] (C) {%
|[fill=yellow!10!white]|\
|[fill=yellow!30!white]|\
|[fill=yellow!50!white]|\
\
|[fill=yellow!70!white]|\
|[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
};
path (B-4-1) -- node[midway] {$=$} (C-4-1);
draw[dotted] (C-4-1.north) -- (C-4-1.south);
% delimiters:
foreach mymatr in {A,B,C}
{
draw[very thick] ([xshift=4pt]mymatr.north west) -- (mymatr.north west) -- (mymatr.south west) -- ([xshift=4pt]mymatr.south west);
draw[very thick] ([xshift=-4pt]mymatr.north east) -- (mymatr.north east) -- (mymatr.south east) -- ([xshift=-4pt]mymatr.south east);
}
end{tikzpicture}
]
Or with ordinary delimiter:
[
begin{tikzpicture}[
every matrix/.append style={
left delimiter={[},
right delimiter={]},
}
]
matrix[
nodes={mylargenode},
column 6/.style={nodes={mysmallnode}},
row 6/.style={nodes={mylonglargenode}}
] (A) {%
&&&&&|[draw=blue, fill=blue!10!white]| \
&&&&&|[draw=blue, fill=blue!30!white]|\
&&&&&|[draw=blue, fill=blue!50!white]|\
&&&&&|[draw=blue,dotted]| \
&&&&&|[draw=blue, fill=blue!70!white]|\
&&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
};
begin{scope}[on background layer]
foreach ind in {1,2,3,5}
{
draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
node[anchor=north east] at (A-ind-ind.north east) {R};
}
end{scope}
draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
node[font=Huge,shift={(1,3)}] at (A) {$0$};
matrix[
right =of A.north east,
anchor=north west,
nodes={mysmallnode}
] (B) {%
underline{a}_1 \
underline{a}_2 \
underline{a}_3 \
\
underline{a}_M\
underline{b}\
};
foreach ind in {1,2,...,5}{
draw (B-ind-1.south west) -- (B-ind-1.south east);
}
draw[dotted] (B-4-1.north) -- (B-4-1.south);
matrix[
right =4em of B.north east,
anchor=north west,
nodes={draw,mysmallnode}
] (C) {%
|[fill=yellow!10!white]|\
|[fill=yellow!30!white]|\
|[fill=yellow!50!white]|\
\
|[fill=yellow!70!white]|\
|[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
};
path (B-4-1) -- node[midway] {$=$} (C-4-1);
draw[dotted] (C-4-1.north) -- (C-4-1.south);
end{tikzpicture}
]
end{document}
How nice is yours, too. I'll vote for it now.
– Sebastiano
2 days ago
1
@Sebastiano Thank you!
– CarLaTeX
2 days ago
I used this one in my dissertation and I am very happy with the result.
– Tarini Ramsewak
yesterday
Thank you so much!
– Tarini Ramsewak
yesterday
@TariniRamsewak You're welcome! I'm happy my answer is useful.
– CarLaTeX
yesterday
add a comment |
It is indeed a bit tedious. (EDIT: Fixed the first R
to become math mode, mille grazie to @Sebastiano!)
documentclass[tikz,border=3.14mm]{standalone}
usetikzlibrary{positioning,backgrounds,patterns}
begin{document}
begin{tikzpicture}
begin{scope}[local bounding box=mat1]
path node (R0) {$R$} foreach X [remember=X as lastX (initially 0)] in
{1,...,4}
{ifnumX=3
node[below right=1.5em of RlastX] (RX) {$phantom{R}$}
else
node[below right=1.5em of RlastX] (RX) {$R$}
fi
};
begin{scope}[on background layer]
draw[fill=green!70!black]
foreach X in {0,1,2,4} {
([xshift=-1em]RX.north west) -- ([yshift=-1em]RX.south east)
coordinate(bX)
|- cycle};
draw[densely dotted] ([xshift=-1em]R3.north west) -- ([yshift=-1em]R3.south east)
coordinate(b3) |- cycle;
end{scope}
node[pattern=crosshatch,pattern color=purple,anchor=north west,
minimum height=6em] (F) at ([yshift=-1em]R4.south east) {$F$};
draw[densely dotted] ([yshift=-1em]R3.south east-|R4.south east)
rectangle (F.east|-R3.north);
foreach X [evaluate=X as Y using {int(40+10*X)}] in {0,1,2,4}
{draw[fill=purple!Y] ([yshift=-1em]RX.south east-|R4.south east)
rectangle (F.east|-RX.north);}
end{scope}
path (mat1.south west) -- (mat1.north east)
node[pos=0.3,font=Large] {$0$} node[pos=0.7,font=Large] {$0$};
draw[thick] ([xshift=0.7em]mat1.north west) -| (mat1.south west) -- ++ (0.7em,0)
([xshift=-0.7em]mat1.north east) -| (mat1.south east) -- ++ (-0.7em,0);
%
begin{scope}[local bounding box=mat2]
foreach X [remember=X as lastX (initially 0)] in {1,2,3}
{path ([xshift=1em]mat1.east|-RlastX.north) --
([xshift=2.5em]mat1.east|-blastX) node[midway] (aX) {$a_{X}$};}
path ([xshift=1em]mat1.east|-R4.north) --
([xshift=2.5em]mat1.east|-b4) node[midway] (aM) {$a_{M}$};
node[below=0.5em of aM] (b) {$b$};
end{scope}
draw[thick] ([xshift=0.5em]mat2.north west) -| (mat2.south west) -- ++
(0.5em,0)
([xshift=-0.5em]mat2.north east) -| (mat2.south east) -- ++ (-0.5em,0);
foreach X in {0,...,4}
{draw (mat2.west|-bX) -- (mat2.east|-bX);}
%
node[anchor=west] (eq) at (mat2.east|-mat1.center) {$=$};
%
begin{scope}[local bounding box=mat3]
node[pattern=dots,anchor=north west,pattern color=yellow!60!orange,
minimum height=6em] (f) at ([xshift=0.1em]eq.east|-F.north) {$f$};
foreach X [remember=X as lastX (initially 0),
evaluate=X as Y using {int(30*X+10)}] in {1,2,3}
{fill[yellow!Y] ([xshift=0.1em]eq.east|-RlastX.north) rectangle
(f.east|-blastX); }
fill[yellow] ([xshift=0.1em]eq.east|-R4.north) rectangle
(f.east|-b4);
draw[densely dotted] (f.center|-b2) -- (f.center|-b3);
end{scope}
foreach X in {0,...,4}
{draw (mat3.west|-bX) -- (mat3.east|-bX);}
draw[thick] ([xshift=0.3em]mat3.north west) -| (mat3.south west) -- ++
(0.3em,0)
([xshift=-0.3em]mat3.north east) -| (mat3.south east) -- ++ (-0.3em,0);
end{tikzpicture}
end{document}
1
Spectacular! There is the first R on the top left that is not in math-mode. :-)
– Sebastiano
2 days ago
@Sebastiano Mille grazie!
– marmot
2 days ago
1
@JouleV Thanks! The second code shouldn't be there so I removed it. (I have one file for answers and accidentally copied the code for another answer, too.)
– marmot
2 days ago
I hope I've been of some help to you. This is what I so much regret about my mistakes, which are the result of naivety and which, by emphasizing my mistakes, the haters find fertile ground in my regard. Peraphs is better "grazie mille". Why? See this link youtube.com/watch?v=KvS_BVda9ww. :-)
– Sebastiano
2 days ago
Thank you very much, this has been useful. I learnt quite a few things.
– Tarini Ramsewak
yesterday
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
});
}
});
Tarini Ramsewak is a new contributor. Be nice, and check out our Code of Conduct.
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%2f479895%2fmatrix-using-tikz-package%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
With TikZ matrix
:
documentclass{article}
usepackage{amsmath}
usepackage{tikz}
usetikzlibrary{matrix, positioning, patterns, backgrounds}
tikzset{
every matrix/.append style={
matrix of math nodes,
nodes in empty cells,
inner sep=0pt,
outer sep=0pt,
column sep=-pgflinewidth,
row sep=-pgflinewidth,
},
mylargenode/.style={
text centered,
text width=30pt,
text height=20pt,
text depth=10pt,
},
mylongnode/.style={
text centered,
text width=20pt,
text height=40pt,
text depth=30pt,
},
mysmallnode/.style={
text centered,
text width=20pt,
text height=20pt,
text depth=10pt,
},
mylonglargenode/.style={
text centered,
text width=30pt,
text height=40pt,
text depth=30pt,
},
}
begin{document}
With delimiters like in your image:
[
begin{tikzpicture}
matrix[
nodes={mylargenode},
column 6/.style={nodes={mysmallnode}},
row 6/.style={nodes={mylonglargenode}}
] (A) {%
&&&&&|[draw=blue, fill=blue!10!white]| \
&&&&&|[draw=blue, fill=blue!30!white]|\
&&&&&|[draw=blue, fill=blue!50!white]|\
&&&&&|[draw=blue,dotted]| \
&&&&&|[draw=blue, fill=blue!70!white]|\
&&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
};
begin{scope}[on background layer]
foreach ind in {1,2,3,5}
{
draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
node[anchor=north east] at (A-ind-ind.north east) {R};
}
end{scope}
draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
node[font=Huge,shift={(1,3)}] at (A) {$0$};
matrix[
right =of A.north east,
anchor=north west,
nodes={mysmallnode}
] (B) {%
underline{a}_1 \
underline{a}_2 \
underline{a}_3 \
\
underline{a}_M\
underline{b}\
};
foreach ind in {1,2,...,5}{
draw (B-ind-1.south west) -- (B-ind-1.south east);
}
draw[dotted] (B-4-1.north) -- (B-4-1.south);
matrix[
right =4em of B.north east,
anchor=north west,
nodes={draw,mysmallnode}
] (C) {%
|[fill=yellow!10!white]|\
|[fill=yellow!30!white]|\
|[fill=yellow!50!white]|\
\
|[fill=yellow!70!white]|\
|[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
};
path (B-4-1) -- node[midway] {$=$} (C-4-1);
draw[dotted] (C-4-1.north) -- (C-4-1.south);
% delimiters:
foreach mymatr in {A,B,C}
{
draw[very thick] ([xshift=4pt]mymatr.north west) -- (mymatr.north west) -- (mymatr.south west) -- ([xshift=4pt]mymatr.south west);
draw[very thick] ([xshift=-4pt]mymatr.north east) -- (mymatr.north east) -- (mymatr.south east) -- ([xshift=-4pt]mymatr.south east);
}
end{tikzpicture}
]
Or with ordinary delimiter:
[
begin{tikzpicture}[
every matrix/.append style={
left delimiter={[},
right delimiter={]},
}
]
matrix[
nodes={mylargenode},
column 6/.style={nodes={mysmallnode}},
row 6/.style={nodes={mylonglargenode}}
] (A) {%
&&&&&|[draw=blue, fill=blue!10!white]| \
&&&&&|[draw=blue, fill=blue!30!white]|\
&&&&&|[draw=blue, fill=blue!50!white]|\
&&&&&|[draw=blue,dotted]| \
&&&&&|[draw=blue, fill=blue!70!white]|\
&&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
};
begin{scope}[on background layer]
foreach ind in {1,2,3,5}
{
draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
node[anchor=north east] at (A-ind-ind.north east) {R};
}
end{scope}
draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
node[font=Huge,shift={(1,3)}] at (A) {$0$};
matrix[
right =of A.north east,
anchor=north west,
nodes={mysmallnode}
] (B) {%
underline{a}_1 \
underline{a}_2 \
underline{a}_3 \
\
underline{a}_M\
underline{b}\
};
foreach ind in {1,2,...,5}{
draw (B-ind-1.south west) -- (B-ind-1.south east);
}
draw[dotted] (B-4-1.north) -- (B-4-1.south);
matrix[
right =4em of B.north east,
anchor=north west,
nodes={draw,mysmallnode}
] (C) {%
|[fill=yellow!10!white]|\
|[fill=yellow!30!white]|\
|[fill=yellow!50!white]|\
\
|[fill=yellow!70!white]|\
|[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
};
path (B-4-1) -- node[midway] {$=$} (C-4-1);
draw[dotted] (C-4-1.north) -- (C-4-1.south);
end{tikzpicture}
]
end{document}
How nice is yours, too. I'll vote for it now.
– Sebastiano
2 days ago
1
@Sebastiano Thank you!
– CarLaTeX
2 days ago
I used this one in my dissertation and I am very happy with the result.
– Tarini Ramsewak
yesterday
Thank you so much!
– Tarini Ramsewak
yesterday
@TariniRamsewak You're welcome! I'm happy my answer is useful.
– CarLaTeX
yesterday
add a comment |
With TikZ matrix
:
documentclass{article}
usepackage{amsmath}
usepackage{tikz}
usetikzlibrary{matrix, positioning, patterns, backgrounds}
tikzset{
every matrix/.append style={
matrix of math nodes,
nodes in empty cells,
inner sep=0pt,
outer sep=0pt,
column sep=-pgflinewidth,
row sep=-pgflinewidth,
},
mylargenode/.style={
text centered,
text width=30pt,
text height=20pt,
text depth=10pt,
},
mylongnode/.style={
text centered,
text width=20pt,
text height=40pt,
text depth=30pt,
},
mysmallnode/.style={
text centered,
text width=20pt,
text height=20pt,
text depth=10pt,
},
mylonglargenode/.style={
text centered,
text width=30pt,
text height=40pt,
text depth=30pt,
},
}
begin{document}
With delimiters like in your image:
[
begin{tikzpicture}
matrix[
nodes={mylargenode},
column 6/.style={nodes={mysmallnode}},
row 6/.style={nodes={mylonglargenode}}
] (A) {%
&&&&&|[draw=blue, fill=blue!10!white]| \
&&&&&|[draw=blue, fill=blue!30!white]|\
&&&&&|[draw=blue, fill=blue!50!white]|\
&&&&&|[draw=blue,dotted]| \
&&&&&|[draw=blue, fill=blue!70!white]|\
&&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
};
begin{scope}[on background layer]
foreach ind in {1,2,3,5}
{
draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
node[anchor=north east] at (A-ind-ind.north east) {R};
}
end{scope}
draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
node[font=Huge,shift={(1,3)}] at (A) {$0$};
matrix[
right =of A.north east,
anchor=north west,
nodes={mysmallnode}
] (B) {%
underline{a}_1 \
underline{a}_2 \
underline{a}_3 \
\
underline{a}_M\
underline{b}\
};
foreach ind in {1,2,...,5}{
draw (B-ind-1.south west) -- (B-ind-1.south east);
}
draw[dotted] (B-4-1.north) -- (B-4-1.south);
matrix[
right =4em of B.north east,
anchor=north west,
nodes={draw,mysmallnode}
] (C) {%
|[fill=yellow!10!white]|\
|[fill=yellow!30!white]|\
|[fill=yellow!50!white]|\
\
|[fill=yellow!70!white]|\
|[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
};
path (B-4-1) -- node[midway] {$=$} (C-4-1);
draw[dotted] (C-4-1.north) -- (C-4-1.south);
% delimiters:
foreach mymatr in {A,B,C}
{
draw[very thick] ([xshift=4pt]mymatr.north west) -- (mymatr.north west) -- (mymatr.south west) -- ([xshift=4pt]mymatr.south west);
draw[very thick] ([xshift=-4pt]mymatr.north east) -- (mymatr.north east) -- (mymatr.south east) -- ([xshift=-4pt]mymatr.south east);
}
end{tikzpicture}
]
Or with ordinary delimiter:
[
begin{tikzpicture}[
every matrix/.append style={
left delimiter={[},
right delimiter={]},
}
]
matrix[
nodes={mylargenode},
column 6/.style={nodes={mysmallnode}},
row 6/.style={nodes={mylonglargenode}}
] (A) {%
&&&&&|[draw=blue, fill=blue!10!white]| \
&&&&&|[draw=blue, fill=blue!30!white]|\
&&&&&|[draw=blue, fill=blue!50!white]|\
&&&&&|[draw=blue,dotted]| \
&&&&&|[draw=blue, fill=blue!70!white]|\
&&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
};
begin{scope}[on background layer]
foreach ind in {1,2,3,5}
{
draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
node[anchor=north east] at (A-ind-ind.north east) {R};
}
end{scope}
draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
node[font=Huge,shift={(1,3)}] at (A) {$0$};
matrix[
right =of A.north east,
anchor=north west,
nodes={mysmallnode}
] (B) {%
underline{a}_1 \
underline{a}_2 \
underline{a}_3 \
\
underline{a}_M\
underline{b}\
};
foreach ind in {1,2,...,5}{
draw (B-ind-1.south west) -- (B-ind-1.south east);
}
draw[dotted] (B-4-1.north) -- (B-4-1.south);
matrix[
right =4em of B.north east,
anchor=north west,
nodes={draw,mysmallnode}
] (C) {%
|[fill=yellow!10!white]|\
|[fill=yellow!30!white]|\
|[fill=yellow!50!white]|\
\
|[fill=yellow!70!white]|\
|[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
};
path (B-4-1) -- node[midway] {$=$} (C-4-1);
draw[dotted] (C-4-1.north) -- (C-4-1.south);
end{tikzpicture}
]
end{document}
How nice is yours, too. I'll vote for it now.
– Sebastiano
2 days ago
1
@Sebastiano Thank you!
– CarLaTeX
2 days ago
I used this one in my dissertation and I am very happy with the result.
– Tarini Ramsewak
yesterday
Thank you so much!
– Tarini Ramsewak
yesterday
@TariniRamsewak You're welcome! I'm happy my answer is useful.
– CarLaTeX
yesterday
add a comment |
With TikZ matrix
:
documentclass{article}
usepackage{amsmath}
usepackage{tikz}
usetikzlibrary{matrix, positioning, patterns, backgrounds}
tikzset{
every matrix/.append style={
matrix of math nodes,
nodes in empty cells,
inner sep=0pt,
outer sep=0pt,
column sep=-pgflinewidth,
row sep=-pgflinewidth,
},
mylargenode/.style={
text centered,
text width=30pt,
text height=20pt,
text depth=10pt,
},
mylongnode/.style={
text centered,
text width=20pt,
text height=40pt,
text depth=30pt,
},
mysmallnode/.style={
text centered,
text width=20pt,
text height=20pt,
text depth=10pt,
},
mylonglargenode/.style={
text centered,
text width=30pt,
text height=40pt,
text depth=30pt,
},
}
begin{document}
With delimiters like in your image:
[
begin{tikzpicture}
matrix[
nodes={mylargenode},
column 6/.style={nodes={mysmallnode}},
row 6/.style={nodes={mylonglargenode}}
] (A) {%
&&&&&|[draw=blue, fill=blue!10!white]| \
&&&&&|[draw=blue, fill=blue!30!white]|\
&&&&&|[draw=blue, fill=blue!50!white]|\
&&&&&|[draw=blue,dotted]| \
&&&&&|[draw=blue, fill=blue!70!white]|\
&&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
};
begin{scope}[on background layer]
foreach ind in {1,2,3,5}
{
draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
node[anchor=north east] at (A-ind-ind.north east) {R};
}
end{scope}
draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
node[font=Huge,shift={(1,3)}] at (A) {$0$};
matrix[
right =of A.north east,
anchor=north west,
nodes={mysmallnode}
] (B) {%
underline{a}_1 \
underline{a}_2 \
underline{a}_3 \
\
underline{a}_M\
underline{b}\
};
foreach ind in {1,2,...,5}{
draw (B-ind-1.south west) -- (B-ind-1.south east);
}
draw[dotted] (B-4-1.north) -- (B-4-1.south);
matrix[
right =4em of B.north east,
anchor=north west,
nodes={draw,mysmallnode}
] (C) {%
|[fill=yellow!10!white]|\
|[fill=yellow!30!white]|\
|[fill=yellow!50!white]|\
\
|[fill=yellow!70!white]|\
|[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
};
path (B-4-1) -- node[midway] {$=$} (C-4-1);
draw[dotted] (C-4-1.north) -- (C-4-1.south);
% delimiters:
foreach mymatr in {A,B,C}
{
draw[very thick] ([xshift=4pt]mymatr.north west) -- (mymatr.north west) -- (mymatr.south west) -- ([xshift=4pt]mymatr.south west);
draw[very thick] ([xshift=-4pt]mymatr.north east) -- (mymatr.north east) -- (mymatr.south east) -- ([xshift=-4pt]mymatr.south east);
}
end{tikzpicture}
]
Or with ordinary delimiter:
[
begin{tikzpicture}[
every matrix/.append style={
left delimiter={[},
right delimiter={]},
}
]
matrix[
nodes={mylargenode},
column 6/.style={nodes={mysmallnode}},
row 6/.style={nodes={mylonglargenode}}
] (A) {%
&&&&&|[draw=blue, fill=blue!10!white]| \
&&&&&|[draw=blue, fill=blue!30!white]|\
&&&&&|[draw=blue, fill=blue!50!white]|\
&&&&&|[draw=blue,dotted]| \
&&&&&|[draw=blue, fill=blue!70!white]|\
&&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
};
begin{scope}[on background layer]
foreach ind in {1,2,3,5}
{
draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
node[anchor=north east] at (A-ind-ind.north east) {R};
}
end{scope}
draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
node[font=Huge,shift={(1,3)}] at (A) {$0$};
matrix[
right =of A.north east,
anchor=north west,
nodes={mysmallnode}
] (B) {%
underline{a}_1 \
underline{a}_2 \
underline{a}_3 \
\
underline{a}_M\
underline{b}\
};
foreach ind in {1,2,...,5}{
draw (B-ind-1.south west) -- (B-ind-1.south east);
}
draw[dotted] (B-4-1.north) -- (B-4-1.south);
matrix[
right =4em of B.north east,
anchor=north west,
nodes={draw,mysmallnode}
] (C) {%
|[fill=yellow!10!white]|\
|[fill=yellow!30!white]|\
|[fill=yellow!50!white]|\
\
|[fill=yellow!70!white]|\
|[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
};
path (B-4-1) -- node[midway] {$=$} (C-4-1);
draw[dotted] (C-4-1.north) -- (C-4-1.south);
end{tikzpicture}
]
end{document}
With TikZ matrix
:
documentclass{article}
usepackage{amsmath}
usepackage{tikz}
usetikzlibrary{matrix, positioning, patterns, backgrounds}
tikzset{
every matrix/.append style={
matrix of math nodes,
nodes in empty cells,
inner sep=0pt,
outer sep=0pt,
column sep=-pgflinewidth,
row sep=-pgflinewidth,
},
mylargenode/.style={
text centered,
text width=30pt,
text height=20pt,
text depth=10pt,
},
mylongnode/.style={
text centered,
text width=20pt,
text height=40pt,
text depth=30pt,
},
mysmallnode/.style={
text centered,
text width=20pt,
text height=20pt,
text depth=10pt,
},
mylonglargenode/.style={
text centered,
text width=30pt,
text height=40pt,
text depth=30pt,
},
}
begin{document}
With delimiters like in your image:
[
begin{tikzpicture}
matrix[
nodes={mylargenode},
column 6/.style={nodes={mysmallnode}},
row 6/.style={nodes={mylonglargenode}}
] (A) {%
&&&&&|[draw=blue, fill=blue!10!white]| \
&&&&&|[draw=blue, fill=blue!30!white]|\
&&&&&|[draw=blue, fill=blue!50!white]|\
&&&&&|[draw=blue,dotted]| \
&&&&&|[draw=blue, fill=blue!70!white]|\
&&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
};
begin{scope}[on background layer]
foreach ind in {1,2,3,5}
{
draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
node[anchor=north east] at (A-ind-ind.north east) {R};
}
end{scope}
draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
node[font=Huge,shift={(1,3)}] at (A) {$0$};
matrix[
right =of A.north east,
anchor=north west,
nodes={mysmallnode}
] (B) {%
underline{a}_1 \
underline{a}_2 \
underline{a}_3 \
\
underline{a}_M\
underline{b}\
};
foreach ind in {1,2,...,5}{
draw (B-ind-1.south west) -- (B-ind-1.south east);
}
draw[dotted] (B-4-1.north) -- (B-4-1.south);
matrix[
right =4em of B.north east,
anchor=north west,
nodes={draw,mysmallnode}
] (C) {%
|[fill=yellow!10!white]|\
|[fill=yellow!30!white]|\
|[fill=yellow!50!white]|\
\
|[fill=yellow!70!white]|\
|[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
};
path (B-4-1) -- node[midway] {$=$} (C-4-1);
draw[dotted] (C-4-1.north) -- (C-4-1.south);
% delimiters:
foreach mymatr in {A,B,C}
{
draw[very thick] ([xshift=4pt]mymatr.north west) -- (mymatr.north west) -- (mymatr.south west) -- ([xshift=4pt]mymatr.south west);
draw[very thick] ([xshift=-4pt]mymatr.north east) -- (mymatr.north east) -- (mymatr.south east) -- ([xshift=-4pt]mymatr.south east);
}
end{tikzpicture}
]
Or with ordinary delimiter:
[
begin{tikzpicture}[
every matrix/.append style={
left delimiter={[},
right delimiter={]},
}
]
matrix[
nodes={mylargenode},
column 6/.style={nodes={mysmallnode}},
row 6/.style={nodes={mylonglargenode}}
] (A) {%
&&&&&|[draw=blue, fill=blue!10!white]| \
&&&&&|[draw=blue, fill=blue!30!white]|\
&&&&&|[draw=blue, fill=blue!50!white]|\
&&&&&|[draw=blue,dotted]| \
&&&&&|[draw=blue, fill=blue!70!white]|\
&&&&& |[mylongnode,pattern=crosshatch,pattern color=blue!40!white, draw=blue]|Dot{F}\
};
begin{scope}[on background layer]
foreach ind in {1,2,3,5}
{
draw[green!70!black,fill=green!40!lightgray] (A-ind-ind.north west) -- (A-ind-ind.north east) -- (A-ind-ind.south east) -- cycle;
node[anchor=north east] at (A-ind-ind.north east) {R};
}
end{scope}
draw[dotted, green!70!black] (A-4-4.north west) -- (A-4-4.north east) -- (A-4-4.south east) -- cycle;
node[font=Huge,shift={(-1,-2)}] at (A) {$0$};
node[font=Huge,shift={(1,3)}] at (A) {$0$};
matrix[
right =of A.north east,
anchor=north west,
nodes={mysmallnode}
] (B) {%
underline{a}_1 \
underline{a}_2 \
underline{a}_3 \
\
underline{a}_M\
underline{b}\
};
foreach ind in {1,2,...,5}{
draw (B-ind-1.south west) -- (B-ind-1.south east);
}
draw[dotted] (B-4-1.north) -- (B-4-1.south);
matrix[
right =4em of B.north east,
anchor=north west,
nodes={draw,mysmallnode}
] (C) {%
|[fill=yellow!10!white]|\
|[fill=yellow!30!white]|\
|[fill=yellow!50!white]|\
\
|[fill=yellow!70!white]|\
|[mylongnode, pattern=horizontal lines, pattern color=yellow!90!white]|underline{Dot{f}}\
};
path (B-4-1) -- node[midway] {$=$} (C-4-1);
draw[dotted] (C-4-1.north) -- (C-4-1.south);
end{tikzpicture}
]
end{document}
answered 2 days ago
CarLaTeXCarLaTeX
33.7k551138
33.7k551138
How nice is yours, too. I'll vote for it now.
– Sebastiano
2 days ago
1
@Sebastiano Thank you!
– CarLaTeX
2 days ago
I used this one in my dissertation and I am very happy with the result.
– Tarini Ramsewak
yesterday
Thank you so much!
– Tarini Ramsewak
yesterday
@TariniRamsewak You're welcome! I'm happy my answer is useful.
– CarLaTeX
yesterday
add a comment |
How nice is yours, too. I'll vote for it now.
– Sebastiano
2 days ago
1
@Sebastiano Thank you!
– CarLaTeX
2 days ago
I used this one in my dissertation and I am very happy with the result.
– Tarini Ramsewak
yesterday
Thank you so much!
– Tarini Ramsewak
yesterday
@TariniRamsewak You're welcome! I'm happy my answer is useful.
– CarLaTeX
yesterday
How nice is yours, too. I'll vote for it now.
– Sebastiano
2 days ago
How nice is yours, too. I'll vote for it now.
– Sebastiano
2 days ago
1
1
@Sebastiano Thank you!
– CarLaTeX
2 days ago
@Sebastiano Thank you!
– CarLaTeX
2 days ago
I used this one in my dissertation and I am very happy with the result.
– Tarini Ramsewak
yesterday
I used this one in my dissertation and I am very happy with the result.
– Tarini Ramsewak
yesterday
Thank you so much!
– Tarini Ramsewak
yesterday
Thank you so much!
– Tarini Ramsewak
yesterday
@TariniRamsewak You're welcome! I'm happy my answer is useful.
– CarLaTeX
yesterday
@TariniRamsewak You're welcome! I'm happy my answer is useful.
– CarLaTeX
yesterday
add a comment |
It is indeed a bit tedious. (EDIT: Fixed the first R
to become math mode, mille grazie to @Sebastiano!)
documentclass[tikz,border=3.14mm]{standalone}
usetikzlibrary{positioning,backgrounds,patterns}
begin{document}
begin{tikzpicture}
begin{scope}[local bounding box=mat1]
path node (R0) {$R$} foreach X [remember=X as lastX (initially 0)] in
{1,...,4}
{ifnumX=3
node[below right=1.5em of RlastX] (RX) {$phantom{R}$}
else
node[below right=1.5em of RlastX] (RX) {$R$}
fi
};
begin{scope}[on background layer]
draw[fill=green!70!black]
foreach X in {0,1,2,4} {
([xshift=-1em]RX.north west) -- ([yshift=-1em]RX.south east)
coordinate(bX)
|- cycle};
draw[densely dotted] ([xshift=-1em]R3.north west) -- ([yshift=-1em]R3.south east)
coordinate(b3) |- cycle;
end{scope}
node[pattern=crosshatch,pattern color=purple,anchor=north west,
minimum height=6em] (F) at ([yshift=-1em]R4.south east) {$F$};
draw[densely dotted] ([yshift=-1em]R3.south east-|R4.south east)
rectangle (F.east|-R3.north);
foreach X [evaluate=X as Y using {int(40+10*X)}] in {0,1,2,4}
{draw[fill=purple!Y] ([yshift=-1em]RX.south east-|R4.south east)
rectangle (F.east|-RX.north);}
end{scope}
path (mat1.south west) -- (mat1.north east)
node[pos=0.3,font=Large] {$0$} node[pos=0.7,font=Large] {$0$};
draw[thick] ([xshift=0.7em]mat1.north west) -| (mat1.south west) -- ++ (0.7em,0)
([xshift=-0.7em]mat1.north east) -| (mat1.south east) -- ++ (-0.7em,0);
%
begin{scope}[local bounding box=mat2]
foreach X [remember=X as lastX (initially 0)] in {1,2,3}
{path ([xshift=1em]mat1.east|-RlastX.north) --
([xshift=2.5em]mat1.east|-blastX) node[midway] (aX) {$a_{X}$};}
path ([xshift=1em]mat1.east|-R4.north) --
([xshift=2.5em]mat1.east|-b4) node[midway] (aM) {$a_{M}$};
node[below=0.5em of aM] (b) {$b$};
end{scope}
draw[thick] ([xshift=0.5em]mat2.north west) -| (mat2.south west) -- ++
(0.5em,0)
([xshift=-0.5em]mat2.north east) -| (mat2.south east) -- ++ (-0.5em,0);
foreach X in {0,...,4}
{draw (mat2.west|-bX) -- (mat2.east|-bX);}
%
node[anchor=west] (eq) at (mat2.east|-mat1.center) {$=$};
%
begin{scope}[local bounding box=mat3]
node[pattern=dots,anchor=north west,pattern color=yellow!60!orange,
minimum height=6em] (f) at ([xshift=0.1em]eq.east|-F.north) {$f$};
foreach X [remember=X as lastX (initially 0),
evaluate=X as Y using {int(30*X+10)}] in {1,2,3}
{fill[yellow!Y] ([xshift=0.1em]eq.east|-RlastX.north) rectangle
(f.east|-blastX); }
fill[yellow] ([xshift=0.1em]eq.east|-R4.north) rectangle
(f.east|-b4);
draw[densely dotted] (f.center|-b2) -- (f.center|-b3);
end{scope}
foreach X in {0,...,4}
{draw (mat3.west|-bX) -- (mat3.east|-bX);}
draw[thick] ([xshift=0.3em]mat3.north west) -| (mat3.south west) -- ++
(0.3em,0)
([xshift=-0.3em]mat3.north east) -| (mat3.south east) -- ++ (-0.3em,0);
end{tikzpicture}
end{document}
1
Spectacular! There is the first R on the top left that is not in math-mode. :-)
– Sebastiano
2 days ago
@Sebastiano Mille grazie!
– marmot
2 days ago
1
@JouleV Thanks! The second code shouldn't be there so I removed it. (I have one file for answers and accidentally copied the code for another answer, too.)
– marmot
2 days ago
I hope I've been of some help to you. This is what I so much regret about my mistakes, which are the result of naivety and which, by emphasizing my mistakes, the haters find fertile ground in my regard. Peraphs is better "grazie mille". Why? See this link youtube.com/watch?v=KvS_BVda9ww. :-)
– Sebastiano
2 days ago
Thank you very much, this has been useful. I learnt quite a few things.
– Tarini Ramsewak
yesterday
add a comment |
It is indeed a bit tedious. (EDIT: Fixed the first R
to become math mode, mille grazie to @Sebastiano!)
documentclass[tikz,border=3.14mm]{standalone}
usetikzlibrary{positioning,backgrounds,patterns}
begin{document}
begin{tikzpicture}
begin{scope}[local bounding box=mat1]
path node (R0) {$R$} foreach X [remember=X as lastX (initially 0)] in
{1,...,4}
{ifnumX=3
node[below right=1.5em of RlastX] (RX) {$phantom{R}$}
else
node[below right=1.5em of RlastX] (RX) {$R$}
fi
};
begin{scope}[on background layer]
draw[fill=green!70!black]
foreach X in {0,1,2,4} {
([xshift=-1em]RX.north west) -- ([yshift=-1em]RX.south east)
coordinate(bX)
|- cycle};
draw[densely dotted] ([xshift=-1em]R3.north west) -- ([yshift=-1em]R3.south east)
coordinate(b3) |- cycle;
end{scope}
node[pattern=crosshatch,pattern color=purple,anchor=north west,
minimum height=6em] (F) at ([yshift=-1em]R4.south east) {$F$};
draw[densely dotted] ([yshift=-1em]R3.south east-|R4.south east)
rectangle (F.east|-R3.north);
foreach X [evaluate=X as Y using {int(40+10*X)}] in {0,1,2,4}
{draw[fill=purple!Y] ([yshift=-1em]RX.south east-|R4.south east)
rectangle (F.east|-RX.north);}
end{scope}
path (mat1.south west) -- (mat1.north east)
node[pos=0.3,font=Large] {$0$} node[pos=0.7,font=Large] {$0$};
draw[thick] ([xshift=0.7em]mat1.north west) -| (mat1.south west) -- ++ (0.7em,0)
([xshift=-0.7em]mat1.north east) -| (mat1.south east) -- ++ (-0.7em,0);
%
begin{scope}[local bounding box=mat2]
foreach X [remember=X as lastX (initially 0)] in {1,2,3}
{path ([xshift=1em]mat1.east|-RlastX.north) --
([xshift=2.5em]mat1.east|-blastX) node[midway] (aX) {$a_{X}$};}
path ([xshift=1em]mat1.east|-R4.north) --
([xshift=2.5em]mat1.east|-b4) node[midway] (aM) {$a_{M}$};
node[below=0.5em of aM] (b) {$b$};
end{scope}
draw[thick] ([xshift=0.5em]mat2.north west) -| (mat2.south west) -- ++
(0.5em,0)
([xshift=-0.5em]mat2.north east) -| (mat2.south east) -- ++ (-0.5em,0);
foreach X in {0,...,4}
{draw (mat2.west|-bX) -- (mat2.east|-bX);}
%
node[anchor=west] (eq) at (mat2.east|-mat1.center) {$=$};
%
begin{scope}[local bounding box=mat3]
node[pattern=dots,anchor=north west,pattern color=yellow!60!orange,
minimum height=6em] (f) at ([xshift=0.1em]eq.east|-F.north) {$f$};
foreach X [remember=X as lastX (initially 0),
evaluate=X as Y using {int(30*X+10)}] in {1,2,3}
{fill[yellow!Y] ([xshift=0.1em]eq.east|-RlastX.north) rectangle
(f.east|-blastX); }
fill[yellow] ([xshift=0.1em]eq.east|-R4.north) rectangle
(f.east|-b4);
draw[densely dotted] (f.center|-b2) -- (f.center|-b3);
end{scope}
foreach X in {0,...,4}
{draw (mat3.west|-bX) -- (mat3.east|-bX);}
draw[thick] ([xshift=0.3em]mat3.north west) -| (mat3.south west) -- ++
(0.3em,0)
([xshift=-0.3em]mat3.north east) -| (mat3.south east) -- ++ (-0.3em,0);
end{tikzpicture}
end{document}
1
Spectacular! There is the first R on the top left that is not in math-mode. :-)
– Sebastiano
2 days ago
@Sebastiano Mille grazie!
– marmot
2 days ago
1
@JouleV Thanks! The second code shouldn't be there so I removed it. (I have one file for answers and accidentally copied the code for another answer, too.)
– marmot
2 days ago
I hope I've been of some help to you. This is what I so much regret about my mistakes, which are the result of naivety and which, by emphasizing my mistakes, the haters find fertile ground in my regard. Peraphs is better "grazie mille". Why? See this link youtube.com/watch?v=KvS_BVda9ww. :-)
– Sebastiano
2 days ago
Thank you very much, this has been useful. I learnt quite a few things.
– Tarini Ramsewak
yesterday
add a comment |
It is indeed a bit tedious. (EDIT: Fixed the first R
to become math mode, mille grazie to @Sebastiano!)
documentclass[tikz,border=3.14mm]{standalone}
usetikzlibrary{positioning,backgrounds,patterns}
begin{document}
begin{tikzpicture}
begin{scope}[local bounding box=mat1]
path node (R0) {$R$} foreach X [remember=X as lastX (initially 0)] in
{1,...,4}
{ifnumX=3
node[below right=1.5em of RlastX] (RX) {$phantom{R}$}
else
node[below right=1.5em of RlastX] (RX) {$R$}
fi
};
begin{scope}[on background layer]
draw[fill=green!70!black]
foreach X in {0,1,2,4} {
([xshift=-1em]RX.north west) -- ([yshift=-1em]RX.south east)
coordinate(bX)
|- cycle};
draw[densely dotted] ([xshift=-1em]R3.north west) -- ([yshift=-1em]R3.south east)
coordinate(b3) |- cycle;
end{scope}
node[pattern=crosshatch,pattern color=purple,anchor=north west,
minimum height=6em] (F) at ([yshift=-1em]R4.south east) {$F$};
draw[densely dotted] ([yshift=-1em]R3.south east-|R4.south east)
rectangle (F.east|-R3.north);
foreach X [evaluate=X as Y using {int(40+10*X)}] in {0,1,2,4}
{draw[fill=purple!Y] ([yshift=-1em]RX.south east-|R4.south east)
rectangle (F.east|-RX.north);}
end{scope}
path (mat1.south west) -- (mat1.north east)
node[pos=0.3,font=Large] {$0$} node[pos=0.7,font=Large] {$0$};
draw[thick] ([xshift=0.7em]mat1.north west) -| (mat1.south west) -- ++ (0.7em,0)
([xshift=-0.7em]mat1.north east) -| (mat1.south east) -- ++ (-0.7em,0);
%
begin{scope}[local bounding box=mat2]
foreach X [remember=X as lastX (initially 0)] in {1,2,3}
{path ([xshift=1em]mat1.east|-RlastX.north) --
([xshift=2.5em]mat1.east|-blastX) node[midway] (aX) {$a_{X}$};}
path ([xshift=1em]mat1.east|-R4.north) --
([xshift=2.5em]mat1.east|-b4) node[midway] (aM) {$a_{M}$};
node[below=0.5em of aM] (b) {$b$};
end{scope}
draw[thick] ([xshift=0.5em]mat2.north west) -| (mat2.south west) -- ++
(0.5em,0)
([xshift=-0.5em]mat2.north east) -| (mat2.south east) -- ++ (-0.5em,0);
foreach X in {0,...,4}
{draw (mat2.west|-bX) -- (mat2.east|-bX);}
%
node[anchor=west] (eq) at (mat2.east|-mat1.center) {$=$};
%
begin{scope}[local bounding box=mat3]
node[pattern=dots,anchor=north west,pattern color=yellow!60!orange,
minimum height=6em] (f) at ([xshift=0.1em]eq.east|-F.north) {$f$};
foreach X [remember=X as lastX (initially 0),
evaluate=X as Y using {int(30*X+10)}] in {1,2,3}
{fill[yellow!Y] ([xshift=0.1em]eq.east|-RlastX.north) rectangle
(f.east|-blastX); }
fill[yellow] ([xshift=0.1em]eq.east|-R4.north) rectangle
(f.east|-b4);
draw[densely dotted] (f.center|-b2) -- (f.center|-b3);
end{scope}
foreach X in {0,...,4}
{draw (mat3.west|-bX) -- (mat3.east|-bX);}
draw[thick] ([xshift=0.3em]mat3.north west) -| (mat3.south west) -- ++
(0.3em,0)
([xshift=-0.3em]mat3.north east) -| (mat3.south east) -- ++ (-0.3em,0);
end{tikzpicture}
end{document}
It is indeed a bit tedious. (EDIT: Fixed the first R
to become math mode, mille grazie to @Sebastiano!)
documentclass[tikz,border=3.14mm]{standalone}
usetikzlibrary{positioning,backgrounds,patterns}
begin{document}
begin{tikzpicture}
begin{scope}[local bounding box=mat1]
path node (R0) {$R$} foreach X [remember=X as lastX (initially 0)] in
{1,...,4}
{ifnumX=3
node[below right=1.5em of RlastX] (RX) {$phantom{R}$}
else
node[below right=1.5em of RlastX] (RX) {$R$}
fi
};
begin{scope}[on background layer]
draw[fill=green!70!black]
foreach X in {0,1,2,4} {
([xshift=-1em]RX.north west) -- ([yshift=-1em]RX.south east)
coordinate(bX)
|- cycle};
draw[densely dotted] ([xshift=-1em]R3.north west) -- ([yshift=-1em]R3.south east)
coordinate(b3) |- cycle;
end{scope}
node[pattern=crosshatch,pattern color=purple,anchor=north west,
minimum height=6em] (F) at ([yshift=-1em]R4.south east) {$F$};
draw[densely dotted] ([yshift=-1em]R3.south east-|R4.south east)
rectangle (F.east|-R3.north);
foreach X [evaluate=X as Y using {int(40+10*X)}] in {0,1,2,4}
{draw[fill=purple!Y] ([yshift=-1em]RX.south east-|R4.south east)
rectangle (F.east|-RX.north);}
end{scope}
path (mat1.south west) -- (mat1.north east)
node[pos=0.3,font=Large] {$0$} node[pos=0.7,font=Large] {$0$};
draw[thick] ([xshift=0.7em]mat1.north west) -| (mat1.south west) -- ++ (0.7em,0)
([xshift=-0.7em]mat1.north east) -| (mat1.south east) -- ++ (-0.7em,0);
%
begin{scope}[local bounding box=mat2]
foreach X [remember=X as lastX (initially 0)] in {1,2,3}
{path ([xshift=1em]mat1.east|-RlastX.north) --
([xshift=2.5em]mat1.east|-blastX) node[midway] (aX) {$a_{X}$};}
path ([xshift=1em]mat1.east|-R4.north) --
([xshift=2.5em]mat1.east|-b4) node[midway] (aM) {$a_{M}$};
node[below=0.5em of aM] (b) {$b$};
end{scope}
draw[thick] ([xshift=0.5em]mat2.north west) -| (mat2.south west) -- ++
(0.5em,0)
([xshift=-0.5em]mat2.north east) -| (mat2.south east) -- ++ (-0.5em,0);
foreach X in {0,...,4}
{draw (mat2.west|-bX) -- (mat2.east|-bX);}
%
node[anchor=west] (eq) at (mat2.east|-mat1.center) {$=$};
%
begin{scope}[local bounding box=mat3]
node[pattern=dots,anchor=north west,pattern color=yellow!60!orange,
minimum height=6em] (f) at ([xshift=0.1em]eq.east|-F.north) {$f$};
foreach X [remember=X as lastX (initially 0),
evaluate=X as Y using {int(30*X+10)}] in {1,2,3}
{fill[yellow!Y] ([xshift=0.1em]eq.east|-RlastX.north) rectangle
(f.east|-blastX); }
fill[yellow] ([xshift=0.1em]eq.east|-R4.north) rectangle
(f.east|-b4);
draw[densely dotted] (f.center|-b2) -- (f.center|-b3);
end{scope}
foreach X in {0,...,4}
{draw (mat3.west|-bX) -- (mat3.east|-bX);}
draw[thick] ([xshift=0.3em]mat3.north west) -| (mat3.south west) -- ++
(0.3em,0)
([xshift=-0.3em]mat3.north east) -| (mat3.south east) -- ++ (-0.3em,0);
end{tikzpicture}
end{document}
edited 2 days ago
answered 2 days ago
marmotmarmot
110k5136255
110k5136255
1
Spectacular! There is the first R on the top left that is not in math-mode. :-)
– Sebastiano
2 days ago
@Sebastiano Mille grazie!
– marmot
2 days ago
1
@JouleV Thanks! The second code shouldn't be there so I removed it. (I have one file for answers and accidentally copied the code for another answer, too.)
– marmot
2 days ago
I hope I've been of some help to you. This is what I so much regret about my mistakes, which are the result of naivety and which, by emphasizing my mistakes, the haters find fertile ground in my regard. Peraphs is better "grazie mille". Why? See this link youtube.com/watch?v=KvS_BVda9ww. :-)
– Sebastiano
2 days ago
Thank you very much, this has been useful. I learnt quite a few things.
– Tarini Ramsewak
yesterday
add a comment |
1
Spectacular! There is the first R on the top left that is not in math-mode. :-)
– Sebastiano
2 days ago
@Sebastiano Mille grazie!
– marmot
2 days ago
1
@JouleV Thanks! The second code shouldn't be there so I removed it. (I have one file for answers and accidentally copied the code for another answer, too.)
– marmot
2 days ago
I hope I've been of some help to you. This is what I so much regret about my mistakes, which are the result of naivety and which, by emphasizing my mistakes, the haters find fertile ground in my regard. Peraphs is better "grazie mille". Why? See this link youtube.com/watch?v=KvS_BVda9ww. :-)
– Sebastiano
2 days ago
Thank you very much, this has been useful. I learnt quite a few things.
– Tarini Ramsewak
yesterday
1
1
Spectacular! There is the first R on the top left that is not in math-mode. :-)
– Sebastiano
2 days ago
Spectacular! There is the first R on the top left that is not in math-mode. :-)
– Sebastiano
2 days ago
@Sebastiano Mille grazie!
– marmot
2 days ago
@Sebastiano Mille grazie!
– marmot
2 days ago
1
1
@JouleV Thanks! The second code shouldn't be there so I removed it. (I have one file for answers and accidentally copied the code for another answer, too.)
– marmot
2 days ago
@JouleV Thanks! The second code shouldn't be there so I removed it. (I have one file for answers and accidentally copied the code for another answer, too.)
– marmot
2 days ago
I hope I've been of some help to you. This is what I so much regret about my mistakes, which are the result of naivety and which, by emphasizing my mistakes, the haters find fertile ground in my regard. Peraphs is better "grazie mille". Why? See this link youtube.com/watch?v=KvS_BVda9ww. :-)
– Sebastiano
2 days ago
I hope I've been of some help to you. This is what I so much regret about my mistakes, which are the result of naivety and which, by emphasizing my mistakes, the haters find fertile ground in my regard. Peraphs is better "grazie mille". Why? See this link youtube.com/watch?v=KvS_BVda9ww. :-)
– Sebastiano
2 days ago
Thank you very much, this has been useful. I learnt quite a few things.
– Tarini Ramsewak
yesterday
Thank you very much, this has been useful. I learnt quite a few things.
– Tarini Ramsewak
yesterday
add a comment |
Tarini Ramsewak is a new contributor. Be nice, and check out our Code of Conduct.
Tarini Ramsewak is a new contributor. Be nice, and check out our Code of Conduct.
Tarini Ramsewak is a new contributor. Be nice, and check out our Code of Conduct.
Tarini Ramsewak is a new contributor. Be nice, and check out our Code of Conduct.
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%2f479895%2fmatrix-using-tikz-package%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