manuscript-typography
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
booktabspackage:\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 (
Scolumn fromsiunitx) - 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)notLatency 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;\footnotesizeacceptable - Use the
captionpackage 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
labelsepincaptionpackage) - 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
longtableorsupertabular - Repeated headers on continuation pages
- No font-size reduction to force a table onto one page (below
\smallis 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
captionpackage applies uniformly - Caption label ("Figure 1:") bold or small caps (matches table label style)
- Caption description text at
\smallor\footnotesize(matches table caption size) - If not using
captionpackage: 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
subcaptionorsubfigurepackage — 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---12should bepages 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-reviewPass 7b for that judgment, do not flag em-dashes alone as AI tells.
- Spacing inconsistency: CMOS/APA/MLA use closed em-dashes (
3.2 Quotation marks
- Opening:
``(backticks) - Closing:
''(straight single quotes) - Not
"straight quotes"— renders incorrectly in TeX - Nested:
`inner'insideouter'' ``
3.3 Ellipsis
\ldotsor\dots— not three periods (...)\ldotsproduces 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~msor10\,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(usesiunitxfor 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}—\emphnests 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
\¬&in text\%not%in text\#not#in text\_not_in text- Degree symbol:
$^\circ$or\textdegree— not°(Unicode) - Multiplication:
$\times$— notx
3.9 Ligatures
- ff, fi, fl, ffi, ffl must render as proper ligatures (default in CM/Latin Modern fonts)
- Flag if
\DisableLigaturesormicrotypeligatures=falseis 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:
hyperreflink colors for cross-references and URLs
3.12 Sentence spacing
- LaTeX default: extra space after periods (end-of-sentence). This is traditional TeX behavior.
\frenchspacingdisables 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
\[ ... \]orequationenvironment — 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
urlorhyperrefpackage (hyperref includes url functionality) - If
hyperrefis loaded: verifybreaklinks=trueis 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:
siunitxpackage —\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/sorm\,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}(fromxfrac) — 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 nextEq.~\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=10000and\clubpenalty=10000in preamble- Or per-instance
\needspacecommands
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
\newpageor\clearpagein the middle of sections without justification \clearpagebefore 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
\parindentis ~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
\parindentto 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
\indentor\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
articleand 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\FloatBarrierbefore 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\sectionboundaries automatically. For\subsection-level control, manual\FloatBarrieris needed. - Do NOT fix by changing all floats to
[H]— this creates worse layout problems (large whitespace gaps).\FloatBarrierat strategic points is the correct solution. - Category: AUTO-FIX (add
\usepackage{placeins}+\FloatBarrierbefore 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
listingsormintedpackage — not manual\textttblocks - Consistent syntax highlighting style
- Line numbers if code lines are referenced in text
- Font size:
\smallor\footnotesize— not body size (too large) or\scriptsize(too small)
7.3 Algorithm pseudocode
- Use
algorithm2e,algorithmic, oralgorithmicxpackage - 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) \footnotesizeis also acceptable (slightly smaller)- The
captionpackage 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>\subsubsectionin 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
\footnotesizeor 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 —
\smallis 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:
\smallinside specific floats/environments is acceptable
Pass 9 — Professional Polish
9.1 Placeholder detection
- No "TODO", "FIXME", "XXX", "PLACEHOLDER", "TBD" in any
.texfile - 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
hyperrefloaded with bookmarks enabled (default)- Section structure navigable via PDF reader sidebar
- Bookmark text matches section titles
9.4 Consistent package loading
- No duplicate
\usepackagecalls 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
.logfile (same name as main tex, e.g.,main.logoryuj.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
\resizeboxtables, long\texttt{}strings - Fix per cause:
- URLs:
breaklinks=true+\UrlBreaks{\UrlOrds}(see 3.14) - Inline math: break with
\allowbreakor move to display - Tables: check
\resizeboxscaling, consider\smallor redesign \texttt{}: replace with\url{}for URLs, add\allowbreakfor paths
- URLs:
- Also check for
Underfull \\hboxwith badness > 5000 — these produce visibly loose lines
9.6 Unresolved references
- No
??in rendered output from unresolved\refor\cite - No
[?]from missing bibliography entries - Check
.logfor "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.,
IEEEtranhas 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.
More from mathews-tom/armory
architecture-diagram
Generate layered architecture diagrams as self-contained HTML with inline SVG icons, CSS Grid containers, and connection overlays. Triggers on: "architecture diagram", "infra diagram", "system diagram", "deployment diagram", "topology", "draw architecture". NOT for architecture reviews, use architecture-reviewer.
61architecture-reviewer
Architecture reviews across 7 dimensions (structural, scalability, enterprise readiness, performance, security, ops, data) with scored reports. Triggers on: "review architecture", "critique design", "audit system", "assess scalability", "enterprise readiness", "technical due diligence". NOT for diagrams, use architecture-diagram.
59concept-to-video
Turn concepts into animated explainer videos using Manim (Python) with MP4/GIF output, audio overlay, multi-scene composition. Triggers on: "create a video", "animate this", "make an explainer", "manim animation", "motion graphic". NOT for React video, use remotion-video.
57youtube-analysis
Extract YouTube transcripts and produce structured concept analysis with multi-level summaries, key concepts, takeaways. Uses youtube-transcript-api with yt-dlp fallback. Triggers on: "analyze youtube video", "youtube transcript", "summarize this video", "extract concepts from video", "video key points", or any youtube.com/youtu.be URL.
57code-refiner
Deep code simplification and refactoring preserving behavior across Python, Go, TypeScript, Rust. Targets complexity, anti-patterns, readability debt. Triggers on: "simplify this code", "refactor for clarity", "reduce complexity", "make this more readable", "tech debt cleanup", "too much nesting".
56humanize
Detects and removes AI-generated writing patterns while preserving meaning and facts. Triggers on: "humanize text", "make this sound human", "remove AI patterns", "rewrite to sound natural", "make this less AI", "de-slop this", "not sound like ChatGPT", "human pass".
56