newcommand with parameter blank or zeroVariable-name newcommand with parameters within another newcommandnewcommand to make a plot command using gnuplottexUsing #1 literally in a macroHow I can customize fbox and hrule?Problem with underscores in newcommandHow reuse latex code for later expansion?Newcommand with PythonTextikzpicture as newcommand with argument(s)Loop code for repeated sumsDraw a shape with operation on parameters in Tikz
Is it possible for underground bunkers on different continents to be connected?
Print the phrase "And she said, 'But that's his.'" using only the alphabet
The last tree in the Universe
Nth term of Van Eck Sequence
At zero velocity, is this object neither speeding up nor slowing down?
What made the Ancient One do this in Endgame?
Does WiFi affect the quality of images downloaded from the internet?
VHDL: What is correct way to model open collector output for FPGA?
Arcane Tradition and Cost Efficiency: Learn spells on level-up, or learn them from scrolls/spellbooks?
Should I worry about having my credit pulled multiple times while car shopping?
For Saintsbury, which English novelists constituted the "great quartet of the mid-eighteenth century"?
How many times to repeat an event with known probability before it has occurred a number of times
Does anyone recognize these rockets, and their location?
How can Caller ID be faked?
Does PC weight have a mechanical effect?
Boss making me feel guilty for leaving the company at the end of my internship
When is the phrase "j'ai bon" used?
Why not make one big CPU core?
newcommand with parameter blank or zero
What does the output current rating from an H-Bridge's datasheet really mean?
At what temperature should the earth be cooked to prevent human infection?
How did Avada Kedavra get its name?
Manager wants to hire me; HR does not. How to proceed?
How to address players struggling with simple controls?
newcommand with parameter blank or zero
Variable-name newcommand with parameters within another newcommandnewcommand to make a plot command using gnuplottexUsing #1 literally in a macroHow I can customize fbox and hrule?Problem with underscores in newcommandHow reuse latex code for later expansion?Newcommand with PythonTextikzpicture as newcommand with argument(s)Loop code for repeated sumsDraw a shape with operation on parameters in Tikz
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
i read code in other topic: definited newcommand selectTask.
IF TaskOne/TaskTwo = blank is ok.
Now i want to edit IF TaskOne/TaskTwo = blank or zero.
Please help update this code:
newcommandselectTask[2]%
ifrelax#1relax
ifrelax#2relax
selectTaskA % 00 TaskOne = TaskTwo=blank => How if blank or zero?
else
selectTaskB % 01 TaskOne =blank,TaskTwo=!=blank
fi
else
ifrelax#2relax
selectTaskC % 10 TaskOne !=blank, TaskTwo=blank
else
selectTaskD % 11 TaskOne = TaskTwo!=blank
fi
fi
Please help if data = zero or blank.
Thank in advance
macros
add a comment |
i read code in other topic: definited newcommand selectTask.
IF TaskOne/TaskTwo = blank is ok.
Now i want to edit IF TaskOne/TaskTwo = blank or zero.
Please help update this code:
newcommandselectTask[2]%
ifrelax#1relax
ifrelax#2relax
selectTaskA % 00 TaskOne = TaskTwo=blank => How if blank or zero?
else
selectTaskB % 01 TaskOne =blank,TaskTwo=!=blank
fi
else
ifrelax#2relax
selectTaskC % 10 TaskOne !=blank, TaskTwo=blank
else
selectTaskD % 11 TaskOne = TaskTwo!=blank
fi
fi
Please help if data = zero or blank.
Thank in advance
macros
2
ifrelax#1relax
is not a good test
– David Carlisle
9 hours ago
your question would be easier to answer if your code was a complete document that could be run with testcases rather than a fragment with undefined commands in each branch
– David Carlisle
8 hours ago
Adding to @DavidCarlisle's first comment: A better test would beifrelaxdetokenize#1relax
.
– Skillmon
8 hours ago
There is also ifempty#1relax, but for best results use something likedef@tempa#1
to do comparisons.
– John Kormylo
8 hours ago
If the arguments will always be numeric (or blank),newcommandselectTask[2]ifnum9=#19relax ifnum9=#29relax selectTaskA else selectTaskB fi else ifnum9=#29relax selectTaskC else selectTaskD fi fi
– Steven B. Segletes
8 hours ago
add a comment |
i read code in other topic: definited newcommand selectTask.
IF TaskOne/TaskTwo = blank is ok.
Now i want to edit IF TaskOne/TaskTwo = blank or zero.
Please help update this code:
newcommandselectTask[2]%
ifrelax#1relax
ifrelax#2relax
selectTaskA % 00 TaskOne = TaskTwo=blank => How if blank or zero?
else
selectTaskB % 01 TaskOne =blank,TaskTwo=!=blank
fi
else
ifrelax#2relax
selectTaskC % 10 TaskOne !=blank, TaskTwo=blank
else
selectTaskD % 11 TaskOne = TaskTwo!=blank
fi
fi
Please help if data = zero or blank.
Thank in advance
macros
i read code in other topic: definited newcommand selectTask.
IF TaskOne/TaskTwo = blank is ok.
Now i want to edit IF TaskOne/TaskTwo = blank or zero.
Please help update this code:
newcommandselectTask[2]%
ifrelax#1relax
ifrelax#2relax
selectTaskA % 00 TaskOne = TaskTwo=blank => How if blank or zero?
else
selectTaskB % 01 TaskOne =blank,TaskTwo=!=blank
fi
else
ifrelax#2relax
selectTaskC % 10 TaskOne !=blank, TaskTwo=blank
else
selectTaskD % 11 TaskOne = TaskTwo!=blank
fi
fi
Please help if data = zero or blank.
Thank in advance
macros
macros
edited 8 hours ago
latexforti
asked 9 hours ago
latexfortilatexforti
65018
65018
2
ifrelax#1relax
is not a good test
– David Carlisle
9 hours ago
your question would be easier to answer if your code was a complete document that could be run with testcases rather than a fragment with undefined commands in each branch
– David Carlisle
8 hours ago
Adding to @DavidCarlisle's first comment: A better test would beifrelaxdetokenize#1relax
.
– Skillmon
8 hours ago
There is also ifempty#1relax, but for best results use something likedef@tempa#1
to do comparisons.
– John Kormylo
8 hours ago
If the arguments will always be numeric (or blank),newcommandselectTask[2]ifnum9=#19relax ifnum9=#29relax selectTaskA else selectTaskB fi else ifnum9=#29relax selectTaskC else selectTaskD fi fi
– Steven B. Segletes
8 hours ago
add a comment |
2
ifrelax#1relax
is not a good test
– David Carlisle
9 hours ago
your question would be easier to answer if your code was a complete document that could be run with testcases rather than a fragment with undefined commands in each branch
– David Carlisle
8 hours ago
Adding to @DavidCarlisle's first comment: A better test would beifrelaxdetokenize#1relax
.
– Skillmon
8 hours ago
There is also ifempty#1relax, but for best results use something likedef@tempa#1
to do comparisons.
– John Kormylo
8 hours ago
If the arguments will always be numeric (or blank),newcommandselectTask[2]ifnum9=#19relax ifnum9=#29relax selectTaskA else selectTaskB fi else ifnum9=#29relax selectTaskC else selectTaskD fi fi
– Steven B. Segletes
8 hours ago
2
2
ifrelax#1relax
is not a good test– David Carlisle
9 hours ago
ifrelax#1relax
is not a good test– David Carlisle
9 hours ago
your question would be easier to answer if your code was a complete document that could be run with testcases rather than a fragment with undefined commands in each branch
– David Carlisle
8 hours ago
your question would be easier to answer if your code was a complete document that could be run with testcases rather than a fragment with undefined commands in each branch
– David Carlisle
8 hours ago
Adding to @DavidCarlisle's first comment: A better test would be
ifrelaxdetokenize#1relax
.– Skillmon
8 hours ago
Adding to @DavidCarlisle's first comment: A better test would be
ifrelaxdetokenize#1relax
.– Skillmon
8 hours ago
There is also ifempty#1relax, but for best results use something like
def@tempa#1
to do comparisons.– John Kormylo
8 hours ago
There is also ifempty#1relax, but for best results use something like
def@tempa#1
to do comparisons.– John Kormylo
8 hours ago
If the arguments will always be numeric (or blank),
newcommandselectTask[2]ifnum9=#19relax ifnum9=#29relax selectTaskA else selectTaskB fi else ifnum9=#29relax selectTaskC else selectTaskD fi fi
– Steven B. Segletes
8 hours ago
If the arguments will always be numeric (or blank),
newcommandselectTask[2]ifnum9=#19relax ifnum9=#29relax selectTaskA else selectTaskB fi else ifnum9=#29relax selectTaskC else selectTaskD fi fi
– Steven B. Segletes
8 hours ago
add a comment |
3 Answers
3
active
oldest
votes
ifrelax#1relax
would be true if the expansion of #1
results in something that starts with any non-character. ifrelaxhboxabcrelax
for example would test as true (and typeset abc
).
this uses ifx
tests which do not expand the tested tokens.
deftmpempty
deftmpzero0
newcommandselectTask[2]%
deftmp#1ifxtmptmpemptylettmptmpzerofi
deftmpb#2ifxtmpbtmpemptylettmpbtmpzerofi
ifxtmptmpzero
ifxtmpbtmpzero
showselectTaskA % 00 TaskOne = TaskTwo=blank => How if blank or zero?
else
showselectTaskB % 01 TaskOne =blank,TaskTwo=!=blank
fi
else
ifxtmpbtmpzero
showselectTaskC % 10 TaskOne !=blank, TaskTwo=blank
else
showselectTaskD % 11 TaskOne = TaskTwo!=blank
fi
fi
selectTask%A
selectTask0%A
selectTaskx%B
selectTask0x%B
selectTaskx%C
selectTaskx0%C
selectTaskxy%D
stop
add a comment |
Here's an implementation according to your idea: the first argument is tested if blank, if it is the following macro is called with 0
argument; similarly the second argument is tested. Then we do a string case choice.
documentclassarticle
usepackagexparse
ExplSyntaxOn
NewExpandableDocumentCommandselectTaskmm
latexforti_select_task:nn #1 #2
cs_new:Nn latexforti_select_task:nn
tl_if_blank:nTF #1
__latexforti_select_task_a:nn 0 #2
__latexforti_select_task_a:nn #1 #2
cs_new:Nn __latexforti_select_task_a:nn
tl_if_blank:nTF #2
__latexforti_select_task_b:nn #1 0
__latexforti_select_task_b:nn #1 #2
cs_new:Nn __latexforti_select_task_b:nn
str_case:nn #1#2
00selectTaskA
01selectTaskB
10selectTaskC
11selectTaskD
ExplSyntaxOff
newcommandselectTaskAI'm task A
newcommandselectTaskBI'm task B
newcommandselectTaskCI'm task C
newcommandselectTaskDI'm task D
begindocument
selectTask00 --- selectTask0 -- selectTask0
selectTask01 --- selectTask1
selectTask10 --- selectTask1
selectTask11
enddocument
An implementation with more classical methods (but arguments cannot be
as in the previous one).
documentclassarticle
makeatletter
newcommandselectTask[2]%
expandafterlatexforti@selectexpandafter
number0#1expandafterexpandafternumber0#2%
newcommandlatexforti@select[2]%
ifcasenumexpr#1*2+#2relax % the arguments are binary digits!
selectTaskA
or
selectTaskB
or
selectTaskC
or
selectTaskD
fi
makeatother
newcommandselectTaskAI'm task A
newcommandselectTaskBI'm task B
newcommandselectTaskCI'm task C
newcommandselectTaskDI'm task D
begindocument
selectTask00 --- selectTask0 -- selectTask0
selectTask01 --- selectTask1
selectTask10 --- selectTask1
selectTask11
enddocument
add a comment |
If the arguments are only allowed to be blank or numeric, you can use an ifnum
comparison.
documentclass[]scrartcl
defselectTaskA00
defselectTaskB01
defselectTaskC10
defselectTaskD11
newcommandselectTask[2]%
ifnum9=#19relax
ifnum9=#29relax
selectTaskA
else
selectTaskB
fi
else
ifnum9=#29relax
selectTaskC
else
selectTaskD
fi
fi
begindocument
selectTask\
selectTask0\
selectTask0\
selectTask00\
selectTask1\
selectTask1\
selectTask11
enddocument
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%2f495685%2fnewcommand-with-parameter-blank-or-zero%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
ifrelax#1relax
would be true if the expansion of #1
results in something that starts with any non-character. ifrelaxhboxabcrelax
for example would test as true (and typeset abc
).
this uses ifx
tests which do not expand the tested tokens.
deftmpempty
deftmpzero0
newcommandselectTask[2]%
deftmp#1ifxtmptmpemptylettmptmpzerofi
deftmpb#2ifxtmpbtmpemptylettmpbtmpzerofi
ifxtmptmpzero
ifxtmpbtmpzero
showselectTaskA % 00 TaskOne = TaskTwo=blank => How if blank or zero?
else
showselectTaskB % 01 TaskOne =blank,TaskTwo=!=blank
fi
else
ifxtmpbtmpzero
showselectTaskC % 10 TaskOne !=blank, TaskTwo=blank
else
showselectTaskD % 11 TaskOne = TaskTwo!=blank
fi
fi
selectTask%A
selectTask0%A
selectTaskx%B
selectTask0x%B
selectTaskx%C
selectTaskx0%C
selectTaskxy%D
stop
add a comment |
ifrelax#1relax
would be true if the expansion of #1
results in something that starts with any non-character. ifrelaxhboxabcrelax
for example would test as true (and typeset abc
).
this uses ifx
tests which do not expand the tested tokens.
deftmpempty
deftmpzero0
newcommandselectTask[2]%
deftmp#1ifxtmptmpemptylettmptmpzerofi
deftmpb#2ifxtmpbtmpemptylettmpbtmpzerofi
ifxtmptmpzero
ifxtmpbtmpzero
showselectTaskA % 00 TaskOne = TaskTwo=blank => How if blank or zero?
else
showselectTaskB % 01 TaskOne =blank,TaskTwo=!=blank
fi
else
ifxtmpbtmpzero
showselectTaskC % 10 TaskOne !=blank, TaskTwo=blank
else
showselectTaskD % 11 TaskOne = TaskTwo!=blank
fi
fi
selectTask%A
selectTask0%A
selectTaskx%B
selectTask0x%B
selectTaskx%C
selectTaskx0%C
selectTaskxy%D
stop
add a comment |
ifrelax#1relax
would be true if the expansion of #1
results in something that starts with any non-character. ifrelaxhboxabcrelax
for example would test as true (and typeset abc
).
this uses ifx
tests which do not expand the tested tokens.
deftmpempty
deftmpzero0
newcommandselectTask[2]%
deftmp#1ifxtmptmpemptylettmptmpzerofi
deftmpb#2ifxtmpbtmpemptylettmpbtmpzerofi
ifxtmptmpzero
ifxtmpbtmpzero
showselectTaskA % 00 TaskOne = TaskTwo=blank => How if blank or zero?
else
showselectTaskB % 01 TaskOne =blank,TaskTwo=!=blank
fi
else
ifxtmpbtmpzero
showselectTaskC % 10 TaskOne !=blank, TaskTwo=blank
else
showselectTaskD % 11 TaskOne = TaskTwo!=blank
fi
fi
selectTask%A
selectTask0%A
selectTaskx%B
selectTask0x%B
selectTaskx%C
selectTaskx0%C
selectTaskxy%D
stop
ifrelax#1relax
would be true if the expansion of #1
results in something that starts with any non-character. ifrelaxhboxabcrelax
for example would test as true (and typeset abc
).
this uses ifx
tests which do not expand the tested tokens.
deftmpempty
deftmpzero0
newcommandselectTask[2]%
deftmp#1ifxtmptmpemptylettmptmpzerofi
deftmpb#2ifxtmpbtmpemptylettmpbtmpzerofi
ifxtmptmpzero
ifxtmpbtmpzero
showselectTaskA % 00 TaskOne = TaskTwo=blank => How if blank or zero?
else
showselectTaskB % 01 TaskOne =blank,TaskTwo=!=blank
fi
else
ifxtmpbtmpzero
showselectTaskC % 10 TaskOne !=blank, TaskTwo=blank
else
showselectTaskD % 11 TaskOne = TaskTwo!=blank
fi
fi
selectTask%A
selectTask0%A
selectTaskx%B
selectTask0x%B
selectTaskx%C
selectTaskx0%C
selectTaskxy%D
stop
answered 8 hours ago
David CarlisleDavid Carlisle
510k4311591916
510k4311591916
add a comment |
add a comment |
Here's an implementation according to your idea: the first argument is tested if blank, if it is the following macro is called with 0
argument; similarly the second argument is tested. Then we do a string case choice.
documentclassarticle
usepackagexparse
ExplSyntaxOn
NewExpandableDocumentCommandselectTaskmm
latexforti_select_task:nn #1 #2
cs_new:Nn latexforti_select_task:nn
tl_if_blank:nTF #1
__latexforti_select_task_a:nn 0 #2
__latexforti_select_task_a:nn #1 #2
cs_new:Nn __latexforti_select_task_a:nn
tl_if_blank:nTF #2
__latexforti_select_task_b:nn #1 0
__latexforti_select_task_b:nn #1 #2
cs_new:Nn __latexforti_select_task_b:nn
str_case:nn #1#2
00selectTaskA
01selectTaskB
10selectTaskC
11selectTaskD
ExplSyntaxOff
newcommandselectTaskAI'm task A
newcommandselectTaskBI'm task B
newcommandselectTaskCI'm task C
newcommandselectTaskDI'm task D
begindocument
selectTask00 --- selectTask0 -- selectTask0
selectTask01 --- selectTask1
selectTask10 --- selectTask1
selectTask11
enddocument
An implementation with more classical methods (but arguments cannot be
as in the previous one).
documentclassarticle
makeatletter
newcommandselectTask[2]%
expandafterlatexforti@selectexpandafter
number0#1expandafterexpandafternumber0#2%
newcommandlatexforti@select[2]%
ifcasenumexpr#1*2+#2relax % the arguments are binary digits!
selectTaskA
or
selectTaskB
or
selectTaskC
or
selectTaskD
fi
makeatother
newcommandselectTaskAI'm task A
newcommandselectTaskBI'm task B
newcommandselectTaskCI'm task C
newcommandselectTaskDI'm task D
begindocument
selectTask00 --- selectTask0 -- selectTask0
selectTask01 --- selectTask1
selectTask10 --- selectTask1
selectTask11
enddocument
add a comment |
Here's an implementation according to your idea: the first argument is tested if blank, if it is the following macro is called with 0
argument; similarly the second argument is tested. Then we do a string case choice.
documentclassarticle
usepackagexparse
ExplSyntaxOn
NewExpandableDocumentCommandselectTaskmm
latexforti_select_task:nn #1 #2
cs_new:Nn latexforti_select_task:nn
tl_if_blank:nTF #1
__latexforti_select_task_a:nn 0 #2
__latexforti_select_task_a:nn #1 #2
cs_new:Nn __latexforti_select_task_a:nn
tl_if_blank:nTF #2
__latexforti_select_task_b:nn #1 0
__latexforti_select_task_b:nn #1 #2
cs_new:Nn __latexforti_select_task_b:nn
str_case:nn #1#2
00selectTaskA
01selectTaskB
10selectTaskC
11selectTaskD
ExplSyntaxOff
newcommandselectTaskAI'm task A
newcommandselectTaskBI'm task B
newcommandselectTaskCI'm task C
newcommandselectTaskDI'm task D
begindocument
selectTask00 --- selectTask0 -- selectTask0
selectTask01 --- selectTask1
selectTask10 --- selectTask1
selectTask11
enddocument
An implementation with more classical methods (but arguments cannot be
as in the previous one).
documentclassarticle
makeatletter
newcommandselectTask[2]%
expandafterlatexforti@selectexpandafter
number0#1expandafterexpandafternumber0#2%
newcommandlatexforti@select[2]%
ifcasenumexpr#1*2+#2relax % the arguments are binary digits!
selectTaskA
or
selectTaskB
or
selectTaskC
or
selectTaskD
fi
makeatother
newcommandselectTaskAI'm task A
newcommandselectTaskBI'm task B
newcommandselectTaskCI'm task C
newcommandselectTaskDI'm task D
begindocument
selectTask00 --- selectTask0 -- selectTask0
selectTask01 --- selectTask1
selectTask10 --- selectTask1
selectTask11
enddocument
add a comment |
Here's an implementation according to your idea: the first argument is tested if blank, if it is the following macro is called with 0
argument; similarly the second argument is tested. Then we do a string case choice.
documentclassarticle
usepackagexparse
ExplSyntaxOn
NewExpandableDocumentCommandselectTaskmm
latexforti_select_task:nn #1 #2
cs_new:Nn latexforti_select_task:nn
tl_if_blank:nTF #1
__latexforti_select_task_a:nn 0 #2
__latexforti_select_task_a:nn #1 #2
cs_new:Nn __latexforti_select_task_a:nn
tl_if_blank:nTF #2
__latexforti_select_task_b:nn #1 0
__latexforti_select_task_b:nn #1 #2
cs_new:Nn __latexforti_select_task_b:nn
str_case:nn #1#2
00selectTaskA
01selectTaskB
10selectTaskC
11selectTaskD
ExplSyntaxOff
newcommandselectTaskAI'm task A
newcommandselectTaskBI'm task B
newcommandselectTaskCI'm task C
newcommandselectTaskDI'm task D
begindocument
selectTask00 --- selectTask0 -- selectTask0
selectTask01 --- selectTask1
selectTask10 --- selectTask1
selectTask11
enddocument
An implementation with more classical methods (but arguments cannot be
as in the previous one).
documentclassarticle
makeatletter
newcommandselectTask[2]%
expandafterlatexforti@selectexpandafter
number0#1expandafterexpandafternumber0#2%
newcommandlatexforti@select[2]%
ifcasenumexpr#1*2+#2relax % the arguments are binary digits!
selectTaskA
or
selectTaskB
or
selectTaskC
or
selectTaskD
fi
makeatother
newcommandselectTaskAI'm task A
newcommandselectTaskBI'm task B
newcommandselectTaskCI'm task C
newcommandselectTaskDI'm task D
begindocument
selectTask00 --- selectTask0 -- selectTask0
selectTask01 --- selectTask1
selectTask10 --- selectTask1
selectTask11
enddocument
Here's an implementation according to your idea: the first argument is tested if blank, if it is the following macro is called with 0
argument; similarly the second argument is tested. Then we do a string case choice.
documentclassarticle
usepackagexparse
ExplSyntaxOn
NewExpandableDocumentCommandselectTaskmm
latexforti_select_task:nn #1 #2
cs_new:Nn latexforti_select_task:nn
tl_if_blank:nTF #1
__latexforti_select_task_a:nn 0 #2
__latexforti_select_task_a:nn #1 #2
cs_new:Nn __latexforti_select_task_a:nn
tl_if_blank:nTF #2
__latexforti_select_task_b:nn #1 0
__latexforti_select_task_b:nn #1 #2
cs_new:Nn __latexforti_select_task_b:nn
str_case:nn #1#2
00selectTaskA
01selectTaskB
10selectTaskC
11selectTaskD
ExplSyntaxOff
newcommandselectTaskAI'm task A
newcommandselectTaskBI'm task B
newcommandselectTaskCI'm task C
newcommandselectTaskDI'm task D
begindocument
selectTask00 --- selectTask0 -- selectTask0
selectTask01 --- selectTask1
selectTask10 --- selectTask1
selectTask11
enddocument
An implementation with more classical methods (but arguments cannot be
as in the previous one).
documentclassarticle
makeatletter
newcommandselectTask[2]%
expandafterlatexforti@selectexpandafter
number0#1expandafterexpandafternumber0#2%
newcommandlatexforti@select[2]%
ifcasenumexpr#1*2+#2relax % the arguments are binary digits!
selectTaskA
or
selectTaskB
or
selectTaskC
or
selectTaskD
fi
makeatother
newcommandselectTaskAI'm task A
newcommandselectTaskBI'm task B
newcommandselectTaskCI'm task C
newcommandselectTaskDI'm task D
begindocument
selectTask00 --- selectTask0 -- selectTask0
selectTask01 --- selectTask1
selectTask10 --- selectTask1
selectTask11
enddocument
edited 8 hours ago
answered 8 hours ago
egregegreg
748k8919573300
748k8919573300
add a comment |
add a comment |
If the arguments are only allowed to be blank or numeric, you can use an ifnum
comparison.
documentclass[]scrartcl
defselectTaskA00
defselectTaskB01
defselectTaskC10
defselectTaskD11
newcommandselectTask[2]%
ifnum9=#19relax
ifnum9=#29relax
selectTaskA
else
selectTaskB
fi
else
ifnum9=#29relax
selectTaskC
else
selectTaskD
fi
fi
begindocument
selectTask\
selectTask0\
selectTask0\
selectTask00\
selectTask1\
selectTask1\
selectTask11
enddocument
add a comment |
If the arguments are only allowed to be blank or numeric, you can use an ifnum
comparison.
documentclass[]scrartcl
defselectTaskA00
defselectTaskB01
defselectTaskC10
defselectTaskD11
newcommandselectTask[2]%
ifnum9=#19relax
ifnum9=#29relax
selectTaskA
else
selectTaskB
fi
else
ifnum9=#29relax
selectTaskC
else
selectTaskD
fi
fi
begindocument
selectTask\
selectTask0\
selectTask0\
selectTask00\
selectTask1\
selectTask1\
selectTask11
enddocument
add a comment |
If the arguments are only allowed to be blank or numeric, you can use an ifnum
comparison.
documentclass[]scrartcl
defselectTaskA00
defselectTaskB01
defselectTaskC10
defselectTaskD11
newcommandselectTask[2]%
ifnum9=#19relax
ifnum9=#29relax
selectTaskA
else
selectTaskB
fi
else
ifnum9=#29relax
selectTaskC
else
selectTaskD
fi
fi
begindocument
selectTask\
selectTask0\
selectTask0\
selectTask00\
selectTask1\
selectTask1\
selectTask11
enddocument
If the arguments are only allowed to be blank or numeric, you can use an ifnum
comparison.
documentclass[]scrartcl
defselectTaskA00
defselectTaskB01
defselectTaskC10
defselectTaskD11
newcommandselectTask[2]%
ifnum9=#19relax
ifnum9=#29relax
selectTaskA
else
selectTaskB
fi
else
ifnum9=#29relax
selectTaskC
else
selectTaskD
fi
fi
begindocument
selectTask\
selectTask0\
selectTask0\
selectTask00\
selectTask1\
selectTask1\
selectTask11
enddocument
answered 8 hours ago
Steven B. SegletesSteven B. Segletes
166k9210427
166k9210427
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%2f495685%2fnewcommand-with-parameter-blank-or-zero%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
2
ifrelax#1relax
is not a good test– David Carlisle
9 hours ago
your question would be easier to answer if your code was a complete document that could be run with testcases rather than a fragment with undefined commands in each branch
– David Carlisle
8 hours ago
Adding to @DavidCarlisle's first comment: A better test would be
ifrelaxdetokenize#1relax
.– Skillmon
8 hours ago
There is also ifempty#1relax, but for best results use something like
def@tempa#1
to do comparisons.– John Kormylo
8 hours ago
If the arguments will always be numeric (or blank),
newcommandselectTask[2]ifnum9=#19relax ifnum9=#29relax selectTaskA else selectTaskB fi else ifnum9=#29relax selectTaskC else selectTaskD fi fi
– Steven B. Segletes
8 hours ago