LaTeX Document Creator
Create beautifully formatted LaTeX documents from any input source (markdown files, plain text, structured data, or user instructions). Produce professional-quality typeset output following modern LaTeX best practices.
Workflow
- Analyze input - Read the source material, identify structure (headings, lists, tables, figures, math, code, citations)
- Determine document class - Select appropriate class based on content type and length
- Generate LaTeX - Produce a complete
.tex file with proper preamble and body
- Compile to PDF (if requested) - Detect platform and compile using
latexmk
If the user provides additional formatting instructions, apply them. User instructions override defaults below.
Document Class Selection
| Content Type |
Class |
When |
| Short documents, articles, memos |
scrartcl |
No chapters needed |
| Reports, theses, long documents |
scrreprt |
Chapter-level structure |
| Books, manuals |
scrbook |
Front/back matter, parts |
| Presentations |
beamer |
Slides |
Use KOMA-Script classes (scrartcl, scrreprt, scrbook) over standard classes for superior typography defaults and built-in customization.
Standard Preamble
Organize the preamble in this order. Include only packages the document actually needs.
\documentclass[a4paper, 11pt]{scrartcl}
% --- Typography ---
\usepackage[T1]{fontenc}
\usepackage{lmodern} % Clean, professional font
\usepackage{microtype} % ESSENTIAL: character protrusion + font expansion
% --- Math (include only if document has math) ---
\usepackage{mathtools} % Superset of amsmath with fixes
\usepackage{amssymb}
% --- Layout ---
\usepackage{geometry}
% --- Tables & Figures ---
\usepackage{booktabs} % Professional table rules
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
% --- Lists ---
\usepackage{enumitem}
% --- Language & Quotes ---
\usepackage[english]{babel}
\usepackage{csquotes}
% --- Colors ---
\usepackage{xcolor}
% --- Code Listings (include only if document has code) ---
\usepackage{listings}
% --- Units (include only if document has quantities) ---
\usepackage{siunitx}
% --- Links & References (load near-last) ---
\usepackage{hyperref}
\hypersetup{
colorlinks=true,
linkcolor=blue!70!black,
citecolor=green!50!black,
urlcolor=blue!70!black,
}
\usepackage{cleveref} % MUST be after hyperref
Package Notes
microtype is non-negotiable for professional output - always include it
mathtools loads amsmath automatically; never load both
cleveref must load after hyperref
hyperref should load near-last
- For bibliography: use
biblatex with biber backend, not legacy bibtex/natbib
Typography Rules
Fonts
- Default:
lmodern (Latin Modern) - clean, professional, widely available
- Alternative serif:
libertinus, newtxtext/newtxmath (Times-like)
- For system fonts (Unicode): switch to LuaLaTeX with
fontspec
Spacing and Punctuation
- En-dash for ranges:
2020--2025 renders as 2020–2025
- Em-dash for breaks:
word---word renders as word—word
- Non-breaking space (
~) before \cite, \cref, and between numbers and units
- Thin space before differentials:
\int f(x) \, dx
- Use
\enquote{} from csquotes for quotation marks, never manual quote characters
- Use
\emph{} instead of \textit{} - semantic emphasis that adapts to context
- Use
\dots for ellipses, never three periods
Sentence Spacing
- After abbreviations (not ending a sentence):
e.g.\ this, i.e.\ that
- After a capital letter ending a sentence:
NASA\@. The next sentence
Formatting Standards
Tables
- Always use
booktabs: \toprule, \midrule, \bottomrule
- Never use vertical rules (
|) or \hline
- Place table captions above the table
- Place figure captions below the figure
Figures
- Use
\centering inside floats, not \begin{center}
- Default float placement:
[htbp]
- Reference all figures in text before they appear
Cross-References
- Use
\cref{} from cleveref - automatically produces "Figure 1", "Table 2", etc.
- Label prefixes:
fig:, tab:, sec:, eq:, lst:
- Place
\label immediately after \caption or \section
Lists
- Use
enumitem for customization
- Avoid nesting deeper than 3 levels - restructure content instead
Common Pitfalls to Avoid
- Never use
$$...$$ for display math - use \[...\] or equation environment
- Never use
\\ for paragraph breaks - use a blank line
- Never use
\begin{center} inside floats - use \centering
- Never place
\label before \caption - produces wrong reference numbers
- Never hardcode reference numbers - always use
\cref{}
- Never use bare function names in math - use
\sin, \log, or \DeclareMathOperator
- Escape special characters:
#, %, $, &, _, {, }
Markdown-to-LaTeX Conversion
When converting from markdown, apply these mappings:
| Markdown |
LaTeX |
# Heading |
\section{Heading} |
## Heading |
\subsection{Heading} |
### Heading |
\subsubsection{Heading} |
**bold** |
\textbf{bold} |
*italic* |
\emph{italic} |
`code` |
\texttt{code} |
> blockquote |
\begin{quote}...\end{quote} |
- item |
\begin{itemize}\item ...\end{itemize} |
1. item |
\begin{enumerate}\item ...\end{enumerate} |
[text](url) |
\href{url}{text} |
 |
