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?













3















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









share|improve this question



















  • 1





    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












  • @Mico Yes, I know. But it does answer the question.

    – marmot
    Apr 1 at 20:25















3















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









share|improve this question



















  • 1





    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












  • @Mico Yes, I know. But it does answer the question.

    – marmot
    Apr 1 at 20:25













3












3








3


0






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









share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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 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












  • 1





    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












  • @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










3 Answers
3






active

oldest

votes


















3














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


enter image description here



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.






share|improve this answer






























    5














    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


    enter image description here






    share|improve this answer























    • 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



















    4














    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).



    enter image description here



    % !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





    share|improve this answer

























      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
      );



      );













      draft saved

      draft discarded


















      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









      3














      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


      enter image description here



      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.






      share|improve this answer



























        3














        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


        enter image description here



        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.






        share|improve this answer

























          3












          3








          3







          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


          enter image description here



          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.






          share|improve this answer













          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


          enter image description here



          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.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Apr 1 at 20:30









          marmotmarmot

          116k5147277




          116k5147277





















              5














              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


              enter image description here






              share|improve this answer























              • 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
















              5














              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


              enter image description here






              share|improve this answer























              • 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














              5












              5








              5







              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


              enter image description here






              share|improve this answer













              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


              enter image description here







              share|improve this answer












              share|improve this answer



              share|improve this answer










              answered Apr 1 at 20:30









              egregegreg

              732k8919303254




              732k8919303254












              • 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

















              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












              4














              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).



              enter image description here



              % !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





              share|improve this answer





























                4














                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).



                enter image description here



                % !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





                share|improve this answer



























                  4












                  4








                  4







                  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).



                  enter image description here



                  % !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





                  share|improve this answer















                  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).



                  enter image description here



                  % !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






                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Apr 1 at 20:22

























                  answered Apr 1 at 20:05









                  MicoMico

                  286k32390779




                  286k32390779



























                      draft saved

                      draft discarded
















































                      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.




                      draft saved


                      draft discarded














                      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





















































                      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







                      Popular posts from this blog

                      Marja Vauras Lähteet | Aiheesta muualla | NavigointivalikkoMarja Vauras Turun yliopiston tutkimusportaalissaInfobox OKSuomalaisen Tiedeakatemian varsinaiset jäsenetKasvatustieteiden tiedekunnan dekaanit ja muu johtoMarja VaurasKoulutusvienti on kestävyys- ja ketteryyslaji (2.5.2017)laajentamallaWorldCat Identities0000 0001 0855 9405n86069603utb201588738523620927

                      Which is better: GPT or RelGAN for text generation?2019 Community Moderator ElectionWhat is the difference between TextGAN and LM for text generation?GANs (generative adversarial networks) possible for text as well?Generator loss not decreasing- text to image synthesisChoosing a right algorithm for template-based text generationHow should I format input and output for text generation with LSTMsGumbel Softmax vs Vanilla Softmax for GAN trainingWhich neural network to choose for classification from text/speech?NLP text autoencoder that generates text in poetic meterWhat is the interpretation of the expectation notation in the GAN formulation?What is the difference between TextGAN and LM for text generation?How to prepare the data for text generation task

                      Is this part of the description of the Archfey warlock's Misty Escape feature redundant?When is entropic ward considered “used”?How does the reaction timing work for Wrath of the Storm? Can it potentially prevent the damage from the triggering attack?Does the Dark Arts Archlich warlock patrons's Arcane Invisibility activate every time you cast a level 1+ spell?When attacking while invisible, when exactly does invisibility break?Can I cast Hellish Rebuke on my turn?Do I have to “pre-cast” a reaction spell in order for it to be triggered?What happens if a Player Misty Escapes into an Invisible CreatureCan a reaction interrupt multiattack?Does the Fiend-patron warlock's Hurl Through Hell feature dispel effects that require the target to be on the same plane as the caster?What are you allowed to do while using the Warlock's Eldritch Master feature?