Matrix with uneven element lengths












2















From the answer to this question



When editing the elements of the matrix to become uneven in length, the display of the matrix becomes disturbed. How can this be solved



documentclass{beamer}
beamertemplatenavigationsymbolsempty
usepackage{verbatim}
usepackage{tikz}
usepackage{pgfplots}
usetikzlibrary{arrows, arrows.meta, positioning, calc, intersections, decorations.pathreplacing, decorations.pathmorphing, decorations.markings, shapes, shapes.misc, shapes.symbols, shapes.geometric, patterns, backgrounds, trees, shadows, fit,matrix}
begin{document}
begin{frame}[t,fragile]
frametitle{matrix}
begin{tikzpicture}
matrix (x) [matrix of nodes, row sep=10pt, column sep=10pt] {%
15.1 & 23.7 & 19.7 & 15.4 & 18.3 & 23.0\
17.4 & 18.6 & 12.9 & 20.3 & 13.7 & 21.4\
10.3 & 26.1 & 15.718.918.9 & 14.0 & 17.8 & 33.8\
23.2 & 12.9 & 29.8 & 18.3 & 14.2 & 20.8\
13.5 & 17.1 & 20.7 & 27.1 & 18.918.9 & 16.6\};
draw<2->[ultra thick, blue, latex'-] (x-2-1) node [fill, red!40!white, circle, inner sep=8pt, opacity=.4]{} -- (x-4-5) node [fill, blue!40!white, circle, inner sep=8pt, opacity=.4]{};
% Node names: (<name of matrix>-<row>-<column>)
foreach i in {1,...,6}
draw ($(x-1-i.north west)+(-5pt,5pt)$) -- ($(x-5-i.south west)+(-5pt,-5pt)$);%vertical lines
foreach i in {1,...,5}
draw ($(x-i-1.south west)+(-5pt,-5pt)$) -- ($(x-i-6.south east)+(5pt,-5pt)$);%horizontal lines
draw ($(x-1-1.north west)+(-5pt,5pt)$) -| ($(x-5-6.south east)+(5pt,-5pt)$);%upper and right borders
end{tikzpicture}
end{frame}
end{document}


enter image description here



enter image description here










share|improve this question























  • marmot's code [tex.stackexchange.com/a/484608/31034] runs well for me.

    – ferahfeza
    yesterday













  • @ferahfezaWhenthe matrix elements are lengthy, they are displayed beyond borders

    – Hany
    yesterday











  • @ferahfezaPlease refer to this image when applying marmot`s code i.stack.imgur.com/aC1bQ.jpg

    – Hany
    yesterday













  • @Hany The border is not a feature of the matrix. It is added manually. In this case, you have to find another way to draw the borders.

    – JouleV
    yesterday











  • One can certainly add lines by fitting the nodes on both sides and drawing lines in the middle between these fits, see tex.stackexchange.com/a/443198/121799.

    – marmot
    yesterday
















2















From the answer to this question



When editing the elements of the matrix to become uneven in length, the display of the matrix becomes disturbed. How can this be solved



documentclass{beamer}
beamertemplatenavigationsymbolsempty
usepackage{verbatim}
usepackage{tikz}
usepackage{pgfplots}
usetikzlibrary{arrows, arrows.meta, positioning, calc, intersections, decorations.pathreplacing, decorations.pathmorphing, decorations.markings, shapes, shapes.misc, shapes.symbols, shapes.geometric, patterns, backgrounds, trees, shadows, fit,matrix}
begin{document}
begin{frame}[t,fragile]
frametitle{matrix}
begin{tikzpicture}
matrix (x) [matrix of nodes, row sep=10pt, column sep=10pt] {%
15.1 & 23.7 & 19.7 & 15.4 & 18.3 & 23.0\
17.4 & 18.6 & 12.9 & 20.3 & 13.7 & 21.4\
10.3 & 26.1 & 15.718.918.9 & 14.0 & 17.8 & 33.8\
23.2 & 12.9 & 29.8 & 18.3 & 14.2 & 20.8\
13.5 & 17.1 & 20.7 & 27.1 & 18.918.9 & 16.6\};
draw<2->[ultra thick, blue, latex'-] (x-2-1) node [fill, red!40!white, circle, inner sep=8pt, opacity=.4]{} -- (x-4-5) node [fill, blue!40!white, circle, inner sep=8pt, opacity=.4]{};
% Node names: (<name of matrix>-<row>-<column>)
foreach i in {1,...,6}
draw ($(x-1-i.north west)+(-5pt,5pt)$) -- ($(x-5-i.south west)+(-5pt,-5pt)$);%vertical lines
foreach i in {1,...,5}
draw ($(x-i-1.south west)+(-5pt,-5pt)$) -- ($(x-i-6.south east)+(5pt,-5pt)$);%horizontal lines
draw ($(x-1-1.north west)+(-5pt,5pt)$) -| ($(x-5-6.south east)+(5pt,-5pt)$);%upper and right borders
end{tikzpicture}
end{frame}
end{document}


enter image description here



enter image description here










share|improve this question























  • marmot's code [tex.stackexchange.com/a/484608/31034] runs well for me.

    – ferahfeza
    yesterday













  • @ferahfezaWhenthe matrix elements are lengthy, they are displayed beyond borders

    – Hany
    yesterday











  • @ferahfezaPlease refer to this image when applying marmot`s code i.stack.imgur.com/aC1bQ.jpg

    – Hany
    yesterday













  • @Hany The border is not a feature of the matrix. It is added manually. In this case, you have to find another way to draw the borders.

    – JouleV
    yesterday











  • One can certainly add lines by fitting the nodes on both sides and drawing lines in the middle between these fits, see tex.stackexchange.com/a/443198/121799.

    – marmot
    yesterday














2












2








2


0






From the answer to this question



When editing the elements of the matrix to become uneven in length, the display of the matrix becomes disturbed. How can this be solved



documentclass{beamer}
beamertemplatenavigationsymbolsempty
usepackage{verbatim}
usepackage{tikz}
usepackage{pgfplots}
usetikzlibrary{arrows, arrows.meta, positioning, calc, intersections, decorations.pathreplacing, decorations.pathmorphing, decorations.markings, shapes, shapes.misc, shapes.symbols, shapes.geometric, patterns, backgrounds, trees, shadows, fit,matrix}
begin{document}
begin{frame}[t,fragile]
frametitle{matrix}
begin{tikzpicture}
matrix (x) [matrix of nodes, row sep=10pt, column sep=10pt] {%
15.1 & 23.7 & 19.7 & 15.4 & 18.3 & 23.0\
17.4 & 18.6 & 12.9 & 20.3 & 13.7 & 21.4\
10.3 & 26.1 & 15.718.918.9 & 14.0 & 17.8 & 33.8\
23.2 & 12.9 & 29.8 & 18.3 & 14.2 & 20.8\
13.5 & 17.1 & 20.7 & 27.1 & 18.918.9 & 16.6\};
draw<2->[ultra thick, blue, latex'-] (x-2-1) node [fill, red!40!white, circle, inner sep=8pt, opacity=.4]{} -- (x-4-5) node [fill, blue!40!white, circle, inner sep=8pt, opacity=.4]{};
% Node names: (<name of matrix>-<row>-<column>)
foreach i in {1,...,6}
draw ($(x-1-i.north west)+(-5pt,5pt)$) -- ($(x-5-i.south west)+(-5pt,-5pt)$);%vertical lines
foreach i in {1,...,5}
draw ($(x-i-1.south west)+(-5pt,-5pt)$) -- ($(x-i-6.south east)+(5pt,-5pt)$);%horizontal lines
draw ($(x-1-1.north west)+(-5pt,5pt)$) -| ($(x-5-6.south east)+(5pt,-5pt)$);%upper and right borders
end{tikzpicture}
end{frame}
end{document}


enter image description here



enter image description here










share|improve this question














From the answer to this question



When editing the elements of the matrix to become uneven in length, the display of the matrix becomes disturbed. How can this be solved



documentclass{beamer}
beamertemplatenavigationsymbolsempty
usepackage{verbatim}
usepackage{tikz}
usepackage{pgfplots}
usetikzlibrary{arrows, arrows.meta, positioning, calc, intersections, decorations.pathreplacing, decorations.pathmorphing, decorations.markings, shapes, shapes.misc, shapes.symbols, shapes.geometric, patterns, backgrounds, trees, shadows, fit,matrix}
begin{document}
begin{frame}[t,fragile]
frametitle{matrix}
begin{tikzpicture}
matrix (x) [matrix of nodes, row sep=10pt, column sep=10pt] {%
15.1 & 23.7 & 19.7 & 15.4 & 18.3 & 23.0\
17.4 & 18.6 & 12.9 & 20.3 & 13.7 & 21.4\
10.3 & 26.1 & 15.718.918.9 & 14.0 & 17.8 & 33.8\
23.2 & 12.9 & 29.8 & 18.3 & 14.2 & 20.8\
13.5 & 17.1 & 20.7 & 27.1 & 18.918.9 & 16.6\};
draw<2->[ultra thick, blue, latex'-] (x-2-1) node [fill, red!40!white, circle, inner sep=8pt, opacity=.4]{} -- (x-4-5) node [fill, blue!40!white, circle, inner sep=8pt, opacity=.4]{};
% Node names: (<name of matrix>-<row>-<column>)
foreach i in {1,...,6}
draw ($(x-1-i.north west)+(-5pt,5pt)$) -- ($(x-5-i.south west)+(-5pt,-5pt)$);%vertical lines
foreach i in {1,...,5}
draw ($(x-i-1.south west)+(-5pt,-5pt)$) -- ($(x-i-6.south east)+(5pt,-5pt)$);%horizontal lines
draw ($(x-1-1.north west)+(-5pt,5pt)$) -| ($(x-5-6.south east)+(5pt,-5pt)$);%upper and right borders
end{tikzpicture}
end{frame}
end{document}


enter image description here



enter image description here







tikz-pgf beamer tikz-matrix






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked yesterday









HanyHany

1,359417




1,359417













  • marmot's code [tex.stackexchange.com/a/484608/31034] runs well for me.

    – ferahfeza
    yesterday













  • @ferahfezaWhenthe matrix elements are lengthy, they are displayed beyond borders

    – Hany
    yesterday











  • @ferahfezaPlease refer to this image when applying marmot`s code i.stack.imgur.com/aC1bQ.jpg

    – Hany
    yesterday













  • @Hany The border is not a feature of the matrix. It is added manually. In this case, you have to find another way to draw the borders.

    – JouleV
    yesterday











  • One can certainly add lines by fitting the nodes on both sides and drawing lines in the middle between these fits, see tex.stackexchange.com/a/443198/121799.

    – marmot
    yesterday



















  • marmot's code [tex.stackexchange.com/a/484608/31034] runs well for me.

    – ferahfeza
    yesterday













  • @ferahfezaWhenthe matrix elements are lengthy, they are displayed beyond borders

    – Hany
    yesterday











  • @ferahfezaPlease refer to this image when applying marmot`s code i.stack.imgur.com/aC1bQ.jpg

    – Hany
    yesterday













  • @Hany The border is not a feature of the matrix. It is added manually. In this case, you have to find another way to draw the borders.

    – JouleV
    yesterday











  • One can certainly add lines by fitting the nodes on both sides and drawing lines in the middle between these fits, see tex.stackexchange.com/a/443198/121799.

    – marmot
    yesterday

















marmot's code [tex.stackexchange.com/a/484608/31034] runs well for me.

– ferahfeza
yesterday







marmot's code [tex.stackexchange.com/a/484608/31034] runs well for me.

– ferahfeza
yesterday















@ferahfezaWhenthe matrix elements are lengthy, they are displayed beyond borders

– Hany
yesterday





@ferahfezaWhenthe matrix elements are lengthy, they are displayed beyond borders

– Hany
yesterday













@ferahfezaPlease refer to this image when applying marmot`s code i.stack.imgur.com/aC1bQ.jpg

– Hany
yesterday







@ferahfezaPlease refer to this image when applying marmot`s code i.stack.imgur.com/aC1bQ.jpg

– Hany
yesterday















@Hany The border is not a feature of the matrix. It is added manually. In this case, you have to find another way to draw the borders.

– JouleV
yesterday





@Hany The border is not a feature of the matrix. It is added manually. In this case, you have to find another way to draw the borders.

– JouleV
yesterday













One can certainly add lines by fitting the nodes on both sides and drawing lines in the middle between these fits, see tex.stackexchange.com/a/443198/121799.

– marmot
yesterday





One can certainly add lines by fitting the nodes on both sides and drawing lines in the middle between these fits, see tex.stackexchange.com/a/443198/121799.

– marmot
yesterday










1 Answer
1






active

oldest

votes


















4














One can use the fit library to always draw the lines between the tallest/widest matrix entries. I added a style full matrix grid which can be used as



draw[matrix name=x,matrix cols=6,matrix rows=5,full matrix grid];


If you want to draw only a subset of vertical or horizontal lines, you can use the redefined vlines or hlines styles, which now also use fit.



documentclass{beamer}
beamertemplatenavigationsymbolsempty
usepackage{verbatim}
usepackage{tikz}
usetikzlibrary{arrows,calc,fit,matrix}
tikzset{matrix rows/.initial=5,matrix cols/.initial=6,matrix name/.initial=x,
vline/.style={/utils/exec=foreach XX in {1,...,pgfkeysvalueof{/tikz/matrix rows}}
{ifnumXX=1
xdefMatLstA{(pgfkeysvalueof{/tikz/matrix name}-XX-#1)}
xdefMatLstB{(pgfkeysvalueof{/tikz/matrix name}-XX-thenumexpr1+#1relax)}
else
xdefMatLstA{MatLstA (pgfkeysvalueof{/tikz/matrix name}-XX-#1)}
xdefMatLstB{MatLstB (pgfkeysvalueof{/tikz/matrix name}-XX-thenumexpr1+#1relax)}
fi},
insert path={node[fit=MatLstA,inner sep=0pt] (fitA) {}
node[fit=MatLstB,inner sep=0pt] (fitB) {}
($(fitA.east)!0.5!(fitB.west)$) coordinate (aux)
(pgfkeysvalueof{/tikz/matrix name}.north-|aux) -- (pgfkeysvalueof{/tikz/matrix name}.south-|aux)}},
hline/.style={/utils/exec=foreach XX in {1,...,pgfkeysvalueof{/tikz/matrix cols}}
{ifnumXX=1
xdefMatLstA{(pgfkeysvalueof{/tikz/matrix name}-#1-XX)}
xdefMatLstB{(pgfkeysvalueof{/tikz/matrix name}-thenumexpr1+#1relax-XX)}
else
xdefMatLstA{MatLstA (pgfkeysvalueof{/tikz/matrix name}-#1-XX)}
xdefMatLstB{MatLstB (pgfkeysvalueof{/tikz/matrix name}-thenumexpr1+#1relax-XX)}
fi},insert path={node[fit=MatLstA,inner sep=0pt] (fitA) {}
node[fit=MatLstB,inner sep=0pt] (fitB) {}
($(fitA.south)!0.5!(fitB.north)$) coordinate (aux)
(pgfkeysvalueof{/tikz/matrix name}.west|-aux) -- (pgfkeysvalueof{/tikz/matrix
name}.east|-aux)}},
full matrix grid/.style={vline/.list={1,...,thenumexprpgfkeysvalueof{/tikz/matrix
cols}-1},hline/.list={1,...,thenumexprpgfkeysvalueof{/tikz/matrix rows}-1},
insert path={(pgfkeysvalueof{/tikz/matrix name}.south west) rectangle
(pgfkeysvalueof{/tikz/matrix name}.north east)}}}
begin{document}
begin{frame}[t,fragile]
frametitle{matrix}
begin{tikzpicture}
matrix (x) [matrix of nodes, row sep=10pt, column sep=10pt] {%
15.1 & 23.7 & 19.7 & 15.4 & 18.3 & 23.0\
17.4 & 18.6 & 12.9 & 20.3 & 13.7 & 21.4\
10.3 & 26.1 & 15.718.918.9 & 14.0 & 17.8 & 33.8\
23.2 & 12.9 & 29.8 & 18.3 & 14.2 & 20.8\
13.5 & 17.1 & 20.7 & 27.1 & 18.918.9 & 16.6\};
draw<2->[ultra thick, blue, latex'-] (x-2-1) node [fill, red!40!white, circle, inner sep=8pt, opacity=.4]{} -- (x-4-5) node [fill, blue!40!white, circle, inner sep=8pt, opacity=.4]{};
% Node names: (<name of matrix>-<row>-<column>)
% draw[vline/.list={1,...,5},hline/.list={1,...,4}] (pgfkeysvalueof{/tikz/matrix name}.north west) rectangle
% (pgfkeysvalueof{/tikz/matrix name}.south east); %
draw[matrix name=x,matrix cols=6,matrix rows=5,full matrix grid]; %

end{tikzpicture}
end{frame}
end{document}


enter image description here



P.S. The outer lines can be drawn with draw, too.






share|improve this answer



















  • 1





    @marmotThank you very much for your time and effort. I appreciate your answer very much

    – Hany
    yesterday














Your Answer








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

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

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


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f484763%2fmatrix-with-uneven-element-lengths%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









4














One can use the fit library to always draw the lines between the tallest/widest matrix entries. I added a style full matrix grid which can be used as



draw[matrix name=x,matrix cols=6,matrix rows=5,full matrix grid];


If you want to draw only a subset of vertical or horizontal lines, you can use the redefined vlines or hlines styles, which now also use fit.



documentclass{beamer}
beamertemplatenavigationsymbolsempty
usepackage{verbatim}
usepackage{tikz}
usetikzlibrary{arrows,calc,fit,matrix}
tikzset{matrix rows/.initial=5,matrix cols/.initial=6,matrix name/.initial=x,
vline/.style={/utils/exec=foreach XX in {1,...,pgfkeysvalueof{/tikz/matrix rows}}
{ifnumXX=1
xdefMatLstA{(pgfkeysvalueof{/tikz/matrix name}-XX-#1)}
xdefMatLstB{(pgfkeysvalueof{/tikz/matrix name}-XX-thenumexpr1+#1relax)}
else
xdefMatLstA{MatLstA (pgfkeysvalueof{/tikz/matrix name}-XX-#1)}
xdefMatLstB{MatLstB (pgfkeysvalueof{/tikz/matrix name}-XX-thenumexpr1+#1relax)}
fi},
insert path={node[fit=MatLstA,inner sep=0pt] (fitA) {}
node[fit=MatLstB,inner sep=0pt] (fitB) {}
($(fitA.east)!0.5!(fitB.west)$) coordinate (aux)
(pgfkeysvalueof{/tikz/matrix name}.north-|aux) -- (pgfkeysvalueof{/tikz/matrix name}.south-|aux)}},
hline/.style={/utils/exec=foreach XX in {1,...,pgfkeysvalueof{/tikz/matrix cols}}
{ifnumXX=1
xdefMatLstA{(pgfkeysvalueof{/tikz/matrix name}-#1-XX)}
xdefMatLstB{(pgfkeysvalueof{/tikz/matrix name}-thenumexpr1+#1relax-XX)}
else
xdefMatLstA{MatLstA (pgfkeysvalueof{/tikz/matrix name}-#1-XX)}
xdefMatLstB{MatLstB (pgfkeysvalueof{/tikz/matrix name}-thenumexpr1+#1relax-XX)}
fi},insert path={node[fit=MatLstA,inner sep=0pt] (fitA) {}
node[fit=MatLstB,inner sep=0pt] (fitB) {}
($(fitA.south)!0.5!(fitB.north)$) coordinate (aux)
(pgfkeysvalueof{/tikz/matrix name}.west|-aux) -- (pgfkeysvalueof{/tikz/matrix
name}.east|-aux)}},
full matrix grid/.style={vline/.list={1,...,thenumexprpgfkeysvalueof{/tikz/matrix
cols}-1},hline/.list={1,...,thenumexprpgfkeysvalueof{/tikz/matrix rows}-1},
insert path={(pgfkeysvalueof{/tikz/matrix name}.south west) rectangle
(pgfkeysvalueof{/tikz/matrix name}.north east)}}}
begin{document}
begin{frame}[t,fragile]
frametitle{matrix}
begin{tikzpicture}
matrix (x) [matrix of nodes, row sep=10pt, column sep=10pt] {%
15.1 & 23.7 & 19.7 & 15.4 & 18.3 & 23.0\
17.4 & 18.6 & 12.9 & 20.3 & 13.7 & 21.4\
10.3 & 26.1 & 15.718.918.9 & 14.0 & 17.8 & 33.8\
23.2 & 12.9 & 29.8 & 18.3 & 14.2 & 20.8\
13.5 & 17.1 & 20.7 & 27.1 & 18.918.9 & 16.6\};
draw<2->[ultra thick, blue, latex'-] (x-2-1) node [fill, red!40!white, circle, inner sep=8pt, opacity=.4]{} -- (x-4-5) node [fill, blue!40!white, circle, inner sep=8pt, opacity=.4]{};
% Node names: (<name of matrix>-<row>-<column>)
% draw[vline/.list={1,...,5},hline/.list={1,...,4}] (pgfkeysvalueof{/tikz/matrix name}.north west) rectangle
% (pgfkeysvalueof{/tikz/matrix name}.south east); %
draw[matrix name=x,matrix cols=6,matrix rows=5,full matrix grid]; %

end{tikzpicture}
end{frame}
end{document}


enter image description here



P.S. The outer lines can be drawn with draw, too.






share|improve this answer



















  • 1





    @marmotThank you very much for your time and effort. I appreciate your answer very much

    – Hany
    yesterday


















4














One can use the fit library to always draw the lines between the tallest/widest matrix entries. I added a style full matrix grid which can be used as



draw[matrix name=x,matrix cols=6,matrix rows=5,full matrix grid];


If you want to draw only a subset of vertical or horizontal lines, you can use the redefined vlines or hlines styles, which now also use fit.



documentclass{beamer}
beamertemplatenavigationsymbolsempty
usepackage{verbatim}
usepackage{tikz}
usetikzlibrary{arrows,calc,fit,matrix}
tikzset{matrix rows/.initial=5,matrix cols/.initial=6,matrix name/.initial=x,
vline/.style={/utils/exec=foreach XX in {1,...,pgfkeysvalueof{/tikz/matrix rows}}
{ifnumXX=1
xdefMatLstA{(pgfkeysvalueof{/tikz/matrix name}-XX-#1)}
xdefMatLstB{(pgfkeysvalueof{/tikz/matrix name}-XX-thenumexpr1+#1relax)}
else
xdefMatLstA{MatLstA (pgfkeysvalueof{/tikz/matrix name}-XX-#1)}
xdefMatLstB{MatLstB (pgfkeysvalueof{/tikz/matrix name}-XX-thenumexpr1+#1relax)}
fi},
insert path={node[fit=MatLstA,inner sep=0pt] (fitA) {}
node[fit=MatLstB,inner sep=0pt] (fitB) {}
($(fitA.east)!0.5!(fitB.west)$) coordinate (aux)
(pgfkeysvalueof{/tikz/matrix name}.north-|aux) -- (pgfkeysvalueof{/tikz/matrix name}.south-|aux)}},
hline/.style={/utils/exec=foreach XX in {1,...,pgfkeysvalueof{/tikz/matrix cols}}
{ifnumXX=1
xdefMatLstA{(pgfkeysvalueof{/tikz/matrix name}-#1-XX)}
xdefMatLstB{(pgfkeysvalueof{/tikz/matrix name}-thenumexpr1+#1relax-XX)}
else
xdefMatLstA{MatLstA (pgfkeysvalueof{/tikz/matrix name}-#1-XX)}
xdefMatLstB{MatLstB (pgfkeysvalueof{/tikz/matrix name}-thenumexpr1+#1relax-XX)}
fi},insert path={node[fit=MatLstA,inner sep=0pt] (fitA) {}
node[fit=MatLstB,inner sep=0pt] (fitB) {}
($(fitA.south)!0.5!(fitB.north)$) coordinate (aux)
(pgfkeysvalueof{/tikz/matrix name}.west|-aux) -- (pgfkeysvalueof{/tikz/matrix
name}.east|-aux)}},
full matrix grid/.style={vline/.list={1,...,thenumexprpgfkeysvalueof{/tikz/matrix
cols}-1},hline/.list={1,...,thenumexprpgfkeysvalueof{/tikz/matrix rows}-1},
insert path={(pgfkeysvalueof{/tikz/matrix name}.south west) rectangle
(pgfkeysvalueof{/tikz/matrix name}.north east)}}}
begin{document}
begin{frame}[t,fragile]
frametitle{matrix}
begin{tikzpicture}
matrix (x) [matrix of nodes, row sep=10pt, column sep=10pt] {%
15.1 & 23.7 & 19.7 & 15.4 & 18.3 & 23.0\
17.4 & 18.6 & 12.9 & 20.3 & 13.7 & 21.4\
10.3 & 26.1 & 15.718.918.9 & 14.0 & 17.8 & 33.8\
23.2 & 12.9 & 29.8 & 18.3 & 14.2 & 20.8\
13.5 & 17.1 & 20.7 & 27.1 & 18.918.9 & 16.6\};
draw<2->[ultra thick, blue, latex'-] (x-2-1) node [fill, red!40!white, circle, inner sep=8pt, opacity=.4]{} -- (x-4-5) node [fill, blue!40!white, circle, inner sep=8pt, opacity=.4]{};
% Node names: (<name of matrix>-<row>-<column>)
% draw[vline/.list={1,...,5},hline/.list={1,...,4}] (pgfkeysvalueof{/tikz/matrix name}.north west) rectangle
% (pgfkeysvalueof{/tikz/matrix name}.south east); %
draw[matrix name=x,matrix cols=6,matrix rows=5,full matrix grid]; %

end{tikzpicture}
end{frame}
end{document}


enter image description here



P.S. The outer lines can be drawn with draw, too.






share|improve this answer



















  • 1





    @marmotThank you very much for your time and effort. I appreciate your answer very much

    – Hany
    yesterday
















4












4








4







One can use the fit library to always draw the lines between the tallest/widest matrix entries. I added a style full matrix grid which can be used as



draw[matrix name=x,matrix cols=6,matrix rows=5,full matrix grid];


If you want to draw only a subset of vertical or horizontal lines, you can use the redefined vlines or hlines styles, which now also use fit.



documentclass{beamer}
beamertemplatenavigationsymbolsempty
usepackage{verbatim}
usepackage{tikz}
usetikzlibrary{arrows,calc,fit,matrix}
tikzset{matrix rows/.initial=5,matrix cols/.initial=6,matrix name/.initial=x,
vline/.style={/utils/exec=foreach XX in {1,...,pgfkeysvalueof{/tikz/matrix rows}}
{ifnumXX=1
xdefMatLstA{(pgfkeysvalueof{/tikz/matrix name}-XX-#1)}
xdefMatLstB{(pgfkeysvalueof{/tikz/matrix name}-XX-thenumexpr1+#1relax)}
else
xdefMatLstA{MatLstA (pgfkeysvalueof{/tikz/matrix name}-XX-#1)}
xdefMatLstB{MatLstB (pgfkeysvalueof{/tikz/matrix name}-XX-thenumexpr1+#1relax)}
fi},
insert path={node[fit=MatLstA,inner sep=0pt] (fitA) {}
node[fit=MatLstB,inner sep=0pt] (fitB) {}
($(fitA.east)!0.5!(fitB.west)$) coordinate (aux)
(pgfkeysvalueof{/tikz/matrix name}.north-|aux) -- (pgfkeysvalueof{/tikz/matrix name}.south-|aux)}},
hline/.style={/utils/exec=foreach XX in {1,...,pgfkeysvalueof{/tikz/matrix cols}}
{ifnumXX=1
xdefMatLstA{(pgfkeysvalueof{/tikz/matrix name}-#1-XX)}
xdefMatLstB{(pgfkeysvalueof{/tikz/matrix name}-thenumexpr1+#1relax-XX)}
else
xdefMatLstA{MatLstA (pgfkeysvalueof{/tikz/matrix name}-#1-XX)}
xdefMatLstB{MatLstB (pgfkeysvalueof{/tikz/matrix name}-thenumexpr1+#1relax-XX)}
fi},insert path={node[fit=MatLstA,inner sep=0pt] (fitA) {}
node[fit=MatLstB,inner sep=0pt] (fitB) {}
($(fitA.south)!0.5!(fitB.north)$) coordinate (aux)
(pgfkeysvalueof{/tikz/matrix name}.west|-aux) -- (pgfkeysvalueof{/tikz/matrix
name}.east|-aux)}},
full matrix grid/.style={vline/.list={1,...,thenumexprpgfkeysvalueof{/tikz/matrix
cols}-1},hline/.list={1,...,thenumexprpgfkeysvalueof{/tikz/matrix rows}-1},
insert path={(pgfkeysvalueof{/tikz/matrix name}.south west) rectangle
(pgfkeysvalueof{/tikz/matrix name}.north east)}}}
begin{document}
begin{frame}[t,fragile]
frametitle{matrix}
begin{tikzpicture}
matrix (x) [matrix of nodes, row sep=10pt, column sep=10pt] {%
15.1 & 23.7 & 19.7 & 15.4 & 18.3 & 23.0\
17.4 & 18.6 & 12.9 & 20.3 & 13.7 & 21.4\
10.3 & 26.1 & 15.718.918.9 & 14.0 & 17.8 & 33.8\
23.2 & 12.9 & 29.8 & 18.3 & 14.2 & 20.8\
13.5 & 17.1 & 20.7 & 27.1 & 18.918.9 & 16.6\};
draw<2->[ultra thick, blue, latex'-] (x-2-1) node [fill, red!40!white, circle, inner sep=8pt, opacity=.4]{} -- (x-4-5) node [fill, blue!40!white, circle, inner sep=8pt, opacity=.4]{};
% Node names: (<name of matrix>-<row>-<column>)
% draw[vline/.list={1,...,5},hline/.list={1,...,4}] (pgfkeysvalueof{/tikz/matrix name}.north west) rectangle
% (pgfkeysvalueof{/tikz/matrix name}.south east); %
draw[matrix name=x,matrix cols=6,matrix rows=5,full matrix grid]; %

end{tikzpicture}
end{frame}
end{document}


enter image description here



P.S. The outer lines can be drawn with draw, too.






share|improve this answer













One can use the fit library to always draw the lines between the tallest/widest matrix entries. I added a style full matrix grid which can be used as



draw[matrix name=x,matrix cols=6,matrix rows=5,full matrix grid];


If you want to draw only a subset of vertical or horizontal lines, you can use the redefined vlines or hlines styles, which now also use fit.



documentclass{beamer}
beamertemplatenavigationsymbolsempty
usepackage{verbatim}
usepackage{tikz}
usetikzlibrary{arrows,calc,fit,matrix}
tikzset{matrix rows/.initial=5,matrix cols/.initial=6,matrix name/.initial=x,
vline/.style={/utils/exec=foreach XX in {1,...,pgfkeysvalueof{/tikz/matrix rows}}
{ifnumXX=1
xdefMatLstA{(pgfkeysvalueof{/tikz/matrix name}-XX-#1)}
xdefMatLstB{(pgfkeysvalueof{/tikz/matrix name}-XX-thenumexpr1+#1relax)}
else
xdefMatLstA{MatLstA (pgfkeysvalueof{/tikz/matrix name}-XX-#1)}
xdefMatLstB{MatLstB (pgfkeysvalueof{/tikz/matrix name}-XX-thenumexpr1+#1relax)}
fi},
insert path={node[fit=MatLstA,inner sep=0pt] (fitA) {}
node[fit=MatLstB,inner sep=0pt] (fitB) {}
($(fitA.east)!0.5!(fitB.west)$) coordinate (aux)
(pgfkeysvalueof{/tikz/matrix name}.north-|aux) -- (pgfkeysvalueof{/tikz/matrix name}.south-|aux)}},
hline/.style={/utils/exec=foreach XX in {1,...,pgfkeysvalueof{/tikz/matrix cols}}
{ifnumXX=1
xdefMatLstA{(pgfkeysvalueof{/tikz/matrix name}-#1-XX)}
xdefMatLstB{(pgfkeysvalueof{/tikz/matrix name}-thenumexpr1+#1relax-XX)}
else
xdefMatLstA{MatLstA (pgfkeysvalueof{/tikz/matrix name}-#1-XX)}
xdefMatLstB{MatLstB (pgfkeysvalueof{/tikz/matrix name}-thenumexpr1+#1relax-XX)}
fi},insert path={node[fit=MatLstA,inner sep=0pt] (fitA) {}
node[fit=MatLstB,inner sep=0pt] (fitB) {}
($(fitA.south)!0.5!(fitB.north)$) coordinate (aux)
(pgfkeysvalueof{/tikz/matrix name}.west|-aux) -- (pgfkeysvalueof{/tikz/matrix
name}.east|-aux)}},
full matrix grid/.style={vline/.list={1,...,thenumexprpgfkeysvalueof{/tikz/matrix
cols}-1},hline/.list={1,...,thenumexprpgfkeysvalueof{/tikz/matrix rows}-1},
insert path={(pgfkeysvalueof{/tikz/matrix name}.south west) rectangle
(pgfkeysvalueof{/tikz/matrix name}.north east)}}}
begin{document}
begin{frame}[t,fragile]
frametitle{matrix}
begin{tikzpicture}
matrix (x) [matrix of nodes, row sep=10pt, column sep=10pt] {%
15.1 & 23.7 & 19.7 & 15.4 & 18.3 & 23.0\
17.4 & 18.6 & 12.9 & 20.3 & 13.7 & 21.4\
10.3 & 26.1 & 15.718.918.9 & 14.0 & 17.8 & 33.8\
23.2 & 12.9 & 29.8 & 18.3 & 14.2 & 20.8\
13.5 & 17.1 & 20.7 & 27.1 & 18.918.9 & 16.6\};
draw<2->[ultra thick, blue, latex'-] (x-2-1) node [fill, red!40!white, circle, inner sep=8pt, opacity=.4]{} -- (x-4-5) node [fill, blue!40!white, circle, inner sep=8pt, opacity=.4]{};
% Node names: (<name of matrix>-<row>-<column>)
% draw[vline/.list={1,...,5},hline/.list={1,...,4}] (pgfkeysvalueof{/tikz/matrix name}.north west) rectangle
% (pgfkeysvalueof{/tikz/matrix name}.south east); %
draw[matrix name=x,matrix cols=6,matrix rows=5,full matrix grid]; %

end{tikzpicture}
end{frame}
end{document}


enter image description here



P.S. The outer lines can be drawn with draw, too.







share|improve this answer












share|improve this answer



share|improve this answer










answered yesterday









marmotmarmot

118k6151286




118k6151286








  • 1





    @marmotThank you very much for your time and effort. I appreciate your answer very much

    – Hany
    yesterday
















  • 1





    @marmotThank you very much for your time and effort. I appreciate your answer very much

    – Hany
    yesterday










1




1





@marmotThank you very much for your time and effort. I appreciate your answer very much

– Hany
yesterday







@marmotThank you very much for your time and effort. I appreciate your answer very much

– Hany
yesterday




















draft saved

draft discarded




















































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


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

But avoid



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

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


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




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f484763%2fmatrix-with-uneven-element-lengths%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

How did Captain America manage to do this?

迪纳利

南乌拉尔铁路局