Documentation

Documentation · version 0.1.2

TexKit Studio

An open-source LaTeX writing studio that runs in your browser, on your own computer. No TeX installation, no account, no compile-time limits, and nothing is uploaded.

  • Nothing to set up. One pip install; the LaTeX engine, a package cache and the Word converter come with it.
  • Unlimited compiles. No time limit, no page limit, no queue. Auto-compile follows your typing.
  • Private. Your files stay ordinary files in your own folder. Nothing leaves your computer unless you start an online action.
  • Built for papers. Every figure, table and citation is tracked, errors are explained in plain English, and a submission check tells you what is left before you send it.
TexKit Studio in light mode: files, editor and live PDF. TexKit Studio in dark mode: files, editor and live PDF.

Install

You need Python 3.10 or newer. Then:

pipx install texkit-studio      # recommended: keeps it in its own environment
# or
pip install texkit-studio

That gives you the texkit command. Windows, Linux and macOS are supported. It has been tested on Windows and Linux; the macOS wheels are built the same way but haven't been tried yet.

  • The LaTeX engine (Tectonic) is included in the platform wheels. If your platform has none, it is downloaded and checksum-verified the first time you compile.
  • LaTeX packages. The platform wheels also carry a package cache (about 32 MB zipped, 89 MB unpacked). It is unpacked once on the first compile, so ordinary documents compile with no internet at all. See Engine, packages and offline.
  • On Ubuntu and Debian, prefer pipx (sudo apt install pipx): a plain pip install into the system Python is blocked there, and python3 -m venv needs the python3-venv package.

Upgrade and check

pipx upgrade texkit-studio      # or: pip install -U texkit-studio
texkit --version
texkit doctor                   # the engine, packages, Word export and folders

Quick start

Go to the folder with your paper and run the command, the same way code . works:

cd ~/papers/my-thesis
texkit

Your browser opens on that folder: files on the left, the editor in the middle, the PDF on the right. Your files stay ordinary files in that folder, so Git, Dropbox and other editors keep working.

  1. Open or start a project. Click the folder name in the toolbar to open another folder, start one from a template, or reveal the folder in Explorer or Finder.
  2. Write. The PDF follows your typing a moment after you stop.
  3. Read the problems. Errors and warnings are explained in plain English and link to the exact line.
  4. Check before you submit. The References and Check buttons in the header tell you what is left.

Running texkit again while it is already open switches the open studio to the new folder instead of starting a second copy.

Compile and preview

  • Compile with the button or Ctrl/⌘ + Enter. By default it also compiles a moment after you stop typing. There is no time limit.
  • While it compiles, the preview panel shows a spinner and a progress bar, and the Compile button ignores repeat clicks until the compile finishes.
  • Problems in plain English. Errors and warnings link to the exact line, and common mistakes get a one-click fix, such as “Replace with \includegraphics” or “Add \usepackage{booktabs}”.
  • Click to jump between the source and the PDF: double-click the PDF, or press Ctrl/⌘ + Shift + J in the editor.
  • Offline: if there is no internet, compiles fall back to packages already on your computer.

Which file is compiled

The file with the main badge. If you haven't chosen one, TexKit Studio uses main.tex when that is a complete document, otherwise the first file that has \documentclass and \begin{document} (fewest folders deep, then alphabetical). Hover over the badge to see which rule picked it.

To change it, hover any .tex file, in any sub-folder, and click ⋯ (or right-click) → Set as main file. It recompiles at once. If the file you pick is a chapter rather than a complete document, you are warned.

The right-click menu on supplement.tex: Open, Set as main file, Rename and Show in Explorer. The right-click menu on supplement.tex in dark mode: Open, Set as main file, Rename and Show in Explorer.
“Set as main file” on a document inside a sub-folder.

A % !TEX root = ../main.tex line at the top of a chapter makes that chapter compile its root. The choice is stored per folder in .texkit/project.json as mainFile.

Figures, tables and sources, all connected

Many journals require every figure and table to be referred to in the text, and every bibliography entry to be cited. TexKit Studio reads your whole document, including every chapter file, and keeps track of this for you.

  • The References panel lists every figure, table, equation and bibliography entry, marked referenced 2× or never referenced / not cited. One click inserts a reference to it.
  • The issues panel and the editor flag a figure or table that is never mentioned, a source that is never cited, a \ref or \cite that points nowhere, a figure without a label or caption, figures mentioned out of order, and citations with no bibliography printed. Each comes with a fix, such as adding the missing \label after the caption.
  • Insert reference (Alt + R) and Insert citation (Alt + C) search by number, caption, author, title or key.
  • Add a source by DOI or arXiv ID fetches the BibTeX for you.
  • Hover over a \ref or \cite to see what it points to. Ctrl/⌘ + click goes there.