\begin{figure}...\includegraphics{path}...\end{figure} |
```lang ``` |
\begin{lstlisting}[language=lang]...\end{lstlisting} |
--- (horizontal rule) |
\bigskip\noindent\rule{\textwidth}{0.4pt}\bigskip |
| Tables |
\begin{tabular} with booktabs rules |
$math$ |
$math$ (same) |
$$math$$ |
\[math\] |
Conversion Guidelines
- Infer document title from the first
# heading or filename
- Infer
\author and \date if present in the source, otherwise omit
- Preserve the semantic structure - do not flatten or over-nest headings
- Convert markdown tables to
booktabs-styled tabular environments
- Escape all LaTeX special characters in text content
- For documents with chapters, promote heading levels (
# → \chapter, ## → \section)
Compiling to PDF
When the user requests PDF output, detect the platform and compile.
Engine Selection
| Engine |
Command |
Use When |
| pdfLaTeX |
latexmk -pdf |
Default. ASCII/Latin content, standard fonts, fastest compilation |
| XeLaTeX |
latexmk -xelatex |
System fonts via fontspec, native Unicode |
| LuaLaTeX |
latexmk -lualatex |
System fonts + Lua scripting, no memory limits |
Using latexmk (Preferred)
latexmk automatically runs the correct number of passes for cross-references, bibliographies, and indices. Always prefer it over manual multi-pass compilation.
latexmk -pdf document.tex # Compile to PDF (pdflatex)
latexmk -xelatex document.tex # Compile with XeTeX
latexmk -lualatex document.tex # Compile with LuaTeX
latexmk -c document.tex # Clean auxiliary files (keep PDF)
Manual Compilation (When latexmk Is Unavailable)
# Simple document (no bibliography)
pdflatex document.tex && pdflatex document.tex
# Document with biblatex/biber bibliography
pdflatex document.tex && biber document && pdflatex document.tex && pdflatex document.tex
Platform-Specific Installation
If LaTeX tools are not installed or compilation fails due to missing packages, read the appropriate platform guide for installation instructions:
- Ubuntu/Debian: Read
references/pdf-compilation-ubuntu.md
- macOS: Read
references/pdf-compilation-macos.md
Detect the platform with uname -s (Linux or Darwin).
Package installation requires system permissions — present the installation command to the user and let them confirm before running sudo or brew commands.
1---2name: latex3description: Generate LaTeX documents (or convert markdown to LaTeX) with4 professional typography. Optionally compile to PDF.5---67# LaTeX Document Creator89Create beautifully formatted LaTeX documents from any input source (markdown files, plain text, structured data, or user instructions). Produce professional-quality typeset output following modern LaTeX best practices.1011## Workflow12131. **Analyze input** - Read the source material, identify structure (headings, lists, tables, figures, math, code, citations)142. **Determine document class** - Select appropriate class based on content type and length153. **Generate LaTeX** - Produce a complete `.tex` file with proper preamble and body164. **Compile to PDF** (if requested) - Detect platform and compile using `latexmk`1718If the user provides additional formatting instructions, apply them. User instructions override defaults below.1920## Document Class Selection2122| Content Type | Class | When |23|---|---|---|24| Short documents, articles, memos | `scrartcl` | No chapters needed |25| Reports, theses, long documents | `scrreprt` | Chapter-level structure |26| Books, manuals | `scrbook` | Front/back matter, parts |27| Presentations | `beamer` | Slides |2829Use KOMA-Script classes (`scrartcl`, `scrreprt`, `scrbook`) over standard classes for superior typography defaults and built-in customization.3031## Standard Preamble3233Organize the preamble in this order. Include only packages the document actually needs.3435```latex36\documentclass[a4paper, 11pt]{scrartcl}3738% --- Typography ---39\usepackage[T1]{fontenc}40\usepackage{lmodern} % Clean, professional font41\usepackage{microtype} % ESSENTIAL: character protrusion + font expansion4243% --- Math (include only if document has math) ---44\usepackage{mathtools} % Superset of amsmath with fixes45\usepackage{amssymb}4647% --- Layout ---48\usepackage{geometry}4950% --- Tables & Figures ---51\usepackage{booktabs} % Professional table rules52\usepackage{graphicx}53\usepackage{caption}54\usepackage{subcaption}5556% --- Lists ---57\usepackage{enumitem}5859% --- Language & Quotes ---60\usepackage[english]{babel}61\usepackage{csquotes}6263% --- Colors ---64\usepackage{xcolor}6566% --- Code Listings (include only if document has code) ---67\usepackage{listings}6869% --- Units (include only if document has quantities) ---70\usepackage{siunitx}7172% --- Links & References (load near-last) ---73\usepackage{hyperref}74\hypersetup{75 colorlinks=true,76 linkcolor=blue!70!black,77 citecolor=green!50!black,78 urlcolor=blue!70!black,79}80\usepackage{cleveref} % MUST be after hyperref81```8283### Package Notes8485- `microtype` is non-negotiable for professional output - always include it86- `mathtools` loads `amsmath` automatically; never load both87- `cleveref` must load after `hyperref`88- `hyperref` should load near-last89- For bibliography: use `biblatex` with `biber` backend, not legacy `bibtex`/`natbib`9091## Typography Rules9293### Fonts9495- Default: `lmodern` (Latin Modern) - clean, professional, widely available96- Alternative serif: `libertinus`, `newtxtext`/`newtxmath` (Times-like)97- For system fonts (Unicode): switch to LuaLaTeX with `fontspec`9899### Spacing and Punctuation100101- En-dash for ranges: `2020--2025` renders as 2020–2025102- Em-dash for breaks: `word---word` renders as word—word103- Non-breaking space (`~`) before `\cite`, `\cref`, and between numbers and units104- Thin space before differentials: `\int f(x) \, dx`105- Use `\enquote{}` from `csquotes` for quotation marks, never manual quote characters106- Use `\emph{}` instead of `\textit{}` - semantic emphasis that adapts to context107- Use `\dots` for ellipses, never three periods108109### Sentence Spacing110111- After abbreviations (not ending a sentence): `e.g.\ this`, `i.e.\ that`112- After a capital letter ending a sentence: `NASA\@. The next sentence`113114## Formatting Standards115116### Tables117118- Always use `booktabs`: `\toprule`, `\midrule`, `\bottomrule`119- Never use vertical rules (`|`) or `\hline`120- Place table captions **above** the table121- Place figure captions **below** the figure122123### Figures124125- Use `\centering` inside floats, not `\begin{center}`126- Default float placement: `[htbp]`127- Reference all figures in text before they appear128129### Cross-References130131- Use `\cref{}` from `cleveref` - automatically produces "Figure 1", "Table 2", etc.132- Label prefixes: `fig:`, `tab:`, `sec:`, `eq:`, `lst:`133- Place `\label` immediately after `\caption` or `\section`134135### Lists136137- Use `enumitem` for customization138- Avoid nesting deeper than 3 levels - restructure content instead139140## Common Pitfalls to Avoid141142- Never use `$$...$$` for display math - use `\[...\]` or `equation` environment143- Never use `\\` for paragraph breaks - use a blank line144- Never use `\begin{center}` inside floats - use `\centering`145- Never place `\label` before `\caption` - produces wrong reference numbers146- Never hardcode reference numbers - always use `\cref{}`147- Never use bare function names in math - use `\sin`, `\log`, or `\DeclareMathOperator`148- Escape special characters: `#`, `%`, `$`, `&`, `_`, `{`, `}`149150## Markdown-to-LaTeX Conversion151152When converting from markdown, apply these mappings:153154| Markdown | LaTeX |155|---|---|156| `# Heading` | `\section{Heading}` |157| `## Heading` | `\subsection{Heading}` |158| `### Heading` | `\subsubsection{Heading}` |159| `**bold**` | `\textbf{bold}` |160| `*italic*` | `\emph{italic}` |161| `` `code` `` | `\texttt{code}` |162| `> blockquote` | `\begin{quote}...\end{quote}` |163| `- item` | `\begin{itemize}\item ...\end{itemize}` |164| `1. item` | `\begin{enumerate}\item ...\end{enumerate}` |165| `[text](url)` | `\href{url}{text}` |166| `` | `\begin{figure}...\includegraphics{path}...\end{figure}` |167| `` ```lang ``` `` | `\begin{lstlisting}[language=lang]...\end{lstlisting}` |168| `---` (horizontal rule) | `\bigskip\noindent\rule{\textwidth}{0.4pt}\bigskip` |169| Tables | `\begin{tabular}` with `booktabs` rules |170| `$math$` | `$math$` (same) |171| `$$math$$` | `\[math\]` |172173### Conversion Guidelines174175- Infer document title from the first `#` heading or filename176- Infer `\author` and `\date` if present in the source, otherwise omit177- Preserve the semantic structure - do not flatten or over-nest headings178- Convert markdown tables to `booktabs`-styled `tabular` environments179- Escape all LaTeX special characters in text content180- For documents with chapters, promote heading levels (`#` → `\chapter`, `##` → `\section`)181182## Compiling to PDF183184When the user requests PDF output, detect the platform and compile.185186### Engine Selection187188| Engine | Command | Use When |189|---|---|---|190| pdfLaTeX | `latexmk -pdf` | Default. ASCII/Latin content, standard fonts, fastest compilation |191| XeLaTeX | `latexmk -xelatex` | System fonts via `fontspec`, native Unicode |192| LuaLaTeX | `latexmk -lualatex` | System fonts + Lua scripting, no memory limits |193194### Using latexmk (Preferred)195196`latexmk` automatically runs the correct number of passes for cross-references, bibliographies, and indices. Always prefer it over manual multi-pass compilation.197198```bash199latexmk -pdf document.tex # Compile to PDF (pdflatex)200latexmk -xelatex document.tex # Compile with XeTeX201latexmk -lualatex document.tex # Compile with LuaTeX202latexmk -c document.tex # Clean auxiliary files (keep PDF)203```204205### Manual Compilation (When latexmk Is Unavailable)206207```bash208# Simple document (no bibliography)209pdflatex document.tex && pdflatex document.tex210211# Document with biblatex/biber bibliography212pdflatex document.tex && biber document && pdflatex document.tex && pdflatex document.tex213```214215### Platform-Specific Installation216217If LaTeX tools are not installed or compilation fails due to missing packages, read the appropriate platform guide for installation instructions:218219- **Ubuntu/Debian**: Read `references/pdf-compilation-ubuntu.md`220- **macOS**: Read `references/pdf-compilation-macos.md`221222Detect the platform with `uname -s` (`Linux` or `Darwin`).223224Package installation requires system permissions — present the installation command to the user and let them confirm before running `sudo` or `brew` commands.