DEV Community

TeX64
TeX64

Posted on

I gave up on Zotero for my thesis. Here's the LaTeX-native bibliography + figure workflow I use now.

TL;DR

  • Word + Zotero (or Mendeley/EndNote) breaks at scale because field codes silently miscount when you reorder sections
  • The fix: drop the reference manager and use biblatex + biber + a plain .bib file in version control
  • For figures: PGFPlots for data plots (matches body font), TikZ for diagrams, matplotlib for huge datasets (export to PDF)
  • On macOS, an AI-assisted LaTeX editor like TeX64 cuts log-debugging time from hours to minutes
  • Set this up months before your deadline, not during

The setup that almost made me miss my deadline

I was three weeks from my thesis deadline when I realized something painful: my reference list was lying to me.

I had been using Zotero with the Word plugin for two years. Click "Insert Citation," watch the number appear, move on. Then late one night, I checked a citation in chapter 4 and the number pointed to a paper I had never read. Somewhere in the previous month, I had moved a section, and the field codes had silently misnumbered themselves.

Add to that the matplotlib figures I was pasting as PNGs into Word — fonts that didn't match the body text, axis labels that looked sloppy under a magnifier, captions floating above the wrong figure on every other compile.

I gave up on the Word + Zotero workflow that night. Three weeks later, I submitted a thesis written entirely in LaTeX. This is what I actually use now, in case it helps anyone in the same spot.

What I tried and stopped using

Zotero + Word plugin. The plugin is the weakest link. Field codes break under track changes, comments, and section reorders. Once they break, the only fix is to reinsert every citation by hand.

Mendeley. Same family of problems, different vendor. The Mac client kept asking me to log in.

EndNote. A reference manager that costs money and still produces the same broken field-code soup. I gave up after the trial.

Pasting PNG figures into Word. Fonts will never match. Captions will never stay attached. You will spend the last 48 hours of your thesis manually re-aligning figure numbers.

I stopped trying to make external bibliography managers cooperate with the document and moved everything into LaTeX itself.

The current workflow

The whole stack is:

  • A plain folder with main.tex, refs.bib, and a figures/ directory
  • biblatex + biber for citations
  • PGFPlots for data figures, TikZ for diagrams, occasionally matplotlib for very large datasets
  • TeX64 as the editor, with its built-in AI (Axiom) for log parsing
  • Git for version control

That's it. No cloud sync, no field codes, no plugin dependencies.

Citations: biblatex is just better

Here's the entire bibliography setup in the preamble:

\usepackage[backend=biber, style=ieee, sorting=none]{biblatex}
\addbibresource{refs.bib}
Enter fullscreen mode Exit fullscreen mode

Adding a paper to my library means copying the BibTeX entry from Google Scholar (the quote icon under each result) and pasting it into refs.bib:

@article{tanaka2024deep,  title={A Deep Learning Approach to ...},
  author={Tanaka, Hiroshi and Sato, Mei},
  journal={IEEE Transactions on ...},
  year={2024},
}
Enter fullscreen mode Exit fullscreen mode

Citing it is one line:

The seminal work \cite{tanaka2024deep} demonstrates ...
Enter fullscreen mode Exit fullscreen mode

When my advisor asked me to switch from IEEE style to APA two days before submission, I changed style=ieee to style=apa and recompiled. Done.

When I reordered chapters, the numbers updated themselves. No field codes to repair.

The thing that finally clicked for me: the reference manager was the wrong abstraction. What I actually needed was a plain text file of BibTeX entries, version-controlled with the rest of the thesis. Anything more complicated than that creates problems instead of solving them.

Figures: stop pasting screenshots

For data figures with reasonable point counts (under ~5000), I use PGFPlots:

\begin{tikzpicture}
\begin{axis}[
    xlabel={Time [s]},
    ylabel={Response [V]},
    width=0.8\linewidth,
    grid=both,
]
\addplot+[mark=o] table[col sep=comma, x=t, y=v]
    {data/result.csv};
