As a follow up to the question ‘What does the output of TeX/LaTeX depend on (in the sense of version and distribution)’, I wonder if there are any tools (or at least plans to ship such a tool) which would allow noting a specific version of all packages being used and the tool would make sure that all TeX sources are being built with those packages (and their dependencies). Similar to how most of the modern [*] programming languages do it (eg. http://bundler.io).

Running tlmgr to upgrade all packages from CTAN (or installing a new TeXLive) feels like a very stupid thing to do when something changes in a package and messes with one’s documents. (And one might not even notice immediately.)

[*] Not sure if modern is the right word here, as there is even a package management tool for vim now: Vundle.

  • 3
    Here is a similar question. My answer documents the use of bundledoc, which bundles together (up to) 'all the classes, packages, and files needed to build a given LaTeX document'; it can be combined with arlatex, which will then create an archive (tar, zip, etc.) of all the files. I use them as a long-term storage solution for finished projects. (Mainly because the macros my personal .sty files change, but also because packages sometimes introduce incompatible changes that might affect recompilation at a later date.) – jon May 16 '14 at 13:55
  • Thanks, @jon, I guess this will have to do for the moment while I’m waiting for a better solution. OTOH, I might probably never search those tar files anyway and could just as well only keep the pdf then. – Debilski May 20 '14 at 17:24
  • I don't know how a better solution can be had if people keep updating the packages you used in the project. Of course, most package authors take pains to not introduce changes that will break exisiting documents or change the resulting output, but sometimes that proves impossible, and other package authors may not care (tabu being a recent, infamous example). And of course bundledoc simply makes use of the information make by the package snapshot. If all you want is a record of what was used, then snapshot is pretty useful; combine it with ctanhg.scharrer-online.de as needed. – jon May 20 '14 at 17:46
  • Updating would not be a problem, if a version number could be specified (and/or if the bundle manager would automatically remember which version was used upon installation). And of course, such a solution – properly used and implemented – would also free the package developers from supporting a legacy API at all costs (or alternatively from having to ship a differently named package which does the same thing better but with a different API). – Debilski May 20 '14 at 18:24
  • What do you mean by 'installed'? tlmgr (from TeX Live) provides some of these features (e.g., options backup and restore). But this is different from using packages in a .tex document. And of course you can do \usepackage{<package name>}[<min. release date>] to specify that you don't want to use a package older than a given date. But package developers are under no such constraints that you describe: assuming a licence like LPPL, you simply can't modify (say) my package jon.sty and call it the same thing. It is up to me to keep or not jon.sty backwards compatible. – jon May 20 '14 at 19:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.