Perform and show arithmetic with LuaLaTeXHow to do a 'printline' in LuaTeXLuaTeX: How to handle a Lua...

I'm flying to France today and my passport expires in less than 2 months

Watching something be written to a file live with tail

Why is 150k or 200k jobs considered good when there's 300k+ births a month?

High voltage LED indicator 40-1000 VDC without additional power supply

If human space travel is limited by the G force vulnerability, is there a way to counter G forces?

meaning of に in 本当に?

"You are your self first supporter", a more proper way to say it

Can I ask the recruiters in my resume to put the reason why I am rejected?

Do I have a twin with permutated remainders?

Can you really stack all of this on an Opportunity Attack?

Decision tree nodes overlapping with Tikz

How much of data wrangling is a data scientist's job?

Can a Cauchy sequence converge for one metric while not converging for another?

Why can't I see bouncing of switch on oscilloscope screen?

What typically incentivizes a professor to change jobs to a lower ranking university?

What would happen to a modern skyscraper if it rains micro blackholes?

Linear Path Optimization with Two Dependent Variables

Approximately how much travel time was saved by the opening of the Suez Canal in 1869?

Why "Having chlorophyll without photosynthesis is actually very dangerous" and "like living with a bomb"?

Are astronomers waiting to see something in an image from a gravitational lens that they've already seen in an adjacent image?

What is a clear way to write a bar that has an extra beat?

Operational amplifier as a comparator at high frequency

Is it legal for company to use my work email to pretend I still work there?

Why are electrically insulating heatsinks so rare? Is it just cost?



Perform and show arithmetic with LuaLaTeX


How to do a 'printline' in LuaTeXLuaTeX: How to handle a Lua function that prints TeX macrosLuaLatex: Difference between `dofile` and `require` when loading lua filesLuaLaTeX issue with string (need to escape)Compilation error with LuaLaTeXCompilation error with LuaLaTeX (texnansi.enc)Compilation sequence with lualatexLuaLatex, includespread and libreoffice table with %Print Latex Code with LuaLatex in functionCompiling classicthesis with LuaLaTexDoes LuaLaTeX mess with pagetotal?Lualatex, deal with pictures in luaConTeXt passing current counter value to lua













3















The function I'm trying to create is one that takes two numbers and prints the result with some math. The following is my code:



documentclass[12pt,a4paper]{article}

begin{document}
directlua{
function prod(a,b)
tex.print(a "$times$" b "$=$" a*c)
end
}

The product of 2 and 3: directlua{prod(2,3)}.
end{document}


I can't make it print the whole statement correctly. How to solve it?