Writing tools

  • Images: drag one into the text or paste a screenshot. It is saved to figures/ and a complete figure block is inserted.
  • Tables: build them in a grid, or paste cells from Excel or Sheets.
  • Symbols, equations and lists from the Insert menu (Alt + S for symbols).
  • Command palette (Ctrl/⌘ + K), search across all files (Ctrl/⌘ + Shift + F), an outline of the whole document, and focus mode.
  • Works on desktop, tablet and phone widths, in light and dark mode.

Formatting, like Prettier

Format document (Shift + Alt + F, the wand button, or texkit format in a terminal) tidies the open file: it indents environments, \item text and multi-line {...} groups, lines up the & columns of tables and aligned equations, removes trailing spaces and squeezes extra blank lines.

In .tex files it only ever changes whitespace, so the PDF stays exactly the same; verbatim and lstlisting blocks are left untouched. In .bib files it puts one field per line with the = signs lined up. Turn on Format when I press Ctrl/⌘+S in Settings to tidy on every save.

texkit format               # tidy every .tex and .bib file in this folder
texkit format --check       # change nothing; exit 1 if anything needs tidying (for CI)
texkit format --indent 4 chapters/

Version history

A snapshot of your text files is kept after every successful compile. Compare any version with the current one, and restore it.

Keyboard shortcuts

On macOS, use ⌘ where this table says Ctrl.

ActionKeys
CompileCtrl + Enter
Compile (also saves)Ctrl + S
Format documentShift + Alt + F
Command paletteCtrl + K
Quick open a fileCtrl + P
Insert reference / citation / symbolAlt + R / Alt + C / Alt + S
Show this line in the PDFCtrl + Shift + J
Jump from the PDF to the sourceDouble-click the PDF
Go to a label, citation or fileCtrl + click it
Bold / italicCtrl + B / Ctrl + I
Comment / uncommentCtrl + /
Find in file / search all filesCtrl + F / Ctrl + Shift + F
Toggle issues / sidebarCtrl + Shift + M / Ctrl + \
Editor / split / PDFCtrl + 1 / Ctrl + 2 / Ctrl + 3
Focus modeCtrl + Shift + Enter
Open folderCtrl + O

Reference check

Find the references that are invented, mistyped, retracted or missing a DOI, before a reviewer does.

Check references online looks every bibliography entry up in Crossref, DataCite, OpenAlex and arXiv. Start it from the References button in the header, the ✓ button in the Bibliography panel, the Submission check, or the command palette (Ctrl/⌘ + K).

The Check references online dialog with a summary of 3 problems, 1 to check, 1 suggestion and 2 verified, and a retracted paper listed first. The Check references online dialog in dark mode with a summary of 3 problems, 1 to check, 1 suggestion and 2 verified, and a retracted paper listed first.
Problems come first; verified references are folded away.

What the badges mean

BadgeMeaning
VerifiedThe DOI resolves to a paper with this title, and the details agree.
RetractedCrossref or OpenAlex records the paper as retracted. Don't cite it as sound evidence.
DOI not foundCrossref and DataCite have no record of the DOI, so it is mistyped or invented.
Wrong DOIThe DOI belongs to a different work. Either the title or the DOI is wrong.
Not foundNo publication with this title was found, and the entry has no DOI. If it is real, add its DOI; if you are not sure it exists, check it by hand.
ConcernAn expression of concern has been published for the paper.
Retraction noticeThe DOI is a retraction notice, not the paper itself. Cite the original paper instead.
Details differThe title, authors or year differ from the registered record.
Unsure matchA similar title was found, but it may not be the same paper.
No DOIThe paper was found but the entry has no DOI. A suggested DOI is shown, with a button to add it to the entry.
CorrectedA correction or erratum has been published. Check that you cite the corrected facts.
Check authorsThe first author differs from the record.
Not indexedBooks, theses, reports and web pages often aren't in these services, so check this one by hand.

A missing match isn't proof of fraud. Use it as a prompt to look: AI assistants sometimes invent references, but plenty of real ones just aren't indexed.

In your workflow

  • The References button in the header shows a red count for problems, or a green tick when everything is verified.
  • Each entry in the References panel gets a badge, and an entry nobody cites is marked not cited.
  • Add DOI to the entry writes the suggested DOI into your .bib file. Show in .bib jumps to the entry.
  • Check references automatically (in the dialog, or Settings) looks up new and edited entries as you write, and only those.
  • Results are remembered for a week, and an entry is checked again when you edit it.

What is sent, and when

Each entry's title, first author and DOI are sent to Crossref, DataCite, OpenAlex and arXiv, and only when you press the button or turn on automatic checking. Without internet the check stays off and says so; connect and press the button again. If a service is rate-limiting requests, TexKit Studio waits as long as it asks and tries again before giving up on an entry.

