What are the differences between latexmk and rubber?











up vote
59
down vote

favorite
10












I just stumbled on this blog post about rubber and was thinking: "Isn't that exactly what latexmk does?". So, now I wonder: isn't it? Or are there any differences?










share|improve this question




















  • 1




    Great question! :)
    – Paulo Cereda
    Dec 5 '11 at 11:00















up vote
59
down vote

favorite
10












I just stumbled on this blog post about rubber and was thinking: "Isn't that exactly what latexmk does?". So, now I wonder: isn't it? Or are there any differences?










share|improve this question




















  • 1




    Great question! :)
    – Paulo Cereda
    Dec 5 '11 at 11:00













up vote
59
down vote

favorite
10









up vote
59
down vote

favorite
10






10





I just stumbled on this blog post about rubber and was thinking: "Isn't that exactly what latexmk does?". So, now I wonder: isn't it? Or are there any differences?










share|improve this question















I just stumbled on this blog post about rubber and was thinking: "Isn't that exactly what latexmk does?". So, now I wonder: isn't it? Or are there any differences?







latexmk rubber






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Dec 6 '11 at 14:29

























asked Dec 5 '11 at 7:53









jonalv

5,42453993




5,42453993








  • 1




    Great question! :)
    – Paulo Cereda
    Dec 5 '11 at 11:00














  • 1




    Great question! :)
    – Paulo Cereda
    Dec 5 '11 at 11:00








1




1




Great question! :)
– Paulo Cereda
Dec 5 '11 at 11:00




Great question! :)
– Paulo Cereda
Dec 5 '11 at 11:00










3 Answers
3






active

oldest

votes

















up vote
41
down vote



accepted










It seems that the rubber has the following features that are not (yet?) offered by latexmk:




  1. Rubber parses the LaTeX log file, filters it, and pretty-prints only "relevant" messages (warnings, errors). Rubber always runs LaTeX in a non-interactive mode, while latexmk seems to require additional switches or configuration.

  2. With rubber you can have configuration options as comments in the LaTeX source code; latexmk requires auxiliary configuration files.

  3. Most importantly, rubber lets you specify the correct values of TEXINPUTS, BIBINPUTS, BSTINPUTS, etc. for each document using the aforementioned configuration options; latexmk seems to expect that these environment variables are already defined appropriately.


Of course many of these issues can be worked around with some wrapper scripts and auxiliary files. And obviously there are many features of latexmk that are not offered by rubber.






share|improve this answer



















  • 1




    To add some news: Rubber v1.2 was released on 2015-06-24. It seems however that for Ubuntu, 1.2 will not be included in 15.04, but 15.10 and further. For more information, see the launchpad of Rubber.
    – r0estir0bbe
    Sep 30 '15 at 8:44






  • 1




    One of those "wrapper scripts" for problem 1, is texfot. I actually prefer latexmk not offering this feature, because that meets the Unix philosophy.
    – Franklin Yu
    Jan 29 '17 at 5:50












  • Fedora 27 includes rubber --version 1.4.
    – alfC
    Dec 19 '17 at 7:08






  • 1




    Maintenance: I think the first sentence is not really true anymore as pointed out by others. It is correct that there has been a gap of many years between v1.1 (2006) and v1.2 (2015). But since then there have been several more releases with the currently latest v1.5.1 from September 2018. TEXINPUTS,... you can adjust texinputs for a project directory for latexmk in a latexmkrc file: see tex.stackexchange.com/a/50847/8917.
    – Hotschke
    Oct 25 at 4:48






  • 1




    This answer is from 2011, it is now 2018. Everything in the answer is most likely seriously outdated.
    – Jukka Suomela
    yesterday


















up vote
24
down vote













One important advantage of latexmk over rubber is that latexmk detects dependent files much more reliably. As best as I have been able to work out, rubber determines the dependent files by parsing the tex file, by looking for input, include and includegraphics macros. But if these macros are buried inside another macro, rubber doesn't detect the dependent files correctly. E.g., if you have