\end{axis}
\end{tikzpicture}
Enter fullscreen mode Exit fullscreen mode

The font in the figure is the body font of the document. The line weights match. Captions stay attached. None of this is a fight.

For huge datasets, I generate the figure in matplotlib and save as PDF, then \includegraphics{} it. The fonts won't perfectly match, but readers don't notice for raw experimental plots.

For diagrams (system overviews, flowcharts, architecture sketches), TikZ wins:

\begin{tikzpicture}[
    node distance=1.5cm,
    block/.style={draw, rectangle, minimum width=2cm, minimum height=1cm},
]
\node[block] (input) {Input};
\node[block, right=of input] (proc) {Processor};
\node[block, right=of proc] (out) {Output};
\draw[-Stealth, thick] (input) -- (proc);
\draw[-Stealth, thick] (proc) -- (out);
\end{tikzpicture}
Enter fullscreen mode Exit fullscreen mode

The positioning library means I never compute coordinates by hand. Move proc and the arrows follow.

Where the editor actually matters

Most of this stack is editor-agnostic. You can do all of it in VS Code with LaTeX Workshop, in TeXShop, or in Vim. The reason I switched to TeX64 (a native macOS editor) is two-fold:

1. Log parsing. When biber complains about a missing citation key, or pgfplots throws a compat warning, I drop the log into the built-in AI assistant (Axiom) and get back the actual cause. Not a guess. Not a generic suggestion. The actual missing package, the actual misuse of align, the actual line where the bracket was unclosed.

This used to be the part of LaTeX where I lost evenings. Now it takes a minute.

2. TikZ from natural language. I describe what I want — "block diagram, three boxes left to right, arrows between them" — and Axiom returns a working skeleton. I edit the skeleton instead of writing TikZ from scratch. The learning curve of TikZ is the main reason people give up on it. Skipping the cold start changes the calculus.

I'm not claiming this is the only editor that does this. Cursor, VS Code with Copilot, and a couple others can do similar things if you wire them up. TeX64 just happens to be the one that worked for me without configuration. The point is: the AI-assisted log parsing turned LaTeX from "fights you back" to "fixable in one round-trip."

What I would tell past me

Three concrete things I'd tell my pre-thesis self:

  1. Move to LaTeX before the deadline crunch, not during. I lost a week trying to migrate three weeks before submission. If I had spent two days on it during summer break, the rest of the thesis would have been smoother by 10x.

  2. Use biblatex, not raw BibTeX with .bst files. It's 2026. The old setup is harder for no benefit.

  3. Don't paste PNG figures into a LaTeX document. Either go all the way (PGFPlots / TikZ) or use PDF figures from matplotlib. PNG is a downgrade in every dimension.

The full minimal preamble

For anyone who wants to copy-paste:

