From 669f5ac1abc309be73b6f3a0c26a9271357afcd0 Mon Sep 17 00:00:00 2001 From: Oscar Madera <80536682+oscarbol09@users.noreply.github.com> Date: Mon, 20 Jul 2026 11:40:50 -0500 Subject: [PATCH] docs(setup): add Basic MiKTeX setup instructions for Windows (#186) Documents the Windows Basic MiKTeX path missing from SETUP.md's minimal-TeX section: enabling silent [MPM]AutoInstall so missing-package installs don't block on a GUI prompt in non-interactive terminals, an mpm pre-install alternative matching the macOS TinyTeX package list, and a PowerShell translation of the existing bash smoke tests. Nested under the LaTeX section as a peer of the TinyTeX/BasicTeX subsection. By @oscarbol09 (first contribution). Package names, AutoInstall config, and the PowerShell smoke block empirically verified on Windows 11 + MiKTeX. --- SETUP.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/SETUP.md b/SETUP.md index 3d92d7a..05854e1 100644 --- a/SETUP.md +++ b/SETUP.md @@ -97,6 +97,50 @@ EOF (cd "$SMOKE_DIR" && xelatex -interaction=nonstopmode -halt-on-error cover_smoke.tex) ``` +#### Windows: Basic MiKTeX + +The full MiKTeX installer bundles every CTAN package and works out of the box, but the smaller [Basic MiKTeX](https://miktex.org/download) installer (`basic-miktex-*.exe`) only ships a minimal package set and needs a couple of one-time settings before the stock templates compile. + +By default, MiKTeX installs missing packages on demand but pops up a GUI prompt for each one — which blocks non-interactive terminals (including Claude Code's Bash tool). Turn that into a silent auto-install instead: + +```powershell +initexmf --admin --set-config-value=[MPM]AutoInstall=1 +initexmf --set-config-value=[MPM]AutoInstall=1 +``` + +(Run the first line from an elevated/Admin PowerShell if you installed MiKTeX for all users; the second line covers a per-user install. Only one will apply depending on how you installed it — running both is harmless.) + +If you'd rather not rely on on-the-fly installs at all (for example, for a fully offline compile later), pre-install the same package set the macOS TinyTeX section above lists, using MiKTeX's package manager: + +```powershell +mpm --admin --install=moderncv --install=fontawesome5 --install=fontawesome6 --install=academicons --install=import --install=luatexbase --install=pgf --install=titlesec --install=textpos --install=xltxtra --install=xunicode --install=cite --install=realscripts --install=needspace +``` + +Drop `--admin` if MiKTeX is installed for the current user only. If a package name doesn't resolve, `mpm --find=` searches the repository for the correct name. + +Quick smoke tests after setup (PowerShell): + +```powershell +Set-Location cv; lualatex -interaction=nonstopmode -halt-on-error main_example.tex; Set-Location .. + +$SmokeDir = New-Item -ItemType Directory -Path (Join-Path $env:TEMP "ai-job-cover-smoke-$(Get-Random)") +Copy-Item cover_letters\cover.cls, cover_letters\OpenFonts -Destination $SmokeDir -Recurse +@' +\documentclass[]{cover} +\begin{document} +\namesection{Test}{Candidate}{test@example.com} +\companyname{Example Company} +\companyaddress{123 Hiring Street\\Example City} +\currentdate{\today} +\lettercontent{Dear Hiring Manager,} +\lettercontent{This smoke test verifies that xelatex can load cover.cls and the bundled fonts.} +\closing{Sincerely,} +\signature{Test Candidate} +\end{document} +'@ | Set-Content (Join-Path $SmokeDir "cover_smoke.tex") +Push-Location $SmokeDir; xelatex -interaction=nonstopmode -halt-on-error cover_smoke.tex; Pop-Location +``` + ### Optional: pdftotext (for the ATS check) `/apply` runs an ATS parseability check on the compiled CV: it extracts the PDF's text layer and verifies contact details, reading order, and keyword coverage the way an applicant-tracking system sees them. This uses `pdftotext` from [poppler](https://poppler.freedesktop.org/), which is not part of TeX distributions: