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

                      Adding axes to figuresAdding axes labels to LaTeX figuresLaTeX equivalent of ConTeXt buffersRotate a node but not its content: the case of the ellipse decorationHow to define the default vertical distance between nodes?TikZ scaling graphic and adjust node position and keep font sizeNumerical conditional within tikz keys?adding axes to shapesAlign axes across subfiguresAdding figures with a certain orderLine up nested tikz enviroments or how to get rid of themAdding axes labels to LaTeX figures

                      Tähtien Talli Jäsenet | Lähteet | NavigointivalikkoSuomen Hippos – Tähtien Talli

                      Do these cracks on my tires look bad? The Next CEO of Stack OverflowDry rot tire should I replace?Having to replace tiresFishtailed so easily? Bad tires? ABS?Filling the tires with something other than air, to avoid puncture hassles?Used Michelin tires safe to install?Do these tyre cracks necessitate replacement?Rumbling noise: tires or mechanicalIs it possible to fix noisy feathered tires?Are bad winter tires still better than summer tires in winter?Torque converter failure - Related to replacing only 2 tires?Why use snow tires on all 4 wheels on 2-wheel-drive cars?