tectonic-typesetting / tectonic

A modernized, complete, self-contained TeX/LaTeX engine, powered by XeTeX and TeXLive.
https://tectonic-typesetting.github.io/
Other
3.99k stars 162 forks source link

Use V2 to use TeXLive's biblatex #1136

Open HealthyPear opened 10 months ago

HealthyPear commented 10 months ago

After stumpling upon #893 I tried to follow two routes on my macos:

  1. install biber 2.17 (painful and still didn't work)
  2. tell tectonic to use the biblatex which I installed with tlmgr

The second approach worked using the V1 interface with the -Z search-paths option as suggested by one of the comments, though this means merging all my tex code into a single file.

Is there a way to achieve this workaround with the V2 interface? It doesn't seem to like the -Z option even if this is clearly explained in the documentation of the compile subcommand.

This issue might also related to #933.

pkgw commented 9 months ago

I think that right now, the least-bad way to do this would be to copy all of the files from the biber resource directory (the one that you pass to the -Z search-paths option) into your src/ directory. The engine should just pick up those files and use them.

The key thing to keep in mind for the V2 approach is that the idea is that anyone should be able to run tectonic -X build with the same files and get the same (successful!) results. So all dependencies should be located with the Tectonic.toml fle, and settings that specify/affect the build should all live in that file instead of being specified on the command line.

That's the theory. The problem with biber/biblatex is that introduces a dependency on the "outside-of-Tectonic" world through shell-escape execution, and it's always evolving and breaking its file formats, so that a builtin set of TeX resource files isn't a sufficient answer. But, functionality like -Z search-paths just makes these reproducibility challenges even more complicated, so it doesn't make sense to introduce it in the V2 context. In that context, manually copying is the best answer we have right now.