\documentclass[11pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{amsmath, amssymb}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usetikzlibrary{arrows.meta, positioning}

\usepackage[backend=biber, style=ieee, sorting=none]{biblatex}
\addbibresource{refs.bib}

\usepackage[hidelinks]{hyperref}
\usepackage{cleveref}

\begin{document}

% Your thesis goes here.

\printbibliography

\end{document}
Enter fullscreen mode Exit fullscreen mode

Compile order is pdflatex → biber → pdflatex → pdflatex, or just hit Build in any modern LaTeX editor.

Closing

The reason I switched isn't that LaTeX is "better" in some abstract sense. It's that the failure modes are recoverable. A broken citation in Word is a missing field code that no one can debug. A broken citation in LaTeX is one line in a plain text file that I can fix in five seconds.

When you have three weeks left on your thesis, recoverability is everything.


If you're on macOS and want a no-config LaTeX editor with built-in error parsing, I use TeX64: https://tex64.com. It's what I switched to mid-thesis. Not a sponsored mention — it just happened to be the one that worked for me.


FAQ

Q. ! Package biblatex Error: Incompatible package 'babel/polyglossia' detected.
You're missing csquotes. Add \usepackage{csquotes} before \usepackage{biblatex}.

Q. My citations come out as [?].
You forgot to run biber. The full compile order is pdflatex → biber → pdflatex → pdflatex. Most modern LaTeX editors do this automatically when you press Build.

**Q. ! LaTeX Error: File 'biblatex.sle[col sep=comma, x=t, y=v]
{data/result.csv};
\end{axis}
\end{tikzpicture}
``tex

The font in the figure is the body font of the document. The line weights match. Captions stay attached. None of this is a fight.

For huge datasets, I generate the figure in matplotlib and save as PDF, then \includegraphics{} it. The fonts won't perfectly match, but readers don't notice for raw experimental plots.

For diagrams (system overviews, flowcharts, architecture sketches), TikZ wins:

`latex
\begin{tikzpicture}[
node distance=1.5cm,
block/.style={draw, rectangle, minimum width=2cm, minimum height=1cm},
]
\node[block] (input) {Input};
\node[block, right=of input] (proc) {Processor};
\node[block, right=of proc] (out) {Output};
\draw[-Stealth, thick] (input) -- (proc);
\draw[-Stealth, thick] (proc) -- (out);
\end{tikzpicture}
`

The positioning library means I never compute coordinates by hand. Move proc and the arrows follow.

Where the editor actually matters

Most of this stack is editor-agnostic. You can do all of it in VS Code with LaTeX Workshop, in TeXShop, or in Vim. The reason I switched to TeX64 (a native macOS editor) is two-fold:

1. Log parsing. When biber complains about a missing citation key, or pgfplots throws a compat warning, I drop the log into the built-in AI assistant (Axiom) and get back the actual cause. Not a guess. Not a generic suggestion. The actual missing package, the actual misuse of align, the actual line where the bracket was unclosed.

This used to be the part of LaTeX where I lost evenings. Now it takes a minute.

2. TikZ from natural language. I describe what I want — "block diagram, three boxes left to right, arrows between them" — and Axiom returns a working skeleton. I edit the skeleton instead of writing TikZ from scratch. The learning curve of TikZ is the main reason people give up on it. Skipping the cold start changes the calculus.

I'm not claiming this is the only editor that does this. Cursor, VS Code with Copilot, and a couple others can do similar things if you wire them up. TeX64 just happens to be the one that worked for me without configuration. The point is: the AI-assisted log parsing turned LaTeX from "fights you back" to "fixable in one round-trip."

What I would tell past me

Three concrete things I'd tell my pre-thesis self:

  1. Move to LaTeX before the deadline crunch, not during. I lost a week trying to migrate three weeks before submission. If I had spent two days on it during summer break, the rest of the thesis would have been smoother by 10x.

  2. Use biblatex, not raw BibTeX with .bst files. It's 2026. The old setup is harder for no benefit.

  3. Don't paste PNG figures into a LaTeX document. Either go all the way (PGFPlots / TikZ) or use PDF figures from matplotlib. PNG is a downgrade in every dimension.

The full minimal preamble

For anyone who wants to copy-paste:

`latex
\documentclass[11pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{amsmath, amssymb}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usetikzlibrary{arrows.meta, positioning}

\usepackage[backend=biber, style=ieee, sorting=none]{biblatex}
\addbibresource{refs.bib}

\usepackage[hidelinks]{hyperref}
\usepackage{cleveref}

\begin{document}

% Your thesis goes here.

\printbibliography

\end{document}
`

Compile order is pdflatex → biber → pdflatex → pdflatex, or just hit Build in any modern LaTeX editor.

Closing

The reason I switched isn't that LaTeX is "better" in some abstract sense. It's that the failure modes are recoverable. A broken citation in Word is a missing field code that no one can debug. A broken citation in LaTeX is one line in a plain text file that I can fix in five seconds.

When you have three weeks left on your thesis, recoverability is everything.


If you're on macOS and want a no-config LaTeX editor with built-in error parsing, I use TeX64: https://tex64.com. It's what I switched to mid-thesis. Not a sponsored mention — it just happened to be the one that worked for me.


FAQ

Q. ! Package biblatex Error: Incompatible package 'babel/polyglossia' detected.
You're missing csquotes. Add \usepackage{csquotes} before \usepackage{biblatex}.

Q. My citations come out as [?].
You forgot to run biber. The full compile order is pdflatex → biber → pdflatex → pdflatex. Most modern LaTeX editors do this automatically when you press Build.

Q. ! LaTeX Error: File 'biblatex.sty' not found.
Your TeX distribution doesn't include biblatex. Install with tlmgr install biblatex biber. A full MacTeX install ships with it.

Q. Should I use biblatex or the older natbib?
Use biblatex for new projects. Style switching is one option (style=ieeestyle=apa), Unicode names work out of the box, and the documentation is better.

Q. Should I use Zotero with the Better BibTeX plugin?
You can. But Zotero's value is the reference collection (DOI fetching, PDF organization), not the citation insertion. I let Zotero manage my reading library, then export entries I actually cite into a hand-curated refs.bib.

Q. PGFPlots crashes with ! TeX capacity exceeded on large datasets.
Two fixes: (1) \addplot+[each nth point=10] to downsample, (2) \usepgfplotslibrary{external} to compile each figure as a standalone PDF.

Q. Can I get matplotlib figures to match Computer Modern body text?
Yes — set matplotlib.rcParams['text.usetex'] = True, ensure pdflatex is on PATH. The catch: this breaks in CI environments without LaTeX installed.

Q. Is TeX64 just an editor, or does it do something different?
It's a native macOS LaTeX editor with one feature that mattered for me: an embedded AI assistant ("Axiom") that reads your compile log and source files together and explains errors.

Q. What about Windows or Linux?
TeXstudio and VS Code with the LaTeX Workshop extension are the standard recommendations. The bibliography and figure workflow in this article is OS-independent — only the editor changes.

Q. How long should I budget for the LaTeX migration?
Two solid days, ideally during a break. One day for biblatex + your reading list, one day for figures (PGFPlots/TikZ practice). Don't migrate during the deadline crunch.
to right, arrows between them" — and Axiom returns a working skeleton. I edit the skeleton instead of writing TikZ from scratch. The learning curve of TikZ is the main reason people give up on it. Skipping the cold start changes the calculus.

I'm not claiming this is the only editor that does this. Cursor, VS Code with Copilot, and a couple others can do similar things if you wire them up. TeX64 just happens to be the one that worked for me without configuration. The point is: the AI-assisted log parsing turned LaTeX from "fights you back" to "fixable in one round-trip."

What I would tell past me

Three concrete things I'd tell my pre-thesis self:

  1. Move to LaTeX before the deadline crunch, not during. I lost a week trying to migrate three weeks before submission. If I had spent two days on it during summer break, the rest of the thesis would have been smoother by 10x.

  2. Use biblatex, not raw BibTeX with .bst files. It's 2026. The old setup is harder for no benefit.

  3. Don't paste PNG figures into a LaTeX document. Either go all the way (PGFPlots / TikZ) or use PDF figures from matplotlib. PNG is a downgrade in every dimension.

The full minimal preamble

For anyone who wants to copy-paste:

`latex
\documentclass[11pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{amsmath, amssymb}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usetikzlibrary{arrows.meta, positioning}

\usepackage[backend=biber, style=ieee, sorting=none]{biblatex}
\addbibresource{refs.bib}

\usepackage[hidelinks]{hyperref}
\usepackage{cleveref}

\begin{document}

% Your thesis goes here.

\printbibliography

\end{document}
`

Compile order is pdflatex → biber → pdflatex → pdflatex, or just hit Build in any modern LaTeX editor.

Closing

The reason I switched isn't that LaTeX is "better" in some abstract sense. It's that the failure modes are recoverable. A broken citation in Word is a missing field code that no one can debug. A broken citation in LaTeX is one line in a plain text file that I can fix in five seconds.

When you have three weeks left on your thesis, recoverability is everything.


If you're on macOS and want a no-config LaTeX editor with built-in error parsing, I use TeX64: https://tex64.com. It's what I switched to mid-thesis. Not a sponsored mention — it just happened to be the one that worked for me.


FAQ

Q. ! Package biblatex Error: Incompatible package 'babel/polyglossia' detected.
You're missing csquotes. Add \usepackage{csquotes} before \usepackage{biblatex}.

Q. My citations come out as [?].
You forgot to run biber. The full compile order is pdflatex → biber → pdflatex → pdflatex.

Q. ! LaTeX Error: File 'biblatex.sty' not found.
Your TeX distribution doesn't include biblatex. Install with tlmgr install biblatex biber. A full MacTeX install ships with it.

Q. Should I use biblatex or the older natbib?
Use biblatex for new projects. Style switching is one option (style=ieeestyle=apa), Unicode names work out of the box, and the documentation is better.

Q. Should I use Zotero with the Better BibTeX plugin?
You can. But Zotero's value is the reference collection (DOI fetching, PDF organization), not the citation insertion. I let Zotero manage my reading library, then export entries I actually cite into a hand-curated refs.bib.

Q. PGFPlots crashes with ! TeX capacity exceeded on large datasets.
Two fixes: (1) \addplot+[each nth point=10] to downsample, (2) \usepgfplotslibrary{external} to compile each figure as a standalone PDF.

Q. Can I get matplotlib figures to match Computer Modern body text?
Yes — set matplotlib.rcParams['text.usetex'] = True, ensure pdflatex is on PATH. The catch: this breaks in CI environments without LaTeX installed.

Q. Is TeX64 just an editor, or does it do something different?
It's a native macOS LaTeX editor with one feature that mattered for me: an embedded AI assistant ("Axiom") that reads your compile log and source files together and explains errors.

Q. What about Windows or Linux?
TeXstudio and VS Code with the LaTeX Workshop extension are the standard recommendations. The bibliography and figure workflow in this article is OS-independent — only the editor changes.

Q. How long should I budget for the LaTeX migration?
Two solid days, ideally during a break. One day for biblatex + your reading list, one day for figures (PGFPlots/TikZ practice). Don't migrate during the deadline crunch.
ckage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{amsmath, amssymb}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usetikzlibrary{arrows.meta, positioning}

\usepackage[backend=biber, style=ieee, sorting=none]{biblatex}
\addbibresource{refs.bib}

\usepackage[hidelinks]{hyperref}
\usepackage{cleveref}

\begin{document}

% Your thesis goes here.

\printbibliography

\end{document}
`

Compile order is pdflatex → biber → pdflatex → pdflatex, or just hit Build in any modern LaTeX editor.

Closing

The reason I switched isn't that LaTeX is "better" in some abstract sense. It's that the failure modes are recoverable. A broken citation in Word is a missing field code that no one can debug. A broken citation in LaTeX is one line in a plain text file that I can fix in five seconds.

When you have three weeks left on your thesis, recoverability is everything.


If you're on macOS and want a no-config LaTeX editor with built-in error parsing, I use TeX64: https://tex64.com. It's what I switched to mid-thesis. Not a sponsored mention — it just happened to be the one that worked for me.


FAQ

Q. ! Package biblatex Error: Incompatible package 'babel/polyglossia' detected.
You're missing csquotes. Add \usepackage{csquotes} before \usepackage{biblatex}.

Q. My citations come out as [?].
You forgot to run biber. The full compile order is pdflatex → biber → pdflatex → pdflatex.

Q. ! LaTeX Error: File 'biblatex.sty' not found.
Your TeX distribution doesn't include biblatex. Install with tlmgr install biblatex biber. A full MacTeX install ships with it.

Q. Should I use biblatex or the older natbib?
Use biblatex for new projects. Style switching is one option (style=ieeestyle=apa), Unicode names work out of the box, and the documentation is better.

Q. Should I use Zotero with the Better BibTeX plugin?
You can. But Zotero's value is the reference collection (DOI fetching, PDF organization), not the citation insertion. I let Zotero manage my reading library, then export entries I actually cite into a hand-curated refs.bib.

Q. PGFPlots crashes with ! TeX capacity exceeded on large datasets.
Two fixes: (1) \addplot+[each nth point=10] to downsample, (2) \usepgfplotslibrary{external} to compile each figure as a standalone PDF.

Q. Can I get matplotlib figures to match Computer Modern body text?
Yes — set matplotlib.rcParams['text.usetex'] = True, ensure pdflatex is on PATH. The catch: this breaks in CI environments without LaTeX installed.

Q. Is TeX64 just an editor, or does it do something different?
It's a native macOS LaTeX editor with one feature that mattered for me: an embedded AI assistant ("Axiom") that reads your compile log and source files together and explains errors.

Q. What about Windows or Linux?
TeXstudio and VS Code with the LaTeX Workshop extension are the standard recommendations. The bibliography and figure workflow in this article is OS-independent — only the editor changes.

Q. How long should I budget for the LaTeX migration?
Two solid days, ideally during a break. One day for biblatex + your reading list, one day for figures (PGFPlots/TikZ practice). Don't migrate during the deadline crunch.age 'babel/polyglossia' detected.**
You're missing
csquotes. Add \usepackage{csquotes} *before* \usepackage{biblatex}`.

Q. My citations come out as [?].
You forgot to run biber. The full compile order is pdflatex → biber → pdflatex → pdflatex.

Q. ! LaTeX Error: File 'biblatex.sty' not found.
Your TeX distribution doesn't include biblatex. Install with tlmgr install biblatex biber. A full MacTeX install ships with it.

Q. Should I use biblatex or the older natbib?
Use biblatex for new projects. Style switching is one option (style=ieeestyle=apa), Unicode names work out of the box, and the documentation is better.

Q. Should I use Zotero with the Better BibTeX plugin?
You can. But Zotero's value is the reference collection (DOI fetching, PDF organization), not the citation insertion. I let Zotero manage my reading library, then export entries I actually cite into a hand-curated refs.bib.

Q. PGFPlots crashes with ! TeX capacity exceeded on large datasets.
Two fixes: (1) \addplot+[each nth point=10] to downsample, (2) \usepgfplotslibrary{external} to compile each figure as a standalone PDF.

Q. Can I get matplotlib figures to match Computer Modern body text?
Yes — set matplotlib.rcParams['text.usetex'] = True, ensure pdflatex is on PATH. The catch: this breaks in CI environments without LaTeX installed.

Q. Is TeX64 just an editor, or does it do something different?
It's a native macOS LaTeX editor with one feature that mattered for me: an embedded AI assistant ("Axiom") that reads your compile log and source files together and explains errors.

Q. What about Windows or Linux?
TeXstudio and VS Code with the LaTeX Workshop extension are the standard recommendations. The bibliography and figure workflow in this article is OS-independent — only the editor changes.

Q. How long should I budget for the LaTeX migration?
Two solid days, ideally during a break. One day for biblatex + your reading list, one day for figures (PGFPlots/TikZ practice). Don't migrate during the deadline crunch.10]to downsample, (2)\usepgfplotslibrary{external}` to compile each figure as a standalone PDF.

Q. Can I get matplotlib figures to match Computer Modern body text?
Yes — set matplotlib.rcParams['text.usetex'] = True, ensure pdflatex is on PATH. The catch: this breaks in CI environments without LaTeX installed.

Q. Is TeX64 just an editor, or does it do something different?
It's a native macOS LaTeX editor with one feature that mattered for me: an embedded AI assistant ("Axiom") that reads your compile log and source files together and explains errors.

Q. What about Windows or Linux?
TeXstudio and VS Code with the LaTeX Workshop extension are the standard recommendations. The bibliography and figure workflow in this article is OS-independent — only the editor changes.

Q. How long should I budget for the LaTeX migration?
Two solid days, ideally during a break. One day for biblatex + your reading list, one day for figures (PGFPlots/TikZ practice). Don't migrate during the deadline crunch.

Top comments (0)