15

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?

12
  • 4
    The tectonic command-line program is quiet. I dislike this.
    – Sigur
    May 30, 2017 at 14:21
  • I think this question would be better addressed to the developers of Tectonic. There may not be many users here, so you may not get many answers. May 30, 2017 at 16:55
  • 1
    What I find most enticing is the promise (or at least, the willingness) to aim to produce a full native HTML output (see users.rust-lang.org/t/… ). It would be really nice for generating full cross referenced manuals online....
    – Rmano
    May 30, 2017 at 20:58
  • I conclude that there's nothing there for me..... still curious about the second question.
    – JPi
    May 31, 2017 at 4:26
  • @Rmano there are already many tools which can produce HTML output, they will either use one of those, or come with yet another incompatible tool.
    – michal.h21
    Jun 1, 2017 at 15:58

1 Answer 1

27

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.

10
  • 1
    regarding HTML - I think that tex4ht can 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 1, 2017 at 19:57
  • 1
    Does "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? Jun 2, 2017 at 10:53
  • 1
    Ulrike 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 2, 2017 at 13:09
  • 2
    But 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? Jun 2, 2017 at 17:07
  • 1
    If 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. Jun 3, 2017 at 10:18

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.