Spelling consistency

Keep to American or British English, all the way through.

Mixing American and British spelling (“color” with “behaviour”, “analyse” in an American text) is underlined in the editor, fixed in one click, shown under a Language filter in the issues panel, and summarised in the Submission check.

The issues panel on the Language filter: analyze and behavior flagged in a mostly British text, each with a Change to button. The issues panel in dark mode on the Language filter: analyze and behavior flagged in a mostly British text, each with a Change to button.
“analyze” and “behavior” stand out in a mostly British text. “Change to analyse” fixes the word.

Choosing the language

Open Settings → Spelling:

ChoiceWhat it does
AutoFollows \usepackage[british]{babel} (or american) if the document declares one, otherwise whichever variant you use most.
USFlags British spellings.
UKFlags American spellings.
OffNo spelling-consistency checks.
The Settings dialog with the Spelling setting set to Auto, US, UK or Off. The Settings dialog in dark mode with the Spelling setting set to Auto, US, UK or Off.

Good to know

  • “-ize” is accepted in British text (Oxford spelling) unless you also use “-ise”.
  • Maths, code, citations, names in mid-sentence and affiliations are ignored.
  • Add % nospell to the end of a line to skip it, for example for a quotation.
  • Add % texkit-spelling: british, american or off anywhere in a file to set the language for that document or turn the check off.

Submission check

One list of what is left before you send the paper: errors, text running into the margins, unreferenced figures and tables, uncited sources, missing files, mixed spelling, and a prompt to check your references online. It also shows the page, word and abstract counts.

The Submission check dialog: pages, words, abstract words, figures, tables and sources cited, then a checklist. The Submission check dialog in dark mode: pages, words, abstract words, figures, tables and sources cited, then a checklist.

Journals differ: treat it as a checklist, not a verdict.

Downloads

Use Download in the header to get:

  • a PDF;
  • a Word file (.docx, converted with Pandoc; formatting is approximate);
  • the whole project as a ZIP;
  • a submission package: one flattened .tex with its .bbl and only the images it uses, as arXiv and journals ask for.

Templates and import

  • Templates: Starter tour, Blank article, IEEE conference, Elsevier and Thesis. Start one from the folder menu in the toolbar.
  • Import a ZIP, for example an Overleaf download, from the folder menu, or run texkit paper.zip.

Engine, packages and offline use

TexKit Studio compiles with Tectonic, an XeTeX-based engine. The platform wheels carry it, together with a package cache.

  • The package cache (about 32 MB zipped, 89 MB unpacked) holds the common classes at 10, 11 and 12pt, about 190 popular packages, the standard fonts, BibTeX styles and the main babel languages. It is unpacked once, on the first compile, into TexKit Studio's own data folder.
  • Anything outside it is fetched the first time a document uses it, then cached. Offline, that compile fails with a clear message instead.
  • With the pure wheel or a source install, nothing is bundled: the engine and every package are fetched on first use, and that first compile can take a few minutes.
  • texkit doctor shows the state of the engine and the packages. texkit prepare-offline downloads the rest of what the templates need.
  • If you set TECTONIC_CACHE_DIR yourself, TexKit Studio uses your cache and leaves its own alone.

Journals, EPS images and a full TeX installation

Journal and conference templates

Templates written for pdfLaTeX compile as they do on Overleaf. The built-in engine is XeTeX-based, so TexKit Studio smooths over the differences before your document starts:

  • pdfTeX-only commands (\pdfgentounicode, \pdfglyphtounicode, \pdfminorversion, …) are accepted;
  • [pdftex] and [dvips] driver options become [xetex];
  • biblatex switches from Biber to BibTeX, and an info message says so;
  • Unicode text such as š, × or – prints correctly with the usual 8-bit fonts instead of vanishing or showing the wrong glyph.

EPS images

The engine can't embed .eps files itself, so TexKit Studio uses name-eps-converted-to.pdf when it sits next to the image (Overleaf and Prism leave these behind), otherwise converts the image with Ghostscript if it is installed. With neither, the compile still succeeds, the image is a grey placeholder, and the issues panel says which one is missing. Converted files live in the build cache, not in your folder.

A full TeX installation, when a document needs one

If TeX Live, MiKTeX, MacTeX or TinyTeX is installed, documents that need more than the built-in engine are built with it automatically: an index or glossary, biblatex with Biber styles, minted, packages newer than the built-in LaTeX (2021), and fonts by name. If the built-in engine fails for such a reason, the installation is tried as a second attempt and the better result is kept. Without one, the issues panel names what the document uses and what is missing. Run texkit doctor to see what was found.

