How can I separate the number from the unit in argument?A macro that expands to the length of its argumentMeasuring the distance from text to the top of the pageHow to add a unit to a command argument?Extracting the basename from a filepath argumentWrapper for siunitx' SI macro to automatically split number and unitHow do I use an auxilliary file for my own commands?Is there an `ex` unit equivalent for the capital 'X' in LaTeXDuplicate and modify section hierarchyMultiple Choice Answer Key in exam package at the end of documentCan one use the Potrzebie unit system in (La)TeX?
What causes the sudden spool-up sound from an F-16 when enabling afterburner?
New order #4: World
LWC and complex parameters
Creating a loop after a break using Markov Chain in Tikz
Why did the Germans forbid the possession of pet pigeons in Rostov-on-Don in 1941?
Patience, young "Padovan"
How did the USSR manage to innovate in an environment characterized by government censorship and high bureaucracy?
Typesetting a double Over Dot on top of a symbol
How can I fix this gap between bookcases I made?
Is it wise to hold on to stock that has plummeted and then stabilized?
What is GPS' 19 year rollover and does it present a cybersecurity issue?
Pristine Bit Checking
Why airport relocation isn't done gradually?
Prime joint compound before latex paint?
"listening to me about as much as you're listening to this pole here"
Information to fellow intern about hiring?
Is it legal to have the "// (c) 2019 John Smith" header in all files when there are hundreds of contributors?
Are white and non-white police officers equally likely to kill black suspects?
Can I find out the caloric content of bread by dehydrating it?
Map list to bin numbers
Is Social Media Science Fiction?
Manga about a female worker who got dragged into another world together with this high school girl and she was just told she's not needed anymore
Doomsday-clock for my fantasy planet
"My colleague's body is amazing"
How can I separate the number from the unit in argument?
A macro that expands to the length of its argumentMeasuring the distance from text to the top of the pageHow to add a unit to a command argument?Extracting the basename from a filepath argumentWrapper for siunitx' SI macro to automatically split number and unitHow do I use an auxilliary file for my own commands?Is there an `ex` unit equivalent for the capital 'X' in LaTeXDuplicate and modify section hierarchyMultiple Choice Answer Key in exam package at the end of documentCan one use the Potrzebie unit system in (La)TeX?
Let us say that I have a function, in which I give a number plus a unit. I would like to get only the number, is it possible ?
Here is a MWE:
documentclassarticle
usepackage[utf8]inputenc
newcommandcmd[1]#1 % change here to capture only the number.
begindocument
cmd12pt % print 12pt while I would get only 12, in a generic case.
enddocument
macros lengths unit-of-measure
add a comment |
Let us say that I have a function, in which I give a number plus a unit. I would like to get only the number, is it possible ?
Here is a MWE:
documentclassarticle
usepackage[utf8]inputenc
newcommandcmd[1]#1 % change here to capture only the number.
begindocument
cmd12pt % print 12pt while I would get only 12, in a generic case.
enddocument
macros lengths unit-of-measure
1
documentclassarticle defcmd#1pt#1 begindocument cmd12pt enddocument
– marmot
Apr 1 at 18:55
@marmot - That'll work forpt
as the unit, but forem
,mm
,km
, etc. :-)
– Mico
Apr 1 at 20:24
@Mico Yes, I know. But it does answer the question.
– marmot
Apr 1 at 20:25
add a comment |
Let us say that I have a function, in which I give a number plus a unit. I would like to get only the number, is it possible ?
Here is a MWE:
documentclassarticle
usepackage[utf8]inputenc
newcommandcmd[1]#1 % change here to capture only the number.
begindocument
cmd12pt % print 12pt while I would get only 12, in a generic case.
enddocument
macros lengths unit-of-measure
Let us say that I have a function, in which I give a number plus a unit. I would like to get only the number, is it possible ?
Here is a MWE:
documentclassarticle
usepackage[utf8]inputenc
newcommandcmd[1]#1 % change here to capture only the number.
begindocument
cmd12pt % print 12pt while I would get only 12, in a generic case.
enddocument
macros lengths unit-of-measure
macros lengths unit-of-measure
edited Apr 1 at 18:41
Bernard
175k778209
175k778209
asked Apr 1 at 18:38
R. NR. N
320214
320214
1
documentclassarticle defcmd#1pt#1 begindocument cmd12pt enddocument
– marmot
Apr 1 at 18:55
@marmot - That'll work forpt
as the unit, but forem
,mm
,km
, etc. :-)
– Mico
Apr 1 at 20:24
@Mico Yes, I know. But it does answer the question.
– marmot
Apr 1 at 20:25
add a comment |
1
documentclassarticle defcmd#1pt#1 begindocument cmd12pt enddocument
– marmot
Apr 1 at 18:55
@marmot - That'll work forpt
as the unit, but forem
,mm
,km
, etc. :-)
– Mico
Apr 1 at 20:24
@Mico Yes, I know. But it does answer the question.
– marmot
Apr 1 at 20:25
1
1
documentclassarticle defcmd#1pt#1 begindocument cmd12pt enddocument
– marmot
Apr 1 at 18:55
documentclassarticle defcmd#1pt#1 begindocument cmd12pt enddocument
– marmot
Apr 1 at 18:55
@marmot - That'll work for
pt
as the unit, but for em
, mm
, km
, etc. :-)– Mico
Apr 1 at 20:24
@marmot - That'll work for
pt
as the unit, but for em
, mm
, km
, etc. :-)– Mico
Apr 1 at 20:24
@Mico Yes, I know. But it does answer the question.
– marmot
Apr 1 at 20:25
@Mico Yes, I know. But it does answer the question.
– marmot
Apr 1 at 20:25
add a comment |
3 Answers
3
active
oldest
votes
pgf
does that without the need to invoke external programs and converts the units into points.
documentclassarticle
usepackagepgf
newcommandcmd[1]pgfmathparse#1pgfmathresult
begindocument
cmd12pt cmd1cm
enddocument
Note that if you're bugged by the .0
: this can easily be removed with pgfmathprintnumber[<your number format here>]pgfmathresult
if you choose a number format that you like.
add a comment |
Assuming the unit consists of two characters, you can do it in an expandable way:
documentclassarticle
usepackagexparse
ExplSyntaxOn
NewExpandableDocumentCommandgetnumberm
tl_range:nnn #1 1 -3 % from the first to the last but two character
ExplSyntaxOff
begindocument
getnumber12pt, $getnumber-47km$, getnumber+5.7in, getnumber3,14159CM
enddocument
Couldgetnumber
be generalized, say by taking an integer as an optional argument (with the default value of the optional argument set to 2), to handle cases of units which contain a number of characters not equal to 2? E.g.,getnumber[3]5.678mol
orgetnumber[1]1.23m
.
– Mico
Apr 2 at 6:56
add a comment |
Here's a LuaLaTeX-based solution. It sets up a LaTeX macro called cmd
-- a "wrapper" -- that invokes a Lua function that does all of the work. The Lua function expects its argument to consist of two parts: the first part is numeric, i.e., consists of the digits 0
thru 9
, plus possibly the characters ,
, .
, -
, and +
; the part second is alphabetic, i.e., uppercase and lowercase letters, plus possibly whitespace.
Per your typesetting objective, the function returns just the numeric, part. If the argument of cmd
does not start with a numeric component, the prefix part is discarded as well. E.g., the output of argXX55km
is 55
, and the output of cmdkm
is blank (empty).
% !TEX TS-program = lualatex
documentclassarticle
usepackageluacode % for 'luacode' environment
beginluacode
function get_num ( s )
tex.sprint ( ( s:gsub ( "([%d%.%,%-%+]*)([%a%s]*)" , "%1" ) ) )
end
endluacode
newcommandcmd[1]directluaget_num("#1") % "wrapper" macro
begindocument
cmd12pt, $cmd-47km$, cmd+5.7in, cmd3,14159CM
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%2f482628%2fhow-can-i-separate-the-number-from-the-unit-in-argument%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
pgf
does that without the need to invoke external programs and converts the units into points.
documentclassarticle
usepackagepgf
newcommandcmd[1]pgfmathparse#1pgfmathresult
begindocument
cmd12pt cmd1cm
enddocument
Note that if you're bugged by the .0
: this can easily be removed with pgfmathprintnumber[<your number format here>]pgfmathresult
if you choose a number format that you like.
add a comment |
pgf
does that without the need to invoke external programs and converts the units into points.
documentclassarticle
usepackagepgf
newcommandcmd[1]pgfmathparse#1pgfmathresult
begindocument
cmd12pt cmd1cm
enddocument
Note that if you're bugged by the .0
: this can easily be removed with pgfmathprintnumber[<your number format here>]pgfmathresult
if you choose a number format that you like.
add a comment |
pgf
does that without the need to invoke external programs and converts the units into points.
documentclassarticle
usepackagepgf
newcommandcmd[1]pgfmathparse#1pgfmathresult
begindocument
cmd12pt cmd1cm
enddocument
Note that if you're bugged by the .0
: this can easily be removed with pgfmathprintnumber[<your number format here>]pgfmathresult
if you choose a number format that you like.
pgf
does that without the need to invoke external programs and converts the units into points.
documentclassarticle
usepackagepgf
newcommandcmd[1]pgfmathparse#1pgfmathresult
begindocument
cmd12pt cmd1cm
enddocument
Note that if you're bugged by the .0
: this can easily be removed with pgfmathprintnumber[<your number format here>]pgfmathresult
if you choose a number format that you like.
answered Apr 1 at 20:30
marmotmarmot
116k5147277
116k5147277
add a comment |
add a comment |
Assuming the unit consists of two characters, you can do it in an expandable way:
documentclassarticle
usepackagexparse
ExplSyntaxOn
NewExpandableDocumentCommandgetnumberm
tl_range:nnn #1 1 -3 % from the first to the last but two character
ExplSyntaxOff
begindocument
getnumber12pt, $getnumber-47km$, getnumber+5.7in, getnumber3,14159CM
enddocument
Couldgetnumber
be generalized, say by taking an integer as an optional argument (with the default value of the optional argument set to 2), to handle cases of units which contain a number of characters not equal to 2? E.g.,getnumber[3]5.678mol
orgetnumber[1]1.23m
.
– Mico
Apr 2 at 6:56
add a comment |
Assuming the unit consists of two characters, you can do it in an expandable way:
documentclassarticle
usepackagexparse
ExplSyntaxOn
NewExpandableDocumentCommandgetnumberm
tl_range:nnn #1 1 -3 % from the first to the last but two character
ExplSyntaxOff
begindocument
getnumber12pt, $getnumber-47km$, getnumber+5.7in, getnumber3,14159CM
enddocument
Couldgetnumber
be generalized, say by taking an integer as an optional argument (with the default value of the optional argument set to 2), to handle cases of units which contain a number of characters not equal to 2? E.g.,getnumber[3]5.678mol
orgetnumber[1]1.23m
.
– Mico
Apr 2 at 6:56
add a comment |
Assuming the unit consists of two characters, you can do it in an expandable way:
documentclassarticle
usepackagexparse
ExplSyntaxOn
NewExpandableDocumentCommandgetnumberm
tl_range:nnn #1 1 -3 % from the first to the last but two character
ExplSyntaxOff
begindocument
getnumber12pt, $getnumber-47km$, getnumber+5.7in, getnumber3,14159CM
enddocument
Assuming the unit consists of two characters, you can do it in an expandable way:
documentclassarticle
usepackagexparse
ExplSyntaxOn
NewExpandableDocumentCommandgetnumberm
tl_range:nnn #1 1 -3 % from the first to the last but two character
ExplSyntaxOff
begindocument
getnumber12pt, $getnumber-47km$, getnumber+5.7in, getnumber3,14159CM
enddocument
answered Apr 1 at 20:30
egregegreg
732k8919303254
732k8919303254
Couldgetnumber
be generalized, say by taking an integer as an optional argument (with the default value of the optional argument set to 2), to handle cases of units which contain a number of characters not equal to 2? E.g.,getnumber[3]5.678mol
orgetnumber[1]1.23m
.
– Mico
Apr 2 at 6:56
add a comment |
Couldgetnumber
be generalized, say by taking an integer as an optional argument (with the default value of the optional argument set to 2), to handle cases of units which contain a number of characters not equal to 2? E.g.,getnumber[3]5.678mol
orgetnumber[1]1.23m
.
– Mico
Apr 2 at 6:56
Could
getnumber
be generalized, say by taking an integer as an optional argument (with the default value of the optional argument set to 2), to handle cases of units which contain a number of characters not equal to 2? E.g., getnumber[3]5.678mol
or getnumber[1]1.23m
.– Mico
Apr 2 at 6:56
Could
getnumber
be generalized, say by taking an integer as an optional argument (with the default value of the optional argument set to 2), to handle cases of units which contain a number of characters not equal to 2? E.g., getnumber[3]5.678mol
or getnumber[1]1.23m
.– Mico
Apr 2 at 6:56
add a comment |
Here's a LuaLaTeX-based solution. It sets up a LaTeX macro called cmd
-- a "wrapper" -- that invokes a Lua function that does all of the work. The Lua function expects its argument to consist of two parts: the first part is numeric, i.e., consists of the digits 0
thru 9
, plus possibly the characters ,
, .
, -
, and +
; the part second is alphabetic, i.e., uppercase and lowercase letters, plus possibly whitespace.
Per your typesetting objective, the function returns just the numeric, part. If the argument of cmd
does not start with a numeric component, the prefix part is discarded as well. E.g., the output of argXX55km
is 55
, and the output of cmdkm
is blank (empty).
% !TEX TS-program = lualatex
documentclassarticle
usepackageluacode % for 'luacode' environment
beginluacode
function get_num ( s )
tex.sprint ( ( s:gsub ( "([%d%.%,%-%+]*)([%a%s]*)" , "%1" ) ) )
end
endluacode
newcommandcmd[1]directluaget_num("#1") % "wrapper" macro
begindocument
cmd12pt, $cmd-47km$, cmd+5.7in, cmd3,14159CM
enddocument
add a comment |
Here's a LuaLaTeX-based solution. It sets up a LaTeX macro called cmd
-- a "wrapper" -- that invokes a Lua function that does all of the work. The Lua function expects its argument to consist of two parts: the first part is numeric, i.e., consists of the digits 0
thru 9
, plus possibly the characters ,
, .
, -
, and +
; the part second is alphabetic, i.e., uppercase and lowercase letters, plus possibly whitespace.
Per your typesetting objective, the function returns just the numeric, part. If the argument of cmd
does not start with a numeric component, the prefix part is discarded as well. E.g., the output of argXX55km
is 55
, and the output of cmdkm
is blank (empty).
% !TEX TS-program = lualatex
documentclassarticle
usepackageluacode % for 'luacode' environment
beginluacode
function get_num ( s )
tex.sprint ( ( s:gsub ( "([%d%.%,%-%+]*)([%a%s]*)" , "%1" ) ) )
end
endluacode
newcommandcmd[1]directluaget_num("#1") % "wrapper" macro
begindocument
cmd12pt, $cmd-47km$, cmd+5.7in, cmd3,14159CM
enddocument
add a comment |
Here's a LuaLaTeX-based solution. It sets up a LaTeX macro called cmd
-- a "wrapper" -- that invokes a Lua function that does all of the work. The Lua function expects its argument to consist of two parts: the first part is numeric, i.e., consists of the digits 0
thru 9
, plus possibly the characters ,
, .
, -
, and +
; the part second is alphabetic, i.e., uppercase and lowercase letters, plus possibly whitespace.
Per your typesetting objective, the function returns just the numeric, part. If the argument of cmd
does not start with a numeric component, the prefix part is discarded as well. E.g., the output of argXX55km
is 55
, and the output of cmdkm
is blank (empty).
% !TEX TS-program = lualatex
documentclassarticle
usepackageluacode % for 'luacode' environment
beginluacode
function get_num ( s )
tex.sprint ( ( s:gsub ( "([%d%.%,%-%+]*)([%a%s]*)" , "%1" ) ) )
end
endluacode
newcommandcmd[1]directluaget_num("#1") % "wrapper" macro
begindocument
cmd12pt, $cmd-47km$, cmd+5.7in, cmd3,14159CM
enddocument
Here's a LuaLaTeX-based solution. It sets up a LaTeX macro called cmd
-- a "wrapper" -- that invokes a Lua function that does all of the work. The Lua function expects its argument to consist of two parts: the first part is numeric, i.e., consists of the digits 0
thru 9
, plus possibly the characters ,
, .
, -
, and +
; the part second is alphabetic, i.e., uppercase and lowercase letters, plus possibly whitespace.
Per your typesetting objective, the function returns just the numeric, part. If the argument of cmd
does not start with a numeric component, the prefix part is discarded as well. E.g., the output of argXX55km
is 55
, and the output of cmdkm
is blank (empty).
% !TEX TS-program = lualatex
documentclassarticle
usepackageluacode % for 'luacode' environment
beginluacode
function get_num ( s )
tex.sprint ( ( s:gsub ( "([%d%.%,%-%+]*)([%a%s]*)" , "%1" ) ) )
end
endluacode
newcommandcmd[1]directluaget_num("#1") % "wrapper" macro
begindocument
cmd12pt, $cmd-47km$, cmd+5.7in, cmd3,14159CM
enddocument
edited Apr 1 at 20:22
answered Apr 1 at 20:05
MicoMico
286k32390779
286k32390779
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%2f482628%2fhow-can-i-separate-the-number-from-the-unit-in-argument%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
1
documentclassarticle defcmd#1pt#1 begindocument cmd12pt enddocument
– marmot
Apr 1 at 18:55
@marmot - That'll work for
pt
as the unit, but forem
,mm
,km
, etc. :-)– Mico
Apr 1 at 20:24
@Mico Yes, I know. But it does answer the question.
– marmot
Apr 1 at 20:25