newcommandtry[1]{input{#1}}
try{sub}


rubber won't detect that sub.tex is a dependent file. Thus if the file sub.tex changes, rubber won't detect that the compilation needs to be run again.



Latexmk instead parses the log file and uses the -recorder option of (pdf)latex to determine the dependent files.






share|improve this answer






























    up vote
    19
    down vote













    Latexmk also brings an auto-preview feature, which recompiles (smartly) the pdf as soon as the tex is saved.



    There are also more advanced features, like tight integration with makefiles for example.






    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',
      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%2f37154%2fwhat-are-the-differences-between-latexmk-and-rubber%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








      up vote
      41
      down vote



      accepted










      It seems that the rubber has the following features that are not (yet?) offered by latexmk:




      1. Rubber parses the LaTeX log file, filters it, and pretty-prints only "relevant" messages (warnings, errors). Rubber always runs LaTeX in a non-interactive mode, while latexmk seems to require additional switches or configuration.

      2. With rubber you can have configuration options as comments in the LaTeX source code; latexmk requires auxiliary configuration files.

      3. Most importantly, rubber lets you specify the correct values of TEXINPUTS, BIBINPUTS, BSTINPUTS, etc. for each document using the aforementioned configuration options; latexmk seems to expect that these environment variables are already defined appropriately.


      Of course many of these issues can be worked around with some wrapper scripts and auxiliary files. And obviously there are many features of latexmk that are not offered by rubber.






      share|improve this answer



















      • 1




        To add some news: Rubber v1.2 was released on 2015-06-24. It seems however that for Ubuntu, 1.2 will not be included in 15.04, but 15.10 and further. For more information, see the launchpad of Rubber.
        – r0estir0bbe
        Sep 30 '15 at 8:44






      • 1




        One of those "wrapper scripts" for problem 1, is texfot. I actually prefer latexmk not offering this feature, because that meets the Unix philosophy.
        – Franklin Yu
        Jan 29 '17 at 5:50












      • Fedora 27 includes rubber --version 1.4.
        – alfC
        Dec 19 '17 at 7:08






      • 1




        Maintenance: I think the first sentence is not really true anymore as pointed out by others. It is correct that there has been a gap of many years between v1.1 (2006) and v1.2 (2015). But since then there have been several more releases with the currently latest v1.5.1 from September 2018. TEXINPUTS,... you can adjust texinputs for a project directory for latexmk in a latexmkrc file: see tex.stackexchange.com/a/50847/8917.
        – Hotschke
        Oct 25 at 4:48






      • 1




        This answer is from 2011, it is now 2018. Everything in the answer is most likely seriously outdated.
        – Jukka Suomela
        yesterday















      up vote
      41
      down vote



      accepted










      It seems that the rubber has the following features that are not (yet?) offered by latexmk:




      1. Rubber parses the LaTeX log file, filters it, and pretty-prints only "relevant" messages (warnings, errors). Rubber always runs LaTeX in a non-interactive mode, while latexmk seems to require additional switches or configuration.

      2. With rubber you can have configuration options as comments in the LaTeX source code; latexmk requires auxiliary configuration files.

      3. Most importantly, rubber lets you specify the correct values of TEXINPUTS, BIBINPUTS, BSTINPUTS, etc. for each document using the aforementioned configuration options; latexmk seems to expect that these environment variables are already defined appropriately.


      Of course many of these issues can be worked around with some wrapper scripts and auxiliary files. And obviously there are many features of latexmk that are not offered by rubber.






      share|improve this answer



















      • 1




        To add some news: Rubber v1.2 was released on 2015-06-24. It seems however that for Ubuntu, 1.2 will not be included in 15.04, but 15.10 and further. For more information, see the launchpad of Rubber.
        – r0estir0bbe
        Sep 30 '15 at 8:44






      • 1




        One of those "wrapper scripts" for problem 1, is texfot. I actually prefer latexmk not offering this feature, because that meets the Unix philosophy.
        – Franklin Yu
        Jan 29 '17 at 5:50












      • Fedora 27 includes rubber --version 1.4.
        – alfC
        Dec 19 '17 at 7:08






      • 1




        Maintenance: I think the first sentence is not really true anymore as pointed out by others. It is correct that there has been a gap of many years between v1.1 (2006) and v1.2 (2015). But since then there have been several more releases with the currently latest v1.5.1 from September 2018. TEXINPUTS,... you can adjust texinputs for a project directory for latexmk in a latexmkrc file: see tex.stackexchange.com/a/50847/8917.
        – Hotschke
        Oct 25 at 4:48






      • 1




        This answer is from 2011, it is now 2018. Everything in the answer is most likely seriously outdated.
        – Jukka Suomela
        yesterday













      up vote
      41
      down vote



      accepted







      up vote
      41
      down vote



      accepted






      It seems that the rubber has the following features that are not (yet?) offered by latexmk:




      1. Rubber parses the LaTeX log file, filters it, and pretty-prints only "relevant" messages (warnings, errors). Rubber always runs LaTeX in a non-interactive mode, while latexmk seems to require additional switches or configuration.

      2. With rubber you can have configuration options as comments in the LaTeX source code; latexmk requires auxiliary configuration files.

      3. Most importantly, rubber lets you specify the correct values of TEXINPUTS, BIBINPUTS, BSTINPUTS, etc. for each document using the aforementioned configuration options; latexmk seems to expect that these environment variables are already defined appropriately.


      Of course many of these issues can be worked around with some wrapper scripts and auxiliary files. And obviously there are many features of latexmk that are not offered by rubber.






      share|improve this answer














      It seems that the rubber has the following features that are not (yet?) offered by latexmk:




      1. Rubber parses the LaTeX log file, filters it, and pretty-prints only "relevant" messages (warnings, errors). Rubber always runs LaTeX in a non-interactive mode, while latexmk seems to require additional switches or configuration.

      2. With rubber you can have configuration options as comments in the LaTeX source code; latexmk requires auxiliary configuration files.

      3. Most importantly, rubber lets you specify the correct values of TEXINPUTS, BIBINPUTS, BSTINPUTS, etc. for each document using the aforementioned configuration options; latexmk seems to expect that these environment variables are already defined appropriately.


      Of course many of these issues can be worked around with some wrapper scripts and auxiliary files. And obviously there are many features of latexmk that are not offered by rubber.







      share|improve this answer














      share|improve this answer



      share|improve this answer








      edited yesterday









      Flow

      3601414




      3601414










      answered Dec 5 '11 at 10:20









      Jukka Suomela

      13.9k86284




      13.9k86284








      • 1




        To add some news: Rubber v1.2 was released on 2015-06-24. It seems however that for Ubuntu, 1.2 will not be included in 15.04, but 15.10 and further. For more information, see the launchpad of Rubber.
        – r0estir0bbe
        Sep 30 '15 at 8:44






      • 1




        One of those "wrapper scripts" for problem 1, is texfot. I actually prefer latexmk not offering this feature, because that meets the Unix philosophy.
        – Franklin Yu
        Jan 29 '17 at 5:50












      • Fedora 27 includes rubber --version 1.4.
        – alfC
        Dec 19 '17 at 7:08






      • 1




        Maintenance: I think the first sentence is not really true anymore as pointed out by others. It is correct that there has been a gap of many years between v1.1 (2006) and v1.2 (2015). But since then there have been several more releases with the currently latest v1.5.1 from September 2018. TEXINPUTS,... you can adjust texinputs for a project directory for latexmk in a latexmkrc file: see tex.stackexchange.com/a/50847/8917.
        – Hotschke
        Oct 25 at 4:48






      • 1




        This answer is from 2011, it is now 2018. Everything in the answer is most likely seriously outdated.
        – Jukka Suomela
        yesterday














      • 1




        To add some news: Rubber v1.2 was released on 2015-06-24. It seems however that for Ubuntu, 1.2 will not be included in 15.04, but 15.10 and further. For more information, see the launchpad of Rubber.
        – r0estir0bbe
        Sep 30 '15 at 8:44






      • 1




        One of those "wrapper scripts" for problem 1, is texfot. I actually prefer latexmk not offering this feature, because that meets the Unix philosophy.
        – Franklin Yu
        Jan 29 '17 at 5:50












      • Fedora 27 includes rubber --version 1.4.
        – alfC
        Dec 19 '17 at 7:08






      • 1




        Maintenance: I think the first sentence is not really true anymore as pointed out by others. It is correct that there has been a gap of many years between v1.1 (2006) and v1.2 (2015). But since then there have been several more releases with the currently latest v1.5.1 from September 2018. TEXINPUTS,... you can adjust texinputs for a project directory for latexmk in a latexmkrc file: see tex.stackexchange.com/a/50847/8917.
        – Hotschke
        Oct 25 at 4:48






      • 1




        This answer is from 2011, it is now 2018. Everything in the answer is most likely seriously outdated.
        – Jukka Suomela
        yesterday








      1




      1




      To add some news: Rubber v1.2 was released on 2015-06-24. It seems however that for Ubuntu, 1.2 will not be included in 15.04, but 15.10 and further. For more information, see the launchpad of Rubber.
      – r0estir0bbe
      Sep 30 '15 at 8:44




      To add some news: Rubber v1.2 was released on 2015-06-24. It seems however that for Ubuntu, 1.2 will not be included in 15.04, but 15.10 and further. For more information, see the launchpad of Rubber.
      – r0estir0bbe
      Sep 30 '15 at 8:44




      1




      1




      One of those "wrapper scripts" for problem 1, is texfot. I actually prefer latexmk not offering this feature, because that meets the Unix philosophy.
      – Franklin Yu
      Jan 29 '17 at 5:50






      One of those "wrapper scripts" for problem 1, is texfot. I actually prefer latexmk not offering this feature, because that meets the Unix philosophy.
      – Franklin Yu
      Jan 29 '17 at 5:50














      Fedora 27 includes rubber --version 1.4.
      – alfC
      Dec 19 '17 at 7:08




      Fedora 27 includes rubber --version 1.4.
      – alfC
      Dec 19 '17 at 7:08




      1




      1




      Maintenance: I think the first sentence is not really true anymore as pointed out by others. It is correct that there has been a gap of many years between v1.1 (2006) and v1.2 (2015). But since then there have been several more releases with the currently latest v1.5.1 from September 2018. TEXINPUTS,... you can adjust texinputs for a project directory for latexmk in a latexmkrc file: see tex.stackexchange.com/a/50847/8917.
      – Hotschke
      Oct 25 at 4:48




      Maintenance: I think the first sentence is not really true anymore as pointed out by others. It is correct that there has been a gap of many years between v1.1 (2006) and v1.2 (2015). But since then there have been several more releases with the currently latest v1.5.1 from September 2018. TEXINPUTS,... you can adjust texinputs for a project directory for latexmk in a latexmkrc file: see tex.stackexchange.com/a/50847/8917.
      – Hotschke
      Oct 25 at 4:48




      1




      1




      This answer is from 2011, it is now 2018. Everything in the answer is most likely seriously outdated.
      – Jukka Suomela
      yesterday




      This answer is from 2011, it is now 2018. Everything in the answer is most likely seriously outdated.
      – Jukka Suomela
      yesterday










      up vote
      24
      down vote













      One important advantage of latexmk over rubber is that latexmk detects dependent files much more reliably. As best as I have been able to work out, rubber determines the dependent files by parsing the tex file, by looking for input, include and includegraphics macros. But if these macros are buried inside another macro, rubber doesn't detect the dependent files correctly. E.g., if you have



      newcommandtry[1]{input{#1}}
      try{sub}


      rubber won't detect that sub.tex is a dependent file. Thus if the file sub.tex changes, rubber won't detect that the compilation needs to be run again.



      Latexmk instead parses the log file and uses the -recorder option of (pdf)latex to determine the dependent files.






      share|improve this answer



























        up vote
        24
        down vote













        One important advantage of latexmk over rubber is that latexmk detects dependent files much more reliably. As best as I have been able to work out, rubber determines the dependent files by parsing the tex file, by looking for input, include and includegraphics macros. But if these macros are buried inside another macro, rubber doesn't detect the dependent files correctly. E.g., if you have



        newcommandtry[1]{input{#1}}
        try{sub}


        rubber won't detect that sub.tex is a dependent file. Thus if the file sub.tex changes, rubber won't detect that the compilation needs to be run again.



        Latexmk instead parses the log file and uses the -recorder option of (pdf)latex to determine the dependent files.






        share|improve this answer

























          up vote
          24
          down vote










          up vote
          24
          down vote









          One important advantage of latexmk over rubber is that latexmk detects dependent files much more reliably. As best as I have been able to work out, rubber determines the dependent files by parsing the tex file, by looking for input, include and includegraphics macros. But if these macros are buried inside another macro, rubber doesn't detect the dependent files correctly. E.g., if you have



          newcommandtry[1]{input{#1}}
          try{sub}


          rubber won't detect that sub.tex is a dependent file. Thus if the file sub.tex changes, rubber won't detect that the compilation needs to be run again.



          Latexmk instead parses the log file and uses the -recorder option of (pdf)latex to determine the dependent files.






          share|improve this answer














          One important advantage of latexmk over rubber is that latexmk detects dependent files much more reliably. As best as I have been able to work out, rubber determines the dependent files by parsing the tex file, by looking for input, include and includegraphics macros. But if these macros are buried inside another macro, rubber doesn't detect the dependent files correctly. E.g., if you have



          newcommandtry[1]{input{#1}}
          try{sub}


          rubber won't detect that sub.tex is a dependent file. Thus if the file sub.tex changes, rubber won't detect that the compilation needs to be run again.



          Latexmk instead parses the log file and uses the -recorder option of (pdf)latex to determine the dependent files.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Dec 6 '11 at 19:19









          Torbjørn T.

          153k13245433




          153k13245433










          answered Dec 6 '11 at 19:14









          John Collins

          6,6901825




          6,6901825






















              up vote
              19
              down vote













              Latexmk also brings an auto-preview feature, which recompiles (smartly) the pdf as soon as the tex is saved.



              There are also more advanced features, like tight integration with makefiles for example.






              share|improve this answer

























                up vote
                19
                down vote













                Latexmk also brings an auto-preview feature, which recompiles (smartly) the pdf as soon as the tex is saved.



                There are also more advanced features, like tight integration with makefiles for example.






                share|improve this answer























                  up vote
                  19
                  down vote










                  up vote
                  19
                  down vote









                  Latexmk also brings an auto-preview feature, which recompiles (smartly) the pdf as soon as the tex is saved.



                  There are also more advanced features, like tight integration with makefiles for example.






                  share|improve this answer












                  Latexmk also brings an auto-preview feature, which recompiles (smartly) the pdf as soon as the tex is saved.



                  There are also more advanced features, like tight integration with makefiles for example.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Dec 5 '11 at 8:29









                  T. Verron

                  10.1k14170




                  10.1k14170






























                       

                      draft saved


                      draft discarded



















































                       


                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f37154%2fwhat-are-the-differences-between-latexmk-and-rubber%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

                      Entries order in /etc/network/interfaces

                      新発田市

                      Grub takes very long (several minutes) to open Menu (in Multi-Boot-System)