share|improve this question




















  • 3





    Try tex.print("$" .. a .. "string\times" .. b .. "=" .. a*b .. "$")

    – moewe
    59 mins ago






  • 1





    Unlike TeX, to which everything is (by default) a token to be typeset so you can simply write "hello world" and have those words appear in the typeset output, Lua is a general-purpose programming language in which something like a b is a syntax error (assuming a and b are variables). Here, tex.print is a Lua function that takes a single string as input, so you need to give it a single string. (There are other forms of tex.print too, that you can read in the LuaTeX manual, but those are probably not what you want.) Lua uses .. to concatenate strings.

    – ShreevatsaR
    52 mins ago






  • 2





    BTW instead of concatenating different strings with .., you can also use string.format to build a string, e.g. in a file test.lua put function prod(a,b) tex.print(string.format([[$%d times %d = %d$]], a, b, a*b)) end and in your file do directlua{dofile('test.lua')} -- here the [[ instead of " is to avoid needing to escape the backslash in times.

    – ShreevatsaR
    45 mins ago











  • @ShreevatsaR Thanks for that option!

    – Levy
    21 mins ago
















3















The function I'm trying to create is one that takes two numbers and prints the result with some math. The following is my code:



documentclass[12pt,a4paper]{article}

begin{document}
directlua{
function prod(a,b)
tex.print(a "$times$" b "$=$" a*c)
end
}

The product of 2 and 3: directlua{prod(2,3)}.
end{document}


I can't make it print the whole statement correctly. How to solve it?










share|improve this question




















  • 3





    Try tex.print("$" .. a .. "string\times" .. b .. "=" .. a*b .. "$")

    – moewe
    59 mins ago






  • 1





    Unlike TeX, to which everything is (by default) a token to be typeset so you can simply write "hello world" and have those words appear in the typeset output, Lua is a general-purpose programming language in which something like a b is a syntax error (assuming a and b are variables). Here, tex.print is a Lua function that takes a single string as input, so you need to give it a single string. (There are other forms of tex.print too, that you can read in the LuaTeX manual, but those are probably not what you want.) Lua uses .. to concatenate strings.

    – ShreevatsaR
    52 mins ago






  • 2





    BTW instead of concatenating different strings with .., you can also use string.format to build a string, e.g. in a file test.lua put function prod(a,b) tex.print(string.format([[$%d times %d = %d$]], a, b, a*b)) end and in your file do directlua{dofile('test.lua')} -- here the [[ instead of " is to avoid needing to escape the backslash in times.

    – ShreevatsaR
    45 mins ago











  • @ShreevatsaR Thanks for that option!

    – Levy
    21 mins ago














3












3








3








The function I'm trying to create is one that takes two numbers and prints the result with some math. The following is my code:



documentclass[12pt,a4paper]{article}

begin{document}
directlua{
function prod(a,b)
tex.print(a "$times$" b "$=$" a*c)
end
}

The product of 2 and 3: directlua{prod(2,3)}.
end{document}


I can't make it print the whole statement correctly. How to solve it?










share|improve this question
















The function I'm trying to create is one that takes two numbers and prints the result with some math. The following is my code:



documentclass[12pt,a4paper]{article}

begin{document}
directlua{
function prod(a,b)
tex.print(a "$times$" b "$=$" a*c)
end
}

The product of 2 and 3: directlua{prod(2,3)}.
end{document}


I can't make it print the whole statement correctly. How to solve it?







luatex calculations






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 13 mins ago









Mico

285k31388778




285k31388778










asked 1 hour ago









LevyLevy

437312




437312








  • 3





    Try tex.print("$" .. a .. "string\times" .. b .. "=" .. a*b .. "$")

    – moewe
    59 mins ago






  • 1





    Unlike TeX, to which everything is (by default) a token to be typeset so you can simply write "hello world" and have those words appear in the typeset output, Lua is a general-purpose programming language in which something like a b is a syntax error (assuming a and b are variables). Here, tex.print is a Lua function that takes a single string as input, so you need to give it a single string. (There are other forms of tex.print too, that you can read in the LuaTeX manual, but those are probably not what you want.) Lua uses .. to concatenate strings.

    – ShreevatsaR
    52 mins ago






  • 2





    BTW instead of concatenating different strings with .., you can also use string.format to build a string, e.g. in a file test.lua put function prod(a,b) tex.print(string.format([[$%d times %d = %d$]], a, b, a*b)) end and in your file do directlua{dofile('test.lua')} -- here the [[ instead of " is to avoid needing to escape the backslash in times.

    – ShreevatsaR
    45 mins ago











  • @ShreevatsaR Thanks for that option!

    – Levy
    21 mins ago














  • 3





    Try tex.print("$" .. a .. "string\times" .. b .. "=" .. a*b .. "$")

    – moewe
    59 mins ago






  • 1





    Unlike TeX, to which everything is (by default) a token to be typeset so you can simply write "hello world" and have those words appear in the typeset output, Lua is a general-purpose programming language in which something like a b is a syntax error (assuming a and b are variables). Here, tex.print is a Lua function that takes a single string as input, so you need to give it a single string. (There are other forms of tex.print too, that you can read in the LuaTeX manual, but those are probably not what you want.) Lua uses .. to concatenate strings.

    – ShreevatsaR
    52 mins ago






  • 2





    BTW instead of concatenating different strings with .., you can also use string.format to build a string, e.g. in a file test.lua put function prod(a,b) tex.print(string.format([[$%d times %d = %d$]], a, b, a*b)) end and in your file do directlua{dofile('test.lua')} -- here the [[ instead of " is to avoid needing to escape the backslash in times.

    – ShreevatsaR
    45 mins ago











  • @ShreevatsaR Thanks for that option!

    – Levy
    21 mins ago








3




3





Try tex.print("$" .. a .. "string\times" .. b .. "=" .. a*b .. "$")

– moewe
59 mins ago





Try tex.print("$" .. a .. "string\times" .. b .. "=" .. a*b .. "$")

– moewe
59 mins ago




1




1





Unlike TeX, to which everything is (by default) a token to be typeset so you can simply write "hello world" and have those words appear in the typeset output, Lua is a general-purpose programming language in which something like a b is a syntax error (assuming a and b are variables). Here, tex.print is a Lua function that takes a single string as input, so you need to give it a single string. (There are other forms of tex.print too, that you can read in the LuaTeX manual, but those are probably not what you want.) Lua uses .. to concatenate strings.

– ShreevatsaR
52 mins ago





Unlike TeX, to which everything is (by default) a token to be typeset so you can simply write "hello world" and have those words appear in the typeset output, Lua is a general-purpose programming language in which something like a b is a syntax error (assuming a and b are variables). Here, tex.print is a Lua function that takes a single string as input, so you need to give it a single string. (There are other forms of tex.print too, that you can read in the LuaTeX manual, but those are probably not what you want.) Lua uses .. to concatenate strings.

– ShreevatsaR
52 mins ago




2




2





BTW instead of concatenating different strings with .., you can also use string.format to build a string, e.g. in a file test.lua put function prod(a,b) tex.print(string.format([[$%d times %d = %d$]], a, b, a*b)) end and in your file do directlua{dofile('test.lua')} -- here the [[ instead of " is to avoid needing to escape the backslash in times.

– ShreevatsaR
45 mins ago





BTW instead of concatenating different strings with .., you can also use string.format to build a string, e.g. in a file test.lua put function prod(a,b) tex.print(string.format([[$%d times %d = %d$]], a, b, a*b)) end and in your file do directlua{dofile('test.lua')} -- here the [[ instead of " is to avoid needing to escape the backslash in times.

– ShreevatsaR
45 mins ago













@ShreevatsaR Thanks for that option!

– Levy
21 mins ago





@ShreevatsaR Thanks for that option!

– Levy
21 mins ago










3 Answers
3






active

oldest

votes


















5














documentclass[12pt,a4paper]{article}

directlua{
function prod(a,b)
tex.print("$" .. a .. "string\times" .. b .. "=" .. a*b .. "$")
end
}

begin{document}
The product of 2 and 3: directlua{prod(2,3)}.
end{document}


The product of 2 and 3: 2 × 3 = 6.



One tricky thing is getting the backslash escaping game right: LuaTeX: How to handle a Lua function that prints TeX macros. directlua expands macros before passing them on to Lua, so times gets messed up. But something like stringtimes, which should stop that expansion does not quite work as intended because t is a special escape for the tab in Lua. Hence we need to escape the backslash there. In Lua you would have to type \times, but in TeX we need to stop the \ from being expanded, so we need string\times. That is one of the reasons why it is often recommended to use the luacode package or externalise Lua functions into their own .lua files and then load them with dofile or require (see for example How to do a 'printline' in LuaTeX, a bit on dofile and require can be found at LuaLatex: Difference between `dofile` and `require` when loading lua files).



Another thing is that you need .. to concatenate strings.



Finally, you probably want the entire expression in math mode and not just certain bits.



Also moved the directlua function definition into the preamble. (Thanks to Mico for the suggestion.)






share|improve this answer


























  • That's what I was looking for. It worked here. Thank you!

    – Levy
    51 mins ago











  • And the explanation was really helpful!

    – Levy
    51 mins ago



















4














documentclass[12pt,a4paper]{article}

begin{document}
directlua{
function prod(a,b)
tex.print(a.. "$string\times$".. b.. "$=$".. a*b)
end
}

The product of 2 and 3: directlua{prod(2,3)}.
end{document}


enter image description here






share|improve this answer































    2














    Just for completeness, here's a solution that shows how to (a) write the Lua code to an external file, (b) load the Luacode via a directlua{dofile("...")} directive, and (c) set up a LaTeX "wrapper" macro (called showprod in the example below) whose function (pun intended) is to invoke the Lua function.



    Note that with this setup, one can write \ rather than string\ to denote a single backslash character. (This is also the case for the luacode and luacode* environments that are provided by the luacode package.)



    enter image description here



    RequirePackage{filecontents}
    begin{filecontents*}{show_prod.lua}


    function show_prod ( a , b )
    tex.sprint ( "$"..a.."\times"..b.."="..a*b.."$" )
    end


    end{filecontents*}

    documentclass{article}
    %% Load Lua code from external file and define a LaTeX "wrapper" macro
    directlua{dofile("show_prod.lua")}
    newcommandshowprod[2]{directlua{show_prod(#1,#2)}}

    begin{document}
    The product of 2 and 3: showprod{2}{3}.
    end{document}





    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%2f483416%2fperform-and-show-arithmetic-with-lualatex%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









      5














      documentclass[12pt,a4paper]{article}

      directlua{
      function prod(a,b)
      tex.print("$" .. a .. "string\times" .. b .. "=" .. a*b .. "$")
      end
      }

      begin{document}
      The product of 2 and 3: directlua{prod(2,3)}.
      end{document}


      The product of 2 and 3: 2 × 3 = 6.



      One tricky thing is getting the backslash escaping game right: LuaTeX: How to handle a Lua function that prints TeX macros. directlua expands macros before passing them on to Lua, so times gets messed up. But something like stringtimes, which should stop that expansion does not quite work as intended because t is a special escape for the tab in Lua. Hence we need to escape the backslash there. In Lua you would have to type \times, but in TeX we need to stop the \ from being expanded, so we need string\times. That is one of the reasons why it is often recommended to use the luacode package or externalise Lua functions into their own .lua files and then load them with dofile or require (see for example How to do a 'printline' in LuaTeX, a bit on dofile and require can be found at LuaLatex: Difference between `dofile` and `require` when loading lua files).



      Another thing is that you need .. to concatenate strings.



      Finally, you probably want the entire expression in math mode and not just certain bits.



      Also moved the directlua function definition into the preamble. (Thanks to Mico for the suggestion.)






      share|improve this answer


























      • That's what I was looking for. It worked here. Thank you!

        – Levy
        51 mins ago











      • And the explanation was really helpful!

        – Levy
        51 mins ago
















      5














      documentclass[12pt,a4paper]{article}

      directlua{
      function prod(a,b)
      tex.print("$" .. a .. "string\times" .. b .. "=" .. a*b .. "$")
      end
      }

      begin{document}
      The product of 2 and 3: directlua{prod(2,3)}.
      end{document}


      The product of 2 and 3: 2 × 3 = 6.



      One tricky thing is getting the backslash escaping game right: LuaTeX: How to handle a Lua function that prints TeX macros. directlua expands macros before passing them on to Lua, so times gets messed up. But something like stringtimes, which should stop that expansion does not quite work as intended because t is a special escape for the tab in Lua. Hence we need to escape the backslash there. In Lua you would have to type \times, but in TeX we need to stop the \ from being expanded, so we need string\times. That is one of the reasons why it is often recommended to use the luacode package or externalise Lua functions into their own .lua files and then load them with dofile or require (see for example How to do a 'printline' in LuaTeX, a bit on dofile and require can be found at LuaLatex: Difference between `dofile` and `require` when loading lua files).



      Another thing is that you need .. to concatenate strings.



      Finally, you probably want the entire expression in math mode and not just certain bits.



      Also moved the directlua function definition into the preamble. (Thanks to Mico for the suggestion.)






      share|improve this answer


























      • That's what I was looking for. It worked here. Thank you!

        – Levy
        51 mins ago











      • And the explanation was really helpful!

        – Levy
        51 mins ago














      5












      5








      5







      documentclass[12pt,a4paper]{article}

      directlua{
      function prod(a,b)
      tex.print("$" .. a .. "string\times" .. b .. "=" .. a*b .. "$")
      end
      }

      begin{document}
      The product of 2 and 3: directlua{prod(2,3)}.
      end{document}


      The product of 2 and 3: 2 × 3 = 6.



      One tricky thing is getting the backslash escaping game right: LuaTeX: How to handle a Lua function that prints TeX macros. directlua expands macros before passing them on to Lua, so times gets messed up. But something like stringtimes, which should stop that expansion does not quite work as intended because t is a special escape for the tab in Lua. Hence we need to escape the backslash there. In Lua you would have to type \times, but in TeX we need to stop the \ from being expanded, so we need string\times. That is one of the reasons why it is often recommended to use the luacode package or externalise Lua functions into their own .lua files and then load them with dofile or require (see for example How to do a 'printline' in LuaTeX, a bit on dofile and require can be found at LuaLatex: Difference between `dofile` and `require` when loading lua files).



      Another thing is that you need .. to concatenate strings.



      Finally, you probably want the entire expression in math mode and not just certain bits.



      Also moved the directlua function definition into the preamble. (Thanks to Mico for the suggestion.)






      share|improve this answer















      documentclass[12pt,a4paper]{article}

      directlua{
      function prod(a,b)
      tex.print("$" .. a .. "string\times" .. b .. "=" .. a*b .. "$")
      end
      }

      begin{document}
      The product of 2 and 3: directlua{prod(2,3)}.
      end{document}


      The product of 2 and 3: 2 × 3 = 6.



      One tricky thing is getting the backslash escaping game right: LuaTeX: How to handle a Lua function that prints TeX macros. directlua expands macros before passing them on to Lua, so times gets messed up. But something like stringtimes, which should stop that expansion does not quite work as intended because t is a special escape for the tab in Lua. Hence we need to escape the backslash there. In Lua you would have to type \times, but in TeX we need to stop the \ from being expanded, so we need string\times. That is one of the reasons why it is often recommended to use the luacode package or externalise Lua functions into their own .lua files and then load them with dofile or require (see for example How to do a 'printline' in LuaTeX, a bit on dofile and require can be found at LuaLatex: Difference between `dofile` and `require` when loading lua files).



      Another thing is that you need .. to concatenate strings.



      Finally, you probably want the entire expression in math mode and not just certain bits.



      Also moved the directlua function definition into the preamble. (Thanks to Mico for the suggestion.)







      share|improve this answer














      share|improve this answer



      share|improve this answer








      edited 27 mins ago

























      answered 57 mins ago









      moewemoewe

      96.2k10117360




      96.2k10117360













      • That's what I was looking for. It worked here. Thank you!

        – Levy
        51 mins ago











      • And the explanation was really helpful!

        – Levy
        51 mins ago



















      • That's what I was looking for. It worked here. Thank you!

        – Levy
        51 mins ago











      • And the explanation was really helpful!

        – Levy
        51 mins ago

















      That's what I was looking for. It worked here. Thank you!

      – Levy
      51 mins ago





      That's what I was looking for. It worked here. Thank you!

      – Levy
      51 mins ago













      And the explanation was really helpful!

      – Levy
      51 mins ago





      And the explanation was really helpful!

      – Levy
      51 mins ago











      4














      documentclass[12pt,a4paper]{article}

      begin{document}
      directlua{
      function prod(a,b)
      tex.print(a.. "$string\times$".. b.. "$=$".. a*b)
      end
      }

      The product of 2 and 3: directlua{prod(2,3)}.
      end{document}


      enter image description here






      share|improve this answer




























        4














        documentclass[12pt,a4paper]{article}

        begin{document}
        directlua{
        function prod(a,b)
        tex.print(a.. "$string\times$".. b.. "$=$".. a*b)
        end
        }

        The product of 2 and 3: directlua{prod(2,3)}.
        end{document}


        enter image description here






        share|improve this answer


























          4












          4








          4







          documentclass[12pt,a4paper]{article}

          begin{document}
          directlua{
          function prod(a,b)
          tex.print(a.. "$string\times$".. b.. "$=$".. a*b)
          end
          }

          The product of 2 and 3: directlua{prod(2,3)}.
          end{document}


          enter image description here






          share|improve this answer













          documentclass[12pt,a4paper]{article}

          begin{document}
          directlua{
          function prod(a,b)
          tex.print(a.. "$string\times$".. b.. "$=$".. a*b)
          end
          }

          The product of 2 and 3: directlua{prod(2,3)}.
          end{document}


          enter image description here







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 57 mins ago









          Ulrike FischerUlrike Fischer

          198k9305692




          198k9305692























              2














              Just for completeness, here's a solution that shows how to (a) write the Lua code to an external file, (b) load the Luacode via a directlua{dofile("...")} directive, and (c) set up a LaTeX "wrapper" macro (called showprod in the example below) whose function (pun intended) is to invoke the Lua function.



              Note that with this setup, one can write \ rather than string\ to denote a single backslash character. (This is also the case for the luacode and luacode* environments that are provided by the luacode package.)



              enter image description here



              RequirePackage{filecontents}
              begin{filecontents*}{show_prod.lua}


              function show_prod ( a , b )
              tex.sprint ( "$"..a.."\times"..b.."="..a*b.."$" )
              end


              end{filecontents*}

              documentclass{article}
              %% Load Lua code from external file and define a LaTeX "wrapper" macro
              directlua{dofile("show_prod.lua")}
              newcommandshowprod[2]{directlua{show_prod(#1,#2)}}

              begin{document}
              The product of 2 and 3: showprod{2}{3}.
              end{document}





              share|improve this answer




























                2














                Just for completeness, here's a solution that shows how to (a) write the Lua code to an external file, (b) load the Luacode via a directlua{dofile("...")} directive, and (c) set up a LaTeX "wrapper" macro (called showprod in the example below) whose function (pun intended) is to invoke the Lua function.



                Note that with this setup, one can write \ rather than string\ to denote a single backslash character. (This is also the case for the luacode and luacode* environments that are provided by the luacode package.)



                enter image description here



                RequirePackage{filecontents}
                begin{filecontents*}{show_prod.lua}


                function show_prod ( a , b )
                tex.sprint ( "$"..a.."\times"..b.."="..a*b.."$" )
                end


                end{filecontents*}

                documentclass{article}
                %% Load Lua code from external file and define a LaTeX "wrapper" macro
                directlua{dofile("show_prod.lua")}
                newcommandshowprod[2]{directlua{show_prod(#1,#2)}}

                begin{document}
                The product of 2 and 3: showprod{2}{3}.
                end{document}





                share|improve this answer


























                  2












                  2








                  2







                  Just for completeness, here's a solution that shows how to (a) write the Lua code to an external file, (b) load the Luacode via a directlua{dofile("...")} directive, and (c) set up a LaTeX "wrapper" macro (called showprod in the example below) whose function (pun intended) is to invoke the Lua function.



                  Note that with this setup, one can write \ rather than string\ to denote a single backslash character. (This is also the case for the luacode and luacode* environments that are provided by the luacode package.)



                  enter image description here



                  RequirePackage{filecontents}
                  begin{filecontents*}{show_prod.lua}


                  function show_prod ( a , b )
                  tex.sprint ( "$"..a.."\times"..b.."="..a*b.."$" )
                  end


                  end{filecontents*}

                  documentclass{article}
                  %% Load Lua code from external file and define a LaTeX "wrapper" macro
                  directlua{dofile("show_prod.lua")}
                  newcommandshowprod[2]{directlua{show_prod(#1,#2)}}

                  begin{document}
                  The product of 2 and 3: showprod{2}{3}.
                  end{document}





                  share|improve this answer













                  Just for completeness, here's a solution that shows how to (a) write the Lua code to an external file, (b) load the Luacode via a directlua{dofile("...")} directive, and (c) set up a LaTeX "wrapper" macro (called showprod in the example below) whose function (pun intended) is to invoke the Lua function.



                  Note that with this setup, one can write \ rather than string\ to denote a single backslash character. (This is also the case for the luacode and luacode* environments that are provided by the luacode package.)



                  enter image description here



                  RequirePackage{filecontents}
                  begin{filecontents*}{show_prod.lua}


                  function show_prod ( a , b )
                  tex.sprint ( "$"..a.."\times"..b.."="..a*b.."$" )
                  end


                  end{filecontents*}

                  documentclass{article}
                  %% Load Lua code from external file and define a LaTeX "wrapper" macro
                  directlua{dofile("show_prod.lua")}
                  newcommandshowprod[2]{directlua{show_prod(#1,#2)}}

                  begin{document}
                  The product of 2 and 3: showprod{2}{3}.
                  end{document}






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 17 mins ago









                  MicoMico

                  285k31388778




                  285k31388778






























                      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%2f483416%2fperform-and-show-arithmetic-with-lualatex%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

                      迭戈·戈丁...

                      A phrase ”follow into" in a context The 2019 Stack Overflow Developer Survey Results Are...

                      1960s short story making fun of James Bond-style spy fiction The 2019 Stack Overflow Developer...