How to compare two lists?
As shown below, the code fails to redefine the color when it is white (e.g. rgb(1,1,1)).
documentclass{standalone}
usepackage{tikz}
usepackage{xcolor}
begin{document}
foreach code/col in {%
{1,1,1}/white,
{1,1,0}/yellow,
{1,0,1}/pink
}{
ifx {code} {1,1,1}
definecolor{tempcolor}{rgb}{1,0,0}
else
definecolor{tempcolor}{rgb}{code}
fi
textcolor{tempcolor}{col};
}
end{document}
Why is my condition failing?
compare
add a comment |
As shown below, the code fails to redefine the color when it is white (e.g. rgb(1,1,1)).
documentclass{standalone}
usepackage{tikz}
usepackage{xcolor}
begin{document}
foreach code/col in {%
{1,1,1}/white,
{1,1,0}/yellow,
{1,0,1}/pink
}{
ifx {code} {1,1,1}
definecolor{tempcolor}{rgb}{1,0,0}
else
definecolor{tempcolor}{rgb}{code}
fi
textcolor{tempcolor}{col};
}
end{document}
Why is my condition failing?
compare
add a comment |
As shown below, the code fails to redefine the color when it is white (e.g. rgb(1,1,1)).
documentclass{standalone}
usepackage{tikz}
usepackage{xcolor}
begin{document}
foreach code/col in {%
{1,1,1}/white,
{1,1,0}/yellow,
{1,0,1}/pink
}{
ifx {code} {1,1,1}
definecolor{tempcolor}{rgb}{1,0,0}
else
definecolor{tempcolor}{rgb}{code}
fi
textcolor{tempcolor}{col};
}
end{document}
Why is my condition failing?
compare
As shown below, the code fails to redefine the color when it is white (e.g. rgb(1,1,1)).
documentclass{standalone}
usepackage{tikz}
usepackage{xcolor}
begin{document}
foreach code/col in {%
{1,1,1}/white,
{1,1,0}/yellow,
{1,0,1}/pink
}{
ifx {code} {1,1,1}
definecolor{tempcolor}{rgb}{1,0,0}
else
definecolor{tempcolor}{rgb}{code}
fi
textcolor{tempcolor}{col};
}
end{document}
Why is my condition failing?
compare
compare
edited Jan 27 at 4:16
Werner
442k679761673
442k679761673
asked Jan 27 at 3:35
Tony TanTony Tan
1237
1237
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
REVISION: Your original attempt works almost literally.
documentclass{standalone}
usepackage{tikz}
begin{document}
edefspeciallist{1,1,1}
foreach code/col in {%
{1,1,1}/white,
{1,1,0}/yellow,
{1,0,1}/pink
}{
ifxcodespeciallist
definecolor{tempcolor}{rgb}{1,0,0}
else
definecolor{tempcolor}{rgb}{code}
fi
textcolor{tempcolor}{col};
}
end{document}
OLDER ANSWER: TikZ comes with all the tools to compare these lists, you do not need to load additional packages. (BTW, you also do not have to load xcolor
.) In more detail, TikZ allows you to parse lists (or arrays), and this allows you to define a quantity that is 0 if all entries coincide with your target list and 1 otherwise. In more detail, I compute a quantity
pgfmathtruncatemacro{myx}{sign(abs({code}[0]-{speciallist}[0])+abs({code}[1]-{speciallist}[1])+abs({code}[2]-{speciallist}[2]))}
where
pgfmathtruncatemacro
ensures that one gets an integer, such thatifnum
, which only works for integers, works.- the argument is
|first entry of code - first entry of speciallist|+|second entry of code - second entry of speciallist|+|third entry of code - third entry of speciallist|
.
Clearly, this quantity is only 0 if all the entries of the lists coincide. Here, {code}[0]
evaluates to the first entry of the list code
, and so on.
documentclass{standalone}
usepackage{tikz}
begin{document}
edefspeciallist{1,1,1}
foreach code/col in {%
{1,1,1}/white,
{1,1,0}/yellow,
{1,0,1}/pink
}{
pgfmathtruncatemacro{myx}{sign(abs({code}[0]-{speciallist}[0])+abs({code}[1]-{speciallist}[1])+abs({code}[2]-{speciallist}[2]))}
ifnummyx=0
definecolor{tempcolor}{rgb}{1,0,0}
else
definecolor{tempcolor}{rgb}{code}
fi
textcolor{tempcolor}{col};
}
end{document}
Thanks for your help! Do you mind to explain or point where to get more info about this? pgfmathtruncatemacro{myx}{sign(pow({code}[0]-1,2)+pow({code}[1]-1,2)+pow({code}[2]-1,2))}
– Tony Tan
Jan 27 at 5:01
@TonyTan I added an explanation to my answer.pgfmathtruncatemacro{myx}{sign(pow({code}[0]-1,2)+pow({code}[1]-1,2)+pow({code}[2]-1,2))}
is very similar except that one takes the second power of the differences rather than computing their absolute values.
– marmot
Jan 27 at 5:09
1
@TonyTan A slight variation of your original proposal works, and is much simpler.
– marmot
Jan 27 at 6:07
very nice. Thanks again for your time and efforts! @marmot
– Tony Tan
Jan 28 at 6:24
add a comment |
You're technically hoping to see whether code
equals 1,1,1
as a text string. You can use pdfstrcmp{<strA>}{<strB>}
for this. It returns -1/0/1 if <strA>
is smaller than/equal to/greater than <strB>
(lexicographically):
documentclass{article}
usepackage{tikz}
begin{document}
foreach code/col in {%
{1,1,1}/white,%
{1,1,0}/yellow,%
{1,0,1}/pink%
}{
ifnumpdfstrcmp{code}{1,1,1}=0
definecolor{tempcolor}{rgb}{1,0,0}%
else
definecolor{tempcolor}{rgb}{code}%
fi
textcolor{tempcolor}{col};
}
end{document}
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "85"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f472055%2fhow-to-compare-two-lists%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
REVISION: Your original attempt works almost literally.
documentclass{standalone}
usepackage{tikz}
begin{document}
edefspeciallist{1,1,1}
foreach code/col in {%
{1,1,1}/white,
{1,1,0}/yellow,
{1,0,1}/pink
}{
ifxcodespeciallist
definecolor{tempcolor}{rgb}{1,0,0}
else
definecolor{tempcolor}{rgb}{code}
fi
textcolor{tempcolor}{col};
}
end{document}
OLDER ANSWER: TikZ comes with all the tools to compare these lists, you do not need to load additional packages. (BTW, you also do not have to load xcolor
.) In more detail, TikZ allows you to parse lists (or arrays), and this allows you to define a quantity that is 0 if all entries coincide with your target list and 1 otherwise. In more detail, I compute a quantity
pgfmathtruncatemacro{myx}{sign(abs({code}[0]-{speciallist}[0])+abs({code}[1]-{speciallist}[1])+abs({code}[2]-{speciallist}[2]))}
where
pgfmathtruncatemacro
ensures that one gets an integer, such thatifnum
, which only works for integers, works.- the argument is
|first entry of code - first entry of speciallist|+|second entry of code - second entry of speciallist|+|third entry of code - third entry of speciallist|
.
Clearly, this quantity is only 0 if all the entries of the lists coincide. Here, {code}[0]
evaluates to the first entry of the list code
, and so on.
documentclass{standalone}
usepackage{tikz}
begin{document}
edefspeciallist{1,1,1}
foreach code/col in {%
{1,1,1}/white,
{1,1,0}/yellow,
{1,0,1}/pink
}{
pgfmathtruncatemacro{myx}{sign(abs({code}[0]-{speciallist}[0])+abs({code}[1]-{speciallist}[1])+abs({code}[2]-{speciallist}[2]))}
ifnummyx=0
definecolor{tempcolor}{rgb}{1,0,0}
else
definecolor{tempcolor}{rgb}{code}
fi
textcolor{tempcolor}{col};
}
end{document}
Thanks for your help! Do you mind to explain or point where to get more info about this? pgfmathtruncatemacro{myx}{sign(pow({code}[0]-1,2)+pow({code}[1]-1,2)+pow({code}[2]-1,2))}
– Tony Tan
Jan 27 at 5:01
@TonyTan I added an explanation to my answer.pgfmathtruncatemacro{myx}{sign(pow({code}[0]-1,2)+pow({code}[1]-1,2)+pow({code}[2]-1,2))}
is very similar except that one takes the second power of the differences rather than computing their absolute values.
– marmot
Jan 27 at 5:09
1
@TonyTan A slight variation of your original proposal works, and is much simpler.
– marmot
Jan 27 at 6:07
very nice. Thanks again for your time and efforts! @marmot
– Tony Tan
Jan 28 at 6:24
add a comment |
REVISION: Your original attempt works almost literally.
documentclass{standalone}
usepackage{tikz}
begin{document}
edefspeciallist{1,1,1}
foreach code/col in {%
{1,1,1}/white,
{1,1,0}/yellow,
{1,0,1}/pink
}{
ifxcodespeciallist
definecolor{tempcolor}{rgb}{1,0,0}
else
definecolor{tempcolor}{rgb}{code}
fi
textcolor{tempcolor}{col};
}
end{document}
OLDER ANSWER: TikZ comes with all the tools to compare these lists, you do not need to load additional packages. (BTW, you also do not have to load xcolor
.) In more detail, TikZ allows you to parse lists (or arrays), and this allows you to define a quantity that is 0 if all entries coincide with your target list and 1 otherwise. In more detail, I compute a quantity
pgfmathtruncatemacro{myx}{sign(abs({code}[0]-{speciallist}[0])+abs({code}[1]-{speciallist}[1])+abs({code}[2]-{speciallist}[2]))}
where
pgfmathtruncatemacro
ensures that one gets an integer, such thatifnum
, which only works for integers, works.- the argument is
|first entry of code - first entry of speciallist|+|second entry of code - second entry of speciallist|+|third entry of code - third entry of speciallist|
.
Clearly, this quantity is only 0 if all the entries of the lists coincide. Here, {code}[0]
evaluates to the first entry of the list code
, and so on.
documentclass{standalone}
usepackage{tikz}
begin{document}
edefspeciallist{1,1,1}
foreach code/col in {%
{1,1,1}/white,
{1,1,0}/yellow,
{1,0,1}/pink
}{
pgfmathtruncatemacro{myx}{sign(abs({code}[0]-{speciallist}[0])+abs({code}[1]-{speciallist}[1])+abs({code}[2]-{speciallist}[2]))}
ifnummyx=0
definecolor{tempcolor}{rgb}{1,0,0}
else
definecolor{tempcolor}{rgb}{code}
fi
textcolor{tempcolor}{col};
}
end{document}
Thanks for your help! Do you mind to explain or point where to get more info about this? pgfmathtruncatemacro{myx}{sign(pow({code}[0]-1,2)+pow({code}[1]-1,2)+pow({code}[2]-1,2))}
– Tony Tan
Jan 27 at 5:01
@TonyTan I added an explanation to my answer.pgfmathtruncatemacro{myx}{sign(pow({code}[0]-1,2)+pow({code}[1]-1,2)+pow({code}[2]-1,2))}
is very similar except that one takes the second power of the differences rather than computing their absolute values.
– marmot
Jan 27 at 5:09
1
@TonyTan A slight variation of your original proposal works, and is much simpler.
– marmot
Jan 27 at 6:07
very nice. Thanks again for your time and efforts! @marmot
– Tony Tan
Jan 28 at 6:24
add a comment |
REVISION: Your original attempt works almost literally.
documentclass{standalone}
usepackage{tikz}
begin{document}
edefspeciallist{1,1,1}
foreach code/col in {%
{1,1,1}/white,
{1,1,0}/yellow,
{1,0,1}/pink
}{
ifxcodespeciallist
definecolor{tempcolor}{rgb}{1,0,0}
else
definecolor{tempcolor}{rgb}{code}
fi
textcolor{tempcolor}{col};
}
end{document}
OLDER ANSWER: TikZ comes with all the tools to compare these lists, you do not need to load additional packages. (BTW, you also do not have to load xcolor
.) In more detail, TikZ allows you to parse lists (or arrays), and this allows you to define a quantity that is 0 if all entries coincide with your target list and 1 otherwise. In more detail, I compute a quantity
pgfmathtruncatemacro{myx}{sign(abs({code}[0]-{speciallist}[0])+abs({code}[1]-{speciallist}[1])+abs({code}[2]-{speciallist}[2]))}
where
pgfmathtruncatemacro
ensures that one gets an integer, such thatifnum
, which only works for integers, works.- the argument is
|first entry of code - first entry of speciallist|+|second entry of code - second entry of speciallist|+|third entry of code - third entry of speciallist|
.
Clearly, this quantity is only 0 if all the entries of the lists coincide. Here, {code}[0]
evaluates to the first entry of the list code
, and so on.
documentclass{standalone}
usepackage{tikz}
begin{document}
edefspeciallist{1,1,1}
foreach code/col in {%
{1,1,1}/white,
{1,1,0}/yellow,
{1,0,1}/pink
}{
pgfmathtruncatemacro{myx}{sign(abs({code}[0]-{speciallist}[0])+abs({code}[1]-{speciallist}[1])+abs({code}[2]-{speciallist}[2]))}
ifnummyx=0
definecolor{tempcolor}{rgb}{1,0,0}
else
definecolor{tempcolor}{rgb}{code}
fi
textcolor{tempcolor}{col};
}
end{document}
REVISION: Your original attempt works almost literally.
documentclass{standalone}
usepackage{tikz}
begin{document}
edefspeciallist{1,1,1}
foreach code/col in {%
{1,1,1}/white,
{1,1,0}/yellow,
{1,0,1}/pink
}{
ifxcodespeciallist
definecolor{tempcolor}{rgb}{1,0,0}
else
definecolor{tempcolor}{rgb}{code}
fi
textcolor{tempcolor}{col};
}
end{document}
OLDER ANSWER: TikZ comes with all the tools to compare these lists, you do not need to load additional packages. (BTW, you also do not have to load xcolor
.) In more detail, TikZ allows you to parse lists (or arrays), and this allows you to define a quantity that is 0 if all entries coincide with your target list and 1 otherwise. In more detail, I compute a quantity
pgfmathtruncatemacro{myx}{sign(abs({code}[0]-{speciallist}[0])+abs({code}[1]-{speciallist}[1])+abs({code}[2]-{speciallist}[2]))}
where
pgfmathtruncatemacro
ensures that one gets an integer, such thatifnum
, which only works for integers, works.- the argument is
|first entry of code - first entry of speciallist|+|second entry of code - second entry of speciallist|+|third entry of code - third entry of speciallist|
.
Clearly, this quantity is only 0 if all the entries of the lists coincide. Here, {code}[0]
evaluates to the first entry of the list code
, and so on.
documentclass{standalone}
usepackage{tikz}
begin{document}
edefspeciallist{1,1,1}
foreach code/col in {%
{1,1,1}/white,
{1,1,0}/yellow,
{1,0,1}/pink
}{
pgfmathtruncatemacro{myx}{sign(abs({code}[0]-{speciallist}[0])+abs({code}[1]-{speciallist}[1])+abs({code}[2]-{speciallist}[2]))}
ifnummyx=0
definecolor{tempcolor}{rgb}{1,0,0}
else
definecolor{tempcolor}{rgb}{code}
fi
textcolor{tempcolor}{col};
}
end{document}
edited Jan 27 at 6:06
answered Jan 27 at 4:36
marmotmarmot
97k4112213
97k4112213
Thanks for your help! Do you mind to explain or point where to get more info about this? pgfmathtruncatemacro{myx}{sign(pow({code}[0]-1,2)+pow({code}[1]-1,2)+pow({code}[2]-1,2))}
– Tony Tan
Jan 27 at 5:01
@TonyTan I added an explanation to my answer.pgfmathtruncatemacro{myx}{sign(pow({code}[0]-1,2)+pow({code}[1]-1,2)+pow({code}[2]-1,2))}
is very similar except that one takes the second power of the differences rather than computing their absolute values.
– marmot
Jan 27 at 5:09
1
@TonyTan A slight variation of your original proposal works, and is much simpler.
– marmot
Jan 27 at 6:07
very nice. Thanks again for your time and efforts! @marmot
– Tony Tan
Jan 28 at 6:24
add a comment |
Thanks for your help! Do you mind to explain or point where to get more info about this? pgfmathtruncatemacro{myx}{sign(pow({code}[0]-1,2)+pow({code}[1]-1,2)+pow({code}[2]-1,2))}
– Tony Tan
Jan 27 at 5:01
@TonyTan I added an explanation to my answer.pgfmathtruncatemacro{myx}{sign(pow({code}[0]-1,2)+pow({code}[1]-1,2)+pow({code}[2]-1,2))}
is very similar except that one takes the second power of the differences rather than computing their absolute values.
– marmot
Jan 27 at 5:09
1
@TonyTan A slight variation of your original proposal works, and is much simpler.
– marmot
Jan 27 at 6:07
very nice. Thanks again for your time and efforts! @marmot
– Tony Tan
Jan 28 at 6:24
Thanks for your help! Do you mind to explain or point where to get more info about this? pgfmathtruncatemacro{myx}{sign(pow({code}[0]-1,2)+pow({code}[1]-1,2)+pow({code}[2]-1,2))}
– Tony Tan
Jan 27 at 5:01
Thanks for your help! Do you mind to explain or point where to get more info about this? pgfmathtruncatemacro{myx}{sign(pow({code}[0]-1,2)+pow({code}[1]-1,2)+pow({code}[2]-1,2))}
– Tony Tan
Jan 27 at 5:01
@TonyTan I added an explanation to my answer.
pgfmathtruncatemacro{myx}{sign(pow({code}[0]-1,2)+pow({code}[1]-1,2)+pow({code}[2]-1,2))}
is very similar except that one takes the second power of the differences rather than computing their absolute values.– marmot
Jan 27 at 5:09
@TonyTan I added an explanation to my answer.
pgfmathtruncatemacro{myx}{sign(pow({code}[0]-1,2)+pow({code}[1]-1,2)+pow({code}[2]-1,2))}
is very similar except that one takes the second power of the differences rather than computing their absolute values.– marmot
Jan 27 at 5:09
1
1
@TonyTan A slight variation of your original proposal works, and is much simpler.
– marmot
Jan 27 at 6:07
@TonyTan A slight variation of your original proposal works, and is much simpler.
– marmot
Jan 27 at 6:07
very nice. Thanks again for your time and efforts! @marmot
– Tony Tan
Jan 28 at 6:24
very nice. Thanks again for your time and efforts! @marmot
– Tony Tan
Jan 28 at 6:24
add a comment |
You're technically hoping to see whether code
equals 1,1,1
as a text string. You can use pdfstrcmp{<strA>}{<strB>}
for this. It returns -1/0/1 if <strA>
is smaller than/equal to/greater than <strB>
(lexicographically):
documentclass{article}
usepackage{tikz}
begin{document}
foreach code/col in {%
{1,1,1}/white,%
{1,1,0}/yellow,%
{1,0,1}/pink%
}{
ifnumpdfstrcmp{code}{1,1,1}=0
definecolor{tempcolor}{rgb}{1,0,0}%
else
definecolor{tempcolor}{rgb}{code}%
fi
textcolor{tempcolor}{col};
}
end{document}
add a comment |
You're technically hoping to see whether code
equals 1,1,1
as a text string. You can use pdfstrcmp{<strA>}{<strB>}
for this. It returns -1/0/1 if <strA>
is smaller than/equal to/greater than <strB>
(lexicographically):
documentclass{article}
usepackage{tikz}
begin{document}
foreach code/col in {%
{1,1,1}/white,%
{1,1,0}/yellow,%
{1,0,1}/pink%
}{
ifnumpdfstrcmp{code}{1,1,1}=0
definecolor{tempcolor}{rgb}{1,0,0}%
else
definecolor{tempcolor}{rgb}{code}%
fi
textcolor{tempcolor}{col};
}
end{document}
add a comment |
You're technically hoping to see whether code
equals 1,1,1
as a text string. You can use pdfstrcmp{<strA>}{<strB>}
for this. It returns -1/0/1 if <strA>
is smaller than/equal to/greater than <strB>
(lexicographically):
documentclass{article}
usepackage{tikz}
begin{document}
foreach code/col in {%
{1,1,1}/white,%
{1,1,0}/yellow,%
{1,0,1}/pink%
}{
ifnumpdfstrcmp{code}{1,1,1}=0
definecolor{tempcolor}{rgb}{1,0,0}%
else
definecolor{tempcolor}{rgb}{code}%
fi
textcolor{tempcolor}{col};
}
end{document}
You're technically hoping to see whether code
equals 1,1,1
as a text string. You can use pdfstrcmp{<strA>}{<strB>}
for this. It returns -1/0/1 if <strA>
is smaller than/equal to/greater than <strB>
(lexicographically):
documentclass{article}
usepackage{tikz}
begin{document}
foreach code/col in {%
{1,1,1}/white,%
{1,1,0}/yellow,%
{1,0,1}/pink%
}{
ifnumpdfstrcmp{code}{1,1,1}=0
definecolor{tempcolor}{rgb}{1,0,0}%
else
definecolor{tempcolor}{rgb}{code}%
fi
textcolor{tempcolor}{col};
}
end{document}
answered Jan 27 at 4:14
WernerWerner
442k679761673
442k679761673
add a comment |
add a comment |
Thanks for contributing an answer to TeX - LaTeX Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f472055%2fhow-to-compare-two-lists%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