# Manuscript Typography

> Audit academic manuscripts for typographic design conventions: booktabs table style, caption placement, dashes/quotes, units and numbers, cross-reference style, page layout, typographic hierarchy, professional polish. Triggers on: "check typography", "fix formatting", "polish my paper", "check my LaTeX", "typographic review", "make it look professional", "check tables", "fix captions". Companion…

- **Type:** Skill
- **Install:** `agentstack add skill-mathews-tom-armory-manuscript-typography`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [Mathews-Tom](https://agentstack.voostack.com/s/mathews-tom)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [Mathews-Tom](https://github.com/Mathews-Tom)
- **Source:** https://github.com/Mathews-Tom/armory/tree/main/skills/manuscript-typography
- **Website:** https://mathews-tom.github.io/armory/

## Install

```sh
agentstack add skill-mathews-tom-armory-manuscript-typography
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Manuscript Typography Audit

**Pipeline position:** Phase 2b (polish audit). Runs in parallel with
manuscript-provenance. Depends on: content settled after Phase 1 fixes.
See `/manuscript-pipeline` for full execution order.

## Purpose

Audit a LaTeX manuscript for widely-accepted academic typographic conventions
that directly affect readability and professional appearance. These are not
venue-specific formatting rules — they are cross-venue norms from decades of
academic publishing that experienced readers and reviewers notice.

A paper with solid content but poor typography signals inexperience. Reviewers
form impressions from visual presentation before reading a single sentence.

## Relationship to Other Skills

| Concern | manuscript-review | manuscript-typography (this) | arxiv-preflight |
|---------|-------------------|------------------------------|-----------------|
| Table content | Data quality, significant figures (§12) | Design: booktabs, alignment, headers, caption placement | Format compliance |
| Figure content | Colorblind, axis labels, chartjunk (§12) | Design: font matching, backgrounds, subfigure style | Format/size compliance |
| Rendered output | Legibility, float proximity, page breaks (§23) | Layout: widows, column balance, spacing, float specifiers | N/A |
| Math notation | Notation consistency, operator formatting (§15) | Spacing, delimiter sizing, display vs inline choices | N/A |
| Cross-refs | Citation hygiene (§11) | Reference style consistency, non-breaking spaces | N/A |
| Typography | N/A | Dashes, quotes, units, micro-typography | N/A |
| Polish | N/A | TODOs, placeholders, metadata, bookmarks | N/A |

**Rule:** This skill audits design and typography. manuscript-review audits
content and communication. arxiv-preflight audits submission compliance.
No overlap — each reads different signals from the same document.

## Workflow

### 1. Ingest

Read all `.tex` files (main + `\input`/`\include` targets). Identify:
- Document class and loaded packages
- Two-column vs single-column layout
- Target venue (if identifiable from class/template)

If compiled PDF is available, use it for rendered inspection checks.

### 2. Audit Passes

For each check:
- **FAIL** — convention violated (document file, line, specific fix with LaTeX code)
- **WARN** — debatable but worth considering
- **PASS** — convention followed
- **N/A** — not applicable

---

### Pass 1 — Table Design

**1.1 Rule structure**
- Use `booktabs` package: `\toprule`, `\midrule`, `\bottomrule`
- No `\hline` (replace with booktabs equivalents)
- No vertical rules (`|` in column spec) — vertical lines in tables are a hallmark of amateur typesetting
- No double horizontal rules
- Exception: if the document class mandates a specific table style, note but don't flag

```latex
% BAD
\begin{tabular}{|l|c|r|}
\hline
Method & Accuracy & F1 \\
\hline\hline
Ours & 0.94 & 0.91 \\
\hline
\end{tabular}

% GOOD
\begin{tabular}{lcr}
\toprule
Method & Accuracy & F1 \\
\midrule
Ours & 0.94 & 0.91 \\
\bottomrule
\end{tabular}
```

**1.2 Column alignment**
- Numeric columns: right-aligned or decimal-aligned (`S` column from `siunitx`)
- Text columns: left-aligned
- Center alignment: only for single characters or very short labels
- Header alignment: matches column alignment or centered

**1.3 Header formatting**
- Headers visually distinct from body (bold is standard: `\textbf{}`)
- No ALL CAPS headers (use bold or small caps)
- Units in headers: parenthesized or bracketed — `Latency (ms)` not `Latency ms`

**1.4 Best-result indication**
- If highlighting best results: consistent method across all tables (bold, underline, or marker)
- Define the convention in the first table's caption or a footnote
- Do not mix bold-for-best and underline-for-best across tables

**1.5 Table notes**
- Footnotes/notes below the table, not in the caption
- Use `\tablenotes` (threeparttable) or manual footnotes with consistent markers

**1.6 Caption placement**
- Table captions ABOVE the table (universal convention)
- `\caption{}` before `\begin{tabular}`
- Not below — below is for figures

**1.7 Caption formatting**
- Caption label ("Table 1:" / "Table 1.") in **bold** or **small caps** — visually distinct from the description text
- Caption description text smaller than body text — `\small` (one step down) is standard; `\footnotesize` acceptable
- Use the `caption` package to control this consistently:

```latex
\usepackage[font=small, labelfont=bf]{caption}
% label ("Table 1:") = bold, description = \small
% applies uniformly to all figures AND tables
```

- Never caption text at full body size — it visually competes with the main text and makes the document look untypeset
- Never caption text below `\footnotesize` — becomes unreadable
- Consistent across ALL captions (tables and figures use the same size/weight scheme)

**1.8 Caption style**
- Consistent prefix: "Table 1:" or "Table 1." — not mixed (controlled by `labelsep` in `caption` package)
- First sentence describes what the table shows
- Caption is self-contained (interpretable without body text)

**1.9 Spacing**
- `\addlinespace` (booktabs) for logical row groups, not empty rows
- No `\\[6pt]` manual spacing hacks inside tables
- Column separation adequate — use `@{\hspace{...}}` or `\setlength{\tabcolsep}` if too compressed

**1.10 Long tables**
- Tables exceeding one page: use `longtable` or `supertabular`
- Repeated headers on continuation pages
- No font-size reduction to force a table onto one page (below `\small` is unreadable)

---

### Pass 2 — Figure Design

**2.1 Caption placement**
- Figure captions BELOW the figure (universal convention)
- `\caption{}` after `\includegraphics`
- Not above — above is for tables

**2.2 Caption formatting**
- Same size/weight scheme as table captions — the `caption` package applies uniformly
- Caption label ("Figure 1:") bold or small caps (matches table label style)
- Caption description text at `\small` or `\footnotesize` (matches table caption size)
- If not using `caption` package: verify manually that figure and table captions use identical formatting

**2.3 Caption style**
- Consistent prefix: "Figure 1:" or "Figure 1." or "Fig. 1:" — pick one for all figures
- Matches table caption style (if tables use "Table 1:", figures use "Figure 1:")
- Caption self-contained

**2.4 Subfigure labeling**
- Consistent style: (a), (b), (c) — not mixed with (i), (ii), (iii) or a), b), c)
- Use `subcaption` or `subfigure` package — not manual lettering
- Subfigure labels referenced consistently in text: "Figure 1(a)" not "Figure 1a" or "Figure 1 (a)" mixed

**2.5 Font consistency**
- Text within figures (axis labels, annotations, legends) uses a font that complements the body text
- Matching the body serif (Computer Modern, Times) or a clean sans-serif (Helvetica, CMSans) is standard
- Matplotlib/R/MATLAB default fonts are visually distinct from LaTeX body text — flag when obvious
- Font size in figures after scaling: readable at rendered size (cross-reference with manuscript-review §23)
- Figure-internal text should be comparable to caption text size — not larger than body text, not smaller than footnotes

**2.6 Background**
- White or transparent background — no gray plot backgrounds (matplotlib default `axes.facecolor`)
- No colored frame/border unless it serves a purpose

**2.7 Aspect ratio**
- Plots not stretched or compressed
- Standard aspect ratios: 4:3, 16:9, golden ratio, or square
- All panels in a multi-panel figure use the same aspect ratio

**2.8 Consistent framing**
- All figures use the same border/frame approach (all framed or all unframed)
- Consistent padding/margins around figure content

---

### Pass 3 — LaTeX Typography

**3.1 Dashes**
- Hyphen (`-`): compound words (well-known, state-of-the-art)
- En-dash (`--`): number ranges (10--20, pages 5--12, 2020--2023). Common error: hyphen used for ranges ("10-20" → "10--20").
- Em-dash (`---`): parenthetical asides and emphatic breaks. Em-dashes are accepted by CMOS 18, APA 7, and MLA 9 in academic prose — flag the following instead of banning the character:
  - **Spacing inconsistency:** CMOS/APA/MLA use closed em-dashes (`text---text`); journalistic AP style uses spaced (`text --- text`). Pick one and apply uniformly. Mixed usage = FAIL.
  - **Overuse:** more than ~1 em-dash per paragraph or ~3 per page tips into conversational register. Flag clusters as WARN; suggest restructuring to commas/colons/parentheses.
  - **Misuse for ranges:** em-dash where en-dash belongs (`pages 5---12` should be `pages 5--12`) = FAIL.
  - **AI-tell heuristic (advisory only, MEDIUM):** dense em-dash usage combined with other AI-pattern markers can indicate unedited LLM output. Defer to `manuscript-review` Pass 7b for that judgment, do not flag em-dashes alone as AI tells.

**3.2 Quotation marks**
- Opening: ` `` ` (backticks)
- Closing: `''` (straight single quotes)
- Not `"straight quotes"` — renders incorrectly in TeX
- Nested: `` `inner' `` inside `` ``outer'' ``

**3.3 Ellipsis**
- `\ldots` or `\dots` — not three periods (`...`)
- `\ldots` produces properly spaced ellipsis

**3.4 Non-breaking spaces**
- Before `\ref`: `Figure~\ref{fig:x}`, `Table~\ref{tab:x}`, `Section~\ref{sec:x}`
- Before `\cite`: `previous work~\cite{smith2020}`
- Between number and unit: `10~ms` or `10\,ms`
- Prevents line breaks that separate a label from its referent

**3.5 Ties and thin spaces**
- Thin space between number and unit: `10\,ms`, `5\,GB`, `100\,K` (use `siunitx` for consistency)
- No space inside parenthetical citations: `\cite{x}` not `\cite{ x }`
- No double spaces in source (harmless but untidy)

**3.6 Semantic markup**
- `\emph{text}` over `{\it text}` or `\textit{text}` — `\emph` nests correctly
- `\textbf{}` for bold, not `{\bf }`
- New-style font commands (`\textbf`, `\textit`, `\textsf`) over old-style (`\bf`, `\it`, `\sf`)
- `\textrm{}` for roman text inside math mode, not manual font switches

**3.7 Micro-typography**
- `\usepackage{microtype}` — enables character protrusion and font expansion
- Dramatically improves line breaking and margin alignment with zero effort
- If not loaded, recommend adding it

**3.8 Special characters**
- `\&` not `&` in text
- `\%` not `%` in text
- `\#` not `#` in text
- `\_` not `_` in text
- Degree symbol: `$^\circ$` or `\textdegree` — not `°` (Unicode)
- Multiplication: `$\times$` — not `x`

**3.9 Ligatures**
- ff, fi, fl, ffi, ffl must render as proper ligatures (default in CM/Latin Modern fonts)
- Flag if `\DisableLigatures` or `microtype` `ligatures=false` is set globally without reason
- Some fonts break ligatures — if text renders "ﬁnd" as "f ind" or similar, the font config is wrong
- Ligatures should NOT cross morpheme boundaries in some compound words (e.g., "shelfful") — minor, WARN only

**3.10 Italic usage — three distinct purposes**
- **Emphasis:** `\emph{important}` — for stress within a sentence
- **Foreign words:** `\textit{in vivo}`, `\textit{a priori}` — for non-English terms not yet naturalized
- **Terms being defined:** `\textit{A convolutional layer is...}` — for the first occurrence of a technical term being introduced
- Using bold, ALL CAPS, or colored text for emphasis in running prose = FAIL
- Consistent: if "in vitro" is italicized on page 3, it must be italicized everywhere (or nowhere if treated as naturalized)

**3.11 No color for emphasis**
- Colored text in running prose for emphasis (red for important, blue for terms) = FAIL
- Color belongs in figures, tables, and hyperlinks — not in body text
- Exception: `hyperref` link colors for cross-references and URLs

**3.12 Sentence spacing**
- LaTeX default: extra space after periods (end-of-sentence). This is traditional TeX behavior.
- `\frenchspacing` disables it (uniform spacing). Both are acceptable — but be deliberate.
- If using abbreviations with periods (e.g., "et al.", "Fig.", "vs.") without `\frenchspacing`, add `\ ` or `~` after the period to prevent LaTeX from treating it as end-of-sentence: `et al.\ ` or use `\@.` before a true sentence-ending period after a capital letter.
- Common bug: "...by Dr. Smith" — LaTeX adds extra space after "Dr." thinking it's end-of-sentence. Fix: `Dr.\ Smith`

**3.13 Display vs inline math**
- Expressions with fractions (`\frac`), sums (`\sum`), products (`\prod`), integrals, or matrices should be displayed, not inline — inline rendering compresses them and disrupts line spacing
- Short expressions (single variables, simple subscripts, brief equalities like `$x = 5$`) stay inline
- Rule of thumb: if the expression changes the line height, display it
- Display equations that are part of a sentence still need proper punctuation
- `\[ ... \]` or `equation` environment — not `$$ ... $$` (which is plain TeX, not LaTeX, and has incorrect spacing)

**3.14 URL handling**
- URLs in `\url{}` or `\href{}` — never bare text or `\texttt{}`
- `\url{}` enables line breaking at appropriate characters (/, ., -, etc.)
- `\texttt{https://...}` does NOT break across lines → overfull boxes
- Load `url` or `hyperref` package (hyperref includes url functionality)
- If `hyperref` is loaded: verify `breaklinks=true` is set in `\hypersetup`
- Long URLs in bibliography entries need additional break points. Check for `\UrlBreaks`:
```latex
\makeatletter
\g@addto@macro{\UrlBreaks}{\UrlOrds}
\makeatother
```
- Without this, URLs with long path segments (common in blog posts and documentation) will overflow margins in the bibliography even when wrapped in `\url{}`

---

### Pass 4 — Units and Numbers

**4.1 Number-unit spacing**
- Space between number and unit: "10 ms" not "10ms"
- Best: `siunitx` package — `\SI{10}{\milli\second}` or `\qty{10}{ms}`
- Consistent across the entire document
- Exception: percentages and degrees can touch the number (convention varies — pick one and stick to it)

**4.2 Unit typography**
- Units in upright/roman font, not italic: "10 ms" not "10 *ms*"
- In math mode: `$t = 10\,\mathrm{ms}$` not `$t = 10\,ms$` (italic)
- Compound units: `m/s` or `m\,s$^{-1}$` — consistent style

**4.3 Number formatting**
- Consistent decimal separator (period in English)
- Large numbers: consistent thousands separator (comma, thin space, or none)
- Ranges: en-dash (`10--20`) not hyphen (`10-20`)
- Negative numbers: proper minus (`$-5$`) not hyphen (`-5`) in running text

**4.4 Significant figures**
- Same metric → same number of decimal places across all tables and text
- Cross-reference with manuscript-review §12 (content consistency)
- Precision should not exceed measurement precision

**4.5 Percentages**
- Consistent: "14.3%" or "14.3 %" — pick one
- "Percentage points" vs "percent" distinction when comparing percentages

**4.6 Inline fractions**
- In running text: `\nicefrac{1}{2}` or `\sfrac{1}{2}` (from `xfrac`) — not `$\frac{1}{2}$`
- `$\frac{}{}$` inline disrupts line spacing by creating a tall element
- Display fractions (`\frac`) are correct in display math and equations
- Alternative: "1/2" is acceptable in informal contexts — consistent style across document

---

### Pass 5 — Cross-References and Citations

**5.1 Reference abbreviation consistency**
- Pick one and use it everywhere:
  - Full: "Figure", "Table", "Section", "Equation"
  - Abbreviated: "Fig.", "Tab.", "Sec.", "Eq."
  - Mixed within the same category is a FAIL
- Common convention: abbreviated in parentheticals, full in running prose
  ("As shown in Fig. 1" but "Figure 1 shows...")

**5.2 Non-breaking spaces**
- `Figure~\ref{fig:x}` — prevents "Figure" at end of line, "3" at start of next
- `Eq.~\eqref{eq:x}` — same
- This is the single most common LaTeX typography mistake

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [Mathews-Tom](https://github.com/Mathews-Tom)
- **Source:** [Mathews-Tom/armory](https://github.com/Mathews-Tom/armory)
- **License:** MIT
- **Homepage:** https://mathews-tom.github.io/armory/

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-mathews-tom-armory-manuscript-typography
- Seller: https://agentstack.voostack.com/s/mathews-tom
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
