How can I separate the number from the unit in argument? The Next CEO of Stack OverflowA macro...
Car headlights in a world without electricity
Is a distribution that is normal, but highly skewed, considered Gaussian?
What does it mean 'exit 1' for a job status after rclone sync
Read/write a pipe-delimited file line by line with some simple text manipulation
Incomplete cube
Horror film about a man brought out of cryogenic suspension without a soul, around 1990
Small nick on power cord from an electric alarm clock, and copper wiring exposed but intact
Why do we say “un seul M” and not “une seule M” even though M is a “consonne”?
Is it OK to decorate a log book cover?
Direct Implications Between USA and UK in Event of No-Deal Brexit
pgfplots: How to draw a tangent graph below two others?
Calculating discount not working
Cannot restore registry to default in Windows 10?
How to avoid supervisors with prejudiced views?
What day is it again?
Raspberry pi 3 B with Ubuntu 18.04 server arm64: what pi version
What is Decreasing Arithmetic progression?
Why did Batya get tzaraat?
Does Germany produce more waste than the US?
Is it reasonable to ask other researchers to send me their previous grant applications?
Why did early computer designers eschew integers?
Another proof that dividing by 0 does not exist -- is it right?
Man transported from Alternate World into ours by a Neutrino Detector
Salesforce opportunity stages
How can I separate the number from the unit in argument?
The Next CEO of Stack OverflowA 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:
documentclass{article}
usepackage[utf8]{inputenc}
newcommand{cmd}[1]{#1} % change here to capture only the number.
begin{document}
cmd{12pt} % print 12pt while I would get only 12, in a generic case.
end{document}
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:
documentclass{article}
usepackage[utf8]{inputenc}
newcommand{cmd}[1]{#1} % change here to capture only the number.
begin{document}
cmd{12pt} % print 12pt while I would get only 12, in a generic case.
end{document}
macros lengths unit-of-measure
documentclass{article} defcmd#1pt{#1} begin{document} cmd12pt end{document}
– marmot
2 hours ago
@marmot - That'll work forptas the unit, but forem,mm,km, etc. :-)
– Mico
1 hour ago
@Mico Yes, I know. But it does answer the question.
– marmot
1 hour ago
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:
documentclass{article}
usepackage[utf8]{inputenc}
newcommand{cmd}[1]{#1} % change here to capture only the number.
begin{document}
cmd{12pt} % print 12pt while I would get only 12, in a generic case.
end{document}
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:
documentclass{article}
usepackage[utf8]{inputenc}
newcommand{cmd}[1]{#1} % change here to capture only the number.
begin{document}
cmd{12pt} % print 12pt while I would get only 12, in a generic case.
end{document}
macros lengths unit-of-measure
macros lengths unit-of-measure
edited 2 hours ago
Bernard
175k776207
175k776207
asked 2 hours ago
R. NR. N
313214
313214
documentclass{article} defcmd#1pt{#1} begin{document} cmd12pt end{document}
– marmot
2 hours ago
@marmot - That'll work forptas the unit, but forem,mm,km, etc. :-)
– Mico
1 hour ago
@Mico Yes, I know. But it does answer the question.
– marmot
1 hour ago
add a comment |
documentclass{article} defcmd#1pt{#1} begin{document} cmd12pt end{document}
– marmot
2 hours ago
@marmot - That'll work forptas the unit, but forem,mm,km, etc. :-)
– Mico
1 hour ago
@Mico Yes, I know. But it does answer the question.
– marmot
1 hour ago
documentclass{article} defcmd#1pt{#1} begin{document} cmd12pt end{document}– marmot
2 hours ago
documentclass{article} defcmd#1pt{#1} begin{document} cmd12pt end{document}– marmot
2 hours ago
@marmot - That'll work for
pt as the unit, but for em, mm, km, etc. :-)– Mico
1 hour ago
@marmot - That'll work for
pt as the unit, but for em, mm, km, etc. :-)– Mico
1 hour ago
@Mico Yes, I know. But it does answer the question.
– marmot
1 hour ago
@Mico Yes, I know. But it does answer the question.
– marmot
1 hour ago
add a comment |
3 Answers
3
active
oldest
votes
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 arg{XX55km} is 55, and the output of cmd{km} is blank (empty).

% !TEX TS-program = lualatex
documentclass{article}
usepackage{luacode} % for 'luacode' environment
begin{luacode}
function get_num ( s )
tex.sprint ( ( s:gsub ( "([%d%.%,%-%+]*)([%a%s]*)" , "%1" ) ) )
end
end{luacode}
newcommandcmd[1]{directlua{get_num("#1")}} % "wrapper" macro
begin{document}
cmd{12pt}, $cmd{-47km}$, cmd{+5.7in}, cmd{3,14159CM}
end{document}
add a comment |
Assuming the unit consists of two characters, you can do it in an expandable way:
documentclass{article}
usepackage{xparse}
ExplSyntaxOn
NewExpandableDocumentCommand{getnumber}{m}
{
tl_range:nnn { #1 } { 1 } { -3 } % from the first to the last but two character
}
ExplSyntaxOff
begin{document}
getnumber{12pt}, $getnumber{-47km}$, getnumber{+5.7in}, getnumber{3,14159CM}
end{document}

add a comment |
pgf does that without the need to invoke external programs and converts the units into points.
documentclass{article}
usepackage{pgf}
newcommand{cmd}[1]{pgfmathparse{#1}pgfmathresult}
begin{document}
cmd{12pt} cmd{1cm}
end{document}

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 |
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
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 arg{XX55km} is 55, and the output of cmd{km} is blank (empty).

% !TEX TS-program = lualatex
documentclass{article}
usepackage{luacode} % for 'luacode' environment
begin{luacode}
function get_num ( s )
tex.sprint ( ( s:gsub ( "([%d%.%,%-%+]*)([%a%s]*)" , "%1" ) ) )
end
end{luacode}
newcommandcmd[1]{directlua{get_num("#1")}} % "wrapper" macro
begin{document}
cmd{12pt}, $cmd{-47km}$, cmd{+5.7in}, cmd{3,14159CM}
end{document}
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 arg{XX55km} is 55, and the output of cmd{km} is blank (empty).

% !TEX TS-program = lualatex
documentclass{article}
usepackage{luacode} % for 'luacode' environment
begin{luacode}
function get_num ( s )
tex.sprint ( ( s:gsub ( "([%d%.%,%-%+]*)([%a%s]*)" , "%1" ) ) )
end
end{luacode}
newcommandcmd[1]{directlua{get_num("#1")}} % "wrapper" macro
begin{document}
cmd{12pt}, $cmd{-47km}$, cmd{+5.7in}, cmd{3,14159CM}
end{document}
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 arg{XX55km} is 55, and the output of cmd{km} is blank (empty).

% !TEX TS-program = lualatex
documentclass{article}
usepackage{luacode} % for 'luacode' environment
begin{luacode}
function get_num ( s )
tex.sprint ( ( s:gsub ( "([%d%.%,%-%+]*)([%a%s]*)" , "%1" ) ) )
end
end{luacode}
newcommandcmd[1]{directlua{get_num("#1")}} % "wrapper" macro
begin{document}
cmd{12pt}, $cmd{-47km}$, cmd{+5.7in}, cmd{3,14159CM}
end{document}
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 arg{XX55km} is 55, and the output of cmd{km} is blank (empty).

% !TEX TS-program = lualatex
documentclass{article}
usepackage{luacode} % for 'luacode' environment
begin{luacode}
function get_num ( s )
tex.sprint ( ( s:gsub ( "([%d%.%,%-%+]*)([%a%s]*)" , "%1" ) ) )
end
end{luacode}
newcommandcmd[1]{directlua{get_num("#1")}} % "wrapper" macro
begin{document}
cmd{12pt}, $cmd{-47km}$, cmd{+5.7in}, cmd{3,14159CM}
end{document}
edited 1 hour ago
answered 1 hour ago
MicoMico
285k31388778
285k31388778
add a comment |
add a comment |
Assuming the unit consists of two characters, you can do it in an expandable way:
documentclass{article}
usepackage{xparse}
ExplSyntaxOn
NewExpandableDocumentCommand{getnumber}{m}
{
tl_range:nnn { #1 } { 1 } { -3 } % from the first to the last but two character
}
ExplSyntaxOff
begin{document}
getnumber{12pt}, $getnumber{-47km}$, getnumber{+5.7in}, getnumber{3,14159CM}
end{document}

add a comment |
Assuming the unit consists of two characters, you can do it in an expandable way:
documentclass{article}
usepackage{xparse}
ExplSyntaxOn
NewExpandableDocumentCommand{getnumber}{m}
{
tl_range:nnn { #1 } { 1 } { -3 } % from the first to the last but two character
}
ExplSyntaxOff
begin{document}
getnumber{12pt}, $getnumber{-47km}$, getnumber{+5.7in}, getnumber{3,14159CM}
end{document}

add a comment |
Assuming the unit consists of two characters, you can do it in an expandable way:
documentclass{article}
usepackage{xparse}
ExplSyntaxOn
NewExpandableDocumentCommand{getnumber}{m}
{
tl_range:nnn { #1 } { 1 } { -3 } % from the first to the last but two character
}
ExplSyntaxOff
begin{document}
getnumber{12pt}, $getnumber{-47km}$, getnumber{+5.7in}, getnumber{3,14159CM}
end{document}

Assuming the unit consists of two characters, you can do it in an expandable way:
documentclass{article}
usepackage{xparse}
ExplSyntaxOn
NewExpandableDocumentCommand{getnumber}{m}
{
tl_range:nnn { #1 } { 1 } { -3 } % from the first to the last but two character
}
ExplSyntaxOff
begin{document}
getnumber{12pt}, $getnumber{-47km}$, getnumber{+5.7in}, getnumber{3,14159CM}
end{document}

answered 1 hour ago
egregegreg
731k8819293244
731k8819293244
add a comment |
add a comment |
pgf does that without the need to invoke external programs and converts the units into points.
documentclass{article}
usepackage{pgf}
newcommand{cmd}[1]{pgfmathparse{#1}pgfmathresult}
begin{document}
cmd{12pt} cmd{1cm}
end{document}

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.
documentclass{article}
usepackage{pgf}
newcommand{cmd}[1]{pgfmathparse{#1}pgfmathresult}
begin{document}
cmd{12pt} cmd{1cm}
end{document}

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.
documentclass{article}
usepackage{pgf}
newcommand{cmd}[1]{pgfmathparse{#1}pgfmathresult}
begin{document}
cmd{12pt} cmd{1cm}
end{document}

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.
documentclass{article}
usepackage{pgf}
newcommand{cmd}[1]{pgfmathparse{#1}pgfmathresult}
begin{document}
cmd{12pt} cmd{1cm}
end{document}

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 1 hour ago
marmotmarmot
113k5145275
113k5145275
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

documentclass{article} defcmd#1pt{#1} begin{document} cmd12pt end{document}– marmot
2 hours ago
@marmot - That'll work for
ptas the unit, but forem,mm,km, etc. :-)– Mico
1 hour ago
@Mico Yes, I know. But it does answer the question.
– marmot
1 hour ago