Defining new unit commands as derivatives of `si` units












0















In my document, I need to use a large number of different SI units. To ease my typing, I usually define new commands as newcommand{unitmass}{si{kilogram}} or newcommand{unitmomentum}{si{kilogrammeterpersecond}}. Then I can use something like 2.5unitmassor 3.4unitmementum and be done. It saves me a lot of typing effort.



Not much of a problem till I need si[2.5d-15]{kilogrammeterpersecond} (notice the scientific notation of the number), which still requires me to type the full shebang. One alternative is to use math notation only for the number as in $2.5times 10^{-17}$unitmomentum$ which is not a terrific option. Ideally I would want something like unitmomentum[2.5d-15] to get by.



Which means, I have to define my commands way more complicated and there are dozens (rapidly reaching hundred) of it. Hence I must define a template of optional argument accepting commands.



My first approach was to



newcommand{SimpleSIunit}[2]{%
expandafternewcommandcsname #1endcsname{si{#2}}%
}


It works if I remain content with no optional arguments. I can issue dozens of directives like SimpleSIunit{unittorque}{newtonmeter} and my basic need is met.



However, what I really want is to say



newcommand{SimpleSIunit}[2]{%
expandafternewcommand[1]csname #1endcsname{si[##1]{#2}}%
}


Which obviously does no good. Any ideas how do I rectify it?









share



























    0















    In my document, I need to use a large number of different SI units. To ease my typing, I usually define new commands as newcommand{unitmass}{si{kilogram}} or newcommand{unitmomentum}{si{kilogrammeterpersecond}}. Then I can use something like 2.5unitmassor 3.4unitmementum and be done. It saves me a lot of typing effort.



    Not much of a problem till I need si[2.5d-15]{kilogrammeterpersecond} (notice the scientific notation of the number), which still requires me to type the full shebang. One alternative is to use math notation only for the number as in $2.5times 10^{-17}$unitmomentum$ which is not a terrific option. Ideally I would want something like unitmomentum[2.5d-15] to get by.



    Which means, I have to define my commands way more complicated and there are dozens (rapidly reaching hundred) of it. Hence I must define a template of optional argument accepting commands.



    My first approach was to



    newcommand{SimpleSIunit}[2]{%
    expandafternewcommandcsname #1endcsname{si{#2}}%
    }


    It works if I remain content with no optional arguments. I can issue dozens of directives like SimpleSIunit{unittorque}{newtonmeter} and my basic need is met.



    However, what I really want is to say



    newcommand{SimpleSIunit}[2]{%
    expandafternewcommand[1]csname #1endcsname{si[##1]{#2}}%
    }


    Which obviously does no good. Any ideas how do I rectify it?









    share

























      0












      0








      0








      In my document, I need to use a large number of different SI units. To ease my typing, I usually define new commands as newcommand{unitmass}{si{kilogram}} or newcommand{unitmomentum}{si{kilogrammeterpersecond}}. Then I can use something like 2.5unitmassor 3.4unitmementum and be done. It saves me a lot of typing effort.



      Not much of a problem till I need si[2.5d-15]{kilogrammeterpersecond} (notice the scientific notation of the number), which still requires me to type the full shebang. One alternative is to use math notation only for the number as in $2.5times 10^{-17}$unitmomentum$ which is not a terrific option. Ideally I would want something like unitmomentum[2.5d-15] to get by.



      Which means, I have to define my commands way more complicated and there are dozens (rapidly reaching hundred) of it. Hence I must define a template of optional argument accepting commands.



      My first approach was to



      newcommand{SimpleSIunit}[2]{%
      expandafternewcommandcsname #1endcsname{si{#2}}%
      }


      It works if I remain content with no optional arguments. I can issue dozens of directives like SimpleSIunit{unittorque}{newtonmeter} and my basic need is met.



      However, what I really want is to say



      newcommand{SimpleSIunit}[2]{%
      expandafternewcommand[1]csname #1endcsname{si[##1]{#2}}%
      }


      Which obviously does no good. Any ideas how do I rectify it?









      share














      In my document, I need to use a large number of different SI units. To ease my typing, I usually define new commands as newcommand{unitmass}{si{kilogram}} or newcommand{unitmomentum}{si{kilogrammeterpersecond}}. Then I can use something like 2.5unitmassor 3.4unitmementum and be done. It saves me a lot of typing effort.



      Not much of a problem till I need si[2.5d-15]{kilogrammeterpersecond} (notice the scientific notation of the number), which still requires me to type the full shebang. One alternative is to use math notation only for the number as in $2.5times 10^{-17}$unitmomentum$ which is not a terrific option. Ideally I would want something like unitmomentum[2.5d-15] to get by.



      Which means, I have to define my commands way more complicated and there are dozens (rapidly reaching hundred) of it. Hence I must define a template of optional argument accepting commands.



      My first approach was to



      newcommand{SimpleSIunit}[2]{%
      expandafternewcommandcsname #1endcsname{si{#2}}%
      }


      It works if I remain content with no optional arguments. I can issue dozens of directives like SimpleSIunit{unittorque}{newtonmeter} and my basic need is met.



      However, what I really want is to say



      newcommand{SimpleSIunit}[2]{%
      expandafternewcommand[1]csname #1endcsname{si[##1]{#2}}%
      }


      Which obviously does no good. Any ideas how do I rectify it?







      siunitx





      share












      share










      share



      share










      asked 9 mins ago









      magguumagguu

      37617




      37617






















          0






          active

          oldest

          votes











          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%2f479400%2fdefining-new-unit-commands-as-derivatives-of-si-units%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          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%2f479400%2fdefining-new-unit-commands-as-derivatives-of-si-units%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

          Accessing regular linux commands in Huawei's Dopra Linux

          Can't connect RFCOMM socket: Host is down

          Kernel panic - not syncing: Fatal Exception in Interrupt