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
% 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:
\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 "find" 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:
\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
5.3 Equation references
- Consistent: parenthesized
(\ref{eq:x}) or \eqref{eq:x} — not mixed
- Consistent: "Equation (1)" or "Eq. (1)" or "(1)" — pick one
5.4 Citation style
- Consistent bracket style throughout (author-year or numeric — determined by
\bibliographystyle)
- No manual citation formatting (
[1] hardcoded) — always \cite
- Multiple citations in one bracket:
\cite{a,b,c} not \cite{a}\cite{b}\cite{c}
- Citation-text integration: "Smith et al. \cite{smith}" or "\citet{smith}" — not both styles
5.5 Latin abbreviations and common shorthands
- "e.g.," and "i.e.," — always followed by a comma (CMOS). Consistent across document.
- "et al." — period after "al" (it's an abbreviation of "alia"). No italics (naturalized).
- "vs." — period after. "Versus" in formal prose, "vs." in parentheticals and tables.
- "cf." — period after. Means "compare," not "see."
- "etc." — period after. Avoid in formal academic prose (prefer explicit enumeration).
- If not using
\frenchspacing: add \ after abbreviation periods mid-sentence to prevent extra spacing (see 3.12)
5.6 Hyperref consistency
- If using
hyperref: link colors consistent (all blue, all black, or all boxed)
- No mix of colored and non-colored cross-references
- Link targets resolve correctly (no "??" in output)
Pass 6 — Page Layout and Spacing
6.1 Float specifiers
- Prefer
[htbp] over [H] — [H] forces placement and often creates bad page breaks with large whitespace gaps
[t] or [tb] acceptable for top/bottom placement
[h] alone is fragile (LaTeX often ignores it)
- No
[h!] or [H] unless there is a specific reason
6.2 Widow and orphan control
- No single line of a paragraph stranded at top of page (widow) or bottom of page (orphan)
\widowpenalty=10000 and \clubpenalty=10000 in preamble
- Or per-instance
\needspace commands
6.3 Column balance (two-column layouts)
- Final page: columns balanced (use
\usepackage{balance} or \usepackage{flushend})
- Unbalanced final page (full left, empty right) looks unfinished
6.4 Manual spacing
- Flag excessive
\vspace{}, \hspace{}, \\[Xpt], \bigskip, \smallskip
- These are band-aids for layout problems that should be solved structurally
- Acceptable: minimal use in specific float or title contexts
6.5 Page breaks
- No
\newpage or \clearpage in the middle of sections without justification
\clearpage before bibliography is acceptable
6.6 Paragraph spacing vs indentation
- Standard LaTeX: paragraph indentation + no extra spacing (default)
- Alternative: no indentation + vertical spacing (
\usepackage{parskip})
- Mixing both (indentation AND extra spacing) is a FAIL — pick one
6.7 Paragraph indentation size
- Standard: 1em to 1.5em (LaTeX default
\parindent is ~1.5em)
- Too large (>2em): wastes space and looks exaggerated
- Too small (<0.5em): indentation is invisible and fails its purpose
- Do not manually set
\parindent to unusual values without reason
6.8 First paragraph after heading
- First paragraph after a section/subsection heading should NOT be indented (LaTeX default behavior)
- If someone adds
\indent or \hspace{\parindent} to first paragraphs: FAIL
- If a package or manual setting indents first paragraphs (
\usepackage{indentfirst}): WARN — non-standard in English academic typesetting. Standard in French/some European traditions — acceptable if intentional.
6.9 Line spacing / leading
- Standard: single spacing with the line height set by the document class (default
\baselinestretch = 1.0)
- Double-spacing via
\linespread{1.6} or \usepackage[doublespacing]{setspace} = FAIL for submission — this is referee/draft mode, not camera-ready
- If the document class is
article and double-spacing is active, flag it — likely a forgotten draft setting
\linespread{1.05} to \linespread{1.1} is acceptable fine-tuning for some fonts
6.10 Line length / characters per line
- Optimal: 45--75 characters per line (Bringhurst). 66 is ideal.
- Two-column layouts at standard column widths (~3.3 inches / 84mm) naturally achieve this
- Single-column layouts with narrow margins can exceed 90 characters per line → reduced readability
- Fix: wider margins, or switch to two-column, or use
\usepackage{geometry} to set appropriate text width
- If the document class sets the margins (most conference classes do), do not override
6.11 Deferred float accumulation
- Read the compiled PDF. Check whether floats (tables, figures) from earlier subsections
land in the middle of a later subsection, breaking paragraph continuity.
- Symptom: a sentence starts, then 1+ pages of floats appear, then the sentence continues.
The reader loses the thread.
- Common cause: many
[t] floats in a section with dense content. LaTeX defers floats it
cannot place, and they pile into the next available space.
- Diagnosis: count pending floats at each subsection boundary. If floats from subsection N
appear after the start of subsection N+2 or later, flag as FAIL.
- Fix: add
\usepackage{placeins} and insert \FloatBarrier before subsections that
should start with clean text flow (especially methodology/statistics/discussion sections
that follow data-heavy sections with many floats).
- Alternative:
\usepackage[section]{placeins} prevents floats from crossing \section
boundaries automatically. For \subsection-level control, manual \FloatBarrier is needed.
- Do NOT fix by changing all floats to
[H] — this creates worse layout problems (large
whitespace gaps). \FloatBarrier at strategic points is the correct solution.
- Category: AUTO-FIX (add
\usepackage{placeins} + \FloatBarrier before affected subsections)
6.12 Consecutive hyphenated lines
- More than 2--3 consecutive line-ending hyphens = visual defect ("pig bristle" or "ladder" in typography)
- Fix:
\hyphenpenalty=50 (default), increase to reduce hyphenation frequency, or rephrase locally
\usepackage[none]{hyphenat} disables hyphenation entirely — rarely desirable in academic text
\hyphenation{spe-ci-fic-word} for individual problem words
Pass 7 — Code and Algorithms
7.1 Inline code
- Use
\texttt{} or \verb|| for inline code/identifiers
- Consistent: all inline code uses the same formatting
- Not: sometimes typewriter, sometimes italic, sometimes nothing
7.2 Code listings
- Use
listings or minted package — not manual \texttt blocks
- Consistent syntax highlighting style
- Line numbers if code lines are referenced in text
- Font size:
\small or \footnotesize — not body size (too large) or \scriptsize (too small)
7.3 Algorithm pseudocode
- Use
algorithm2e, algorithmic, or algorithmicx package
- Consistent indentation
- Line numbering if referenced
- Input/output clearly stated
- Caption above (follows table convention — algorithms are procedural tables)
Pass 8 — Typographic Hierarchy
The document's font sizes and weights must form a clear visual hierarchy.
Readers unconsciously use size/weight differences to parse document structure.
When elements are the same size, the hierarchy collapses and the page looks flat.
8.1 Size hierarchy reference
Standard academic LaTeX size hierarchy (relative to body text):
| Element |
Size relative to body |
Weight |
Style |
| Chapter/Part title |
+4--6pt |
Bold |
Roman |
| Section heading |
+2--3pt |
Bold |
Roman |
| Subsection heading |
+1--2pt |
Bold |
Roman |
| Subsubsection heading |
same as body |
Bold or italic |
Roman |
| Body text |
base (10pt, 11pt, or 12pt) |
Normal |
Roman |
| Caption label ("Figure 1:") |
1 step below body (\small) |
Bold |
Roman |
| Caption description |
1 step below body (\small) |
Normal |
Roman |
| Table body text |
same as body or \small |
Normal |
Roman |
| Figure-internal text |
comparable to caption size |
Normal |
Sans-serif or body font |
| Footnotes |
2 steps below body (\footnotesize) |
Normal |
Roman |
| Code listings |
1--2 steps below body |
Normal |
Monospace |
| Header/footer |
1--2 steps below body |
Normal |
Roman or italic |
Most document classes set this hierarchy automatically. The skill checks
that the author hasn't overridden it incorrectly.
8.2 Caption size must be smaller than body
- Captions at full body size (e.g., 12pt captions with 12pt body) = FAIL
- Captions should be 1 step down:
\small (10.95pt for 12pt body, 9.5pt for 11pt, 9pt for 10pt)
\footnotesize is also acceptable (slightly smaller)
- The
caption package is the correct way to enforce this:
% Standard professional setup
\usepackage[font=small, labelfont=bf]{caption}
% Alternative: slightly smaller
\usepackage[font=footnotesize, labelfont=bf]{caption}
% With label separator control
\usepackage[font=small, labelfont=bf, labelsep=period]{caption}
% produces "Figure 1. Description" with bold "Figure 1."
8.3 Caption label must be visually distinct from description
- Label ("Table 1:" / "Figure 1.") in bold — this is the dominant convention
- Alternatives: small caps (
labelfont=sc) or bold small caps
- Label at the same weight as description text = FAIL — the reader can't quickly find the figure number
- The label is a reference anchor; the description is prose. They serve different functions and must look different.
8.4 Heading weight and size decrease with depth
\section > \subsection > \subsubsection in both size and visual weight
- If the document class provides this (most do), do not override with manual font commands
- Manual
{\Large\textbf{...}} instead of \section{} = FAIL — breaks numbering, bookmarks, and TOC
8.5 Footnote size
- Footnotes should be smaller than body text (standard LaTeX default:
\footnotesize)
- Footnotes at body size = FAIL
- Footnote reference markers: superscript numbers (default) — consistent style
8.6 Table body text size
- Table body text at same size as body text or one step down (
\small)
- Tables should NOT be at
\footnotesize or smaller to fit — redesign the table instead (fewer columns, abbreviate headers, split into two tables)
- Exception: appendix tables with many columns where space is genuinely constrained —
\small is the floor
8.7 Header/footer text
- Running headers/footers at smaller size than body (standard in most document classes)
- Manual headers at body size = visual noise competing with content
8.8 No manual font-size overrides in body
- Flag
{\large ...} or {\Large ...} in running text (not headings)
- Flag
{\small ...} wrapping entire sections to fit page limits
- These override the hierarchy and create visual inconsistency
- Exception:
\small inside specific floats/environments is acceptable
Pass 9 — Professional Polish
9.1 Placeholder detection
- No "TODO", "FIXME", "XXX", "PLACEHOLDER", "TBD" in any
.tex file
- No "Lorem ipsum" or filler text
- No commented-out paragraphs that are clearly draft remnants (as opposed to intentional version tracking)
9.2 PDF metadata (if PDF available)
- Title set in PDF properties (not "main.tex" or blank)
- Author set in PDF properties
\hypersetup{pdftitle={...}, pdfauthor={...}} configured
9.3 PDF bookmarks
hyperref loaded with bookmarks enabled (default)
- Section structure navigable via PDF reader sidebar
- Bookmark text matches section titles
9.4 Consistent package loading
- No duplicate
\usepackage calls for the same package
- No conflicting package options
- Package loading order follows conventions (hyperref last or near-last)
9.5 Overfull/underfull box warnings (MANDATORY — do not skip)
- Read the
.log file (same name as main tex, e.g., main.log or yuj.log)
- Grep for
Overfull \\hbox — each is text extending past the margin
- Report every instance with the line number and badness value
- Common causes: long URLs in bibliography, unbreakable inline math, wide
\resizebox tables, long \texttt{} strings
- Fix per cause:
- URLs:
breaklinks=true + \UrlBreaks{\UrlOrds} (see 3.14)
- Inline math: break with
\allowbreak or move to display
- Tables: check
\resizebox scaling, consider \small or redesign
\texttt{}: replace with \url{} for URLs, add \allowbreak for paths
- Also check for
Underfull \\hbox with badness > 5000 — these produce visibly loose lines
9.6 Unresolved references
- No
?? in rendered output from unresolved \ref or \cite
- No
[?] from missing bibliography entries
- Check
.log for "Reference ... undefined" and "Citation ... undefined"
3. Generate Report
# Typography Audit Report
**Manuscript:** [main tex file]
**Document class:** [detected class]
**Layout:** [single/two-column]
**Date:** [date]
**Verdict:** [Professional | Needs Polish | Significant Issues]
## Summary
| Category | Pass | Fail | Warn |
|----------|------|------|------|
| Table Design | | | |
| Figure Design | | | |
| LaTeX Typography | | | |
| Units & Numbers | | | |
| Cross-References | | | |
| Page Layout | | | |
| Code & Algorithms | | | |
| Typographic Hierarchy | | | |
| Professional Polish | | | |
## Fixes (ordered by impact)
### High Impact (visual professionalism)
[Issues that experienced readers/reviewers will notice immediately]
### Medium Impact (readability)
[Issues that affect reading experience but may not be consciously noticed]
### Low Impact (polish)
[Micro-issues that matter for camera-ready / final versions]
## Quick Fixes
[One-line fixes: add microtype, add booktabs, fix non-breaking spaces —
items that take <1 minute each and improve the document noticeably]
4. Output
Save report as [manuscript-name]-typography-report.md in the project directory.
Present:
- Verdict
- Count of high/medium/low issues
- Top 5 quick fixes (highest impact for least effort)
- Specific LaTeX code for each fix
LaTeX Quick-Fix Reference
Common one-line preamble additions that resolve multiple issues:
% Micro-typography: better line breaks, margin alignment
\usepackage{microtype}
% Professional tables: \toprule, \midrule, \bottomrule
\usepackage{booktabs}
% Proper SI units: \SI{10}{\milli\second}
\usepackage{siunitx}
% Subfigures with consistent labeling
\usepackage[labelformat=parens]{subcaption}
% Widow/orphan prevention
\widowpenalty=10000
\clubpenalty=10000
% Two-column balance on last page
\usepackage{balance} % add \balance before \bibliography
% Caption formatting: bold label, small text
\usepackage[font=small, labelfont=bf]{caption}
% Inline fractions: \nicefrac{1}{2}
\usepackage{nicefrac}
% PDF metadata
\hypersetup{
pdftitle={Your Paper Title},
pdfauthor={Author Names},
}
Core Principles
Conventions, not preferences. Every check in this audit reflects a norm
practiced by the majority of well-typeset academic papers across venues.
Where conventions genuinely vary (e.g., percentage spacing), flag as WARN
with both options and ask for consistency.
Document class awareness. Some document classes override default
conventions (e.g., IEEEtran has its own table style). When the class
dictates a style, follow it — do not impose conflicting conventions.
Fix the source, not the symptom. \vspace{-3mm} to fix spacing is a
symptom-level hack. Fixing the float specifier or package configuration
that caused the bad spacing is the real fix.
Quick wins first. The report prioritizes fixes by impact-to-effort ratio.
Adding \usepackage{microtype} takes 5 seconds and improves every page.
That goes before suggestions to redesign all tables.
No style imposition. This skill does not enforce "my preferred style."
It enforces consistency within the document and adherence to conventions
that have broad consensus. Where the author has made a deliberate,
consistent choice, respect it.
1---2name: manuscript-typography3description: 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 to manuscript-review (content) and arxiv-preflight (compliance).4---56# Manuscript Typography Audit78**Pipeline position:** Phase 2b (polish audit). Runs in parallel with9manuscript-provenance. Depends on: content settled after Phase 1 fixes.10See `/manuscript-pipeline` for full execution order.1112## Purpose1314Audit a LaTeX manuscript for widely-accepted academic typographic conventions15that directly affect readability and professional appearance. These are not16venue-specific formatting rules — they are cross-venue norms from decades of17academic publishing that experienced readers and reviewers notice.1819A paper with solid content but poor typography signals inexperience. Reviewers20form impressions from visual presentation before reading a single sentence.2122## Relationship to Other Skills2324| Concern | manuscript-review | manuscript-typography (this) | arxiv-preflight |25|---------|-------------------|------------------------------|-----------------|26| Table content | Data quality, significant figures (§12) | Design: booktabs, alignment, headers, caption placement | Format compliance |27| Figure content | Colorblind, axis labels, chartjunk (§12) | Design: font matching, backgrounds, subfigure style | Format/size compliance |28| Rendered output | Legibility, float proximity, page breaks (§23) | Layout: widows, column balance, spacing, float specifiers | N/A |29| Math notation | Notation consistency, operator formatting (§15) | Spacing, delimiter sizing, display vs inline choices | N/A |30| Cross-refs | Citation hygiene (§11) | Reference style consistency, non-breaking spaces | N/A |31| Typography | N/A | Dashes, quotes, units, micro-typography | N/A |32| Polish | N/A | TODOs, placeholders, metadata, bookmarks | N/A |3334**Rule:** This skill audits design and typography. manuscript-review audits35content and communication. arxiv-preflight audits submission compliance.36No overlap — each reads different signals from the same document.3738## Workflow3940### 1. Ingest4142Read all `.tex` files (main + `\input`/`\include` targets). Identify:43- Document class and loaded packages44- Two-column vs single-column layout45- Target venue (if identifiable from class/template)4647If compiled PDF is available, use it for rendered inspection checks.4849### 2. Audit Passes5051For each check:52- **FAIL** — convention violated (document file, line, specific fix with LaTeX code)53- **WARN** — debatable but worth considering54- **PASS** — convention followed55- **N/A** — not applicable5657---5859### Pass 1 — Table Design6061**1.1 Rule structure**62- Use `booktabs` package: `\toprule`, `\midrule`, `\bottomrule`63- No `\hline` (replace with booktabs equivalents)64- No vertical rules (`|` in column spec) — vertical lines in tables are a hallmark of amateur typesetting65- No double horizontal rules66- Exception: if the document class mandates a specific table style, note but don't flag6768```latex69% BAD70\begin{tabular}{|l|c|r|}71\hline72Method & Accuracy & F1 \\73\hline\hline74Ours & 0.94 & 0.91 \\75\hline76\end{tabular}7778% GOOD79\begin{tabular}{lcr}80\toprule81Method & Accuracy & F1 \\82\midrule83Ours & 0.94 & 0.91 \\84\bottomrule85\end{tabular}86```8788**1.2 Column alignment**89- Numeric columns: right-aligned or decimal-aligned (`S` column from `siunitx`)90- Text columns: left-aligned91- Center alignment: only for single characters or very short labels92- Header alignment: matches column alignment or centered9394**1.3 Header formatting**95- Headers visually distinct from body (bold is standard: `\textbf{}`)96- No ALL CAPS headers (use bold or small caps)97- Units in headers: parenthesized or bracketed — `Latency (ms)` not `Latency ms`9899**1.4 Best-result indication**100- If highlighting best results: consistent method across all tables (bold, underline, or marker)101- Define the convention in the first table's caption or a footnote102- Do not mix bold-for-best and underline-for-best across tables103104**1.5 Table notes**105- Footnotes/notes below the table, not in the caption106- Use `\tablenotes` (threeparttable) or manual footnotes with consistent markers107108**1.6 Caption placement**109- Table captions ABOVE the table (universal convention)110- `\caption{}` before `\begin{tabular}`111- Not below — below is for figures112113**1.7 Caption formatting**114- Caption label ("Table 1:" / "Table 1.") in **bold** or **small caps** — visually distinct from the description text115- Caption description text smaller than body text — `\small` (one step down) is standard; `\footnotesize` acceptable116- Use the `caption` package to control this consistently:117118```latex119\usepackage[font=small, labelfont=bf]{caption}120% label ("Table 1:") = bold, description = \small121% applies uniformly to all figures AND tables122```123124- Never caption text at full body size — it visually competes with the main text and makes the document look untypeset125- Never caption text below `\footnotesize` — becomes unreadable126- Consistent across ALL captions (tables and figures use the same size/weight scheme)127128**1.8 Caption style**129- Consistent prefix: "Table 1:" or "Table 1." — not mixed (controlled by `labelsep` in `caption` package)130- First sentence describes what the table shows131- Caption is self-contained (interpretable without body text)132133**1.9 Spacing**134- `\addlinespace` (booktabs) for logical row groups, not empty rows135- No `\\[6pt]` manual spacing hacks inside tables136- Column separation adequate — use `@{\hspace{...}}` or `\setlength{\tabcolsep}` if too compressed137138**1.10 Long tables**139- Tables exceeding one page: use `longtable` or `supertabular`140- Repeated headers on continuation pages141- No font-size reduction to force a table onto one page (below `\small` is unreadable)142143---144145### Pass 2 — Figure Design146147**2.1 Caption placement**148- Figure captions BELOW the figure (universal convention)149- `\caption{}` after `\includegraphics`150- Not above — above is for tables151152**2.2 Caption formatting**153- Same size/weight scheme as table captions — the `caption` package applies uniformly154- Caption label ("Figure 1:") bold or small caps (matches table label style)155- Caption description text at `\small` or `\footnotesize` (matches table caption size)156- If not using `caption` package: verify manually that figure and table captions use identical formatting157158**2.3 Caption style**159- Consistent prefix: "Figure 1:" or "Figure 1." or "Fig. 1:" — pick one for all figures160- Matches table caption style (if tables use "Table 1:", figures use "Figure 1:")161- Caption self-contained162163**2.4 Subfigure labeling**164- Consistent style: (a), (b), (c) — not mixed with (i), (ii), (iii) or a), b), c)165- Use `subcaption` or `subfigure` package — not manual lettering166- Subfigure labels referenced consistently in text: "Figure 1(a)" not "Figure 1a" or "Figure 1 (a)" mixed167168**2.5 Font consistency**169- Text within figures (axis labels, annotations, legends) uses a font that complements the body text170- Matching the body serif (Computer Modern, Times) or a clean sans-serif (Helvetica, CMSans) is standard171- Matplotlib/R/MATLAB default fonts are visually distinct from LaTeX body text — flag when obvious172- Font size in figures after scaling: readable at rendered size (cross-reference with manuscript-review §23)173- Figure-internal text should be comparable to caption text size — not larger than body text, not smaller than footnotes174175**2.6 Background**176- White or transparent background — no gray plot backgrounds (matplotlib default `axes.facecolor`)177- No colored frame/border unless it serves a purpose178179**2.7 Aspect ratio**180- Plots not stretched or compressed181- Standard aspect ratios: 4:3, 16:9, golden ratio, or square182- All panels in a multi-panel figure use the same aspect ratio183184**2.8 Consistent framing**185- All figures use the same border/frame approach (all framed or all unframed)186- Consistent padding/margins around figure content187188---189190### Pass 3 — LaTeX Typography191192**3.1 Dashes**193- Hyphen (`-`): compound words (well-known, state-of-the-art)194- En-dash (`--`): number ranges (10--20, pages 5--12, 2020--2023). Common error: hyphen used for ranges ("10-20" → "10--20").195- 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:196 - **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.197 - **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.198 - **Misuse for ranges:** em-dash where en-dash belongs (`pages 5---12` should be `pages 5--12`) = FAIL.199 - **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.200201**3.2 Quotation marks**202- Opening: ` `` ` (backticks)203- Closing: `''` (straight single quotes)204- Not `"straight quotes"` — renders incorrectly in TeX205- Nested: `` `inner' `` inside `` ``outer'' ``206207**3.3 Ellipsis**208- `\ldots` or `\dots` — not three periods (`...`)209- `\ldots` produces properly spaced ellipsis210211**3.4 Non-breaking spaces**212- Before `\ref`: `Figure~\ref{fig:x}`, `Table~\ref{tab:x}`, `Section~\ref{sec:x}`213- Before `\cite`: `previous work~\cite{smith2020}`214- Between number and unit: `10~ms` or `10\,ms`215- Prevents line breaks that separate a label from its referent216217**3.5 Ties and thin spaces**218- Thin space between number and unit: `10\,ms`, `5\,GB`, `100\,K` (use `siunitx` for consistency)219- No space inside parenthetical citations: `\cite{x}` not `\cite{ x }`220- No double spaces in source (harmless but untidy)221222**3.6 Semantic markup**223- `\emph{text}` over `{\it text}` or `\textit{text}` — `\emph` nests correctly224- `\textbf{}` for bold, not `{\bf }`225- New-style font commands (`\textbf`, `\textit`, `\textsf`) over old-style (`\bf`, `\it`, `\sf`)226- `\textrm{}` for roman text inside math mode, not manual font switches227228**3.7 Micro-typography**229- `\usepackage{microtype}` — enables character protrusion and font expansion230- Dramatically improves line breaking and margin alignment with zero effort231- If not loaded, recommend adding it232233**3.8 Special characters**234- `\&` not `&` in text235- `\%` not `%` in text236- `\#` not `#` in text237- `\_` not `_` in text238- Degree symbol: `$^\circ$` or `\textdegree` — not `°` (Unicode)239- Multiplication: `$\times$` — not `x`240241**3.9 Ligatures**242- ff, fi, fl, ffi, ffl must render as proper ligatures (default in CM/Latin Modern fonts)243- Flag if `\DisableLigatures` or `microtype` `ligatures=false` is set globally without reason244- Some fonts break ligatures — if text renders "find" as "f ind" or similar, the font config is wrong245- Ligatures should NOT cross morpheme boundaries in some compound words (e.g., "shelfful") — minor, WARN only246247**3.10 Italic usage — three distinct purposes**248- **Emphasis:** `\emph{important}` — for stress within a sentence249- **Foreign words:** `\textit{in vivo}`, `\textit{a priori}` — for non-English terms not yet naturalized250- **Terms being defined:** `\textit{A convolutional layer is...}` — for the first occurrence of a technical term being introduced251- Using bold, ALL CAPS, or colored text for emphasis in running prose = FAIL252- Consistent: if "in vitro" is italicized on page 3, it must be italicized everywhere (or nowhere if treated as naturalized)253254**3.11 No color for emphasis**255- Colored text in running prose for emphasis (red for important, blue for terms) = FAIL256- Color belongs in figures, tables, and hyperlinks — not in body text257- Exception: `hyperref` link colors for cross-references and URLs258259**3.12 Sentence spacing**260- LaTeX default: extra space after periods (end-of-sentence). This is traditional TeX behavior.261- `\frenchspacing` disables it (uniform spacing). Both are acceptable — but be deliberate.262- 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.263- Common bug: "...by Dr. Smith" — LaTeX adds extra space after "Dr." thinking it's end-of-sentence. Fix: `Dr.\ Smith`264265**3.13 Display vs inline math**266- Expressions with fractions (`\frac`), sums (`\sum`), products (`\prod`), integrals, or matrices should be displayed, not inline — inline rendering compresses them and disrupts line spacing267- Short expressions (single variables, simple subscripts, brief equalities like `$x = 5$`) stay inline268- Rule of thumb: if the expression changes the line height, display it269- Display equations that are part of a sentence still need proper punctuation270- `\[ ... \]` or `equation` environment — not `$$ ... $$` (which is plain TeX, not LaTeX, and has incorrect spacing)271272**3.14 URL handling**273- URLs in `\url{}` or `\href{}` — never bare text or `\texttt{}`274- `\url{}` enables line breaking at appropriate characters (/, ., -, etc.)275- `\texttt{https://...}` does NOT break across lines → overfull boxes276- Load `url` or `hyperref` package (hyperref includes url functionality)277- If `hyperref` is loaded: verify `breaklinks=true` is set in `\hypersetup`278- Long URLs in bibliography entries need additional break points. Check for `\UrlBreaks`:279```latex280\makeatletter281\g@addto@macro{\UrlBreaks}{\UrlOrds}282\makeatother283```284- Without this, URLs with long path segments (common in blog posts and documentation) will overflow margins in the bibliography even when wrapped in `\url{}`285286---287288### Pass 4 — Units and Numbers289290**4.1 Number-unit spacing**291- Space between number and unit: "10 ms" not "10ms"292- Best: `siunitx` package — `\SI{10}{\milli\second}` or `\qty{10}{ms}`293- Consistent across the entire document294- Exception: percentages and degrees can touch the number (convention varies — pick one and stick to it)295296**4.2 Unit typography**297- Units in upright/roman font, not italic: "10 ms" not "10 *ms*"298- In math mode: `$t = 10\,\mathrm{ms}$` not `$t = 10\,ms$` (italic)299- Compound units: `m/s` or `m\,s$^{-1}$` — consistent style300301**4.3 Number formatting**302- Consistent decimal separator (period in English)303- Large numbers: consistent thousands separator (comma, thin space, or none)304- Ranges: en-dash (`10--20`) not hyphen (`10-20`)305- Negative numbers: proper minus (`$-5$`) not hyphen (`-5`) in running text306307**4.4 Significant figures**308- Same metric → same number of decimal places across all tables and text309- Cross-reference with manuscript-review §12 (content consistency)310- Precision should not exceed measurement precision311312**4.5 Percentages**313- Consistent: "14.3%" or "14.3 %" — pick one314- "Percentage points" vs "percent" distinction when comparing percentages315316**4.6 Inline fractions**317- In running text: `\nicefrac{1}{2}` or `\sfrac{1}{2}` (from `xfrac`) — not `$\frac{1}{2}$`318- `$\frac{}{}$` inline disrupts line spacing by creating a tall element319- Display fractions (`\frac`) are correct in display math and equations320- Alternative: "1/2" is acceptable in informal contexts — consistent style across document321322---323324### Pass 5 — Cross-References and Citations325326**5.1 Reference abbreviation consistency**327- Pick one and use it everywhere:328 - Full: "Figure", "Table", "Section", "Equation"329 - Abbreviated: "Fig.", "Tab.", "Sec.", "Eq."330 - Mixed within the same category is a FAIL331- Common convention: abbreviated in parentheticals, full in running prose332 ("As shown in Fig. 1" but "Figure 1 shows...")333334**5.2 Non-breaking spaces**335- `Figure~\ref{fig:x}` — prevents "Figure" at end of line, "3" at start of next336- `Eq.~\eqref{eq:x}` — same337- This is the single most common LaTeX typography mistake338339**5.3 Equation references**340- Consistent: parenthesized `(\ref{eq:x})` or `\eqref{eq:x}` — not mixed341- Consistent: "Equation (1)" or "Eq. (1)" or "(1)" — pick one342343**5.4 Citation style**344- Consistent bracket style throughout (author-year or numeric — determined by `\bibliographystyle`)345- No manual citation formatting (`[1]` hardcoded) — always `\cite`346- Multiple citations in one bracket: `\cite{a,b,c}` not `\cite{a}\cite{b}\cite{c}`347- Citation-text integration: "Smith et al. \cite{smith}" or "\citet{smith}" — not both styles348349**5.5 Latin abbreviations and common shorthands**350- "e.g.," and "i.e.," — always followed by a comma (CMOS). Consistent across document.351- "et al." — period after "al" (it's an abbreviation of "alia"). No italics (naturalized).352- "vs." — period after. "Versus" in formal prose, "vs." in parentheticals and tables.353- "cf." — period after. Means "compare," not "see."354- "etc." — period after. Avoid in formal academic prose (prefer explicit enumeration).355- If not using `\frenchspacing`: add `\ ` after abbreviation periods mid-sentence to prevent extra spacing (see 3.12)356357**5.6 Hyperref consistency**358- If using `hyperref`: link colors consistent (all blue, all black, or all boxed)359- No mix of colored and non-colored cross-references360- Link targets resolve correctly (no "??" in output)361362---363364### Pass 6 — Page Layout and Spacing365366**6.1 Float specifiers**367- Prefer `[htbp]` over `[H]` — `[H]` forces placement and often creates bad page breaks with large whitespace gaps368- `[t]` or `[tb]` acceptable for top/bottom placement369- `[h]` alone is fragile (LaTeX often ignores it)370- No `[h!]` or `[H]` unless there is a specific reason371372**6.2 Widow and orphan control**373- No single line of a paragraph stranded at top of page (widow) or bottom of page (orphan)374- `\widowpenalty=10000` and `\clubpenalty=10000` in preamble375- Or per-instance `\needspace` commands376377**6.3 Column balance** (two-column layouts)378- Final page: columns balanced (use `\usepackage{balance}` or `\usepackage{flushend}`)379- Unbalanced final page (full left, empty right) looks unfinished380381**6.4 Manual spacing**382- Flag excessive `\vspace{}`, `\hspace{}`, `\\[Xpt]`, `\bigskip`, `\smallskip`383- These are band-aids for layout problems that should be solved structurally384- Acceptable: minimal use in specific float or title contexts385386**6.5 Page breaks**387- No `\newpage` or `\clearpage` in the middle of sections without justification388- `\clearpage` before bibliography is acceptable389390**6.6 Paragraph spacing vs indentation**391- Standard LaTeX: paragraph indentation + no extra spacing (default)392- Alternative: no indentation + vertical spacing (`\usepackage{parskip}`)393- Mixing both (indentation AND extra spacing) is a FAIL — pick one394395**6.7 Paragraph indentation size**396- Standard: 1em to 1.5em (LaTeX default `\parindent` is ~1.5em)397- Too large (>2em): wastes space and looks exaggerated398- Too small (<0.5em): indentation is invisible and fails its purpose399- Do not manually set `\parindent` to unusual values without reason400401**6.8 First paragraph after heading**402- First paragraph after a section/subsection heading should NOT be indented (LaTeX default behavior)403- If someone adds `\indent` or `\hspace{\parindent}` to first paragraphs: FAIL404- If a package or manual setting indents first paragraphs (`\usepackage{indentfirst}`): WARN — non-standard in English academic typesetting. Standard in French/some European traditions — acceptable if intentional.405406**6.9 Line spacing / leading**407- Standard: single spacing with the line height set by the document class (default `\baselinestretch` = 1.0)408- Double-spacing via `\linespread{1.6}` or `\usepackage[doublespacing]{setspace}` = FAIL for submission — this is referee/draft mode, not camera-ready409- If the document class is `article` and double-spacing is active, flag it — likely a forgotten draft setting410- `\linespread{1.05}` to `\linespread{1.1}` is acceptable fine-tuning for some fonts411412**6.10 Line length / characters per line**413- Optimal: 45--75 characters per line (Bringhurst). 66 is ideal.414- Two-column layouts at standard column widths (~3.3 inches / 84mm) naturally achieve this415- Single-column layouts with narrow margins can exceed 90 characters per line → reduced readability416- Fix: wider margins, or switch to two-column, or use `\usepackage{geometry}` to set appropriate text width417- If the document class sets the margins (most conference classes do), do not override418419**6.11 Deferred float accumulation**420- Read the compiled PDF. Check whether floats (tables, figures) from earlier subsections421 land in the middle of a later subsection, breaking paragraph continuity.422- Symptom: a sentence starts, then 1+ pages of floats appear, then the sentence continues.423 The reader loses the thread.424- Common cause: many `[t]` floats in a section with dense content. LaTeX defers floats it425 cannot place, and they pile into the next available space.426- Diagnosis: count pending floats at each subsection boundary. If floats from subsection N427 appear after the start of subsection N+2 or later, flag as FAIL.428- Fix: add `\usepackage{placeins}` and insert `\FloatBarrier` before subsections that429 should start with clean text flow (especially methodology/statistics/discussion sections430 that follow data-heavy sections with many floats).431- Alternative: `\usepackage[section]{placeins}` prevents floats from crossing `\section`432 boundaries automatically. For `\subsection`-level control, manual `\FloatBarrier` is needed.433- Do NOT fix by changing all floats to `[H]` — this creates worse layout problems (large434 whitespace gaps). `\FloatBarrier` at strategic points is the correct solution.435- Category: AUTO-FIX (add `\usepackage{placeins}` + `\FloatBarrier` before affected subsections)436437**6.12 Consecutive hyphenated lines**438- More than 2--3 consecutive line-ending hyphens = visual defect ("pig bristle" or "ladder" in typography)439- Fix: `\hyphenpenalty=50` (default), increase to reduce hyphenation frequency, or rephrase locally440- `\usepackage[none]{hyphenat}` disables hyphenation entirely — rarely desirable in academic text441- `\hyphenation{spe-ci-fic-word}` for individual problem words442443---444445### Pass 7 — Code and Algorithms446447**7.1 Inline code**448- Use `\texttt{}` or `\verb||` for inline code/identifiers449- Consistent: all inline code uses the same formatting450- Not: sometimes typewriter, sometimes italic, sometimes nothing451452**7.2 Code listings**453- Use `listings` or `minted` package — not manual `\texttt` blocks454- Consistent syntax highlighting style455- Line numbers if code lines are referenced in text456- Font size: `\small` or `\footnotesize` — not body size (too large) or `\scriptsize` (too small)457458**7.3 Algorithm pseudocode**459- Use `algorithm2e`, `algorithmic`, or `algorithmicx` package460- Consistent indentation461- Line numbering if referenced462- Input/output clearly stated463- Caption above (follows table convention — algorithms are procedural tables)464465---466467### Pass 8 — Typographic Hierarchy468469The document's font sizes and weights must form a clear visual hierarchy.470Readers unconsciously use size/weight differences to parse document structure.471When elements are the same size, the hierarchy collapses and the page looks flat.472473**8.1 Size hierarchy reference**474475Standard academic LaTeX size hierarchy (relative to body text):476477| Element | Size relative to body | Weight | Style |478|---------|----------------------|--------|-------|479| Chapter/Part title | +4--6pt | Bold | Roman |480| Section heading | +2--3pt | Bold | Roman |481| Subsection heading | +1--2pt | Bold | Roman |482| Subsubsection heading | same as body | Bold or italic | Roman |483| Body text | base (10pt, 11pt, or 12pt) | Normal | Roman |484| Caption label ("Figure 1:") | 1 step below body (`\small`) | **Bold** | Roman |485| Caption description | 1 step below body (`\small`) | Normal | Roman |486| Table body text | same as body or `\small` | Normal | Roman |487| Figure-internal text | comparable to caption size | Normal | Sans-serif or body font |488| Footnotes | 2 steps below body (`\footnotesize`) | Normal | Roman |489| Code listings | 1--2 steps below body | Normal | Monospace |490| Header/footer | 1--2 steps below body | Normal | Roman or italic |491492Most document classes set this hierarchy automatically. The skill checks493that the author hasn't overridden it incorrectly.494495**8.2 Caption size must be smaller than body**496- Captions at full body size (e.g., 12pt captions with 12pt body) = FAIL497- Captions should be 1 step down: `\small` (10.95pt for 12pt body, 9.5pt for 11pt, 9pt for 10pt)498- `\footnotesize` is also acceptable (slightly smaller)499- The `caption` package is the correct way to enforce this:500501```latex502% Standard professional setup503\usepackage[font=small, labelfont=bf]{caption}504505% Alternative: slightly smaller506\usepackage[font=footnotesize, labelfont=bf]{caption}507508% With label separator control509\usepackage[font=small, labelfont=bf, labelsep=period]{caption}510% produces "Figure 1. Description" with bold "Figure 1."511```512513**8.3 Caption label must be visually distinct from description**514- Label ("Table 1:" / "Figure 1.") in **bold** — this is the dominant convention515- Alternatives: small caps (`labelfont=sc`) or bold small caps516- Label at the same weight as description text = FAIL — the reader can't quickly find the figure number517- The label is a reference anchor; the description is prose. They serve different functions and must look different.518519**8.4 Heading weight and size decrease with depth**520- `\section` > `\subsection` > `\subsubsection` in both size and visual weight521- If the document class provides this (most do), do not override with manual font commands522- Manual `{\Large\textbf{...}}` instead of `\section{}` = FAIL — breaks numbering, bookmarks, and TOC523524**8.5 Footnote size**525- Footnotes should be smaller than body text (standard LaTeX default: `\footnotesize`)526- Footnotes at body size = FAIL527- Footnote reference markers: superscript numbers (default) — consistent style528529**8.6 Table body text size**530- Table body text at same size as body text or one step down (`\small`)531- Tables should NOT be at `\footnotesize` or smaller to fit — redesign the table instead (fewer columns, abbreviate headers, split into two tables)532- Exception: appendix tables with many columns where space is genuinely constrained — `\small` is the floor533534**8.7 Header/footer text**535- Running headers/footers at smaller size than body (standard in most document classes)536- Manual headers at body size = visual noise competing with content537538**8.8 No manual font-size overrides in body**539- Flag `{\large ...}` or `{\Large ...}` in running text (not headings)540- Flag `{\small ...}` wrapping entire sections to fit page limits541- These override the hierarchy and create visual inconsistency542- Exception: `\small` inside specific floats/environments is acceptable543544---545546### Pass 9 — Professional Polish547548**9.1 Placeholder detection**549- No "TODO", "FIXME", "XXX", "PLACEHOLDER", "TBD" in any `.tex` file550- No "Lorem ipsum" or filler text551- No commented-out paragraphs that are clearly draft remnants (as opposed to intentional version tracking)552553**9.2 PDF metadata** (if PDF available)554- Title set in PDF properties (not "main.tex" or blank)555- Author set in PDF properties556- `\hypersetup{pdftitle={...}, pdfauthor={...}}` configured557558**9.3 PDF bookmarks**559- `hyperref` loaded with bookmarks enabled (default)560- Section structure navigable via PDF reader sidebar561- Bookmark text matches section titles562563**9.4 Consistent package loading**564- No duplicate `\usepackage` calls for the same package565- No conflicting package options566- Package loading order follows conventions (hyperref last or near-last)567568**9.5 Overfull/underfull box warnings (MANDATORY — do not skip)**569- Read the `.log` file (same name as main tex, e.g., `main.log` or `yuj.log`)570- Grep for `Overfull \\hbox` — each is text extending past the margin571- Report every instance with the line number and badness value572- Common causes: long URLs in bibliography, unbreakable inline math, wide `\resizebox` tables, long `\texttt{}` strings573- Fix per cause:574 - URLs: `breaklinks=true` + `\UrlBreaks{\UrlOrds}` (see 3.14)575 - Inline math: break with `\allowbreak` or move to display576 - Tables: check `\resizebox` scaling, consider `\small` or redesign577 - `\texttt{}`: replace with `\url{}` for URLs, add `\allowbreak` for paths578- Also check for `Underfull \\hbox` with badness > 5000 — these produce visibly loose lines579580**9.6 Unresolved references**581- No `??` in rendered output from unresolved `\ref` or `\cite`582- No `[?]` from missing bibliography entries583- Check `.log` for "Reference ... undefined" and "Citation ... undefined"584585---586587### 3. Generate Report588589```markdown590# Typography Audit Report591592**Manuscript:** [main tex file]593**Document class:** [detected class]594**Layout:** [single/two-column]595**Date:** [date]596**Verdict:** [Professional | Needs Polish | Significant Issues]597598## Summary599600| Category | Pass | Fail | Warn |601|----------|------|------|------|602| Table Design | | | |603| Figure Design | | | |604| LaTeX Typography | | | |605| Units & Numbers | | | |606| Cross-References | | | |607| Page Layout | | | |608| Code & Algorithms | | | |609| Typographic Hierarchy | | | |610| Professional Polish | | | |611612## Fixes (ordered by impact)613614### High Impact (visual professionalism)615616[Issues that experienced readers/reviewers will notice immediately]617618### Medium Impact (readability)619620[Issues that affect reading experience but may not be consciously noticed]621622### Low Impact (polish)623624[Micro-issues that matter for camera-ready / final versions]625626## Quick Fixes627628[One-line fixes: add microtype, add booktabs, fix non-breaking spaces —629 items that take <1 minute each and improve the document noticeably]630```631632### 4. Output633634Save report as `[manuscript-name]-typography-report.md` in the project directory.635636Present:637- Verdict638- Count of high/medium/low issues639- Top 5 quick fixes (highest impact for least effort)640- Specific LaTeX code for each fix641642## LaTeX Quick-Fix Reference643644Common one-line preamble additions that resolve multiple issues:645646```latex647% Micro-typography: better line breaks, margin alignment648\usepackage{microtype}649650% Professional tables: \toprule, \midrule, \bottomrule651\usepackage{booktabs}652653% Proper SI units: \SI{10}{\milli\second}654\usepackage{siunitx}655656% Subfigures with consistent labeling657\usepackage[labelformat=parens]{subcaption}658659% Widow/orphan prevention660\widowpenalty=10000661\clubpenalty=10000662663% Two-column balance on last page664\usepackage{balance} % add \balance before \bibliography665666% Caption formatting: bold label, small text667\usepackage[font=small, labelfont=bf]{caption}668669% Inline fractions: \nicefrac{1}{2}670\usepackage{nicefrac}671672% PDF metadata673\hypersetup{674 pdftitle={Your Paper Title},675 pdfauthor={Author Names},676}677```678679## Core Principles680681- **Conventions, not preferences.** Every check in this audit reflects a norm682 practiced by the majority of well-typeset academic papers across venues.683 Where conventions genuinely vary (e.g., percentage spacing), flag as WARN684 with both options and ask for consistency.685686- **Document class awareness.** Some document classes override default687 conventions (e.g., `IEEEtran` has its own table style). When the class688 dictates a style, follow it — do not impose conflicting conventions.689690- **Fix the source, not the symptom.** `\vspace{-3mm}` to fix spacing is a691 symptom-level hack. Fixing the float specifier or package configuration692 that caused the bad spacing is the real fix.693694- **Quick wins first.** The report prioritizes fixes by impact-to-effort ratio.695 Adding `\usepackage{microtype}` takes 5 seconds and improves every page.696 That goes before suggestions to redesign all tables.697698- **No style imposition.** This skill does not enforce "my preferred style."699 It enforces consistency within the document and adherence to conventions700 that have broad consensus. Where the author has made a deliberate,701 consistent choice, respect it.