Settings and options

In the app

Open Settings (the sliders icon in the header):

SettingWhat it does
AppearanceSystem, Light or Dark.
Compile automaticallyCompile a moment after you stop typing.
Check references automaticallyLook up new and edited references online and badge them. Sends their title, first author and DOI.
SpellingAuto, US, UK or Off. See Spelling consistency.
Wrap long linesWrap lines in the editor.
Format when I press Ctrl/⌘+STidy the file before compiling, like Prettier format on save.
Indentation2 or 4 spaces.
Line up table columnsAlign the & in tables and equations.
Spell checkUnderline misspelled words using your browser's dictionary.

Per folder

Options for one folder go in .texkit/project.json:

{ "engine": "auto", "shellEscape": false, "autoInstall": false, "mainFile": "main.tex" }
KeyMeaning
engineauto (default), tectonic or system.
shellEscapeLets that folder's documents run programs, which minted and svg need. Off by default; only turn it on for documents you trust.
autoInstallLets MiKTeX download missing packages. Off by default, because MiKTeX would otherwise open a dialog that an automatic compile can't answer.
mainFileThe file to compile. Set for you by Set as main file.

Environment variables

VariableMeaning
TEXKIT_ENGINEOverrides engine: auto, tectonic or system.
TEXKIT_SHELL_ESCAPE=1Overrides shellEscape.
TEXKIT_TEXBINThe folder holding the TeX programs, if they aren't found on their own.
TEXKIT_TECTONICUse this Tectonic binary instead of the bundled one.
TEXKIT_GSThe Ghostscript program used for EPS images.
TECTONIC_CACHE_DIRUse this package cache instead of TexKit Studio's own.
TEXKIT_DATA_DIR, TEXKIT_CACHE_DIRWhere TexKit Studio keeps its data and its build cache.
TEXKIT_NO_PRELUDETurns off the pdfTeX-compatibility layer described in Journals.

Commands

texkit PATH             # open another folder (or the folder of a .tex file, or a .zip)
texkit --port 9000      # use a different port (default 8765; a free one is picked if busy)
texkit --no-browser     # start without opening a browser tab
texkit --version        # show the version
texkit compile [PATH]   # compile without the UI and print any problems (handy for CI)
texkit format [PATH]    # tidy .tex and .bib files, like Prettier (--check for CI)
texkit prepare-offline  # download the packages the templates use, for offline work
texkit doctor           # check the engine, packages, Word export and folders

Privacy and safety

  • The server listens on 127.0.0.1 only, and every request needs a session cookie set by the link the command opens.
  • Requests with another Host header are rejected, which blocks DNS-rebinding attacks.
  • Documents can't run programs (shell-escape is off) unless you turn on shellEscape for that folder yourself.
  • Deleting a file moves it to the Recycle Bin or Trash.
  • Your files are never uploaded. The only things that go online are the actions you start: looking up a DOI, and Check references online, which sends each entry's title, first author and DOI to Crossref, DataCite, OpenAlex and arXiv.

Troubleshooting

The page says “Open TexKit Studio from your terminal”

For privacy, the page only works through the link the command opens. In a terminal, go to your project folder and run texkit.

The first compile is slow

With a platform wheel, the first compile unpacks the bundled package cache, which takes a few seconds, once. With the pure wheel or a source install, every package is fetched on first use, and that can take a few minutes on a slow connection. texkit doctor shows which case you are in.

A compile fails with no internet

The document uses a package that isn't in the bundled cache and hasn't been downloaded yet. Connect once and compile, and it is cached for next time.

“Check references online” says it has no internet connection

The check needs a connection and stays off without one. Connect and press the button again.

An entry says the service is rate-limiting requests

Crossref, OpenAlex or another service asked TexKit Studio to slow down and kept asking. Wait a minute and press the button again.

An EPS image is a grey placeholder

Neither a name-eps-converted-to.pdf next to the image nor Ghostscript was found. See EPS images.

pip install is blocked on Ubuntu or Debian

Use pipx: sudo apt install pipx, then pipx install texkit-studio.

The default port is busy

TexKit Studio picks a free port by itself. To choose one, use texkit --port 9000.

Develop

TexKit Studio is a pure Python repository: no Node.js and no build step. The web UI is plain JavaScript modules in src/texkit_studio/static/, with CodeMirror and PDF.js vendored by scripts/vendor.py.

git clone https://github.com/AbidHasanRafi/texkit-studio.git
cd texkit-studio
python -m venv .venv
.venv/Scripts/activate            # Windows (on macOS/Linux: source .venv/bin/activate)
pip install -e ".[dev]"
pytest

The source, the issue tracker and the contribution notes are on GitHub. TexKit Studio is released under the MIT licence.