I came across tectonic. Is there anything there that latexmk / arara can't do already, other than perhaps pulling down files as needed? What makes this an engine?
1 Answers
Well, OK, as the lead author of Tectonic ...
Tectonic subsumes a variety of goals. At the moment, the clearest difference compared to other TeX engines is the user experience. It is true that with tools like latexmk and the right mixture of various command-line options, you could emulate the Tectonic experience in a lot of ways. However, I think there is real value in having a TeX engine that explicitly recognizes the importance in having a good UX and will continue to do so in the future.
Another goal is reproducible document compiles. Auto-download of support files is a nice win, but it's also true that those files come from a single, versioned "bundle" of support files. That's a first step toward a broader vision in which the compilation process will record all of the contextual information needed to precisely reproduce a document later. As a scientist, this is a very important goal for me. (The technical vision is an analogue of Cargo's Cargo.{toml,lock} model). There is much work to do on this front, though.
A third goal is embeddability. With the use of bundle files, it becomes much more feasible to embed the Tectonic engine in other applications as a library — the current version does not depend on environment variables, hardcoded paths, etc. Tectonic is delivered as a Rust "crate" that can be used from arbitrary other pieces of code. Yes, you can invoke latex as an executable from your library, but without the work to ensure reproducible compiles, it is just far more difficult to know what will happen when you do so; and there are cases where you're not in a position to execute random system programs. (E.g.: from the browser.) This aspect of Tectonic hasn't been explored much, yet, but a lot of the technical infrastructure is there.
Finally, there is a goal of using Tectonic as a platform to compile TeX documents into amazing, modern HTML. From my previous work I have come to believe that the only way to do this sufficiently well is to make changes to several aspects of the engine internals. I have not yet begun implementing the needed infrastructure within the Tectonic engine, but I hope that it will one day be the most compelling reason to use it.
- 436
-
1regarding HTML - I think that
tex4htcan be configured to produce amazing, modern HTML. do you have any concrete ideas? we would be quite happy if you could discuss that on tex4ht mailing list. – michal.h21 Jun 01 '17 at 19:57 -
1Does "versioned 'bundle' of support files" mean that you are maintaining your own package system? What happens if packages or the latex core are updated or new packages appear on ctan? – Ulrike Fischer Jun 02 '17 at 10:53
-
1Ulrike Fischer: no way! Tectonic leverages TexLive for this purpose. The default bundle is essentially a big tarball of files from a large TeXLive 2016 install. At some point after TL2017 comes out, the default will switch over to that, but prior versions are archived so that document builds can be reproduced. – Peter Jun 02 '17 at 13:09
-
2But you are making snapshots of the texlive state and freeze them. So assuming that tomorrow a new package is uploaded to CTAN. How and when can it be used with your system? – Ulrike Fischer Jun 02 '17 at 17:07
-
-
Ulrike Fischer: if there are new or updated files that you need, the recommended approach is to download them manually and save them next to your
.texfile(s). – Peter Jun 03 '17 at 00:08 -
1If you want to notify my, you should write @UlrikeFischer, only "Ulrike Fischer" is not enough. Beside this: I quite often write specialized classes for my customers. And the last thing I want to tell them is "hey everytime you want to write a letter with your class you should copy it (and all the other files like the font support files) in your document folder". Imho a texsystem with a clear state is not a bad idea for some environments (but I'm not sure that I would use xetex as base engine), but not without an interface for local additions and configurations. – Ulrike Fischer Jun 03 '17 at 10:18
-
1@UlrikeFischer: ah thanks, I knew I was doing something wrong with the @'s. Anyway, it does sound like Tectonic's current UX isn't ideally matched to your use case. I do think that in the future it could deliver a UX at least as good as current tools, and I have ideas on that front, but some infrastructure work needs to happen. Please stay tuned! – Peter Jun 03 '17 at 14:40
-
To me this sounds very much like Tectonic is just a rip-off of ConTeXt, but with a worse backend engine (XeTeX instead of LuaTeX) and in a worse programming language (Rust instead of C). – Henri Menke Sep 14 '19 at 00:32
-
6@HenriMenke why such harsh words? These two things (Tectonic and ConTeXt) don't seem related at all: isn't ConTeXt a whole new collection of macros to learn, while Tectonic compiles LaTeX documents? Also, as far as I can tell, running ConTeXt's
texexecon a Hello world produces 3 pages of output, which is one of the issues the author of Tectonic is trying to avoid. And as for the implementation language, my ConTeXt install contains 15 thousand lines of Ruby code, 40k lines of Lua, and some Perl, so I'm not sure where that came from either. (Caveat: I haven't used either seriously) – Clément Jul 19 '21 at 21:01 -
Could I get some help on this? Searching from the root directory ("/") does not yield any results for a
styfile that was downloaded by Tectonic. – Erwann Oct 09 '23 at 04:37
tex4htand had some success with custom configurations, it didn't work out of the box. – michal.h21 Jun 01 '17 at 19:35batchmodeor fully verbosenonstopmode. – Jan Tojnar Jun 02 '17 at 15:42