[Tex/LaTex] Biber and Sublime text

bibersublime-text

I use Sublime since two years and also biber but after an update of Latextools biber do not run. I get the two warnings below (and many more because of the undefined cites):

LaTeX Warning: There were undefined references.

Package biblatex Warning: Please (re)run Biber on the file:(biblatex)                Signalerzeugung(biblatex)                and rerun LaTeX afterwards.

The console show me this:

<module 'simpleBuilder' from 'C:\\Users\\Dominik\\AppData\\Roaming\\Sublime Text 3\\Packages\\LaTeXTools\\builders\\simpleBuilder.py'>
<class 'simpleBuilder.SimpleBuilder'>
2
Welcome to thread Thread-9
['pdflatex', '-interaction=nonstopmode', '-synctex=1', 'Signalerzeugung']
Finished normally
0
False True True
!TEX root = 'D:\\Dropbox\\Masterarbeit\\dokumentation\\signalerzeugung\\Signalerzeugung.tex'
Jump to:  191 24
Windows, Calling Sumatra

I reinstalled the latextools and Miktex but the Problem still exist 🙁

Best Answer

So, for future reference, this was answered on the LaTeXTools issue tracker.

To summarise, you have several options:

  1. Using the traditional builder, which uses texify: Create an environment variable called BIBTEX (Windows 10 or more generally) and set its value to "biber" or the path to your biber executable.

  2. Install latexmk and change the distro setting in your LaTeXTools settings to "texlive", which doesn't require that you have texlive installed.

  3. Create a custom builder based on the SimpleBuilder that invokes bibtex. For reference it might look something like this:

    from pdfBuilder import PdfBuilder
    
    import re
    
    PDFLATEX = ["pdflatex", "-interaction=nonstopmode", "-synctex=1"]
    BIBER = ["biber"]
    
    CITATIONS_REGEX = re.compile(r"Warning: Citation `.+' on page \d+ undefined")
    
    class BiberBuilder(PdfBuilder):
        def __init__(self, *args):
            super(BiberBuilder, self).__init__(*args)
            self.name = "Biber Builder"
    
        def commands(self):
            self.display("\n\nBiberBuilder: ")
    
            yield(PDFLATEX + [self.base_name], "Running pdflatex...")
            self.display("done.\n")
    
            if CITATIONS_REGEX.search(self.out):
                yield(BIBER + [self.base_name], "Running biber...")
                self.display("done.\n")
    
                yield(PDFLATEX + [self.base_name], "Running pdflatex...")
                self.display("done.\n")
    
                yield(PDFLATEX + [self.base_name], "Running pdflatex...")
                self.display("done.\n")
    
            if "Rerun to get cross-references right." in self.out:
                yield (PDFLATEX + [self.base_name], "Running pdflatex...")
                self.display("done.\n")
    

    Save the builder to a file called biberBuilder.py in a folder underneath Sublime Packages directory (in Sublime select Preferences|Browse Packages...) and set the "builder_path" setting in your LaTeXTools settings to the relative path to the folder containing the builder, e.g. "User/LaTeXTools" and set the "builder" setting to "biber"