Show sparse matrices like chessboardsParametrize shading in table through TikZDrawing heatmaps using TikZLaTeX Tables: Cell value color based on its sign / conditional cell colorsymmetric matricesTikZ marking several blocks in a matrixeasybmat matrices dotted linesMatrices off the pageHomogeneous Matrices (elements size)Matrices with cryptocode packageAlign matrices in TexmakerWriting matrices in latexSystem of matricesHow to show matrix numbering under the matrices?
Unconventional Opposites
Do adult Russians normally hand-write Cyrillic as cursive or as block letters?
Can a magnetic field of a large body be stronger than its gravity?
What's the correct term for a waitress in the Middle Ages?
Sucuri detects malware on wordpress but I can't find the malicious code
What is the best option to connect old computer to modern TV
Do I add my ability modifier to the damage of the bonus-action attack granted by the Crossbow Expert feat?
Metal bar on DMM PCB
Word for a small burst of laughter that can't be held back
Did thousands of women die every year due to illegal abortions before Roe v. Wade?
Is American Express widely accepted in France?
Can an old DSLR be upgraded to match modern smartphone image quality
Why does a helium balloon rise?
Access to all elements on the page
Is it OK to bring delicacies from hometown as tokens of gratitude for an out-of-town interview?
What's the most polite way to tell a manager "shut up and let me work"?
Opposite of "Squeaky wheel gets the grease"
GFCI Outlet in Bathroom, Lights not working
Hygienic footwear for prehensile feet?
Is having a hidden directory under /etc safe?
Will TSA allow me to carry a Continuous Positive Airway Pressure (CPAP) device?
Is there any Biblical Basis for 400 years of silence between Old and New Testament?
Is there a practical difference between different types of Berachos?
Can you please explain this joke: "I'm going bananas is what I tell my bananas before I leave the house"?
Show sparse matrices like chessboards
Parametrize shading in table through TikZDrawing heatmaps using TikZLaTeX Tables: Cell value color based on its sign / conditional cell colorsymmetric matricesTikZ marking several blocks in a matrixeasybmat matrices dotted linesMatrices off the pageHomogeneous Matrices (elements size)Matrices with cryptocode packageAlign matrices in TexmakerWriting matrices in latexSystem of matricesHow to show matrix numbering under the matrices?
I am trying to display sparse matrices like chessboards, where white places indicates 0 entries and black ones non-zero entries (in this case matrices are boolean so every non-zero entry is a one entry), but I can't find a proper way.
Because I am looking to show more than one matrix (more in detail, I have to show matrix A and its power), I will have to print more than one on the same page and specify their layout, like figures.
For example, given this matrix as input:
| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 0 |
I would expect such output:
matrices
add a comment |
I am trying to display sparse matrices like chessboards, where white places indicates 0 entries and black ones non-zero entries (in this case matrices are boolean so every non-zero entry is a one entry), but I can't find a proper way.
Because I am looking to show more than one matrix (more in detail, I have to show matrix A and its power), I will have to print more than one on the same page and specify their layout, like figures.
For example, given this matrix as input:
| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 0 |
I would expect such output:
matrices
Welcome to the site. You are expected to provide a small, complete (non)working example of code demonstrating what you have tried. An image of what you are hoping to achieve would help a great deal.
– Steven B. Segletes
10 hours ago
Perhaps this question might apply directly? tex.stackexchange.com/questions/44868/… and tex.stackexchange.com/questions/42444/… and tex.stackexchange.com/questions/174234/…
– Steven B. Segletes
9 hours ago
add a comment |
I am trying to display sparse matrices like chessboards, where white places indicates 0 entries and black ones non-zero entries (in this case matrices are boolean so every non-zero entry is a one entry), but I can't find a proper way.
Because I am looking to show more than one matrix (more in detail, I have to show matrix A and its power), I will have to print more than one on the same page and specify their layout, like figures.
For example, given this matrix as input:
| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 0 |
I would expect such output:
matrices
I am trying to display sparse matrices like chessboards, where white places indicates 0 entries and black ones non-zero entries (in this case matrices are boolean so every non-zero entry is a one entry), but I can't find a proper way.
Because I am looking to show more than one matrix (more in detail, I have to show matrix A and its power), I will have to print more than one on the same page and specify their layout, like figures.
For example, given this matrix as input:
| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 0 |
I would expect such output:
matrices
matrices
edited 9 hours ago
EagleOne
asked 10 hours ago
EagleOneEagleOne
456
456
Welcome to the site. You are expected to provide a small, complete (non)working example of code demonstrating what you have tried. An image of what you are hoping to achieve would help a great deal.
– Steven B. Segletes
10 hours ago
Perhaps this question might apply directly? tex.stackexchange.com/questions/44868/… and tex.stackexchange.com/questions/42444/… and tex.stackexchange.com/questions/174234/…
– Steven B. Segletes
9 hours ago
add a comment |
Welcome to the site. You are expected to provide a small, complete (non)working example of code demonstrating what you have tried. An image of what you are hoping to achieve would help a great deal.
– Steven B. Segletes
10 hours ago
Perhaps this question might apply directly? tex.stackexchange.com/questions/44868/… and tex.stackexchange.com/questions/42444/… and tex.stackexchange.com/questions/174234/…
– Steven B. Segletes
9 hours ago
Welcome to the site. You are expected to provide a small, complete (non)working example of code demonstrating what you have tried. An image of what you are hoping to achieve would help a great deal.
– Steven B. Segletes
10 hours ago
Welcome to the site. You are expected to provide a small, complete (non)working example of code demonstrating what you have tried. An image of what you are hoping to achieve would help a great deal.
– Steven B. Segletes
10 hours ago
Perhaps this question might apply directly? tex.stackexchange.com/questions/44868/… and tex.stackexchange.com/questions/42444/… and tex.stackexchange.com/questions/174234/…
– Steven B. Segletes
9 hours ago
Perhaps this question might apply directly? tex.stackexchange.com/questions/44868/… and tex.stackexchange.com/questions/42444/… and tex.stackexchange.com/questions/174234/…
– Steven B. Segletes
9 hours ago
add a comment |
2 Answers
2
active
oldest
votes
With TikZ this is rather straightforward.
documentclassarticle
usepackagetikz
usetikzlibrarymatrix
begindocument
begintikzpicture[0/.style=draw,ultra thin,1/.style=0,fill=black]
matrix[matrix of nodes,cells=minimum size=1.5em,anchor=center]
& ;
endtikzpicture
enddocument
If you have a simple pattern as this one, you could also do
documentclassarticle
usepackagetikz
usetikzlibrarymatrix
begindocument
begintikzpicture[my cell/.style=/utils/exec=%
pgfmathtruncatemacroitestmod(thepgfmatrixcurrentrow+thepgfmatrixcurrentcolumn,2)
ifnumitest=1
pgfkeysalso/tikz/fill=black
fi]
matrix[matrix of nodes,nodes in empty cells,
nodes=minimum size=1.5em,anchor=center,draw,ultra thin,my cell]
& & \
& & \
& & \
;
endtikzpicture
enddocument
add a comment |
With a fairly natural syntax:
documentclassarticle
usepackageamsmath
newlengthsparsesize
setlengthsparsesize12pt
newcommandsparsezero%
begingroup
setlengthfboxsep-0.2pt%
setlengthfboxrule0.2pt%
fboxhspacesparsesizerule0ptsparsesize%
endgroup
newcommandsparseonerulesparsesizesparsesize
newcommandactivate[2]%
begingrouplccode`~=`#1lowercaseendgrouplet~#2%
mathcode`#1="8000
newenvironmentsparsematrix
%
renewcommandarraystretch0%
setlengtharraycolsep0pt%
activate0sparsezeroactivate1sparseone%
beginmatrix%
endmatrix
begindocument
[
beginpmatrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endpmatrix
=
beginsparsematrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endsparsematrix
]
enddocument
For general matrices with integer coefficients it's a bit more difficult.
documentclassarticle
usepackageamsmath,xparse
newlengthsparsesize
setlengthsparsesize12pt
newcommandsparsezero%
begingroup
setlengthfboxsep-0.2pt%
setlengthfboxrule0.2pt%
fboxhspacesparsesizerule0ptsparsesize%
endgroup
newcommandsparseonerulesparsesizesparsesize
ExplSyntaxOn
NewDocumentEnvironmentsparsematrixb
renewcommandarraystretch0%
setlengtharraycolsep0pt%
% make a subformula
beginmatrix
eagleone_sparsematrix:n #1
endmatrix
seq_new:N l__eagleone_sparsematrix_rows_seq
seq_new:N l__eagleone_sparsematrix_row_in_seq
seq_new:N l__eagleone_sparsematrix_row_out_seq
cs_new_protected:Nn eagleone_sparsematrix:n
seq_set_split:Nnn l__eagleone_sparsematrix_rows_seq \ #1
seq_map_function:NN l__eagleone_sparsematrix_rows_seq __eagleone_sparsematrix_row:n
cs_new_protected:Nn __eagleone_sparsematrix_row:n
seq_set_split:Nnn l__eagleone_sparsematrix_row_in_seq & #1
seq_map_inline:Nn l__eagleone_sparsematrix_row_in_seq
int_compare:nTF ##1 = 0
seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparsezero
seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparseone
seq_use:Nn l__eagleone_sparsematrix_row_out_seq & \
ExplSyntaxOff
begindocument
[
beginpmatrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endpmatrix
=
beginsparsematrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endsparsematrix
]
[
beginsparsematrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endsparsematrix^2
=
beginsparsematrix
1 & 0 & 1 \
0 & 2 & 0 \
1 & 0 & 1
endsparsematrix
]
enddocument
1
For my humble opinion: excellent. +1.
– Sebastiano
7 hours ago
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%2f493392%2fshow-sparse-matrices-like-chessboards%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 this is rather straightforward.
documentclassarticle
usepackagetikz
usetikzlibrarymatrix
begindocument
begintikzpicture[0/.style=draw,ultra thin,1/.style=0,fill=black]
matrix[matrix of nodes,cells=minimum size=1.5em,anchor=center]
& ;
endtikzpicture
enddocument
If you have a simple pattern as this one, you could also do
documentclassarticle
usepackagetikz
usetikzlibrarymatrix
begindocument
begintikzpicture[my cell/.style=/utils/exec=%
pgfmathtruncatemacroitestmod(thepgfmatrixcurrentrow+thepgfmatrixcurrentcolumn,2)
ifnumitest=1
pgfkeysalso/tikz/fill=black
fi]
matrix[matrix of nodes,nodes in empty cells,
nodes=minimum size=1.5em,anchor=center,draw,ultra thin,my cell]
& & \
& & \
& & \
;
endtikzpicture
enddocument
add a comment |
With TikZ this is rather straightforward.
documentclassarticle
usepackagetikz
usetikzlibrarymatrix
begindocument
begintikzpicture[0/.style=draw,ultra thin,1/.style=0,fill=black]
matrix[matrix of nodes,cells=minimum size=1.5em,anchor=center]
& ;
endtikzpicture
enddocument
If you have a simple pattern as this one, you could also do
documentclassarticle
usepackagetikz
usetikzlibrarymatrix
begindocument
begintikzpicture[my cell/.style=/utils/exec=%
pgfmathtruncatemacroitestmod(thepgfmatrixcurrentrow+thepgfmatrixcurrentcolumn,2)
ifnumitest=1
pgfkeysalso/tikz/fill=black
fi]
matrix[matrix of nodes,nodes in empty cells,
nodes=minimum size=1.5em,anchor=center,draw,ultra thin,my cell]
& & \
& & \
& & \
;
endtikzpicture
enddocument
add a comment |
With TikZ this is rather straightforward.
documentclassarticle
usepackagetikz
usetikzlibrarymatrix
begindocument
begintikzpicture[0/.style=draw,ultra thin,1/.style=0,fill=black]
matrix[matrix of nodes,cells=minimum size=1.5em,anchor=center]
& ;
endtikzpicture
enddocument
If you have a simple pattern as this one, you could also do
documentclassarticle
usepackagetikz
usetikzlibrarymatrix
begindocument
begintikzpicture[my cell/.style=/utils/exec=%
pgfmathtruncatemacroitestmod(thepgfmatrixcurrentrow+thepgfmatrixcurrentcolumn,2)
ifnumitest=1
pgfkeysalso/tikz/fill=black
fi]
matrix[matrix of nodes,nodes in empty cells,
nodes=minimum size=1.5em,anchor=center,draw,ultra thin,my cell]
& & \
& & \
& & \
;
endtikzpicture
enddocument
With TikZ this is rather straightforward.
documentclassarticle
usepackagetikz
usetikzlibrarymatrix
begindocument
begintikzpicture[0/.style=draw,ultra thin,1/.style=0,fill=black]
matrix[matrix of nodes,cells=minimum size=1.5em,anchor=center]
& ;
endtikzpicture
enddocument
If you have a simple pattern as this one, you could also do
documentclassarticle
usepackagetikz
usetikzlibrarymatrix
begindocument
begintikzpicture[my cell/.style=/utils/exec=%
pgfmathtruncatemacroitestmod(thepgfmatrixcurrentrow+thepgfmatrixcurrentcolumn,2)
ifnumitest=1
pgfkeysalso/tikz/fill=black
fi]
matrix[matrix of nodes,nodes in empty cells,
nodes=minimum size=1.5em,anchor=center,draw,ultra thin,my cell]
& & \
& & \
& & \
;
endtikzpicture
enddocument
edited 8 hours ago
answered 8 hours ago
marmotmarmot
131k6166316
131k6166316
add a comment |
add a comment |
With a fairly natural syntax:
documentclassarticle
usepackageamsmath
newlengthsparsesize
setlengthsparsesize12pt
newcommandsparsezero%
begingroup
setlengthfboxsep-0.2pt%
setlengthfboxrule0.2pt%
fboxhspacesparsesizerule0ptsparsesize%
endgroup
newcommandsparseonerulesparsesizesparsesize
newcommandactivate[2]%
begingrouplccode`~=`#1lowercaseendgrouplet~#2%
mathcode`#1="8000
newenvironmentsparsematrix
%
renewcommandarraystretch0%
setlengtharraycolsep0pt%
activate0sparsezeroactivate1sparseone%
beginmatrix%
endmatrix
begindocument
[
beginpmatrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endpmatrix
=
beginsparsematrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endsparsematrix
]
enddocument
For general matrices with integer coefficients it's a bit more difficult.
documentclassarticle
usepackageamsmath,xparse
newlengthsparsesize
setlengthsparsesize12pt
newcommandsparsezero%
begingroup
setlengthfboxsep-0.2pt%
setlengthfboxrule0.2pt%
fboxhspacesparsesizerule0ptsparsesize%
endgroup
newcommandsparseonerulesparsesizesparsesize
ExplSyntaxOn
NewDocumentEnvironmentsparsematrixb
renewcommandarraystretch0%
setlengtharraycolsep0pt%
% make a subformula
beginmatrix
eagleone_sparsematrix:n #1
endmatrix
seq_new:N l__eagleone_sparsematrix_rows_seq
seq_new:N l__eagleone_sparsematrix_row_in_seq
seq_new:N l__eagleone_sparsematrix_row_out_seq
cs_new_protected:Nn eagleone_sparsematrix:n
seq_set_split:Nnn l__eagleone_sparsematrix_rows_seq \ #1
seq_map_function:NN l__eagleone_sparsematrix_rows_seq __eagleone_sparsematrix_row:n
cs_new_protected:Nn __eagleone_sparsematrix_row:n
seq_set_split:Nnn l__eagleone_sparsematrix_row_in_seq & #1
seq_map_inline:Nn l__eagleone_sparsematrix_row_in_seq
int_compare:nTF ##1 = 0
seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparsezero
seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparseone
seq_use:Nn l__eagleone_sparsematrix_row_out_seq & \
ExplSyntaxOff
begindocument
[
beginpmatrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endpmatrix
=
beginsparsematrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endsparsematrix
]
[
beginsparsematrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endsparsematrix^2
=
beginsparsematrix
1 & 0 & 1 \
0 & 2 & 0 \
1 & 0 & 1
endsparsematrix
]
enddocument
1
For my humble opinion: excellent. +1.
– Sebastiano
7 hours ago
add a comment |
With a fairly natural syntax:
documentclassarticle
usepackageamsmath
newlengthsparsesize
setlengthsparsesize12pt
newcommandsparsezero%
begingroup
setlengthfboxsep-0.2pt%
setlengthfboxrule0.2pt%
fboxhspacesparsesizerule0ptsparsesize%
endgroup
newcommandsparseonerulesparsesizesparsesize
newcommandactivate[2]%
begingrouplccode`~=`#1lowercaseendgrouplet~#2%
mathcode`#1="8000
newenvironmentsparsematrix
%
renewcommandarraystretch0%
setlengtharraycolsep0pt%
activate0sparsezeroactivate1sparseone%
beginmatrix%
endmatrix
begindocument
[
beginpmatrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endpmatrix
=
beginsparsematrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endsparsematrix
]
enddocument
For general matrices with integer coefficients it's a bit more difficult.
documentclassarticle
usepackageamsmath,xparse
newlengthsparsesize
setlengthsparsesize12pt
newcommandsparsezero%
begingroup
setlengthfboxsep-0.2pt%
setlengthfboxrule0.2pt%
fboxhspacesparsesizerule0ptsparsesize%
endgroup
newcommandsparseonerulesparsesizesparsesize
ExplSyntaxOn
NewDocumentEnvironmentsparsematrixb
renewcommandarraystretch0%
setlengtharraycolsep0pt%
% make a subformula
beginmatrix
eagleone_sparsematrix:n #1
endmatrix
seq_new:N l__eagleone_sparsematrix_rows_seq
seq_new:N l__eagleone_sparsematrix_row_in_seq
seq_new:N l__eagleone_sparsematrix_row_out_seq
cs_new_protected:Nn eagleone_sparsematrix:n
seq_set_split:Nnn l__eagleone_sparsematrix_rows_seq \ #1
seq_map_function:NN l__eagleone_sparsematrix_rows_seq __eagleone_sparsematrix_row:n
cs_new_protected:Nn __eagleone_sparsematrix_row:n
seq_set_split:Nnn l__eagleone_sparsematrix_row_in_seq & #1
seq_map_inline:Nn l__eagleone_sparsematrix_row_in_seq
int_compare:nTF ##1 = 0
seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparsezero
seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparseone
seq_use:Nn l__eagleone_sparsematrix_row_out_seq & \
ExplSyntaxOff
begindocument
[
beginpmatrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endpmatrix
=
beginsparsematrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endsparsematrix
]
[
beginsparsematrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endsparsematrix^2
=
beginsparsematrix
1 & 0 & 1 \
0 & 2 & 0 \
1 & 0 & 1
endsparsematrix
]
enddocument
1
For my humble opinion: excellent. +1.
– Sebastiano
7 hours ago
add a comment |
With a fairly natural syntax:
documentclassarticle
usepackageamsmath
newlengthsparsesize
setlengthsparsesize12pt
newcommandsparsezero%
begingroup
setlengthfboxsep-0.2pt%
setlengthfboxrule0.2pt%
fboxhspacesparsesizerule0ptsparsesize%
endgroup
newcommandsparseonerulesparsesizesparsesize
newcommandactivate[2]%
begingrouplccode`~=`#1lowercaseendgrouplet~#2%
mathcode`#1="8000
newenvironmentsparsematrix
%
renewcommandarraystretch0%
setlengtharraycolsep0pt%
activate0sparsezeroactivate1sparseone%
beginmatrix%
endmatrix
begindocument
[
beginpmatrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endpmatrix
=
beginsparsematrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endsparsematrix
]
enddocument
For general matrices with integer coefficients it's a bit more difficult.
documentclassarticle
usepackageamsmath,xparse
newlengthsparsesize
setlengthsparsesize12pt
newcommandsparsezero%
begingroup
setlengthfboxsep-0.2pt%
setlengthfboxrule0.2pt%
fboxhspacesparsesizerule0ptsparsesize%
endgroup
newcommandsparseonerulesparsesizesparsesize
ExplSyntaxOn
NewDocumentEnvironmentsparsematrixb
renewcommandarraystretch0%
setlengtharraycolsep0pt%
% make a subformula
beginmatrix
eagleone_sparsematrix:n #1
endmatrix
seq_new:N l__eagleone_sparsematrix_rows_seq
seq_new:N l__eagleone_sparsematrix_row_in_seq
seq_new:N l__eagleone_sparsematrix_row_out_seq
cs_new_protected:Nn eagleone_sparsematrix:n
seq_set_split:Nnn l__eagleone_sparsematrix_rows_seq \ #1
seq_map_function:NN l__eagleone_sparsematrix_rows_seq __eagleone_sparsematrix_row:n
cs_new_protected:Nn __eagleone_sparsematrix_row:n
seq_set_split:Nnn l__eagleone_sparsematrix_row_in_seq & #1
seq_map_inline:Nn l__eagleone_sparsematrix_row_in_seq
int_compare:nTF ##1 = 0
seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparsezero
seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparseone
seq_use:Nn l__eagleone_sparsematrix_row_out_seq & \
ExplSyntaxOff
begindocument
[
beginpmatrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endpmatrix
=
beginsparsematrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endsparsematrix
]
[
beginsparsematrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endsparsematrix^2
=
beginsparsematrix
1 & 0 & 1 \
0 & 2 & 0 \
1 & 0 & 1
endsparsematrix
]
enddocument
With a fairly natural syntax:
documentclassarticle
usepackageamsmath
newlengthsparsesize
setlengthsparsesize12pt
newcommandsparsezero%
begingroup
setlengthfboxsep-0.2pt%
setlengthfboxrule0.2pt%
fboxhspacesparsesizerule0ptsparsesize%
endgroup
newcommandsparseonerulesparsesizesparsesize
newcommandactivate[2]%
begingrouplccode`~=`#1lowercaseendgrouplet~#2%
mathcode`#1="8000
newenvironmentsparsematrix
%
renewcommandarraystretch0%
setlengtharraycolsep0pt%
activate0sparsezeroactivate1sparseone%
beginmatrix%
endmatrix
begindocument
[
beginpmatrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endpmatrix
=
beginsparsematrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endsparsematrix
]
enddocument
For general matrices with integer coefficients it's a bit more difficult.
documentclassarticle
usepackageamsmath,xparse
newlengthsparsesize
setlengthsparsesize12pt
newcommandsparsezero%
begingroup
setlengthfboxsep-0.2pt%
setlengthfboxrule0.2pt%
fboxhspacesparsesizerule0ptsparsesize%
endgroup
newcommandsparseonerulesparsesizesparsesize
ExplSyntaxOn
NewDocumentEnvironmentsparsematrixb
renewcommandarraystretch0%
setlengtharraycolsep0pt%
% make a subformula
beginmatrix
eagleone_sparsematrix:n #1
endmatrix
seq_new:N l__eagleone_sparsematrix_rows_seq
seq_new:N l__eagleone_sparsematrix_row_in_seq
seq_new:N l__eagleone_sparsematrix_row_out_seq
cs_new_protected:Nn eagleone_sparsematrix:n
seq_set_split:Nnn l__eagleone_sparsematrix_rows_seq \ #1
seq_map_function:NN l__eagleone_sparsematrix_rows_seq __eagleone_sparsematrix_row:n
cs_new_protected:Nn __eagleone_sparsematrix_row:n
seq_set_split:Nnn l__eagleone_sparsematrix_row_in_seq & #1
seq_map_inline:Nn l__eagleone_sparsematrix_row_in_seq
int_compare:nTF ##1 = 0
seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparsezero
seq_put_right:Nn l__eagleone_sparsematrix_row_out_seq sparseone
seq_use:Nn l__eagleone_sparsematrix_row_out_seq & \
ExplSyntaxOff
begindocument
[
beginpmatrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endpmatrix
=
beginsparsematrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endsparsematrix
]
[
beginsparsematrix
0 & 1 & 0 \
1 & 0 & 1 \
0 & 1 & 0
endsparsematrix^2
=
beginsparsematrix
1 & 0 & 1 \
0 & 2 & 0 \
1 & 0 & 1
endsparsematrix
]
enddocument
answered 7 hours ago
egregegreg
745k8919513290
745k8919513290
1
For my humble opinion: excellent. +1.
– Sebastiano
7 hours ago
add a comment |
1
For my humble opinion: excellent. +1.
– Sebastiano
7 hours ago
1
1
For my humble opinion: excellent. +1.
– Sebastiano
7 hours ago
For my humble opinion: excellent. +1.
– Sebastiano
7 hours ago
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%2f493392%2fshow-sparse-matrices-like-chessboards%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
Welcome to the site. You are expected to provide a small, complete (non)working example of code demonstrating what you have tried. An image of what you are hoping to achieve would help a great deal.
– Steven B. Segletes
10 hours ago
Perhaps this question might apply directly? tex.stackexchange.com/questions/44868/… and tex.stackexchange.com/questions/42444/… and tex.stackexchange.com/questions/174234/…
– Steven B. Segletes
9 hours ago