Tables and Figures
SkillDev toolsUse when generating a LaTeX results table, creating a figure for a paper, formatting descriptive statistics, preparing regression output for publication, or producing vector-quality graphics. Enforces booktabs, threeparttable, vector PDFs, and script-generated output.
Use Tables and Figures in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add Tables and Figures and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the Tables and Figures skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
What this skill tells your AI
The instructions your AI receives, as published by brycewang-stanford/auto-empirical-research-skills in skills/60-regisely-superpapers/skills/tables-and-figures/SKILL.md and read by Ahel’s review.
Overview
This skill produces publication-quality tables and figures that are regenerated by scripts, not hand-edited. Tables use booktabs for professional rules and threeparttable for integrated notes. Figures are vector PDFs — PNG and JPG are forbidden in the final paper. Every table and figure comes from a script under code/ and is included in the paper via \input{} or \includegraphics{}.
When to Use
- "Make a table of descriptive statistics"
- "Format the regression results for the paper"
- "Create a figure showing X over time"
- "Generate the event-study plot"
- Preparing final outputs for submission
- Re-running the analysis after data changes
Mandatory Steps
-
Generate every table and figure from a script in
code/that reads fromdata/processed/and writes tooutput/tables/oroutput/figures/. Never hand-edit the output file. -
Use booktabs rules in tables.
\toprule,\midrule,\bottomrule. Never\hline. Never vertical bars. -
Wrap every table in
threeparttablewith a notes block documenting: standard error type, significance convention, sample, data source. -
Save figures as vector PDF. Use ggplot2 with
ggsave(..., device = cairo_pdf)in R, ormatplotlib.pyplot.savefig(..., format='pdf')in Python. Raster formats (PNG, JPG) are forbidden in the final paper. -
Include in the paper with
\input{}or\includegraphics{}. Never paste numbers or copy images. -
Use the naming convention:
- Tables:
tab_<purpose>.tex—tab_descriptives.tex,tab_main_results.tex,tab_robustness.tex - Figures:
fig_<purpose>.pdf—fig_event_study.pdf,fig_trends.pdf
- Tables:
-
Table notes and figure captions follow the user's paper language. The file names and script comments stay in English; the user-facing text in the notes and captions follows the paper's language setting.
-
No table may overflow the text width. After generating a table, verify it fits within
\linewidth. If it overflows:- First, reduce column padding with
@{}column separators or\setlength{\tabcolsep}{3pt}. - Second, abbreviate column headers or use multi-row headers.
- Third, use
\resizebox{\linewidth}{!}{...}— but only if font remains readable. - Last resort: switch the table page to landscape using the
pdflscapepackage (\begin{landscape}...\end{landscape}). Add\usepackage{pdflscape}to the preamble. Never let a table bleed into the margin. After compilation, check forOverfull \hboxwarnings on table lines and fix them.
- First, reduce column padding with
Table Template
Standard regression results table:
\begin{table}[htbp]
\centering
\begin{threeparttable}
\caption{Main Results}
\label{tab:main}
\begin{tabular}{lcc}
\toprule
& (1) & (2) \\
& OLS & FE \\
\midrule
Treatment & 0.123*** & 0.098** \\
& (0.034) & (0.041) \\
\midrule
N & 10{,}234 & 10{,}234 \\
R$^2$ & 0.42 & 0.58 \\
\bottomrule
\end{tabular}
\begin{tablenotes}[flushleft]
\footnotesize
\item \textit{Notes:} Standard errors clustered at the state level in parentheses. * p$<$0.10, ** p$<$0.05, *** p$<$0.01. Sample covers 2010--2020. Data: IBGE PNADC.
\end{tablenotes}
\end{threeparttable}
\end{table}
Required packages in paper preamble:
\usepackage{booktabs}
\usepackage{threeparttable}
Significance Convention
Default: * p<0.10, ** p<0.05, *** p<0.01 (economics and finance convention).
Alternative: * p<0.05, ** p<0.01, *** p<0.001 (common in psychology and medicine).
Detect the convention by reading CLAUDE.superpapers.md from the current working directory, or walking up parent directories until found, and using the significance_convention field. If the file is absent or the field is unset, ask the user — do not silently default. Always document the convention in the table note; do not assume the reader knows which convention is used.
Figure Standards
- Format: Vector PDF only. No PNG, JPG, or other raster formats in the final paper.
- Generator: ggplot2 in R (preferred) or matplotlib/seaborn in Python, or native LaTeX via tikz/pgfplots.
- Theme:
theme_minimal()ortheme_classic()in ggplot2, with adjustments for print. Avoid grey backgrounds from ggplot2's default theme. - Colors: Colorblind-safe palettes (
viridis,RColorBrewerDark2 or Set1). For B&W print compatibility, use dash patterns or shapes rather than relying on color alone. - Titles: Do not embed plot titles in the figure. The title goes in the LaTeX caption.
- Axis labels: Clear, with units (
Unemployment rate (%),Year,Real GDP (log)). - Legend: Minimal. Remove if only one series.
- Saving:
ggsave("output/figures/fig_name.pdf", width = W, height = H, device = cairo_pdf).
Example figure code (R/ggplot2):
library(ggplot2)
p <- ggplot(data, aes(x = year, y = unemployment, color = region)) +
geom_line(linewidth = 0.8) +
scale_color_viridis_d(option = "D") +
labs(x = "Year", y = "Unemployment rate (%)", color = NULL) +
theme_minimal(base_size = 11) +
theme(
legend.position = "bottom",
panel.grid.minor = element_blank()
)
ggsave(
"output/figures/fig_unemployment.pdf",
plot = p,
width = 6.5, height = 4,
device = cairo_pdf
)
Anti-Patterns
- Tables using
\hlineinstead of booktabs rules - Tables with vertical bars (
|) - Tables without a notes block
- Figures saved as PNG or JPG in the final paper
- Hand-edited
.textable files - Significance convention undocumented in the note
- Figures with embedded titles clashing with LaTeX captions
- Missing sample description in the table note
- Using ggplot2's default grey background theme in published figures
- Color-only differentiation in figures intended for B&W print
- Tables that overflow into the page margin without correction
- Using
\resizeboxas a first resort instead of redesigning column layout or reducing padding - Wide tables left in portrait when landscape would preserve readability
Verification Before Completion
- Every table and figure generated by a script in
code/ - Outputs in
output/tables/oroutput/figures/ - Tables use
booktabsandthreeparttable - Significance convention documented in every results table note
- Figures are vector PDFs
- No titles embedded in figures
- Axis labels and units specified
- Colors colorblind-safe where feasible
- Table notes and figure captions in the user's paper language
- No table overflows the text width or bleeds into margins
- Wide tables use landscape orientation or column optimization to remain readable
Signals
- GitHub stars
- 5k
- Forks
- 536
- Last commit
- Oct 2026
Advanced
- Item type
- skill
- Key
tables-and-figures- Source
- github.com/brycewang-stanford/auto-empirical-research-skills
github.com/brycewang-stanford/auto-empirical-research-skills
Related picks
Skill · wshobson
The pick for Pythonpython-pro
Skill · jeffallan
The pick for Pythonlatex-posters
Skill · k-dense-ai
The pick for LaTeXlatex-drawing-guide
Skill · brycewang-stanford
The pick for LaTeXgolden-pdf-ch
Skill · yusufkaraaslan
The pick for PDFpdf-co-automation
Skill · composio-community
The pick for PDF