-
Notifications
You must be signed in to change notification settings - Fork 162
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Full biblatex
support: somehow add biber
engine to the backend
#35
Comments
Here's biber. It's written in Perl. Hmmm. |
definitely. bibtex has no unicode support and is generally weird and flaky. any modern LaTeX toolchain is LuaLaTeX/XeTeX + biber. |
Just stumbled upon this project (wonderful idea!), but only recently switched to working with LuaLaTeX+biber (mainly because of Unicode support), so would definitely need this. |
biber
engine to the backend?biblatex
support: somehow add biber
engine to the backend
In the worst case, you could use the provided binaries (~20 MB). |
Just chiming in to say, yes please! I installed tectonic and I was very happy with the results overall. But sadly, my citations are not processed. They're simply left in bold after the build process. I would switch from If you decide not to include support for biblatex or for the time being, I'd suggest that if biblatex is present, the build should fail or output a clear warning that citations via biblatex aren't supported. Thanks. |
OK, seems that this is a popular request. Anybody want to attempt to rewrite In the meantime I will consider pull requests that let Tectonic invoke the |
I just found out about Tectonic and am tempted to give it a try, but this issue would really be a deal breaker for me. But even more so, since you aim for a fully Unicode-enabled environment, you really cannot rely on BibTeX. BibTeX will fail in subtle ways when using Unicode: it may sort things incorrectly and you may end up with things like
Do you have any ideas on how to deal with updates of packages? Updates fix bugs, which is good, but they may also wreak havoc on reproducibility, which is bad... |
@joostkremers Thanks; you make a good point — if we're going to say that we're Unicode-friendly, it matters to support it in As for package updates, Tectonic's "bundle" system tries to provide a framework in which you get both reproducibility and the capability to upgrade packages. This StackExchange comment elaborates a tiny bit more, but I need to write some real documentation that explains the concept in more detail. |
This might well be Google-able, but if anyone has a sample document using biblatex and biber in a nontrivial way, that they don't mind sharing, could you post a link to the files? I want to take a look at this and figure out how hard it would be to get the less-than-ideal "shell escape" solution working. |
You can try one of the examples provided with fithesis. Though it uses some packages other than biblatex which might turn out to cause problems. |
Well, perhaps this will help. Take the following
Note the author name Then use the following
I called the Note how in the list of references Hämpke is sorted after Holbein, even though according to German sorting rules (and indeed according to English sorting rules), their order should be reversed. The
BTW, a quick test suggests that you may get better results using bibtex8 as backend. But I have no experience using biblatex / biber for documents that are not in English and have different sorting requirements (e.g., in Swedish, ä is a separate letter that is sorted after z), so I can't compare them to bibtex8. |
A bit late to the discussion. But yes please, biber. One reason we use it is that customising the style files is easier with biblatex than with bibtex. |
Is there any progress on this? |
I ran into this issue as well, so for anyone else who needs a temporary solution, I pieced together a Makefile: # Makefile
.PHONY: all
all: report.pdf
%.pdf: %.tex
tectonic --reruns 0 $<
# Run biber if we find a .bcf file in the output
if [ -f $(notdir $(<:.tex=.bcf)) ]; then \
biber $(notdir $(<:.tex=)); \
fi
tectonic --reruns 0 $<
rm $(basename $<).bbl $(basename $<).bcf $(basename $<).blg edit: just wanted to say that I came across tectonic only last week, and I love what you've created here👏 💯 |
Remove usage of stdout, stderr, and fprintf.
Well… bibtex is just outdated legacy software. (no Unicode support, not flexible etc.) Just like the thing tectonic seeks to replace… 😉 So as a modern tool, tectonic should somehow certainly support that. |
Hello, I came across this awesome project and also use biber. I will surely create a container image to be able to personally use and test this tool but don't think I will use it in makefiles or pipelines before biber is integrated. |
@koalp I experienced the same issue and created a docker image. You can find it here:
|
Could this be the reason for my failing Glossary/References print? We're rather new to LaTeX and trying to get things running, from what I've tried tectonic is by a very large margin the fastest compiler to use as action, but it doesn't generate glossary etc. I've tried the https://github.com/WtfJoke/tectonic-docker action with biber install, but that leads to a fail:
Not entirely sure if the error is on my side, but considering normal compilation on desktop with TeXStudio |
@RicardoMonteiroSimoes
Do you have an example of your tex files? |
@WtfJoke Yet my problem still remains about the glossary/references part. They don't want to compile and print in the action: - name: Setup tectonic with biber
uses: wtfjoke/setup-tectonic@v1
with:
github-token: ${{ secrets.AUTO_RELEASE_TOKEN }}
biber-version: "latest"
- name: Run Tectonic + Biber
run: |
tectonic --keep-intermediates --reruns 0 main.tex
tectonic main.tex Currently trying to see if we can make the repo public with my team, but here are the important snippets: % !TeX program = lualatex
\documentclass[a4paper]{article}
% Packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[backend=biber, style=ieee, citestyle=ieee]{biblatex}
% Document structure %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\sloppy
\pagenumbering{roman}
\color{content_normal}
\begin{titlepage}
\maketitle
\thispagestyle{empty}
\end{titlepage}
%\subfile{sections/disclaimer}
\tableofcontents
\newpage
\pagenumbering{arabic}
%\subfile{sections/example}
\subfile{sections/productvision/introduction}
\subfile{sections/productvision/produktidee}
\subfile{sections/productvision/spielregeln}
\subfile{sections/productvision/umsetzung}
\subfile{sections/productvision/risiken}
\subfile{sections/productvision/architektur}
\subfile{sections/productvision/technologien}
\subfile{sections/productvision/miscellaneous}
%\subfile{sections/context}
%\subfile{sections/objectives_functional_overview}
%\subfile{sections/quality_attributes_non_functional_requirements}
%\subfile{sections/constraints}
%\subfile{sections/principles}
%\subfile{sections/architecture}
%\subfile{sections/external_interfaces}
%\subfile{sections/code}
%\subfile{sections/data}
%\subfile{sections/infrastructure_architecture}
%\subfile{sections/deployment}
%\subfile{sections/operation_support}
%\subfile{sections/decision_log} % add sections here
\newpage
\printglossary[type=\acronymtype]
\printglossary
\newpage
\printbibliography[heading=bibintoc]
\newpage
\listoftodos[Notes]
\end{document} a local compilation works fine, so it shouldnt be a bad file |
FYI: I took your tex file and tried to make it compile (by making some changes) and it worked... you can check out https://github.com/WtfJoke/setup-tectonic-sample feel free to compare the files. Not sure if its an issue with the setup-tectonic action (feel free to open an issue as this goes a bit offtopic here) |
+1 to this issue, for many of the same reasons above, including Unicode support. Is the main difficulty here that Biber is implemented in Perl, which makes it difficult to "build from source and glue together" compared to BibTeX? Looking at the BibTeX engine, all I see is a single C file. Is this why we are talking about shell escape support? |
Sorry to double post (my phone doesn't want to let me edit) but wanted to add to the above: if this is remotely doable for a Rust-fluent TeX-internals-novice, I'd be happy to make an attempt here with some support on what needs to be done. I'd love to use Tectonic as the day-to-day build tool for writing my PhD thesis! |
@aterenin That's right, I'd say that it is essentially impossible to try to offer Biber as a built-in option in the way that Tectonic handles We are decently close to working shell-escape with #708 but it turns out to be a subtler problem than I first appreciated, and I believe that this is something where it's important to provide a really robust, carefully-designed solution. I think I see that solution, but I personally won't be able to spend any time on it for a little while, ironically because I'm working on a major proposal where I'm finding myself quite annoyed by the limitations of plain |
That's too bad - sounds not particularly encouraging. Biber is far too large to be reimplementable by one person, though if this someday did happen, that would be awesome, as it would finally become just as fast as BibTeX on very large bib files. I did a brief Google search, and Perl supports interop with C, including the ability to instantiate a Perl interpreter from within C code, which together with Rust FFI means that in principle one can start a Perl interpreter from within Rust, thereby running Biber's code, perhaps an appropriately patched version thereof. However, whether this has any advantages over just downloading a Biber binary and invoking it as a shell command - this is unclear. |
I wanted to add that For the moment, I've been running Biber separately from VS Code by running This said, integration would be a step up, because this could all be theoretically done from within Tectonic, which could handle all of this automatically in addition to keeping Biber up-to-date in a reproducible manner. |
I found perlcc / staticperl not reliable enough to compile all required packages. And an easier to reason/debug route may be as proposed by @aterenin:
I have advanced towards (1) in https://github.com/vadimkantorov/buildbiber/blob/master/emperl.sh, but the script is in some broken, unreadable shape for now |
OK, as of the 0.7 release, Tectonic now supports execution of The current support doesn't let you pass command-line arguments to In principle I would certainly like to avoid having to invoke an external program, but as per the recent discussion, my guess is that it would be a pain to get that to work correctly. |
Amazing! 🎉🎉🎉 Unfortunately, I'm getting an error when using this.
|
@aterenin Would you be able to file a separate issue with a minimal failing example? I was kind of surprised that my initial testing didn't run into problems such as yours ... I'm sure that the issue here is related to the fact that the |
How would the recommended strategy above, i.e. tectonic --keep-intermediates --reruns 0 main.tex
biber main
tectonic main.tex work using the V2 commands/ layout used in tectonic's current docs, i.e.
as created by |
@clbarnes I'm afraid that functionality hasn't been wired in yet. My idea would be to add a keyword something like
that would automate this sort of sequence. It should be fairly straightforward to implement with the existing infrastructure ... someone just needs to sit down and do it. |
Both on windows and linux (both conda installation and biber on path) I'm getting this error $ tectonic src/master_thesis.tex
Running TeX ...
Running external tool biber ...
error: not found
$ tectonic --version
Tectonic 0.9.0 With \usepackage[backend=biber,style=phys,mcite=true,defernumbers=true]{biblatex} Has anyone encountered this error and knows a solution? |
@s-weigand On linux do you happen to be able to do an |
Do you have biber installed? I got a similar error when I did not have it in the path, disappeared once I added it |
Yeah I have it on the path, just the error message was a bit misleading 😅 The problem was that I'm currently just setting up the structure and reused the preamble from my bachelor thesis which included \usepackage{notes2bib} Thnx to the tip of @pkgw I ran it with
So it looks like After solving this issue my next one shows a helpful error message 😅
Guess I will have to manually copy a newer version of
Damn, why is it always so hard to get your latex env up and running? 😅 |
This kind of stuff is why I'm always trying to minimize dependencies on external tools, sigh. It's a little gross to overwrite files in the local cache but I presume that you have a sense of what you're getting yourself into if you do that! You should also be able to drop updated I think that when we update to TeXLive 2022, the built-in |
ping @s-weigand your version of biber should work now, See: #893 (comment) |
@mnrvwl Yeah it does 🎉 |
OK, thanks to everyone who's participated in this issue over the years (plural!). There is still plenty to do here, but I think that I am going to close this issue in favor of #893, which captures the current flavor of the challenges a bit more accurately in my opinion. At this point I feel pretty well convinced that we're not going to be able to bundle |
It seems that some
biblatex
modes require the backend programbiber
as an alternative tobibtex
. (Cf issue #33.) I don't know anything about it, but perhaps we should add it.To gauge interest, everyone is invited to add a short comment on this issue if they use
biber
in their day-to-day TeX'ing.The text was updated successfully, but these errors were encountered: