# Academic Styles Reference > Loaded by Step 3 (Apply Academic Style). Provides venue-specific visual parameters: colors, fonts, sizes, spacing, caption format. Every value is concrete — no "use default". ## Table of Contents 1. [Universal Rules](#1-universal-rules) 2. [NeurIPS Style (Default)](#2-neurips-style-default) 3. [ICML Style](#3-icml-style) 4. [ACL Style](#4-acl-style) 5. [IEEE Style](#5-ieee-style) 6. [Nature Style](#6-nature-style) 7. [Color Palettes Quick Reference](#7-color-palettes-quick-reference) 8. [Font Sizes Quick Reference](#8-font-sizes-quick-reference) --- ## 1. Universal Rules These apply to ALL venues. Venue-specific sections override where noted. ### Colorblind Safety - Primary encoding: color + shape/pattern (never color alone) - Forbidden pairs: pure red (#FF0000) vs pure green (#00FF00) - Mandatory test: simulate deuteranopia — all series still distinguishable - Maximum distinct colors per figure: 7 (use hatching/markers beyond 7) ### Grayscale Compatibility - Figure must remain interpretable when printed in grayscale - Use varying lightness values, not just hue differences - Add patterns (hatching, dots) to filled regions as backup encoding ### Typography - Minimum font size: 8pt at final print size - Label font size: 9-10pt - Title font size: 10-12pt (if shown on figure) - Legend font size: 8-9pt - All text must survive 50% reduction without becoming illegible ### Resolution - Raster output: minimum 300 DPI (600 DPI recommended for print) - Vector output: PDF preferred (no rasterization artifacts) - Always generate both PNG (300 DPI) and PDF ### Layout - Margins: sufficient whitespace around all elements (no clipped text) - Always call `plt.tight_layout()` or equivalent - Grid lines: light gray (#CCCCCC), thin (0.5pt), behind data - Axis spines: visible top and right spines optional (NeurIPS removes them) --- ## 2. NeurIPS Style (Default) **Page width**: 5.5" (single column), 11.0" (full width) **Figure width**: 5.5" (single), 2.6" (half) ### Color Palette (seaborn "muted" inspired, 7 colors) | Index | Name | Hex | RGB | Use | |-------|---------|-----------|-----------------|-----| | 0 | Blue | `#4878D0` | (72, 120, 208) | Primary / "Ours" | | 1 | Orange | `#EE854A` | (238, 133, 74) | Secondary / Baseline | | 2 | Green | `#6ACC64` | (106, 204, 100) | Tertiary | | 3 | Red | `#D65F5F` | (214, 95, 95) | Alert / Worst | | 4 | Purple | `#956CB4` | (149, 108, 180) | Additional | | 5 | Brown | `#8C613C` | (140, 97, 60) | Additional | | 6 | Pink | `#DC7EC0` | (220, 126, 192) | Additional | ### Fonts - Family: `serif` (Times New Roman or similar) - Body: 10pt, Labels: 9pt, Legend: 8pt, Title: 11pt - matplotlib: `'font.family': 'serif'` ### Axes - Remove top and right spines: `ax.spines['top'].set_visible(False)` - Tick direction: `out` - Tick length: 4pt - Grid: `alpha=0.3, linestyle='--', linewidth=0.5` ### Caption Format ``` Figure N: . . ``` --- ## 3. ICML Style **Page width**: 6.75" (single column), 13.5" (full width) **Figure width**: 6.75" (single), 3.25" (half) ### Color Palette (cooler tones) | Index | Name | Hex | Use | |-------|-----------|-----------|-----| | 0 | Dark Blue | `#1F77B4` | Primary / "Ours" | | 1 | Orange | `#FF7F0E` | Secondary | | 2 | Teal | `#2CA02C` | Tertiary | | 3 | Crimson | `#D62728` | Alert | | 4 | Violet | `#9467BD` | Additional | | 5 | Sienna | `#8C564B` | Additional | | 6 | Gray | `#7F7F7F` | Neutral/Baseline | ### Fonts - Family: `serif` (Computer Modern / Times) - Body: 10pt, Labels: 9pt, Legend: 8pt - matplotlib: `'font.family': 'serif', 'mathtext.fontset': 'cm'` ### Caption Format ``` Figure N. . . ``` --- ## 4. ACL Style **Page width**: 6.0" (single column) **Figure width**: 6.0" (single), 2.9" (half) ### Color Palette (warm academic) | Index | Name | Hex | Use | |-------|------------|-----------|-----| | 0 | Royal Blue | `#2166AC` | Primary | | 1 | Warm Red | `#B2182B` | Secondary | | 2 | Teal | `#35978F` | Tertiary | | 3 | Gold | `#DFC27D` | Highlight | | 4 | Purple | `#762A83` | Additional | | 5 | Dark Gray | `#525252` | Neutral | ### Fonts - Family: `serif` (Times New Roman) - Body: 10pt, Labels: 9pt, Legend: 8pt - matplotlib: `'font.family': 'serif'` ### Special Notes - NLP figures often include text examples — ensure text is readable - Attention heatmaps: use sequential colormap (`Blues` or `YlOrRd`) - Dependency trees: horizontal layout preferred ### Caption Format ``` Figure N: . ``` --- ## 5. IEEE Style **Page width**: 3.5" (single column), 7.16" (double column) **Figure width**: 3.5" (single), 7.16" (full) ### Color Palette (high contrast, traditional) | Index | Name | Hex | Use | |-------|----------|-----------|-----| | 0 | Blue | `#0072B2` | Primary | | 1 | Orange | `#E69F00` | Secondary | | 2 | Green | `#009E73` | Tertiary | | 3 | Red | `#CC79A7` | Alert (pink-red, colorblind-safe) | | 4 | Sky Blue | `#56B4E9` | Additional | | 5 | Vermilion| `#D55E00` | Additional | | 6 | Black | `#000000` | Baseline/Reference | **Note**: This is the Wong colorblind-safe palette, recommended for all IEEE publications. ### Fonts - Family: `sans-serif` (Helvetica / Arial) - Body: 8pt, Labels: 8pt, Legend: 7pt, Title: 9pt - matplotlib: `'font.family': 'sans-serif'` ### Special Notes - IEEE is stricter on figure size due to two-column format - Single-column figures: max 3.5" wide — everything must be readable at this size - Prefer subfigure grids over wide panoramic figures - Line width: minimum 1pt (thin lines disappear in print) ### Caption Format ``` Fig. N. . ``` --- ## 6. Nature Style **Page width**: 3.5" (single column), 7.2" (double column) **Figure width**: 3.5" (single), 7.2" (full) ### Color Palette (Nature-inspired, elegant) | Index | Name | Hex | Use | |-------|-----------|-----------|-----| | 0 | Nature Blue | `#3B4CC0` | Primary | | 1 | Nature Red | `#B40426` | Secondary | | 2 | Nature Green| `#1B7837` | Tertiary | | 3 | Gold | `#F2C14E` | Highlight | | 4 | Teal | `#008080` | Additional | | 5 | Dark Gray | `#404040` | Neutral | ### Fonts - Family: `sans-serif` (Helvetica / Arial) - Body: 7pt, Labels: 7pt, Legend: 6pt, Title: 8pt - matplotlib: `'font.family': 'sans-serif', 'font.size': 7` ### Special Notes - Nature has the strictest size limits — maximize information density - Prefer panel layouts (a, b, c, d) with lowercase bold letters - Panel labels: **a**, **b**, **c** at top-left of each subfigure - Color: used sparingly, key data only — backgrounds always white ### Caption Format ``` Figure N | . <Description>. a, <Panel a description>. b, <Panel b description>. ``` --- ## 7. Color Palettes Quick Reference ### matplotlib Code Snippets ```python # NeurIPS (default) COLORS_NEURIPS = ['#4878D0', '#EE854A', '#6ACC64', '#D65F5F', '#956CB4', '#8C613C', '#DC7EC0'] # ICML COLORS_ICML = ['#1F77B4', '#FF7F0E', '#2CA02C', '#D62728', '#9467BD', '#8C564B', '#7F7F7F'] # ACL COLORS_ACL = ['#2166AC', '#B2182B', '#35978F', '#DFC27D', '#762A83', '#525252'] # IEEE (Wong colorblind-safe) COLORS_IEEE = ['#0072B2', '#E69F00', '#009E73', '#CC79A7', '#56B4E9', '#D55E00', '#000000'] # Nature COLORS_NATURE = ['#3B4CC0', '#B40426', '#1B7837', '#F2C14E', '#008080', '#404040'] ``` ### Choosing "Ours" Color Convention: the first color in each palette (index 0, a shade of blue) is used for "our method". This creates visual prominence and is consistent with reader expectations. --- ## 8. Font Sizes Quick Reference | Venue | Body | Labels | Legend | Title | Min | |---------|------|--------|--------|-------|-----| | NeurIPS | 10pt | 9pt | 8pt | 11pt | 8pt | | ICML | 10pt | 9pt | 8pt | 10pt | 8pt | | ACL | 10pt | 9pt | 8pt | 10pt | 8pt | | IEEE | 8pt | 8pt | 7pt | 9pt | 7pt | | Nature | 7pt | 7pt | 6pt | 8pt | 6pt | **Rule of thumb**: If in doubt, use larger font sizes. Reviewers complain about unreadable figures far more often than oversized text. --- *Cross-reference: SKILL.md §Step 3, §NEVER Rules #2 #3 #6*