aboutsummaryrefslogtreecommitdiffstats
path: root/.agents/skills/ml-paper-writing
diff options
context:
space:
mode:
authorsillylaird <sillyfanboy@gmail.com>2026-09-03 00:33:59 +0000
committersillylaird <sillyfanboy@gmail.com>2026-09-03 00:33:59 +0000
commit898b52edcb47bcb3e9d6106e74ca73e74ea01e70 (patch)
tree85c6ee5ad58b860144551184d4cf86b560c62b91 /.agents/skills/ml-paper-writing
downloadwww-898b52edcb47bcb3e9d6106e74ca73e74ea01e70.tar.gz
www-898b52edcb47bcb3e9d6106e74ca73e74ea01e70.zip
import live www.sillylaird.ca webrootHEADmain
Diffstat (limited to '')
-rw-r--r--.agents/skills/ml-paper-writing/SKILL.md1107
-rw-r--r--.agents/skills/ml-paper-writing/references/OPERATING-MODES.md25
-rw-r--r--.agents/skills/ml-paper-writing/references/checklists.md361
-rw-r--r--.agents/skills/ml-paper-writing/references/citation-workflow.md562
-rw-r--r--.agents/skills/ml-paper-writing/references/knowledge/README.md58
-rw-r--r--.agents/skills/ml-paper-writing/references/knowledge/design-simplification-papers-kaiming-he.md605
-rw-r--r--.agents/skills/ml-paper-writing/references/knowledge/kaiming_he_injection_record.json153
-rw-r--r--.agents/skills/ml-paper-writing/references/knowledge/paper-miner-writing-memory.md37
-rw-r--r--.agents/skills/ml-paper-writing/references/knowledge/rethinking-papers-kaiming-he.md1023
-rw-r--r--.agents/skills/ml-paper-writing/references/knowledge/review-response.md429
-rw-r--r--.agents/skills/ml-paper-writing/references/knowledge/structure.md349
-rw-r--r--.agents/skills/ml-paper-writing/references/knowledge/submission-guides.md326
-rw-r--r--.agents/skills/ml-paper-writing/references/knowledge/theory-driven-papers-kaiming-he.md561
-rw-r--r--.agents/skills/ml-paper-writing/references/knowledge/writing-techniques.md637
-rw-r--r--.agents/skills/ml-paper-writing/references/literature-research/arxiv-search-guide.md199
-rw-r--r--.agents/skills/ml-paper-writing/references/literature-research/paper-quality-criteria.md303
-rw-r--r--.agents/skills/ml-paper-writing/references/reviewer-guidelines.md367
-rw-r--r--.agents/skills/ml-paper-writing/references/sources.md159
-rw-r--r--.agents/skills/ml-paper-writing/references/writing-guide.md476
-rw-r--r--.agents/skills/ml-paper-writing/templates/README.md251
-rw-r--r--.agents/skills/ml-paper-writing/templates/aaai2026/README.md534
-rw-r--r--.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-supp.tex144
-rw-r--r--.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-template.tex952
-rw-r--r--.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026.bib111
-rw-r--r--.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026.bst1493
-rw-r--r--.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026.sty315
-rw-r--r--.agents/skills/ml-paper-writing/templates/acl/README.md50
-rw-r--r--.agents/skills/ml-paper-writing/templates/acl/acl.sty312
-rw-r--r--.agents/skills/ml-paper-writing/templates/acl/acl_latex.tex377
-rw-r--r--.agents/skills/ml-paper-writing/templates/acl/acl_lualatex.tex101
-rw-r--r--.agents/skills/ml-paper-writing/templates/acl/acl_natbib.bst1940
-rw-r--r--.agents/skills/ml-paper-writing/templates/acl/anthology.bib.txt26
-rw-r--r--.agents/skills/ml-paper-writing/templates/acl/custom.bib70
-rw-r--r--.agents/skills/ml-paper-writing/templates/acl/formatting.md326
-rw-r--r--.agents/skills/ml-paper-writing/templates/colm2025/README.md3
-rw-r--r--.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bib11
-rw-r--r--.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bst1440
-rw-r--r--.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.pdfbin0 -> 122635 bytes
-rw-r--r--.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.sty218
-rw-r--r--.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.tex305
-rw-r--r--.agents/skills/ml-paper-writing/templates/colm2025/fancyhdr.sty485
-rw-r--r--.agents/skills/ml-paper-writing/templates/colm2025/math_commands.tex508
-rw-r--r--.agents/skills/ml-paper-writing/templates/colm2025/natbib.sty1246
-rw-r--r--.agents/skills/ml-paper-writing/templates/iclr2026/fancyhdr.sty485
-rw-r--r--.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bib24
-rw-r--r--.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bst1440
-rw-r--r--.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.pdfbin0 -> 200508 bytes
-rw-r--r--.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.sty246
-rw-r--r--.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.tex414
-rw-r--r--.agents/skills/ml-paper-writing/templates/iclr2026/math_commands.tex508
-rw-r--r--.agents/skills/ml-paper-writing/templates/iclr2026/natbib.sty1246
-rw-r--r--.agents/skills/ml-paper-writing/templates/icml2026/algorithm.sty79
-rw-r--r--.agents/skills/ml-paper-writing/templates/icml2026/algorithmic.sty201
-rw-r--r--.agents/skills/ml-paper-writing/templates/icml2026/example_paper.bib75
-rw-r--r--.agents/skills/ml-paper-writing/templates/icml2026/example_paper.pdfbin0 -> 193509 bytes
-rw-r--r--.agents/skills/ml-paper-writing/templates/icml2026/example_paper.tex662
-rw-r--r--.agents/skills/ml-paper-writing/templates/icml2026/fancyhdr.sty864
-rw-r--r--.agents/skills/ml-paper-writing/templates/icml2026/icml2026.bst1443
-rw-r--r--.agents/skills/ml-paper-writing/templates/icml2026/icml2026.sty767
-rw-r--r--.agents/skills/ml-paper-writing/templates/icml2026/icml_numpapers.pdfbin0 -> 2823 bytes
-rw-r--r--.agents/skills/ml-paper-writing/templates/neurips2025/Makefile36
-rw-r--r--.agents/skills/ml-paper-writing/templates/neurips2025/extra_pkgs.tex53
-rw-r--r--.agents/skills/ml-paper-writing/templates/neurips2025/main.tex38
-rw-r--r--.agents/skills/ml-paper-writing/templates/neurips2025/neurips.sty382
64 files changed, 27918 insertions, 0 deletions
diff --git a/.agents/skills/ml-paper-writing/SKILL.md b/.agents/skills/ml-paper-writing/SKILL.md
new file mode 100644
index 0000000..ebc8b2b
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/SKILL.md
@@ -0,0 +1,1107 @@
+---
+name: ml-paper-writing
+description: Write publication-ready ML/AI papers for NeurIPS, ICML, ICLR, ACL, AAAI, COLM. Use when drafting papers from research repos, conducting literature reviews, finding related work, verifying citations, or preparing camera-ready submissions. Includes LaTeX templates, citation verification workflows, and paper discovery/evaluation criteria.
+version: 1.0.0
+author: Orchestra Research
+license: MIT
+tags: [Academic Writing, NeurIPS, ICML, ICLR, ACL, AAAI, COLM, LaTeX, Paper Writing, Citations, Research]
+dependencies: [semanticscholar, arxiv, habanero, requests]
+---
+
+# ML Paper Writing for Top AI Conferences
+
+Expert-level guidance for writing publication-ready papers targeting **NeurIPS, ICML, ICLR, ACL, AAAI, and COLM**. This skill combines writing philosophy from top researchers (Nanda, Farquhar, Karpathy, Lipton, Steinhardt) with practical tools: LaTeX templates, citation verification APIs, and conference checklists.
+
+## Default operating order
+
+Use this skill in the following order unless the task is unusually narrow:
+1. lock the operating mode from `references/OPERATING-MODES.md`,
+2. understand the repo or draft context,
+3. use `references/citation-workflow.md` as the **canonical citation authority**,
+4. load venue- or template-specific references only after the main writing path is clear.
+
+Google Scholar may still help with manual discovery, but it is **not** the canonical verification authority in this skill. Default verification should use programmatic sources such as Semantic Scholar, CrossRef, and arXiv.
+
+## Core Philosophy: Collaborative Writing
+
+**Paper writing is collaborative, but Claude should be proactive in delivering drafts.**
+
+The typical workflow starts with a research repository containing code, results, and experimental artifacts. Claude's role is to:
+
+1. **Understand the project** by exploring the repo, results, and existing documentation
+2. **Deliver a complete first draft** when confident about the contribution
+3. **Search literature** using web search and APIs to find relevant citations
+4. **Refine through feedback cycles** when the scientist provides input
+5. **Ask for clarification** only when genuinely uncertain about key decisions
+
+**Key Principle**: Be proactive. If the repo and results are clear, deliver a full draft. Don't block waiting for feedback on every section—scientists are busy. Produce something concrete they can react to, then iterate based on their response.
+
+---
+
+## ⚠️ CRITICAL: Never Hallucinate Citations
+
+**This is the most important rule in academic writing with AI assistance.**
+
+### The Problem
+AI-generated citations have a **~40% error rate**. Hallucinated references—papers that don't exist, wrong authors, incorrect years, fabricated DOIs—are a serious form of academic misconduct that can result in desk rejection or retraction.
+
+### The Rule
+**NEVER generate BibTeX entries from memory. ALWAYS fetch programmatically.**
+
+| Action | ✅ Correct | ❌ Wrong |
+|--------|-----------|----------|
+| Adding a citation | Search API → verify → fetch BibTeX | Write BibTeX from memory |
+| Uncertain about a paper | Mark as `[CITATION NEEDED]` | Guess the reference |
+| Can't find exact paper | Note: "placeholder - verify" | Invent similar-sounding paper |
+
+### When You Can't Verify a Citation
+
+If you cannot programmatically verify a citation, you MUST:
+
+```latex
+% EXPLICIT PLACEHOLDER - requires human verification
+\cite{PLACEHOLDER_author2024_verify_this} % TODO: Verify this citation exists
+```
+
+**Always tell the scientist**: "I've marked [X] citations as placeholders that need verification. I could not confirm these papers exist."
+
+### Recommended: Install Exa MCP for Paper Search
+
+For the best paper search experience, install **Exa MCP** which provides real-time academic search:
+
+**Claude Code:**
+```bash
+claude mcp add exa -- npx -y mcp-remote "https://mcp.exa.ai/mcp"
+```
+
+**Cursor / VS Code** (add to MCP settings):
+```json
+{
+ "mcpServers": {
+ "exa": {
+ "type": "http",
+ "url": "https://mcp.exa.ai/mcp"
+ }
+ }
+}
+```
+
+Exa MCP enables searches like:
+- "Find papers on RLHF for language models published after 2023"
+- "Search for transformer architecture papers by Vaswani"
+- "Get recent work on sparse autoencoders for interpretability"
+
+Then verify results with Semantic Scholar API and fetch BibTeX via DOI.
+
+---
+
+## Workflow 0: Starting from a Research Repository
+
+When beginning paper writing, start by understanding the project:
+
+```
+Project Understanding:
+- [ ] Step 1: Explore the repository structure
+- [ ] Step 2: Read README, existing docs, and key results
+- [ ] Step 3: Identify the main contribution with the scientist
+- [ ] Step 4: Find papers already cited in the codebase
+- [ ] Step 5: Search for additional relevant literature
+- [ ] Step 6: Outline the paper structure together
+- [ ] Step 7: Draft sections iteratively with feedback
+```
+
+**Step 1: Explore the Repository**
+
+```bash
+# Understand project structure
+ls -la
+find . -name "*.py" | head -20
+find . -name "*.md" -o -name "*.txt" | xargs grep -l -i "result\|conclusion\|finding"
+```
+
+Look for:
+- `README.md` - Project overview and claims
+- `results/`, `outputs/`, `experiments/` - Key findings
+- `configs/` - Experimental settings
+- Existing `.bib` files or citation references
+- Any draft documents or notes
+
+**Step 2: Identify Existing Citations**
+
+Check for papers already referenced in the codebase:
+
+```bash
+# Find existing citations
+grep -r "arxiv\|doi\|cite" --include="*.md" --include="*.bib" --include="*.py"
+find . -name "*.bib"
+```
+
+These are high-signal starting points for Related Work—the scientist has already deemed them relevant.
+
+**Step 3: Clarify the Contribution**
+
+Before writing, explicitly confirm with the scientist:
+
+> "Based on my understanding of the repo, the main contribution appears to be [X].
+> The key results show [Y]. Is this the framing you want for the paper,
+> or should we emphasize different aspects?"
+
+**Never assume the narrative—always verify with the human.**
+
+**Step 4: Search for Additional Literature**
+
+Use web search to find relevant papers:
+
+```
+Search queries to try:
+- "[main technique] + [application domain]"
+- "[baseline method] comparison"
+- "[problem name] state-of-the-art"
+- Author names from existing citations
+```
+
+Then verify and retrieve BibTeX using the citation workflow below.
+
+**Step 5: Deliver a First Draft**
+
+**Be proactive—deliver a complete draft rather than asking permission for each section.**
+
+If the repo provides clear results and the contribution is apparent:
+1. Write the full first draft end-to-end
+2. Present the complete draft for feedback
+3. Iterate based on scientist's response
+
+If genuinely uncertain about framing or major claims:
+1. Draft what you can confidently
+2. Flag specific uncertainties: "I framed X as the main contribution—let me know if you'd prefer to emphasize Y instead"
+3. Continue with the draft rather than blocking
+
+**Questions to include with the draft** (not before):
+- "I emphasized X as the main contribution—adjust if needed"
+- "I highlighted results A, B, C—let me know if others are more important"
+- "Related work section includes [papers]—add any I missed"
+
+---
+
+## When to Use This Skill
+
+Use this skill when:
+- **Starting from a research repo** to write a paper
+- **Drafting or revising** specific sections
+- **Conducting literature reviews** and finding related work
+- **Discovering recent papers** in your research area
+- **Finding and verifying citations** for related work
+- **Formatting** for conference submission
+- **Resubmitting** to a different venue (format conversion)
+- **Iterating** on drafts with scientist feedback
+
+**Always remember**: First drafts are starting points for discussion, not final outputs.
+
+---
+
+## Workflow: Literature Research & Paper Discovery
+
+When conducting literature reviews, finding related work, or discovering recent papers, use this workflow to systematically search, evaluate, and select ML papers.
+
+### Workflow 5: Finding and Evaluating Papers
+
+```
+Literature Research Process:
+- [ ] Step 1: Define search scope and keywords
+- [ ] Step 2: Search arXiv and academic databases
+- [ ] Step 3: Screen papers by title/abstract
+- [ ] Step 4: Evaluate paper quality (5 dimensions)
+- [ ] Step 5: Select top papers and extract citations
+- [ ] Step 6: Verify citations programmatically
+```
+
+**Step 1: Define Search Scope**
+
+Identify specific research areas, methods, or applications:
+- **Technique-focused**: `transformer architecture`, `graph neural networks`, `self-supervised learning`
+- **Application-focused**: `medical image analysis`, `reinforcement learning for robotics`, `language model alignment`
+- **Problem-focused**: `out-of-distribution generalization`, `continual learning`, `fairness in ML`
+
+**Step 2: Search arXiv**
+
+Use arXiv search with targeted keywords:
+```
+URL Pattern:
+https://arxiv.org/search/?searchtype=all&query=KEYWORDS&abstracts=show&order=-announced_date_first
+
+Example Searches:
+- https://arxiv.org/search/?searchtype=all&query=graph+neural+networks&abstracts=show&order=-announced_date_first
+- https://arxiv.org/search/?cat:cs.LG+AND+all:transformer&abstracts=show&order=-announced_date_first
+```
+
+**Tips:**
+- Combine keywords with `+` for AND
+- Filter by categories: `cs.LG`, `cs.AI`, `cs.CV`, `cs.CL`
+- Sort by `announced_date_first` for recent papers
+- Use Chrome MCP tools when available for automation
+
+**Step 3: Screen Papers**
+
+Quick screening by title and abstract:
+- Relevance to research topic
+- Novelty of contribution
+- Venue/reputation of authors
+- Code availability (check for GitHub links)
+
+**Step 4: Evaluate Quality**
+
+Use the 5-dimension quality criteria:
+
+| Dimension | Weight | Evaluation Focus |
+|-----------|--------|------------------|
+| **Innovation** | 30% | Novelty and originality |
+| **Method Completeness** | 25% | Clarity and reproducibility |
+| **Experimental Thoroughness** | 25% | Validation depth |
+| **Writing Quality** | 10% | Presentation clarity |
+| **Relevance & Impact** | 10% | Domain importance |
+
+**Scoring**: Rate each dimension 1-5, calculate weighted total
+
+**Step 5: Select and Extract**
+
+- Rank papers by total score
+- Select top papers for detailed review
+- Extract metadata: title, authors, arXiv ID, abstract
+- Note code repository links
+
+**Step 6: Verify Citations**
+
+For selected papers, verify citations using Semantic Scholar API:
+- Fetch BibTeX programmatically via DOI
+- Mark unverified citations as `[CITATION NEEDED]`
+- Store in bibliography with verification status
+
+### When to Use Literature Research
+
+Use this workflow when:
+- **Starting a new project**: Find related work and baselines
+- **Writing Related Work section**: Discover recent papers in your area
+- **Staying updated**: Track recent publications in your field
+- **Finding baselines**: Identify state-of-the-art methods for comparison
+- **Literature review**: Comprehensive survey of research area
+
+### Quality Thresholds
+
+- **Excellent**: 4.0+ (include definitely)
+- **Good**: 3.5-3.9 (include if relevant)
+- **Fair**: 3.0-3.4 (include if highly relevant)
+- **Poor**: <3.0 (exclude unless essential)
+
+### Reference Files
+
+For detailed literature research guidance:
+- **`references/literature-research/arxiv-search-guide.md`** - arXiv search strategies and URL patterns
+- **`references/literature-research/paper-quality-criteria.md`** - Detailed 5-dimension evaluation rubrics
+
+---
+
+## Knowledge Base: Paper-Miner Global Writing Memory
+
+This skill consumes a **single canonical writing memory** maintained by `paper-miner`:
+
+- `references/knowledge/paper-miner-writing-memory.md`
+
+This memory is **global**, not project-specific.
+
+Even when `paper-miner` is invoked while working inside a specific repository, it still writes mined writing knowledge only into this one global memory. It does **not** maintain project-local writing memory.
+
+### Canonical memory structure
+
+The maintained memory contains these sections:
+
+| Section | Purpose |
+|----------|---------|
+| `Writing patterns mined` | Reusable rhetorical and claim-evidence patterns |
+| `Structure signals` | Section flow, paragraph progression, and paper organization signals |
+| `Reusable phrasing` | Transition phrases, framing templates, and concise wording |
+| `Venue-specific signals` | Visible venue-facing style and convention cues |
+| `How this helps our writing` | Practical guidance for future drafts, reports, and rebuttals |
+| `Source index` | Source attribution for mined papers |
+
+### How the memory is maintained
+
+The **paper-miner agent** reads papers and merges reusable writing knowledge into this one file:
+
+```text
+You: "Learn writing patterns from this paper: path/to/paper.pdf"
+↓
+paper-miner analyzes the paper
+↓
+Extracts reusable writing signals
+↓
+Updates paper-miner-writing-memory.md
+↓
+ml-paper-writing reuses that memory later
+```
+
+### When to use this memory
+
+Use the global paper-miner memory when you need:
+- structure inspiration for intros, methods, results, or discussion,
+- reusable transition phrases or framing templates,
+- venue-facing writing signals,
+- rebuttal phrasing and response structure ideas,
+- examples of how strong papers support and sequence claims.
+
+### Default read order
+
+When drafting or revising with `ml-paper-writing`, read this memory **before** writing if the task involves:
+- introduction framing,
+- related work organization,
+- method exposition style,
+- results narration,
+- discussion framing,
+- venue-facing polishing.
+
+Use this read order:
+1. `references/knowledge/paper-miner-writing-memory.md`
+2. repo-local evidence and experiment artifacts
+3. cited papers or notes if needed
+4. venue template and formatting constraints
+
+Read narrowly, not exhaustively:
+- first scan `How this helps our writing`,
+- then check `Writing patterns mined` and `Structure signals`,
+- then inspect `Reusable phrasing` only for concrete wording help,
+- use `Venue-specific signals` when targeting a known venue.
+
+### Contribution rule
+
+Every paper mined by `paper-miner` should improve the same global memory.
+
+Do not scatter newly mined knowledge across multiple maintained files.
+Do not create project-specific paper-miner memory.
+Do not duplicate near-identical patterns from the same source.
+
+See `references/knowledge/README.md` for the detailed knowledge-base contract.
+
+## Balancing Proactivity and Collaboration
+
+**Default: Be proactive. Deliver drafts, then iterate.**
+
+| Confidence Level | Action |
+|-----------------|--------|
+| **High** (clear repo, obvious contribution) | Write full draft, deliver, iterate on feedback |
+| **Medium** (some ambiguity) | Write draft with flagged uncertainties, continue |
+| **Low** (major unknowns) | Ask 1-2 targeted questions, then draft |
+
+**Draft first, ask with the draft** (not before):
+
+| Section | Draft Autonomously | Flag With Draft |
+|---------|-------------------|-----------------|
+| Abstract | Yes | "Framed contribution as X—adjust if needed" |
+| Introduction | Yes | "Emphasized problem Y—correct if wrong" |
+| Methods | Yes | "Included details A, B, C—add missing pieces" |
+| Experiments | Yes | "Highlighted results 1, 2, 3—reorder if needed" |
+| Related Work | Yes | "Cited papers X, Y, Z—add any I missed" |
+
+**Only block for input when:**
+- Target venue is unclear (affects page limits, framing)
+- Multiple contradictory framings seem equally valid
+- Results seem incomplete or inconsistent
+- Explicit request to review before continuing
+
+**Don't block for:**
+- Word choice decisions
+- Section ordering
+- Which specific results to show (make a choice, flag it)
+- Citation completeness (draft with what you find, note gaps)
+
+---
+
+## The Narrative Principle
+
+**The single most critical insight**: Your paper is not a collection of experiments—it's a story with one clear contribution supported by evidence.
+
+Every successful ML paper centers on what Neel Nanda calls "the narrative": a short, rigorous, evidence-based technical story with a takeaway readers care about.
+
+**Three Pillars (must be crystal clear by end of introduction):**
+
+| Pillar | Description | Example |
+|--------|-------------|---------|
+| **The What** | 1-3 specific novel claims within cohesive theme | "We prove that X achieves Y under condition Z" |
+| **The Why** | Rigorous empirical evidence supporting claims | Strong baselines, experiments distinguishing hypotheses |
+| **The So What** | Why readers should care | Connection to recognized community problems |
+
+**If you cannot state your contribution in one sentence, you don't yet have a paper.**
+
+---
+
+## Paper Structure Workflow
+
+### Workflow 1: Writing a Complete Paper (Iterative)
+
+Copy this checklist and track progress. **Each step involves drafting → feedback → revision:**
+
+```
+Paper Writing Progress:
+- [ ] Step 1: Define the one-sentence contribution (with scientist)
+- [ ] Step 2: Draft Figure 1 → get feedback → revise
+- [ ] Step 3: Draft abstract → get feedback → revise
+- [ ] Step 4: Draft introduction → get feedback → revise
+- [ ] Step 5: Draft methods → get feedback → revise
+- [ ] Step 6: Draft experiments → get feedback → revise
+- [ ] Step 7: Draft related work → get feedback → revise
+- [ ] Step 8: Draft limitations → get feedback → revise
+- [ ] Step 9: Complete paper checklist (required)
+- [ ] Step 10: Final review cycle and submission
+```
+
+**Step 1: Define the One-Sentence Contribution**
+
+**This step requires explicit confirmation from the scientist.**
+
+Before writing anything, articulate and verify:
+- What is the single thing your paper contributes?
+- What was not obvious or present before your work?
+
+> "I propose framing the contribution as: '[one sentence]'. Does this capture
+> what you see as the main takeaway? Should we adjust the emphasis?"
+
+**Step 2: Draft Figure 1**
+
+Figure 1 deserves special attention—many readers skip directly to it.
+- Convey core idea, approach, or most compelling result
+- Use vector graphics (PDF/EPS for plots)
+- Write captions that stand alone without main text
+- Ensure readability in black-and-white (8% of men have color vision deficiency)
+
+**Step 3: Write Abstract (5-Sentence Formula)**
+
+From Sebastian Farquhar (DeepMind):
+
+```
+1. What you achieved: "We introduce...", "We prove...", "We demonstrate..."
+2. Why this is hard and important
+3. How you do it (with specialist keywords for discoverability)
+4. What evidence you have
+5. Your most remarkable number/result
+```
+
+**Delete** generic openings like "Large language models have achieved remarkable success..."
+
+**Step 4: Write Introduction (1-1.5 pages max)**
+
+Must include:
+- 2-4 bullet contribution list (max 1-2 lines each in two-column format)
+- Clear problem statement
+- Brief approach overview
+- Methods should start by page 2-3 maximum
+
+**Step 5: Methods Section**
+
+Enable reimplementation:
+- Conceptual outline or pseudocode
+- All hyperparameters listed
+- Architectural details sufficient for reproduction
+- Present final design decisions; ablations go in experiments
+
+**Step 6: Experiments Section**
+
+For each experiment, explicitly state:
+- What claim it supports
+- How it connects to main contribution
+- Experimental setting (details in appendix)
+- What to observe: "the blue line shows X, which demonstrates Y"
+
+Requirements:
+- Error bars with methodology (standard deviation vs standard error)
+- Hyperparameter search ranges
+- Compute infrastructure (GPU type, total hours)
+- Seed-setting methods
+
+**Step 7: Related Work**
+
+Organize methodologically, not paper-by-paper:
+
+**Good:** "One line of work uses Floogledoodle's assumption [refs] whereas we use Doobersnoddle's assumption because..."
+
+**Bad:** "Snap et al. introduced X while Crackle et al. introduced Y."
+
+Cite generously—reviewers likely authored relevant papers.
+
+**Step 8: Limitations Section (REQUIRED)**
+
+All major conferences require this. Counter-intuitively, honesty helps:
+- Reviewers are instructed not to penalize honest limitation acknowledgment
+- Pre-empt criticisms by identifying weaknesses first
+- Explain why limitations don't undermine core claims
+
+**Step 9: Paper Checklist**
+
+NeurIPS, ICML, and ICLR all require paper checklists. See [references/checklists.md](references/checklists.md).
+
+---
+
+## Writing Philosophy for Top ML Conferences
+
+**This section distills the most important writing principles from leading ML researchers.** These aren't optional style suggestions—they're what separates accepted papers from rejected ones.
+
+> "A paper is a short, rigorous, evidence-based technical story with a takeaway readers care about." — Neel Nanda
+
+### The Sources Behind This Guidance
+
+This skill synthesizes writing philosophy from researchers who have published extensively at top venues:
+
+| Source | Key Contribution | Link |
+|--------|-----------------|------|
+| **Neel Nanda** (Google DeepMind) | The Narrative Principle, What/Why/So What framework | [How to Write ML Papers](https://www.alignmentforum.org/posts/eJGptPbbFPZGLpjsp/highly-opinionated-advice-on-how-to-write-ml-papers) |
+| **Sebastian Farquhar** (DeepMind) | 5-sentence abstract formula | [How to Write ML Papers](https://sebastianfarquhar.com/on-research/2024/11/04/how_to_write_ml_papers/) |
+| **Gopen & Swan** | 7 principles of reader expectations | [Science of Scientific Writing](https://cseweb.ucsd.edu/~swanson/papers/science-of-writing.pdf) |
+| **Zachary Lipton** | Word choice, eliminating hedging | [Heuristics for Scientific Writing](https://www.approximatelycorrect.com/2018/01/29/heuristics-technical-scientific-writing-machine-learning-perspective/) |
+| **Jacob Steinhardt** (UC Berkeley) | Precision, consistent terminology | [Writing Tips](https://bounded-regret.ghost.io/) |
+| **Ethan Perez** (Anthropic) | Micro-level clarity tips | [Easy Paper Writing Tips](https://ethanperez.net/easy-paper-writing-tips/) |
+| **Andrej Karpathy** | Single contribution focus | Various lectures |
+
+**For deeper dives into any of these, see:**
+- [references/writing-guide.md](references/writing-guide.md) - Full explanations with examples
+- [references/sources.md](references/sources.md) - Complete bibliography
+
+### Time Allocation (From Neel Nanda)
+
+Spend approximately **equal time** on each of:
+1. The abstract
+2. The introduction
+3. The figures
+4. Everything else combined
+
+**Why?** Most reviewers form judgments before reaching your methods. Readers encounter your paper as: **title → abstract → introduction → figures → maybe the rest.**
+
+### Writing Style Guidelines
+
+#### Sentence-Level Clarity (Gopen & Swan's 7 Principles)
+
+These principles are based on how readers actually process prose. Violating them forces readers to spend cognitive effort on structure rather than content.
+
+| Principle | Rule | Example |
+|-----------|------|---------|
+| **Subject-verb proximity** | Keep subject and verb close | ❌ "The model, which was trained on..., achieves" → ✅ "The model achieves... after training on..." |
+| **Stress position** | Place emphasis at sentence ends | ❌ "Accuracy improves by 15% when using attention" → ✅ "When using attention, accuracy improves by **15%**" |
+| **Topic position** | Put context first, new info after | ✅ "Given these constraints, we propose..." |
+| **Old before new** | Familiar info → unfamiliar info | Link backward, then introduce new |
+| **One unit, one function** | Each paragraph makes one point | Split multi-point paragraphs |
+| **Action in verb** | Use verbs, not nominalizations | ❌ "We performed an analysis" → ✅ "We analyzed" |
+| **Context before new** | Set stage before presenting | Explain before showing equation |
+
+**Full 7 principles with detailed examples:** See [references/writing-guide.md](references/writing-guide.md#the-7-principles-of-reader-expectations)
+
+#### Micro-Level Tips (Ethan Perez)
+
+These small changes accumulate into significantly clearer prose:
+
+- **Minimize pronouns**: ❌ "This shows..." → ✅ "This result shows..."
+- **Verbs early**: Position verbs near sentence start
+- **Unfold apostrophes**: ❌ "X's Y" → ✅ "The Y of X" (when awkward)
+- **Delete filler words**: "actually," "a bit," "very," "really," "basically," "quite," "essentially"
+
+**Full micro-tips with examples:** See [references/writing-guide.md](references/writing-guide.md#micro-level-writing-tips)
+
+#### Word Choice (Zachary Lipton)
+
+- **Be specific**: ❌ "performance" → ✅ "accuracy" or "latency" (say what you mean)
+- **Eliminate hedging**: Drop "may" and "can" unless genuinely uncertain
+- **Avoid incremental vocabulary**: ❌ "combine," "modify," "expand" → ✅ "develop," "propose," "introduce"
+- **Delete intensifiers**: ❌ "provides *very* tight approximation" → ✅ "provides tight approximation"
+
+#### Precision Over Brevity (Jacob Steinhardt)
+
+- **Consistent terminology**: Different terms for same concept creates confusion. Pick one and stick with it.
+- **State assumptions formally**: Before theorems, list all assumptions explicitly
+- **Intuition + rigor**: Provide intuitive explanations alongside formal proofs
+
+### What Reviewers Actually Read
+
+Understanding reviewer behavior helps prioritize your effort:
+
+| Paper Section | % Reviewers Who Read | Implication |
+|---------------|---------------------|-------------|
+| Abstract | 100% | Must be perfect |
+| Introduction | 90%+ (skimmed) | Front-load contribution |
+| Figures | Examined before methods | Figure 1 is critical |
+| Methods | Only if interested | Don't bury the lede |
+| Appendix | Rarely | Put only supplementary details |
+
+**Bottom line**: If your abstract and intro don't hook reviewers, they may never read your brilliant methods section.
+
+---
+
+## Conference Requirements Quick Reference
+
+| Conference | Page Limit | Extra for Camera-Ready | Key Requirement |
+|------------|------------|------------------------|-----------------|
+| **NeurIPS 2025** | 9 pages | +0 | Mandatory checklist, lay summary for accepted |
+| **ICML 2026** | 8 pages | +1 | Broader Impact Statement required |
+| **ICLR 2026** | 9 pages | +1 | LLM disclosure required, reciprocal reviewing |
+| **ACL 2025** | 8 pages (long) | varies | Limitations section mandatory |
+| **AAAI 2026** | 7 pages | +1 | Strict style file adherence |
+| **COLM 2025** | 9 pages | +1 | Focus on language models |
+
+**Universal Requirements:**
+- Double-blind review (anonymize submissions)
+- References don't count toward page limit
+- Appendices unlimited but reviewers not required to read
+- LaTeX required for all venues
+
+**LaTeX Templates:** See [templates/](templates/) directory for all conference templates.
+
+---
+
+## Using LaTeX Templates Properly
+
+### Workflow 4: Starting a New Paper from Template
+
+**Always copy the entire template directory first, then write within it.**
+
+```
+Template Setup Checklist:
+- [ ] Step 1: Copy entire template directory to new project
+- [ ] Step 2: Verify template compiles as-is (before any changes)
+- [ ] Step 3: Read the template's example content to understand structure
+- [ ] Step 4: Replace example content section by section
+- [ ] Step 5: Keep template comments/examples as reference until done
+- [ ] Step 6: Clean up template artifacts only at the end
+```
+
+**Step 1: Copy the Full Template**
+
+```bash
+# Create your paper directory with the complete template
+cp -r templates/neurips2025/ ~/papers/my-new-paper/
+cd ~/papers/my-new-paper/
+
+# Verify structure is complete
+ls -la
+# Should see: main.tex, neurips.sty, Makefile, etc.
+```
+
+**⚠️ IMPORTANT**: Copy the ENTIRE directory, not just `main.tex`. Templates include:
+- Style files (`.sty`) - required for compilation
+- Bibliography styles (`.bst`) - required for references
+- Example content - useful as reference
+- Makefiles - for easy compilation
+
+**Step 2: Verify Template Compiles First**
+
+Before making ANY changes, compile the template as-is:
+
+```bash
+# Using latexmk (recommended)
+latexmk -pdf main.tex
+
+# Or manual compilation
+pdflatex main.tex
+bibtex main
+pdflatex main.tex
+pdflatex main.tex
+```
+
+If the unmodified template doesn't compile, fix that first. Common issues:
+- Missing TeX packages → install via `tlmgr install <package>`
+- Wrong TeX distribution → use TeX Live (recommended)
+
+**Step 3: Keep Template Content as Reference**
+
+Don't immediately delete all example content. Instead:
+
+```latex
+% KEEP template examples commented out as you write
+% This shows you the expected format
+
+% Template example (keep for reference):
+% \begin{figure}[t]
+% \centering
+% \includegraphics[width=0.8\linewidth]{example-image}
+% \caption{Template shows caption style}
+% \end{figure}
+
+% Your actual figure:
+\begin{figure}[t]
+ \centering
+ \includegraphics[width=0.8\linewidth]{your-figure.pdf}
+ \caption{Your caption following the same style.}
+\end{figure}
+```
+
+**Step 4: Replace Content Section by Section**
+
+Work through the paper systematically:
+
+```
+Replacement Order:
+1. Title and authors (anonymize for submission)
+2. Abstract
+3. Introduction
+4. Methods
+5. Experiments
+6. Related Work
+7. Conclusion
+8. References (your .bib file)
+9. Appendix
+```
+
+For each section:
+1. Read the template's example content
+2. Note any special formatting or macros used
+3. Replace with your content following the same patterns
+4. Compile frequently to catch errors early
+
+**Step 5: Use Template Macros**
+
+Templates often define useful macros. Check the preamble for:
+
+```latex
+% Common template macros to use:
+\newcommand{\method}{YourMethodName} % Consistent method naming
+\newcommand{\eg}{e.g.,\xspace} % Proper abbreviations
+\newcommand{\ie}{i.e.,\xspace}
+\newcommand{\etal}{\textit{et al.}\xspace}
+```
+
+**Step 6: Clean Up Only at the End**
+
+Only remove template artifacts when paper is nearly complete:
+
+```latex
+% BEFORE SUBMISSION - remove these:
+% - Commented-out template examples
+% - Unused packages
+% - Template's example figures/tables
+% - Lorem ipsum or placeholder text
+
+% KEEP these:
+% - All style files (.sty)
+% - Bibliography style (.bst)
+% - Required packages from template
+% - Any custom macros you're using
+```
+
+### Template Pitfalls to Avoid
+
+| Pitfall | Problem | Solution |
+|---------|---------|----------|
+| Copying only `main.tex` | Missing `.sty`, won't compile | Copy entire directory |
+| Modifying `.sty` files | Breaks conference formatting | Never edit style files |
+| Adding random packages | Conflicts, breaks template | Only add if necessary |
+| Deleting template content too early | Lose formatting reference | Keep as comments until done |
+| Not compiling frequently | Errors accumulate | Compile after each section |
+
+### Quick Template Reference
+
+| Conference | Main File | Key Style File | Notes |
+|------------|-----------|----------------|-------|
+| NeurIPS 2025 | `main.tex` | `neurips.sty` | Has Makefile |
+| ICML 2026 | `example_paper.tex` | `icml2026.sty` | Includes algorithm packages |
+| ICLR 2026 | `iclr2026_conference.tex` | `iclr2026_conference.sty` | Has math_commands.tex |
+| ACL | `acl_latex.tex` | `acl.sty` | Strict formatting |
+| AAAI 2026 | `aaai2026-unified-template.tex` | `aaai2026.sty` | Very strict compliance |
+| COLM 2025 | `colm2025_conference.tex` | `colm2025_conference.sty` | Similar to ICLR |
+
+---
+
+## Conference Resubmission & Format Conversion
+
+When a paper is rejected or withdrawn from one venue and resubmitted to another, format conversion is required. This is a common workflow in ML research.
+
+### Workflow 3: Converting Between Conference Formats
+
+```
+Format Conversion Checklist:
+- [ ] Step 1: Identify source and target template differences
+- [ ] Step 2: Create new project with target template
+- [ ] Step 3: Copy content sections (not preamble)
+- [ ] Step 4: Adjust page limits and content
+- [ ] Step 5: Update conference-specific requirements
+- [ ] Step 6: Verify compilation and formatting
+```
+
+**Step 1: Key Template Differences**
+
+| From → To | Page Change | Key Adjustments |
+|-----------|-------------|-----------------|
+| NeurIPS → ICML | 9 → 8 pages | Cut 1 page, add Broader Impact if missing |
+| ICML → ICLR | 8 → 9 pages | Can expand experiments, add LLM disclosure |
+| NeurIPS → ACL | 9 → 8 pages | Restructure for NLP conventions, add Limitations |
+| ICLR → AAAI | 9 → 7 pages | Significant cuts needed, strict style adherence |
+| Any → COLM | varies → 9 | Reframe for language model focus |
+
+**Step 2: Content Migration (NOT Template Merge)**
+
+**Never copy LaTeX preambles between templates.** Instead:
+
+```bash
+# 1. Start fresh with target template
+cp -r templates/icml2026/ new_submission/
+
+# 2. Copy ONLY content sections from old paper
+# - Abstract text
+# - Section content (between \section{} commands)
+# - Figures and tables
+# - Bibliography entries
+
+# 3. Paste into target template structure
+```
+
+**Step 3: Adjusting for Page Limits**
+
+When cutting pages (e.g., NeurIPS 9 → AAAI 7):
+- Move detailed proofs to appendix
+- Condense related work (cite surveys instead of individual papers)
+- Combine similar experiments into unified tables
+- Use smaller figure sizes with subfigures
+- Tighten writing: eliminate redundancy, use active voice
+
+When expanding (e.g., ICML 8 → ICLR 9):
+- Add ablation studies reviewers requested
+- Expand limitations discussion
+- Include additional baselines
+- Add qualitative examples
+
+**Step 4: Conference-Specific Adjustments**
+
+| Target Venue | Required Additions |
+|--------------|-------------------|
+| **ICML** | Broader Impact Statement (after conclusion) |
+| **ICLR** | LLM usage disclosure, reciprocal reviewing agreement |
+| **ACL/EMNLP** | Limitations section (mandatory), Ethics Statement |
+| **AAAI** | Strict adherence to style file (no modifications) |
+| **NeurIPS** | Paper checklist (appendix), lay summary if accepted |
+
+**Step 5: Update References**
+
+```latex
+% Remove self-citations that reveal identity (for blind review)
+% Update any "under review" citations to published versions
+% Add new relevant work published since last submission
+```
+
+**Step 6: Addressing Previous Reviews**
+
+When resubmitting after rejection:
+- **Do** address reviewer concerns in the new version
+- **Do** add experiments/clarifications reviewers requested
+- **Don't** include a "changes from previous submission" section (blind review)
+- **Don't** reference the previous submission or reviews
+
+**Common Conversion Pitfalls:**
+- ❌ Copying `\usepackage` commands (causes conflicts)
+- ❌ Keeping old conference header/footer commands
+- ❌ Forgetting to update `\bibliography{}` path
+- ❌ Missing conference-specific required sections
+- ❌ Exceeding page limit after format change
+
+---
+
+## Citation Workflow (Hallucination Prevention)
+
+**⚠️ CRITICAL**: AI-generated citations are a high-risk failure mode. **Never write BibTeX from memory.**
+
+### Canonical authority
+
+Use `references/citation-workflow.md` as the default authority for citation verification.
+
+The default verification path is:
+1. **Search programmatically** with Semantic Scholar / CrossRef / arXiv / OpenAlex when appropriate.
+2. **Verify existence** in two sources when the claim is important.
+3. **Retrieve BibTeX programmatically** from DOI or a trusted source.
+4. **Validate the claim** against the actual paper content when the citation supports a specific statement.
+5. **Add the citation** only after the metadata and claim are verified.
+
+### The golden rule
+
+```text
+IF you cannot verify a citation programmatically:
+ -> mark it as [CITATION NEEDED] or [PLACEHOLDER - VERIFY]
+ -> tell the scientist explicitly
+ -> NEVER invent a plausible-sounding reference
+```
+
+### Workflow 2: Adding citations
+
+```text
+Citation verification:
+- [ ] Step 1: Search with Semantic Scholar / CrossRef / arXiv / OpenAlex as appropriate
+- [ ] Step 2: Confirm title, authors, year, and venue
+- [ ] Step 3: Retrieve BibTeX from DOI, arXiv, or another trusted export path
+- [ ] Step 4: Verify that the claim being cited actually appears in the source
+- [ ] Step 5: Add verified BibTeX to the bibliography
+- [ ] Step 6: If any step fails -> mark as placeholder and report it explicitly
+```
+
+### Discovery vs authority
+
+- **Programmatic APIs** are the canonical verification path.
+- **Google Scholar** may still be used as a manual discovery surface when coverage is weak, but not as the primary authority.
+- If Google Scholar finds something that the canonical APIs do not, treat it as a lead that still requires explicit verification.
+
+### Summary: citation rules
+
+| Situation | Action |
+|-----------|--------|
+| Verified metadata + verified BibTeX + verified claim | ✅ Use the citation |
+| Verified paper exists but the claim was not checked | ⚠️ Use only for general attribution, not for precise technical claims |
+| Discovery surface suggests a paper but metadata is still weak | ⚠️ Keep as lead, not as final citation |
+| Cannot verify programmatically | ❌ Mark `[CITATION NEEDED]`, inform the scientist |
+
+**🚨 NEVER generate BibTeX from memory. Use the programmatic workflow in `references/citation-workflow.md`. 🚨**
+
+### Complete Citation Workflow Example
+
+**Scenario**: You need to cite the Transformer paper.
+
+```text
+Step 1: Search programmatically
+- Semantic Scholar query: "Attention is All You Need Vaswani 2017"
+- Result: title, authors, year, and DOI align
+
+Step 2: Verify existence
+- CrossRef confirms DOI metadata
+- Semantic Scholar record matches the same paper
+
+Step 3: Retrieve BibTeX
+- Fetch BibTeX from the DOI / trusted export path
+
+Step 4: Verify the claim
+- Read the abstract or paper section that supports the cited statement
+- Confirm that the claim being cited is actually present
+
+Step 5: Add to bibliography
+- Paste verified BibTeX into the .bib file
+- Cite with the verified key
+
+Step 6: If any step fails
+- mark the citation as [PLACEHOLDER - VERIFY]
+- tell the scientist explicitly what remains unverified
+```
+
+---
+
+## Common Issues and Solutions
+
+**Issue: Abstract too generic**
+
+Delete first sentence if it could be prepended to any ML paper. Start with your specific contribution.
+
+**Issue: Introduction exceeds 1.5 pages**
+
+Split background into Related Work. Front-load contribution bullets. Methods should start by page 2-3.
+
+**Issue: Experiments lack explicit claims**
+
+Add sentence before each experiment: "This experiment tests whether [specific claim]..."
+
+**Issue: Reviewers find paper hard to follow**
+
+- Add explicit signposting: "In this section, we show X"
+- Use consistent terminology throughout
+- Include figure captions that stand alone
+
+**Issue: Missing statistical significance**
+
+Always include:
+- Error bars (specify: std dev or std error)
+- Number of runs
+- Statistical tests if comparing methods
+
+---
+
+## Reviewer Evaluation Criteria
+
+Reviewers assess papers on four dimensions:
+
+| Criterion | What Reviewers Look For |
+|-----------|------------------------|
+| **Quality** | Technical soundness, well-supported claims |
+| **Clarity** | Clear writing, reproducible by experts |
+| **Significance** | Community impact, advances understanding |
+| **Originality** | New insights (doesn't require new method) |
+
+**Scoring (NeurIPS 6-point scale):**
+- 6: Strong Accept - Groundbreaking, flawless
+- 5: Accept - Technically solid, high impact
+- 4: Borderline Accept - Solid, limited evaluation
+- 3: Borderline Reject - Solid but weaknesses outweigh
+- 2: Reject - Technical flaws
+- 1: Strong Reject - Known results or ethics issues
+
+See [references/reviewer-guidelines.md](references/reviewer-guidelines.md) for detailed reviewer instructions.
+
+---
+
+## Tables and Figures
+
+### Tables
+
+Use `booktabs` LaTeX package for professional tables:
+
+```latex
+\usepackage{booktabs}
+\begin{tabular}{lcc}
+\toprule
+Method & Accuracy ↑ & Latency ↓ \\
+\midrule
+Baseline & 85.2 & 45ms \\
+\textbf{Ours} & \textbf{92.1} & 38ms \\
+\bottomrule
+\end{tabular}
+```
+
+**Rules:**
+- Bold best value per metric
+- Include direction symbols (↑ higher is better, ↓ lower is better)
+- Right-align numerical columns
+- Consistent decimal precision
+
+### Figures
+
+- **Vector graphics** (PDF, EPS) for all plots and diagrams
+- **Raster** (PNG 600 DPI) only for photographs
+- Use **colorblind-safe palettes** (Okabe-Ito or Paul Tol)
+- Verify **grayscale readability** (8% of men have color vision deficiency)
+- **No title inside figure**—the caption serves this function
+- **Self-contained captions**—reader should understand without main text
+
+---
+
+## References & Resources
+
+### Reference Documents (Deep Dives)
+
+| Document | Contents |
+|----------|----------|
+| [writing-guide.md](references/writing-guide.md) | Gopen & Swan 7 principles, Ethan Perez micro-tips, word choice |
+| [citation-workflow.md](references/citation-workflow.md) | Citation APIs, Python code, BibTeX management |
+| [checklists.md](references/checklists.md) | NeurIPS 16-item, ICML, ICLR, ACL requirements |
+| [reviewer-guidelines.md](references/reviewer-guidelines.md) | Evaluation criteria, scoring, rebuttals |
+| [sources.md](references/sources.md) | Complete bibliography of all sources |
+| **Literature Research:** |
+| [arxiv-search-guide.md](references/literature-research/arxiv-search-guide.md) | arXiv search strategies, URL patterns, Chrome MCP automation |
+| [paper-quality-criteria.md](references/literature-research/paper-quality-criteria.md) | 5-dimension paper evaluation rubrics (innovation, method, experiments, writing, impact) |
+
+### LaTeX Templates
+
+Templates in `templates/` directory: **ICML 2026**, **ICLR 2026**, **NeurIPS 2025**, **ACL/EMNLP**, **AAAI 2026**, **COLM 2025**.
+
+**Compiling to PDF:**
+- **VS Code/Cursor**: Install LaTeX Workshop extension + TeX Live → Save to auto-compile
+- **Command line**: `latexmk -pdf main.tex` or `pdflatex` + `bibtex` workflow
+- **Online**: Upload to [Overleaf](https://overleaf.com)
+
+See [templates/README.md](templates/README.md) for detailed setup instructions.
+
+### Key External Sources
+
+**Writing Philosophy:**
+- [Neel Nanda: How to Write ML Papers](https://www.alignmentforum.org/posts/eJGptPbbFPZGLpjsp/highly-opinionated-advice-on-how-to-write-ml-papers) - Narrative, "What/Why/So What"
+- [Farquhar: How to Write ML Papers](https://sebastianfarquhar.com/on-research/2024/11/04/how_to_write_ml_papers/) - 5-sentence abstract
+- [Gopen & Swan: Science of Scientific Writing](https://cseweb.ucsd.edu/~swanson/papers/science-of-writing.pdf) - 7 reader expectation principles
+- [Lipton: Heuristics for Scientific Writing](https://www.approximatelycorrect.com/2018/01/29/heuristics-technical-scientific-writing-machine-learning-perspective/) - Word choice
+- [Perez: Easy Paper Writing Tips](https://ethanperez.net/easy-paper-writing-tips/) - Micro-level clarity
+
+**APIs:** [Semantic Scholar](https://api.semanticscholar.org/api-docs/) | [CrossRef](https://www.crossref.org/documentation/retrieve-metadata/rest-api/) | [arXiv](https://info.arxiv.org/help/api/basics.html)
+
+**Venues:** [NeurIPS](https://neurips.cc/Conferences/2025/PaperInformation/StyleFiles) | [ICML](https://icml.cc/Conferences/2025/AuthorInstructions) | [ICLR](https://iclr.cc/Conferences/2026/AuthorGuide) | [ACL](https://github.com/acl-org/acl-style-files)
diff --git a/.agents/skills/ml-paper-writing/references/OPERATING-MODES.md b/.agents/skills/ml-paper-writing/references/OPERATING-MODES.md
new file mode 100644
index 0000000..48dd753
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/OPERATING-MODES.md
@@ -0,0 +1,25 @@
+# Operating Modes
+
+Use this file to decide how much of the writing stack to load.
+
+## Modes
+
+### 1. drafting
+Use when writing or rewriting a paper section from repo evidence.
+Load: core SKILL + writing guide + citation workflow.
+
+### 2. related-work
+Use when searching, comparing, and integrating literature.
+Load: citation workflow + reviewer guidelines + relevant venue notes.
+
+### 3. citation-only
+Use when the task is primarily reference verification or bibliography repair.
+Load: citation workflow first; do not load the full paper-writing stack unless needed.
+
+### 4. format-conversion
+Use when moving between conference templates or preparing camera-ready assets.
+Load: template / format references and only the relevant venue rules.
+
+### 5. camera-ready
+Use when compliance, formatting, and final verification dominate over drafting.
+Load: venue-specific checklist + citation workflow + final verification notes.
diff --git a/.agents/skills/ml-paper-writing/references/checklists.md b/.agents/skills/ml-paper-writing/references/checklists.md
new file mode 100644
index 0000000..1c46b75
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/checklists.md
@@ -0,0 +1,361 @@
+# Conference Paper Checklists
+
+This reference documents the mandatory checklist requirements for major ML/AI conferences. All major venues now require paper checklists—missing them results in desk rejection.
+
+---
+
+## Contents
+
+- [NeurIPS Paper Checklist](#neurips-paper-checklist)
+- [ICML Paper Checklist](#icml-paper-checklist)
+- [ICLR Requirements](#iclr-requirements)
+- [ACL Requirements](#acl-requirements)
+- [Universal Pre-Submission Checklist](#universal-pre-submission-checklist)
+
+---
+
+## NeurIPS Paper Checklist
+
+### Mandatory Components
+
+All NeurIPS submissions must include a completed paper checklist. Papers lacking this element face **automatic desk rejection**. The checklist appears after references and supplemental material, outside the page limit.
+
+### 16 Required Checklist Items
+
+#### 1. Claims Alignment
+Authors must verify that abstract and introduction claims match theoretical and experimental results, with clearly stated contributions, assumptions, and limitations.
+
+**What to check:**
+- [ ] Abstract claims match actual results
+- [ ] Introduction doesn't overclaim
+- [ ] Contributions are specific and falsifiable
+
+#### 2. Limitations Discussion
+Papers should include a dedicated "Limitations" section addressing strong assumptions, robustness to violations, scope constraints, and performance-influencing factors.
+
+**What to include:**
+- [ ] Dedicated Limitations section
+- [ ] Honest assessment of scope
+- [ ] Conditions where method may fail
+
+#### 3. Theory & Proofs
+Theoretical contributions require full assumption statements and complete proofs (main paper or appendix with proof sketches for intuition).
+
+**What to check:**
+- [ ] All assumptions stated formally
+- [ ] Complete proofs provided (main text or appendix)
+- [ ] Proof sketches for intuition in main text
+
+#### 4. Reproducibility
+Authors must describe steps ensuring results verification through code release, detailed instructions, model access, or checkpoints appropriate to their contribution type.
+
+**What to provide:**
+- [ ] Clear reproducibility statement
+- [ ] Code availability information
+- [ ] Model checkpoints if applicable
+
+#### 5. Data & Code Access
+Instructions for reproducing main experimental results should be provided (supplemental material or URLs), including exact commands and environment specifications.
+
+**What to include:**
+- [ ] Exact commands to run experiments
+- [ ] Environment specifications (requirements.txt, conda env)
+- [ ] Data access instructions
+
+#### 6. Experimental Details
+Papers must specify training details: data splits, hyperparameters, and selection methods in the main paper or supplementary materials.
+
+**What to document:**
+- [ ] Train/val/test split details
+- [ ] All hyperparameters used
+- [ ] Hyperparameter selection method
+
+#### 7. Statistical Significance
+Results require error bars, confidence intervals, or statistical tests with clearly stated calculation methods and underlying assumptions.
+
+**What to include:**
+- [ ] Error bars or confidence intervals
+- [ ] Number of runs/seeds
+- [ ] Calculation method (std dev vs std error)
+
+#### 8. Compute Resources
+Specifications needed: compute worker types (CPU/GPU), memory, storage, execution time per run, and total project compute requirements.
+
+**What to document:**
+- [ ] GPU type and count
+- [ ] Training time per run
+- [ ] Total compute used
+
+#### 9. Ethics Code Compliance
+Authors confirm adherence to the NeurIPS Code of Ethics, noting any necessary deviations.
+
+**What to verify:**
+- [ ] Read NeurIPS Code of Ethics
+- [ ] Confirm compliance
+- [ ] Note any deviations with justification
+
+#### 10. Broader Impacts
+Discussion of potential negative societal applications, fairness concerns, privacy risks, and possible mitigation strategies when applicable.
+
+**What to address:**
+- [ ] Potential negative applications
+- [ ] Fairness considerations
+- [ ] Privacy implications
+- [ ] Mitigation strategies
+
+#### 11. Safeguards
+High-risk models (language models, internet-scraped datasets) require controlled release mechanisms and usage guidelines.
+
+**What to consider:**
+- [ ] Release strategy for sensitive models
+- [ ] Usage guidelines if needed
+- [ ] Access controls if appropriate
+
+#### 12. License Respect
+All existing assets require creator citations, license names, URLs, version numbers, and terms-of-service acknowledgment.
+
+**What to document:**
+- [ ] Dataset licenses cited
+- [ ] Code licenses respected
+- [ ] Version numbers included
+
+#### 13. Asset Documentation
+New releases need structured templates documenting training details, limitations, consent procedures, and licensing information.
+
+**For new datasets/models:**
+- [ ] Datasheet or model card
+- [ ] Training data documentation
+- [ ] Known limitations
+
+#### 14. Human Subjects
+Crowdsourcing studies must include participant instructions, screenshots, compensation details, and comply with minimum wage requirements.
+
+**What to include:**
+- [ ] Task instructions
+- [ ] Compensation details
+- [ ] Time estimates
+
+#### 15. IRB Approvals
+Human subjects research requires documented institutional review board approval or equivalent, with risk descriptions disclosed (maintaining anonymity at submission).
+
+**What to verify:**
+- [ ] IRB approval obtained
+- [ ] Risk assessment completed
+- [ ] Anonymized at submission
+
+#### 16. LLM Declaration
+Usage of large language models as core methodology components requires disclosure; writing/editing use doesn't require declaration.
+
+**What to disclose:**
+- [ ] LLM used as core methodology component
+- [ ] How LLM was used
+- [ ] (Writing assistance doesn't require disclosure)
+
+### Response Format
+
+Authors select "yes," "no," or "N/A" per question, with optional 1-2 sentence justifications.
+
+**Important:** Reviewers are explicitly instructed not to penalize honest limitation acknowledgment.
+
+---
+
+## ICML Paper Checklist
+
+### Broader Impact Statement
+
+ICML requires a Broader Impact Statement at the end of the paper, before references. This does NOT count toward the page limit.
+
+**Required elements:**
+- Potential positive impacts
+- Potential negative impacts
+- Mitigation strategies
+- Who may be affected
+
+### ICML Specific Requirements
+
+#### Reproducibility Checklist
+
+- [ ] Data splits clearly specified
+- [ ] Hyperparameters listed
+- [ ] Search ranges documented
+- [ ] Selection method explained
+- [ ] Compute resources specified
+- [ ] Code availability stated
+
+#### Statistical Reporting
+
+- [ ] Error bars on all figures
+- [ ] Standard deviation vs standard error specified
+- [ ] Number of runs stated
+- [ ] Significance tests if comparing methods
+
+#### Anonymization
+
+- [ ] No author names in paper
+- [ ] No acknowledgments
+- [ ] No grant numbers
+- [ ] Prior work cited in third person
+- [ ] No identifiable repository URLs
+
+---
+
+## ICLR Requirements
+
+### LLM Disclosure Policy (New for 2026)
+
+ICLR has a specific LLM disclosure requirement:
+
+> "If LLMs played a significant role in research ideation and/or writing to the extent that they could be regarded as a contributor, authors must describe their precise role in a separate appendix section."
+
+**When disclosure is required:**
+- LLM used for significant research ideation
+- LLM used for substantial writing
+- LLM could be considered a contributor
+
+**When disclosure is NOT required:**
+- Grammar checking
+- Minor editing assistance
+- Code completion tools
+
+**Consequences of non-disclosure:**
+- Desk rejection
+- Potential post-publication issues
+
+### ICLR Specific Requirements
+
+#### Reproducibility Statement (Optional but Recommended)
+
+Add a statement referencing:
+- Supporting materials
+- Code availability
+- Data availability
+- Model checkpoints
+
+#### Ethics Statement (Optional)
+
+Address potential concerns in ≤1 page. Does not count toward page limit.
+
+#### Reciprocal Reviewing
+
+- Authors on 3+ papers must serve as reviewers for ≥6 papers
+- Each submission needs ≥1 author registered to review ≥3 papers
+
+---
+
+## ACL Requirements
+
+### Limitations Section (Mandatory)
+
+ACL specifically requires a Limitations section:
+
+**What to include:**
+- Strong assumptions made
+- Scope limitations
+- When method may fail
+- Generalization concerns
+
+**Important:** The Limitations section does NOT count toward the page limit.
+
+### ACL Specific Checklist
+
+#### Responsible NLP
+
+- [ ] Bias considerations addressed
+- [ ] Fairness evaluated if applicable
+- [ ] Dual-use concerns discussed
+
+#### Multilingual Considerations
+
+If applicable:
+- [ ] Language diversity addressed
+- [ ] Non-English languages included
+- [ ] Translation quality verified
+
+#### Human Evaluation
+
+If applicable:
+- [ ] Annotator details provided
+- [ ] Agreement metrics reported
+- [ ] Compensation documented
+
+---
+
+## Universal Pre-Submission Checklist
+
+### Before Every Submission
+
+#### Paper Content
+
+- [ ] Abstract ≤ word limit (usually 250-300 words)
+- [ ] Main content within page limit
+- [ ] References complete and verified
+- [ ] Limitations section included
+- [ ] All figures/tables have captions
+- [ ] Captions are self-contained
+
+#### Formatting
+
+- [ ] Correct template used (venue + year specific)
+- [ ] Margins not modified
+- [ ] Font sizes not modified
+- [ ] Double-blind requirements met
+- [ ] Page numbers (for review) or none (camera-ready)
+
+#### Technical
+
+- [ ] All claims supported by evidence
+- [ ] Error bars included
+- [ ] Baselines appropriate
+- [ ] Hyperparameters documented
+- [ ] Compute resources stated
+
+#### Reproducibility
+
+- [ ] Code will be available (or justification)
+- [ ] Data will be available (or justification)
+- [ ] Environment documented
+- [ ] Commands to reproduce provided
+
+#### Ethics
+
+- [ ] Broader impacts considered
+- [ ] Limitations honestly stated
+- [ ] Licenses respected
+- [ ] IRB obtained if needed
+
+#### Final Checks
+
+- [ ] PDF compiles without errors
+- [ ] All figures render correctly
+- [ ] All citations resolve
+- [ ] Supplementary material organized
+- [ ] Conference checklist completed
+
+---
+
+## Quick Reference: Page Limits
+
+| Conference | Main Content | References | Appendix |
+|------------|-------------|------------|----------|
+| NeurIPS 2025 | 9 pages | Unlimited | Unlimited (checklist separate) |
+| ICML 2026 | 8 pages (+1 camera) | Unlimited | Unlimited |
+| ICLR 2026 | 9 pages (+1 camera) | Unlimited | Unlimited |
+| ACL 2025 | 8 pages (long) | Unlimited | Unlimited |
+| AAAI 2026 | 7 pages (+1 camera) | Unlimited | Unlimited |
+| COLM 2025 | 9 pages (+1 camera) | Unlimited | Unlimited |
+
+---
+
+## Template Locations
+
+All conference templates are in the `templates/` directory:
+
+```
+templates/
+├── icml2026/ # ICML 2026 official
+├── iclr2026/ # ICLR 2026 official
+├── neurips2025/ # NeurIPS 2025
+├── acl/ # ACL style files
+├── aaai2026/ # AAAI 2026
+└── colm2025/ # COLM 2025
+```
diff --git a/.agents/skills/ml-paper-writing/references/citation-workflow.md b/.agents/skills/ml-paper-writing/references/citation-workflow.md
new file mode 100644
index 0000000..b7ec90b
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/citation-workflow.md
@@ -0,0 +1,562 @@
+# Citation Management & Hallucination Prevention
+
+This reference provides a complete workflow for managing citations programmatically, preventing AI-generated citation hallucinations, and maintaining clean bibliographies.
+
+---
+
+## Contents
+
+- [Why Citation Verification Matters](#why-citation-verification-matters)
+- [Citation APIs Overview](#citation-apis-overview)
+- [Verified Citation Workflow](#verified-citation-workflow)
+- [Python Implementation](#python-implementation)
+- [BibTeX Management](#bibtex-management)
+- [Common Citation Formats](#common-citation-formats)
+- [Troubleshooting](#troubleshooting)
+
+---
+
+## Why Citation Verification Matters
+
+### The Hallucination Problem
+
+Research has documented significant issues with AI-generated citations:
+- **~40% error rate** in AI-generated citations (Enago Academy research)
+- NeurIPS 2025 found **100+ hallucinated citations** slipped through review
+- Common errors include:
+ - Fabricated paper titles with real author names
+ - Wrong publication venues or years
+ - Non-existent papers with plausible metadata
+ - Incorrect DOIs or arXiv IDs
+
+### Consequences
+
+- Desk rejection at some venues
+- Loss of credibility with reviewers
+- Potential retraction if published
+- Wasted time chasing non-existent sources
+
+### Solution
+
+**Never generate citations from memory—always verify programmatically.**
+
+---
+
+## Citation APIs Overview
+
+### Primary APIs
+
+| API | Coverage | Rate Limits | Best For |
+|-----|----------|-------------|----------|
+| **Semantic Scholar** | 214M papers | 1 RPS (free key) | ML/AI papers, citation graphs |
+| **CrossRef** | 140M+ DOIs | Polite pool with mailto | DOI lookup, BibTeX retrieval |
+| **arXiv** | Preprints | 3-second delays | ML preprints, PDF access |
+| **OpenAlex** | 240M+ works | 100K/day, 10 RPS | Open alternative to MAG |
+
+### API Selection Guide
+
+```
+Need ML paper search? → Semantic Scholar
+Have DOI, need BibTeX? → CrossRef content negotiation
+Looking for preprint? → arXiv API
+Need open data, bulk access? → OpenAlex
+```
+
+### No Official Google Scholar API
+
+Google Scholar has no official API. Scraping violates ToS. Use SerpApi ($75-275/month) only if Semantic Scholar coverage is insufficient.
+
+---
+
+## Verified Citation Workflow
+
+### 5-Step Process
+
+```
+1. SEARCH → Query Semantic Scholar with specific keywords
+ ↓
+2. VERIFY → Confirm paper exists in 2+ sources
+ ↓
+3. RETRIEVE → Get BibTeX via DOI content negotiation
+ ↓
+4. VALIDATE → Confirm the claim appears in source
+ ↓
+5. ADD → Add verified entry to .bib file
+```
+
+### Step 1: Search
+
+Use Semantic Scholar for ML/AI papers:
+
+```python
+from semanticscholar import SemanticScholar
+
+sch = SemanticScholar()
+results = sch.search_paper("transformer attention mechanism", limit=10)
+
+for paper in results:
+ print(f"Title: {paper.title}")
+ print(f"Year: {paper.year}")
+ print(f"DOI: {paper.externalIds.get('DOI', 'N/A')}")
+ print(f"arXiv: {paper.externalIds.get('ArXiv', 'N/A')}")
+ print(f"Citation count: {paper.citationCount}")
+ print("---")
+```
+
+### Step 2: Verify Existence
+
+Confirm paper exists in at least two sources:
+
+```python
+import requests
+
+def verify_paper(doi=None, arxiv_id=None, title=None):
+ """Verify paper exists in multiple sources."""
+ sources_found = []
+
+ # Check Semantic Scholar
+ sch = SemanticScholar()
+ if doi:
+ paper = sch.get_paper(f"DOI:{doi}")
+ if paper:
+ sources_found.append("Semantic Scholar")
+
+ # Check CrossRef (via DOI)
+ if doi:
+ resp = requests.get(f"https://api.crossref.org/works/{doi}")
+ if resp.status_code == 200:
+ sources_found.append("CrossRef")
+
+ # Check arXiv
+ if arxiv_id:
+ resp = requests.get(
+ f"http://export.arxiv.org/api/query?id_list={arxiv_id}"
+ )
+ if "<entry>" in resp.text:
+ sources_found.append("arXiv")
+
+ return len(sources_found) >= 2, sources_found
+```
+
+### Step 3: Retrieve BibTeX
+
+Use DOI content negotiation for guaranteed accuracy:
+
+```python
+import requests
+
+def doi_to_bibtex(doi: str) -> str:
+ """Get verified BibTeX from DOI via CrossRef content negotiation."""
+ response = requests.get(
+ f"https://doi.org/{doi}",
+ headers={"Accept": "application/x-bibtex"},
+ allow_redirects=True
+ )
+ response.raise_for_status()
+ return response.text
+
+# Example: "Attention Is All You Need"
+bibtex = doi_to_bibtex("10.48550/arXiv.1706.03762")
+print(bibtex)
+```
+
+### Step 4: Validate Claims
+
+Before citing a paper for a specific claim, verify the claim exists:
+
+```python
+def get_paper_abstract(doi):
+ """Get abstract to verify claims."""
+ sch = SemanticScholar()
+ paper = sch.get_paper(f"DOI:{doi}")
+ return paper.abstract if paper else None
+
+# Verify claim appears in abstract
+abstract = get_paper_abstract("10.48550/arXiv.1706.03762")
+claim = "attention mechanism"
+if claim.lower() in abstract.lower():
+ print("Claim appears in paper")
+```
+
+### Step 5: Add to Bibliography
+
+Add verified entry to your .bib file with consistent key format:
+
+```python
+def generate_citation_key(bibtex: str) -> str:
+ """Generate consistent citation key: author_year_firstword."""
+ import re
+
+ # Extract author
+ author_match = re.search(r'author\s*=\s*\{([^}]+)\}', bibtex, re.I)
+ if author_match:
+ first_author = author_match.group(1).split(',')[0].split()[-1]
+ else:
+ first_author = "unknown"
+
+ # Extract year
+ year_match = re.search(r'year\s*=\s*\{?(\d{4})\}?', bibtex, re.I)
+ year = year_match.group(1) if year_match else "0000"
+
+ # Extract title first word
+ title_match = re.search(r'title\s*=\s*\{([^}]+)\}', bibtex, re.I)
+ if title_match:
+ first_word = title_match.group(1).split()[0].lower()
+ first_word = re.sub(r'[^a-z]', '', first_word)
+ else:
+ first_word = "paper"
+
+ return f"{first_author.lower()}_{year}_{first_word}"
+```
+
+---
+
+## Python Implementation
+
+### Complete Citation Manager Class
+
+```python
+"""
+Citation Manager - Verified citation workflow for ML papers.
+"""
+
+import requests
+import time
+from typing import Optional, List, Dict, Tuple
+from dataclasses import dataclass
+
+try:
+ from semanticscholar import SemanticScholar
+except ImportError:
+ print("Install: pip install semanticscholar")
+ SemanticScholar = None
+
+@dataclass
+class Paper:
+ title: str
+ authors: List[str]
+ year: int
+ doi: Optional[str]
+ arxiv_id: Optional[str]
+ venue: Optional[str]
+ citation_count: int
+ abstract: Optional[str]
+
+class CitationManager:
+ """Manage citations with verification."""
+
+ def __init__(self, api_key: Optional[str] = None):
+ self.sch = SemanticScholar(api_key=api_key) if SemanticScholar else None
+ self.verified_papers: Dict[str, Paper] = {}
+
+ def search(self, query: str, limit: int = 10) -> List[Paper]:
+ """Search for papers using Semantic Scholar."""
+ if not self.sch:
+ raise RuntimeError("Semantic Scholar not available")
+
+ results = self.sch.search_paper(query, limit=limit)
+ papers = []
+
+ for r in results:
+ paper = Paper(
+ title=r.title,
+ authors=[a.name for a in (r.authors or [])],
+ year=r.year or 0,
+ doi=r.externalIds.get('DOI') if r.externalIds else None,
+ arxiv_id=r.externalIds.get('ArXiv') if r.externalIds else None,
+ venue=r.venue,
+ citation_count=r.citationCount or 0,
+ abstract=r.abstract
+ )
+ papers.append(paper)
+
+ return papers
+
+ def verify(self, paper: Paper) -> Tuple[bool, List[str]]:
+ """Verify paper exists in multiple sources."""
+ sources = []
+
+ # Already found in Semantic Scholar via search
+ sources.append("Semantic Scholar")
+
+ # Check CrossRef if DOI available
+ if paper.doi:
+ try:
+ resp = requests.get(
+ f"https://api.crossref.org/works/{paper.doi}",
+ timeout=10
+ )
+ if resp.status_code == 200:
+ sources.append("CrossRef")
+ except:
+ pass
+
+ # Check arXiv if ID available
+ if paper.arxiv_id:
+ try:
+ resp = requests.get(
+ f"http://export.arxiv.org/api/query?id_list={paper.arxiv_id}",
+ timeout=10
+ )
+ if "<entry>" in resp.text and "<title>" in resp.text:
+ sources.append("arXiv")
+ except:
+ pass
+
+ return len(sources) >= 2, sources
+
+ def get_bibtex(self, paper: Paper) -> Optional[str]:
+ """Get BibTeX for verified paper."""
+ if paper.doi:
+ try:
+ resp = requests.get(
+ f"https://doi.org/{paper.doi}",
+ headers={"Accept": "application/x-bibtex"},
+ timeout=10,
+ allow_redirects=True
+ )
+ if resp.status_code == 200:
+ return resp.text
+ except:
+ pass
+
+ # Fallback: generate from paper data
+ return self._generate_bibtex(paper)
+
+ def _generate_bibtex(self, paper: Paper) -> str:
+ """Generate BibTeX from paper metadata."""
+ # Generate citation key
+ first_author = paper.authors[0].split()[-1] if paper.authors else "unknown"
+ first_word = paper.title.split()[0].lower().replace(',', '').replace(':', '')
+ key = f"{first_author.lower()}_{paper.year}_{first_word}"
+
+ # Format authors
+ authors = " and ".join(paper.authors) if paper.authors else "Unknown"
+
+ bibtex = f"""@article{{{key},
+ title = {{{paper.title}}},
+ author = {{{authors}}},
+ year = {{{paper.year}}},
+ {'doi = {' + paper.doi + '},' if paper.doi else ''}
+ {'eprint = {' + paper.arxiv_id + '},' if paper.arxiv_id else ''}
+ {'journal = {' + paper.venue + '},' if paper.venue else ''}
+}}"""
+ return bibtex
+
+ def cite(self, query: str) -> Optional[str]:
+ """Full workflow: search, verify, return BibTeX."""
+ # Search
+ papers = self.search(query, limit=5)
+ if not papers:
+ return None
+
+ # Take top result
+ paper = papers[0]
+
+ # Verify
+ verified, sources = self.verify(paper)
+ if not verified:
+ print(f"Warning: Could only verify in {sources}")
+
+ # Get BibTeX
+ bibtex = self.get_bibtex(paper)
+
+ # Cache
+ if bibtex:
+ self.verified_papers[paper.title] = paper
+
+ return bibtex
+
+
+# Usage example
+if __name__ == "__main__":
+ cm = CitationManager()
+
+ # Search and cite
+ bibtex = cm.cite("attention is all you need transformer")
+ if bibtex:
+ print(bibtex)
+```
+
+### Quick Functions
+
+```python
+def quick_cite(query: str) -> str:
+ """One-liner citation."""
+ cm = CitationManager()
+ return cm.cite(query)
+
+def batch_cite(queries: List[str], output_file: str = "references.bib"):
+ """Cite multiple papers and save to file."""
+ cm = CitationManager()
+ bibtex_entries = []
+
+ for query in queries:
+ print(f"Processing: {query}")
+ bibtex = cm.cite(query)
+ if bibtex:
+ bibtex_entries.append(bibtex)
+ time.sleep(1) # Rate limiting
+
+ with open(output_file, 'w') as f:
+ f.write("\n\n".join(bibtex_entries))
+
+ print(f"Saved {len(bibtex_entries)} citations to {output_file}")
+```
+
+---
+
+## BibTeX Management
+
+### BibTeX vs BibLaTeX
+
+| Feature | BibTeX | BibLaTeX |
+|---------|--------|----------|
+| Unicode support | Limited | Full |
+| Entry types | Standard | Extended (@online, @dataset) |
+| Customization | Limited | Highly flexible |
+| Backend | bibtex | Biber (recommended) |
+
+**Recommendation**: Use BibLaTeX with Biber for new papers.
+
+### LaTeX Setup
+
+```latex
+% In preamble
+\usepackage[
+ backend=biber,
+ style=numeric,
+ sorting=none
+]{biblatex}
+\addbibresource{references.bib}
+
+% In document
+\cite{vaswani_2017_attention}
+
+% At end
+\printbibliography
+```
+
+### Citation Commands
+
+```latex
+\cite{key} % Numeric: [1]
+\citep{key} % Parenthetical: (Author, 2020)
+\citet{key} % Textual: Author (2020)
+\citeauthor{key} % Just author name
+\citeyear{key} % Just year
+```
+
+### Consistent Citation Keys
+
+Use format: `author_year_firstword`
+
+```
+vaswani_2017_attention
+devlin_2019_bert
+brown_2020_language
+```
+
+---
+
+## Common Citation Formats
+
+### Conference Paper
+
+```bibtex
+@inproceedings{vaswani_2017_attention,
+ title = {Attention Is All You Need},
+ author = {Vaswani, Ashish and Shazeer, Noam and Parmar, Niki and
+ Uszkoreit, Jakob and Jones, Llion and Gomez, Aidan N and
+ Kaiser, Lukasz and Polosukhin, Illia},
+ booktitle = {Advances in Neural Information Processing Systems},
+ volume = {30},
+ year = {2017},
+ publisher = {Curran Associates, Inc.}
+}
+```
+
+### Journal Article
+
+```bibtex
+@article{hochreiter_1997_long,
+ title = {Long Short-Term Memory},
+ author = {Hochreiter, Sepp and Schmidhuber, J{\"u}rgen},
+ journal = {Neural Computation},
+ volume = {9},
+ number = {8},
+ pages = {1735--1780},
+ year = {1997},
+ publisher = {MIT Press}
+}
+```
+
+### arXiv Preprint
+
+```bibtex
+@misc{brown_2020_language,
+ title = {Language Models are Few-Shot Learners},
+ author = {Brown, Tom and Mann, Benjamin and Ryder, Nick and others},
+ year = {2020},
+ eprint = {2005.14165},
+ archiveprefix = {arXiv},
+ primaryclass = {cs.CL}
+}
+```
+
+---
+
+## Troubleshooting
+
+### Common Issues
+
+**Issue: Semantic Scholar returns no results**
+- Try more specific keywords
+- Check spelling of author names
+- Use quotation marks for exact phrases
+
+**Issue: DOI doesn't resolve to BibTeX**
+- DOI may be registered but not linked to CrossRef
+- Try arXiv ID instead if available
+- Generate BibTeX from metadata manually
+
+**Issue: Rate limiting errors**
+- Add delays between requests (1-3 seconds)
+- Use API key if available
+- Cache results to avoid repeat queries
+
+**Issue: Encoding problems in BibTeX**
+- Use proper LaTeX escaping: `{\"u}` for ü
+- Ensure file is UTF-8 encoded
+- Use BibLaTeX with Biber for better Unicode
+
+### Verification Checklist
+
+Before adding a citation:
+
+- [ ] Paper found in at least 2 sources
+- [ ] DOI or arXiv ID verified
+- [ ] BibTeX retrieved (not generated from memory)
+- [ ] Entry type correct (@inproceedings vs @article)
+- [ ] Author names complete and correctly formatted
+- [ ] Year and venue verified
+- [ ] Citation key follows consistent format
+
+---
+
+## Additional Resources
+
+**APIs:**
+- Semantic Scholar: https://api.semanticscholar.org/api-docs/
+- CrossRef: https://www.crossref.org/documentation/retrieve-metadata/rest-api/
+- arXiv: https://info.arxiv.org/help/api/basics.html
+- OpenAlex: https://docs.openalex.org/
+
+**Python Libraries:**
+- `semanticscholar`: https://pypi.org/project/semanticscholar/
+- `arxiv`: https://pypi.org/project/arxiv/
+- `habanero` (CrossRef): https://github.com/sckott/habanero
+
+**Verification Tools:**
+- Citely: https://citely.ai/citation-checker
+- ReciteWorks: https://reciteworks.com/
diff --git a/.agents/skills/ml-paper-writing/references/knowledge/README.md b/.agents/skills/ml-paper-writing/references/knowledge/README.md
new file mode 100644
index 0000000..42abdf6
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/knowledge/README.md
@@ -0,0 +1,58 @@
+# Academic Writing Knowledge Base
+
+This knowledge base contains reusable academic writing knowledge mined from papers.
+
+## Canonical maintained memory
+
+The canonical paper-miner memory is:
+
+- `paper-miner-writing-memory.md`
+
+This is the **only maintained paper-miner writing memory**.
+
+It stores:
+- writing patterns mined,
+- structure signals,
+- reusable phrasing,
+- venue-specific signals,
+- how those signals help future writing,
+- and a source index.
+
+## Maintenance rule
+
+`paper-miner` always writes mined writing knowledge into `paper-miner-writing-memory.md`.
+
+This memory is:
+- **global**,
+- **cross-project**,
+- **not project-specific**.
+
+If `paper-miner` is invoked inside a project, it may use project context to understand relevance, but it still writes only to the global memory.
+
+## Legacy files
+
+Older files such as:
+- `structure.md`
+- `writing-techniques.md`
+- `submission-guides.md`
+- `review-response.md`
+
+may still exist as historical material, but new paper-miner updates should treat `paper-miner-writing-memory.md` as the canonical maintained memory.
+
+## Usage
+
+Use this knowledge base when:
+- drafting papers,
+- improving section structure,
+- borrowing reusable phrasing patterns,
+- preparing rebuttals,
+- studying venue-facing writing signals.
+
+## Contributing
+
+When `paper-miner` analyzes a new paper:
+1. extract actionable writing knowledge,
+2. merge it into `paper-miner-writing-memory.md`,
+3. preserve source attribution,
+4. avoid duplicate patterns,
+5. keep the memory compact and reusable.
diff --git a/.agents/skills/ml-paper-writing/references/knowledge/design-simplification-papers-kaiming-he.md b/.agents/skills/ml-paper-writing/references/knowledge/design-simplification-papers-kaiming-he.md
new file mode 100644
index 0000000..eea5087
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/knowledge/design-simplification-papers-kaiming-he.md
@@ -0,0 +1,605 @@
+# Design Simplification Papers: Less Is More
+
+**Source**: Kaiming He et al., "Exploring Plain Vision Transformer Backbones for Object Detection" (ViTDet, 2022)
+
+**Paper Type**: Design simplification / Minimal adaptations paper
+
+**Core Pattern**: Challenge design assumptions → Minimize changes → Surprising effectiveness → Fair comparison
+
+---
+
+## 1. Abstract Structure: The "Surprisingly" Framework
+
+### Pattern: Conventional Practice → Simple Alternative → Unexpected Results
+
+**Template**:
+```markdown
+Abstract:
+1. [Context] Standard practice in [domain] is [conventional design]
+2. [Challenge] With [new technology], this faces [challenges]
+3. [Common Solution] Most work addresses this by [abandoning philosophy / adding complexity]
+4. [Our Direction] We explore [different direction]: [minimal approach]
+5. [Surprisingly 1] Surprisingly, we observe: (i) [simple finding 1]
+ and (ii) [simple finding 2]
+6. [Surprisingly 2] More surprisingly, [stronger claim under conditions]
+7. [Implications] This enables [benefit] without [traditional requirement]
+```
+
+### ViTDet Abstract Example (annotated):
+
+```latex
+Modern object detectors consist of hierarchical backbone feature extractors
+and detection-specific necks/heads (e.g., FPN, RPN).
+
+With Vision Transformers (ViT) emerging as powerful backbones, their plain,
+non-hierarchical nature poses challenges: How to address multi-scale objects?
+
+One solution abandons the plain ViT philosophy, re-introducing hierarchical
+designs (e.g., Swin).
+
+We pursue a different direction: plain ViT backbones with minimal adaptations.
+
+Surprisingly, we observe: (i) A simple feature pyramid from a single-scale map
+is sufficient (without FPN), and (ii) Window attention without shifting is
+sufficient (with a few propagation blocks).
+
+More surprisingly, under some circumstances, our ViTDet can compete with
+leading hierarchical detectors like Swin.
+
+With MAE pre-training, ViTDet outperforms hierarchical counterparts,
+especially for larger models.
+
+This decouples pre-training from fine-tuning, maintaining independence of
+upstream vs downstream tasks.
+```
+
+### Key Techniques:
+
+1. **"Modern...consist of..."** - Establish conventional practice
+2. **"With...emerging as..."** - New technology, new challenge
+3. **"abandons the...philosophy"** - Critique common solutions
+4. **"We pursue a different direction"** - Clear positioning
+5. **"Surprisingly, we observe: (i)... and (ii)..."** - First surprise
+6. **"More surprisingly..."** - Second, deeper surprise
+7. **"under some circumstances"** - Measured claim
+8. **"sufficient"** - Scientific (not "optimal")
+9. **"without [common practice]"** - Negative emphasis
+
+---
+
+## 2. Introduction: The "Challenge Assumptions" Framework
+
+### Pattern: Tradition → New Challenge → Common Compromise → Your Alternative → Philosophy
+
+**Structure**:
+```markdown
+1. [Traditional Practice] Established design in [field]
+2. [Evolution] How this emerged historically ("For a long while...")
+3. [New Challenge] [New technology] with [different characteristics]
+4. [Philosophy Clash] Original [tech] has "'minimalist' pursuit"
+ - Questions: "How can we...?" "Is [X] too inefficient?"
+5. [Common Solution] One solution: [abandon philosophy] → [revert to old design]
+ - Acknowledge: "has shown successful results"
+6. [Your Direction] "we pursue a different direction"
+ - Motivation: "If successful, enables [benefit]"
+7. [Philosophy] "in part follows the [philosophy] of '[concept]'"
+8. [Surprising Findings] "Surprisingly, we observe..."
+9. [Implications] "More surprisingly..." → Competitive results
+```
+
+### ViTDet Introduction Flow:
+
+#### Traditional Practice (Establish Context)
+```latex
+Modern object detectors in general consist of a backbone feature extractor
+that is agnostic to the detection task and a set of necks and heads that
+incorporate detection-specific prior knowledge.
+
+Common components in the necks/heads may include Region-of-Interest (RoI)
+operations, Region Proposal Networks (RPN) or anchors, Feature Pyramid
+Networks (FPN), etc.
+```
+
+**Technique**:
+- **"in general consist of"** - Standard architecture
+- **"agnostic to"** vs **"detection-specific"** - Clear division
+- **"may include"** - Examples, not exhaustive
+
+#### Historical Evolution
+```latex
+For a long while, these backbones have been multi-scale, hierarchical
+architectures due to the de facto design of convolutional networks (ConvNet),
+which has heavily influenced the neck/head design for detecting objects at
+multiple scales (e.g., FPN).
+```
+
+**Technique**:
+- **"For a long while"** - Historical dimension
+- **"due to...which has heavily influenced"** - Causal chain
+- **"de facto design"** - Established convention
+
+#### New Technology Challenge
+```latex
+Over the past year, Vision Transformers (ViT) have been established as a
+powerful backbone for visual recognition.
+
+Unlike typical ConvNets, the original ViT is a plain, non-hierarchical
+architecture that maintains a single-scale feature map throughout.
+
+Its 'minimalist' pursuit is met with challenges when applied to object
+detection—e.g., How can we address multi-scale objects in a downstream task
+with a plain backbone from upstream pre-training? Is a plain ViT too
+inefficient to use with high-resolution detection images?
+```
+
+**Technique**:
+- **"Over the past year...have been established as"** - Timeframe
+- **"Unlike typical ConvNets"** - Direct contrast
+- **"plain, non-hierarchical"**, **"single-scale"** - Key characteristics
+- **"'minimalist' pursuit"** - Philosophy (in quotes)
+- **Two questions**: Challenge reader to think
+
+#### Common Solution (Acknowledge then Pivot)
+```latex
+One solution, which abandons this pursuit, is to re-introduce hierarchical
+designs into the backbone.
+
+This solution, e.g., Swin Transformers and related works, can inherit the
+ConvNet-based detector design and has shown successful results.
+```
+
+**Technique**:
+- **"which abandons this pursuit"** - Critique (respectful)
+- **"can inherit"** - Acknowledge advantage
+- **"has shown successful results"** - Don't deny effectiveness
+
+#### Your Different Direction
+```latex
+In this work, we pursue a different direction: we explore object detectors
+that use only plain, non-hierarchical backbones.
+
+If this direction is successful, it will enable the use of original ViT
+backbones for object detection; this will decouple the pre-training design
+from the fine-tuning demands, maintaining the independence of upstream vs.
+downstream tasks, as has been the case for ConvNet-based research.
+```
+
+**Technique**:
+- **"we pursue a different direction"** - Clear positioning
+- **"If this direction is successful, it will enable..."** - Motivation
+- **"decouple"**, **"independence"** - Philosophy keywords
+- **"as has been the case for..."** - Historical precedent
+
+#### Philosophy Elevation
+```latex
+This direction also in part follows the ViT philosophy of 'fewer inductive
+biases' in the pursuit of universal features.
+
+As the non-local self-attention computation can learn translation-equivariant
+features, they may also learn scale-equivariant features from certain forms
+of supervised or self-supervised pre-training.
+```
+
+**Technique**:
+- **"in part follows the...philosophy of"** - Theoretical connection
+- **"fewer inductive biases"** - Core concept
+- **Analogy**: translation-equivariant → scale-equivariant
+- **"may also learn"** - Speculation (honest)
+
+#### Surprising Findings
+```latex
+Surprisingly, we observe: (i) it is sufficient to build a simple feature
+pyramid from a single-scale feature map (without the common FPN design) and
+(ii) it is sufficient to use window attention (without shifting) aided with
+very few cross-window propagation blocks.
+```
+
+**Technique**:
+- **"Surprisingly, we observe:"** - Marker
+- **(i)** and **(ii)** - Structured list
+- **"sufficient to"** - Not "optimal", scientific phrasing
+- **"without the common [X]"** - Negative differentiation
+
+#### Deeper Surprise
+```latex
+More surprisingly, under some circumstances, our plain-backbone detector,
+named ViTDet, can compete with the leading hierarchical-backbone detectors
+(e.g., Swin, MViT).
+
+With Masked Autoencoder (MAE) pre-training, our plain-backbone detector can
+outperform the hierarchical counterparts that are pre-trained on ImageNet-1K/21K
+with supervision (Figure 3).
+
+The gains are more prominent for larger model sizes.
+```
+
+**Technique**:
+- **"More surprisingly"** - Progressive emphasis
+- **"under some circumstances"** - Measured claim
+- **"named ViTDet"** - Brand at results
+- **Specific comparison**: MAE vs ImageNet supervised
+- **"The gains are more prominent for..."** - Pattern observation
+
+---
+
+## 3. Methods Section: The "Minimal Adaptations" Narrative
+
+### Pattern: We Don't Aim to Invent, We Minimize
+
+**Structure**:
+```markdown
+1. [Declaration] We do NOT aim to develop new components
+2. [Philosophy] Instead, make minimal adaptations sufficient to overcome challenges
+3. [Specific] In particular, [what we actually do]
+4. [Abandonment] This abandons [traditional component]
+5. [Decoupling] Adaptations only during fine-tuning, do not alter pre-training
+6. [Contrast] This is in contrast to [recent methods] that [what they do]
+7. [Benefit] Our scenario enables [benefit], without [cost]
+```
+
+### ViTDet Methods Narrative:
+
+```latex
+In our study, we do not aim to develop new components; instead, we make
+minimal adaptations that are sufficient to overcome the aforementioned
+challenges.
+
+In particular, our detector builds a simple feature pyramid from only the
+last feature map of a plain ViT backbone (Figure 1).
+
+This abandons the FPN design and waives the requirement of a hierarchical
+backbone.
+
+These adaptations are made only during fine-tuning and do not alter pre-training.
+
+This is in contrast to the recent methods that modify the attention computation
+directly with backbone pre-training (e.g., Swin, MViT).
+
+Our scenario enables us to use the original ViT backbone for detection, without
+redesigning pre-training architectures.
+```
+
+**Techniques**:
+- **"we do not aim to develop new components"** - Clear scope
+- **"minimal adaptations"** - Philosophy
+- **"sufficient to"** - Not maximal, necessary
+- **"This abandons..."** - What you give up
+- **"only during fine-tuning"** - Temporal boundary
+- **"do not alter pre-training"** - Upstream independence
+- **"This is in contrast to"** - Competitor positioning
+- **"enables us to use"** - Practical benefit
+
+---
+
+## 4. Fair Comparison: The "Equal Effort" Declaration
+
+### Pattern: Admit Complexity → Claim Effort → Demonstrate Fairness
+
+**Structure**:
+```markdown
+1. [Admit] Modern systems involve [complexity]
+2. [Claim] To compare as fairly as possible, we [effort]
+3. [Specific 1] Use same [implementation] for all
+4. [Specific 2] Different backbones get [appropriate treatment]
+5. [Validation] Our results for [competitor] are [better/equal] to original
+6. [Implication] Since we reproduce others well, comparisons are fair
+```
+
+### ViTDet Fair Comparison Statement:
+
+```latex
+Modern detection systems involve many implementation details and subtleties.
+
+To focus on comparing backbones under as fair conditions as possible, we
+incorporate the Swin and MViTv2 backbones into our implementation.
+
+We use the same implementation of Mask R-CNN and Cascade Mask R-CNN for all
+ViT, Swin, and MViTv2 backbones.
+
+We use FPN for the hierarchical backbones of Swin/MViTv2.
+
+We search for optimal hyper-parameters separately for each backbone.
+```
+
+**Techniques**:
+- **"involve many implementation details and subtleties"** - Admit difficulty
+- **"under as fair conditions as possible"** - Effort disclaimer
+- **"incorporate...into our implementation"** - What we did
+- **"use the same...for all"** - Unified framework
+- **"search for optimal...separately"** - Equal effort
+
+#### Self-Validation
+```latex
+Our Swin results are better than their counterparts in the original paper;
+our MViTv2 results are better than or on par with those reported in the
+original paper.
+```
+
+**Technique**:
+- Report self-results → Show competence → Imply fairness
+
+---
+
+## 5. Results: Multi-Factor Analysis
+
+### Pattern: Factors, Trends, Wall-Clock Time
+
+**Structure**:
+```markdown
+1. [Acknowledge Complexity] Comparisons involve [factors]
+2. [Identify Trend] Our method presents better [trend behavior]
+3. [Qualify] When [condition], our method [advantage]
+4. [Expand] Moreover, [second dimension advantage]
+5. [Explain] as [reason related to simplicity]
+```
+
+### ViTDet Results Narrative:
+
+```latex
+Figure 3 plots the trade-offs.
+
+The comparisons here involve two factors: the backbone and the pre-training
+strategy.
+
+Our plain-backbone detector, combined with MAE pre-training, presents better
+scaling behavior.
+
+When the models are large, our method outperforms the hierarchical
+counterparts of Swin/MViTv2, including those using IN-21K supervised
+pre-training.
+
+Moreover, the plain ViT has a better wall-clock performance (Figure 3 right),
+as the simpler blocks are more hardware-friendly.
+```
+
+**Techniques**:
+- **"involve two factors"** - Analysis depth
+- **"presents better scaling behavior"** - Trend, not just points
+- **"When the models are large"** - Qualify claim
+- **"Moreover"** - Second dimension
+- **"better wall-clock performance"** - Practical metric
+- **"simpler blocks are more hardware-friendly"** - Explain why
+
+---
+
+## 6. "Surprisingly" Usage: Multi-Level Pattern
+
+### Level 1: Basic Surprise (Abstract)
+
+```latex
+Surprisingly, we observe: (i) [simple sufficient without common practice]
+and (ii) [simple sufficient without common practice]
+```
+
+**Characteristics**:
+- Two findings (i) and (ii)
+- "sufficient" not "optimal"
+- "without [common practice]"
+- Structured presentation
+
+### Level 2: Competitive Surprise (Introduction)
+
+```latex
+More surprisingly, under some circumstances, our [method] can compete
+with the leading [competitors].
+```
+
+**Characteristics**:
+- "More surprisingly" - Progressive
+- "under some circumstances" - Measured
+- "compete with" - Not "beat", competitive
+- Name competitors specifically
+
+### Level 3: Superiority Surprise (Introduction)
+
+```latex
+With [specific condition], our [method] can outperform the [competitors]
+that use [stronger condition].
+
+The gains are more prominent for [specific condition].
+```
+
+**Characteristics**:
+- Specific conditions compared
+- "outperform" - Stronger claim here
+- Pattern observation: "more prominent for"
+- Shows understanding of when/where
+
+---
+
+## 7. Ablation Study: Incremental + Destructive
+
+### Pattern: Baseline → Incremental Additions → Sufficient
+
+**Table Design**:
+```markdown
+Table X: [Component] Ablation
+┌──────────────────────────────────────────┐
+│ Baseline | Metric | Δ │
+├──────────────────────────────────────────┤
+│ no [component] | 47.8 | - │
+│ (a) [common] | 50.3 | +2.5 │
+│ (b) [variant] | 50.9 | +3.1 │
+│ (c) ours: simple | 51.2 | +3.4 ✓ │
+├──────────────────────────────────────────┤
+│ Conclusion: Our simple [X] is sufficient │
+└──────────────────────────────────────────┘
+```
+
+### ViTDet Table 1 Example:
+
+```latex
+pyramid design APbox APmask
+─────────────────────────────────────────
+no feature pyramid 47.8 42.5
+(a) FPN, 4-stage 50.3 44.9
+(b) FPN, last-map 50.9 45.3
+(c) simple feature pyramid 51.2 45.5
+```
+
+**Techniques**:
+- **Baseline**: "no [X]" shows it's needed
+- **(a), (b), (c)**: Progressive variations
+- **Δ标注**: (+2.5) - Show incremental gains
+- **Conclusion text**: "our simple pyramid is sufficient"
+
+---
+
+## 8. "Interestingly" Usage: Pattern + Explanation
+
+### Pattern: Observation → Literature Support → Explanation
+
+**Structure**:
+```markdown
+Interestingly, [observation].
+
+This is in line with the observation in [paper] that [their finding].
+
+[Additional explanation or hypothesis].
+```
+
+### ViTDet Example:
+
+```latex
+Interestingly, performing propagation in the last 4 blocks is nearly as
+good as even placement.
+
+This is in line with the observation in ViT [14] that ViT has longer
+attention distance in later blocks and is more localized in earlier ones.
+```
+
+**Techniques**:
+- **"Interestingly"** - Marker for unexpected
+- **Observation**: Specific finding
+- **"in line with the observation in"** - Literature support
+- **Explanation**: Why it makes sense
+
+---
+
+## 9. Minimalism Keywords: Design Simplification Vocabulary
+
+**Philosophy Keywords**:
+- "minimal" - "minimal adaptations"
+- "sufficient" - "is sufficient to" (not "optimal")
+- "simple" - "simple feature pyramid"
+- "plain" - "plain backbone"
+- "decouple" - "decouple pre-training from fine-tuning"
+- "independence" - "independence of upstream vs downstream"
+
+**Direction Keywords**:
+- "pursue a different direction" - Positioning
+- "in contrast to" - Differentiation
+- "abandons" - What you give up
+- "enables" - What your approach allows
+
+**Measured Claim Keywords**:
+- "under some circumstances" - Not always
+- "can compete with" - Competitive, not dominant
+- "more prominent for" - When effect is stronger
+- "is sufficient" - Necessary, not maximal
+
+**Surprise Markers** (use in order):
+1. "Surprisingly" - First finding
+2. "More surprisingly" - Deeper finding
+3. "Interestingly" - Pattern observation
+4. "Notably" - Important detail
+5. "It is worth noting that" - Caveat/clarification
+
+---
+
+## 10. Common Mistakes in Design Simplification Papers
+
+### ❌ Don't:
+- Claim your method is "optimal" - You're simplifying, not optimizing
+- Attack common practices - Acknowledge their value first
+- Overgeneralize - "under some circumstances" is honest
+- Forget to show fair comparison - Prove you tried hard with baselines
+- Hide complexity - Admit what you don't address
+
+### ✅ Do:
+- Use "sufficient" instead of "optimal"
+- Say what you DON'T do ("do not aim to develop new components")
+- Emphasize minimal changes ("minimal adaptations")
+- Report when your method wins and when it doesn't
+- Show "surprisingly" findings with proper qualification
+- Demonstrate fair comparison effort
+- Adapt only where necessary (fine-tuning, not pre-training)
+
+---
+
+## 11. Revision Checklist for Design Simplification Papers
+
+**Before Submission, Verify:**
+
+- [ ] Abstract has "Surprisingly, we observe: (i)... and (ii)..."
+- [ ] Introduction establishes conventional practice first
+- [ ] Common solution is acknowledged ("has shown successful results")
+- [ ] "We pursue a different direction" is stated clearly
+- [ ] Philosophy is elevated ("fewer inductive biases")
+- [ ] "More surprisingly" used for deeper claim
+- [ ] Methods section says "we do not aim to develop new components"
+- [ ] "minimal adaptations" philosophy stated
+- [ ] "only during fine-tuning" boundary specified
+- [ ] Fair comparison effort described explicitly
+- [ ] Self-validation shown (our reproduction of others is good)
+- [ ] Multi-factor analysis in results (scaling, wall-clock)
+- [ ] Ablations show incremental progression
+- [ ] "sufficient" used, not "optimal"
+- [ ] Under what conditions is stated ("under some circumstances")
+
+---
+
+## 12. Example: Applying This Pattern
+
+### Original Idea (Not Design Simplification):
+"We propose a new feature pyramid that improves detection AP by 3%."
+
+### Design Simplification Version:
+"Modern detectors use hierarchical backbones with FPN. With plain ViT
+emerging as powerful backbones, a common solution re-introduces hierarchy
+(abandoning the plain philosophy). We pursue a different direction: plain
+backbones with minimal adaptations. Surprisingly, we observe a simple feature
+pyramid from a single-scale map is sufficient (without FPN). More
+surprisingly, with MAE pre-training, ViTDet competes with hierarchical
+detectors, especially for larger models. This decouples pre-training from
+fine-tuning, maintaining upstream/downstream independence."
+
+**The Design Simplification Frame**:
+- Conventional: Hierarchy + FPN
+- Challenge: Plain ViT is...plain
+- Common: Swin (abandons philosophy)
+- Ours: Minimal adaptations
+- Surprise: Simple is sufficient
+- Philosophy: Decoupling, independence
+
+---
+
+## Paper Metadata
+
+**Title**: Exploring Plain Vision Transformer Backbones for Object Detection (ViTDet)
+
+**Authors**: Yanghao Li, Hanzi Mao, Kaiming He
+
+**Venue**: ECCV 2022
+
+**arXiv**: 2203.16527
+
+**Key Concepts**:
+- Plain ViT for detection (no hierarchy needed)
+- Simple feature pyramid (no FPN needed)
+- Minimal adaptations philosophy
+- Decoupling pre-training from fine-tuning
+- MAE pre-training synergy
+
+---
+
+## Extracted by
+
+**Date**: 2026-01-26
+
+**Source**: Analysis of ViTDet paper (21 pages)
+
+**Extraction Focus**: Design simplification paper writing patterns, "surprisingly"
+findings reporting, minimal adaptations philosophy, fair comparison strategies
+
+**For Integration**: ml-paper-writing skill knowledge base
diff --git a/.agents/skills/ml-paper-writing/references/knowledge/kaiming_he_injection_record.json b/.agents/skills/ml-paper-writing/references/knowledge/kaiming_he_injection_record.json
new file mode 100644
index 0000000..7ffd675
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/knowledge/kaiming_he_injection_record.json
@@ -0,0 +1,153 @@
+{
+ "metadata": {
+ "source": "Kaiming He Papers Analysis",
+ "date": "2026-01-26",
+ "papers_analyzed": 11,
+ "analysis_method": "Text extraction and pattern mining",
+ "latest_addition": {
+ "papers": ["Mean Flows", "ViTDet", "MoCo v2", "Deconstructing Denoising Diffusion Models", "Autoregressive Image Generation (MAR)"],
+ "extraction_date": "2026-01-26",
+ "new_knowledge_files": [
+ "theory-driven-papers-kaiming-he.md",
+ "design-simplification-papers-kaiming-he.md"
+ ]
+ }
+ },
+ "knowledge_files": {
+ "structure.md": {
+ "status": "updated",
+ "last_update": "2026-01-26",
+ "contains": "Basic structure patterns from 19 Kaiming He papers"
+ },
+ "writing-techniques.md": {
+ "status": "needs_update",
+ "last_update": "2026-01-26",
+ "contains": "Basic writing techniques from 19 Kaiming He papers"
+ },
+ "rethinking-papers-kaiming-he.md": {
+ "status": "complete",
+ "focus": "Rethinking papers, challenging conventional wisdom",
+ "source_paper": "Autoregressive Image Generation without Vector Quantization (NeurIPS 2024 Spotlight)"
+ },
+ "theory-driven-papers-kaiming-he.md": {
+ "status": "new",
+ "focus": "Theory-driven papers, first principles, MeanFlow Identity",
+ "source_paper": "Mean Flows for One-step Generative Modeling (2025)"
+ },
+ "design-simplification-papers-kaiming-he.md": {
+ "status": "new",
+ "focus": "Design simplification, minimal adaptations, 'Surprisingly' findings",
+ "source_paper": "Exploring Plain Vision Transformer Backbones for Object Detection (ViTDet, ECCV 2022)"
+ }
+ },
+ "patterns_extracted": {
+ "introduction_frameworks": {
+ "principle_introduction": {
+ "source": "MeanFlows",
+ "pattern": "Background → Problem → Critique (Despite...) → Core Concept → Theory → Advantage → Results",
+ "keywords": ["principled", "intrinsic", "well-defined", "naturally", "first principles"]
+ },
+ "challenge_assumptions": {
+ "source": "ViTDet",
+ "pattern": "Traditional → New Challenge → Common Solution → Our Direction → Philosophy → Surprisingly → Implications",
+ "keywords": ["minimal adaptations", "sufficient", "decouple", "independence", "surprisingly"]
+ },
+ "rethinking_conventional_wisdom": {
+ "source": "MAR",
+ "pattern": "Conventional wisdom → Question → Analysis → Alternative → Results → Vision",
+ "keywords": ["Conventional wisdom holds that", "Is it necessary", "not a necessity"]
+ }
+ },
+ "surprisingly_findings": {
+ "level_1": {
+ "pattern": "Surprisingly, we observe: (i)... and (ii)...",
+ "usage": "First-level surprise - basic findings",
+ "example": "ViTDet Abstract"
+ },
+ "level_2": {
+ "pattern": "More surprisingly, under some circumstances...",
+ "usage": "Second-level surprise - competitive results",
+ "example": "ViTDet Introduction"
+ },
+ "level_3": {
+ "pattern": "With [condition], outperforms... gains more prominent for...",
+ "usage": "Third-level surprise - superiority under conditions",
+ "example": "ViTDet Introduction"
+ },
+ "variants": {
+ "interestingly": "Observation + literature support + explanation",
+ "notably": "Important detail or counter-intuitive result",
+ "it_is_worth_noting": "Technical caveat or clarification"
+ }
+ },
+ "ablation_techniques": {
+ "incremental_tables": {
+ "pattern": "Baseline → (a) → (b) → (c) with Δ标注",
+ "source": "ViTDet Table 1"
+ },
+ "destructive_comparison": {
+ "pattern": "Intentionally wrong values to prove necessity",
+ "source": "MeanFlows Table 1b"
+ },
+ "narrative_structure": {
+ "observation_then_explain": "Observe pattern → Provide explanation (literature/hypothesis/theory)"
+ }
+ },
+ "theoretical_derivation": {
+ "naming_identity": {
+ "pattern": "Define → Derive → Name ('X Identity')",
+ "source": "MeanFlows MeanFlow Identity"
+ },
+ "step_by_step": {
+ "pattern": "Motivation → Derivation with 'Now we...' → Justification with 'where...'",
+ "source": "MeanFlows Section 2"
+ }
+ },
+ "comparison_techniques": {
+ "principled_vs_heuristic": {
+ "pattern": "At the core...does not depend on...In contrast, typically rely on...",
+ "source": "MeanFlows"
+ },
+ "fair_comparison_declaration": {
+ "pattern": "Admit complexity → Claim effort → Demonstrate fairness",
+ "source": "ViTDet"
+ },
+ "multi_factor_analysis": {
+ "pattern": "Factors identified → Trend behavior → Wall-clock time",
+ "source": "ViTDet Results"
+ }
+ },
+ "keyword_strategies": {
+ "theory_paper": ["principled", "intrinsic", "well-defined", "naturally", "self-contained", "solely originated from"],
+ "design_paper": ["minimal", "sufficient", "decouple", "independence", "surprisingly", "abandons"],
+ "rethinking_paper": ["Conventional wisdom holds that", "not a necessity", "orthogonal to", "uncharted realm"]
+ }
+ },
+ "papers_analyzed_list": [
+ "Non-local Neural Networks",
+ "SlowFast Networks",
+ "Rethinking ImageNet Pre-training",
+ "Faster R-CNN",
+ "Delving Deep into Rectifiers (PReLU)",
+ "Spatial Pyramid Pooling (SPP-net)",
+ "Deconstructing Denoising Diffusion Models",
+ "Autoregressive Image Generation without Vector Quantization (MAR)",
+ "Mean Flows for One-step Generative Modeling",
+ "Exploring Plain Vision Transformer Backbones for Object Detection (ViTDet)",
+ "MoCo v2: Improved Baselines with Momentum Contrastive Learning"
+ ],
+ "integration_summary": {
+ "total_papers": 11,
+ "knowledge_files": 5,
+ "patterns_extracted": 25,
+ "paper_types_identified": [
+ "Theory-driven (MeanFlows)",
+ "Design simplification (ViTDet)",
+ "Rethinking (MAR)",
+ "Deconstruction (DDM)",
+ "Milestone (PReLU)",
+ "Multi-task (SPP-net)",
+ "Technical note (MoCo v2)"
+ ]
+ }
+}
diff --git a/.agents/skills/ml-paper-writing/references/knowledge/paper-miner-writing-memory.md b/.agents/skills/ml-paper-writing/references/knowledge/paper-miner-writing-memory.md
new file mode 100644
index 0000000..7320060
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/knowledge/paper-miner-writing-memory.md
@@ -0,0 +1,37 @@
+# Paper-Miner Writing Memory
+
+This is the **canonical global writing memory** maintained by `paper-miner`.
+
+It stores reusable academic writing knowledge mined from papers across venues and projects.
+
+## Rules
+
+- This is the **only maintained paper-miner writing memory**.
+- `paper-miner` writes here even when invoked inside a specific project.
+- Do **not** create project-specific paper-miner writing memory.
+- Do **not** split new mined knowledge across multiple maintained category files.
+- Keep source attribution explicit and avoid duplicate entries.
+
+## Writing patterns mined
+
+<!-- paper-miner adds reusable rhetorical patterns here -->
+
+## Structure signals
+
+<!-- paper-miner adds section-flow and organization signals here -->
+
+## Reusable phrasing
+
+<!-- paper-miner adds concise reusable phrasing and transition templates here -->
+
+## Venue-specific signals
+
+<!-- paper-miner adds venue-facing style and convention signals here -->
+
+## How this helps our writing
+
+<!-- paper-miner explains how mined signals can inform future writing decisions here -->
+
+## Source index
+
+<!-- one short source entry per analyzed paper -->
diff --git a/.agents/skills/ml-paper-writing/references/knowledge/rethinking-papers-kaiming-he.md b/.agents/skills/ml-paper-writing/references/knowledge/rethinking-papers-kaiming-he.md
new file mode 100644
index 0000000..26a7c86
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/knowledge/rethinking-papers-kaiming-he.md
@@ -0,0 +1,1023 @@
+# "Rethinking" Papers: Challenging Conventional Wisdom
+
+**Source**: Kaiming He et al., "Autoregressive Image Generation without Vector Quantization" (NeurIPS 2024 Spotlight)
+
+**Paper Type**: Paradigm-challenging / "Rethinking" paper
+
+**Core Pattern**: Question deeply-held assumptions → Propose alternative → Demonstrate effectiveness
+
+---
+
+## 1. Abstract Structure: Challenging Conventional Wisdom
+
+### Pattern: The "Conventional Wisdom" Opening
+
+**Template**:
+```markdown
+Abstract:
+1. [Hook] Conventional wisdom holds that [widely-believed assumption].
+2. [Observation] We observe that [counter-point or nuance].
+3. [Question] Is it necessary for [core assumption]?
+4. [Proposal] In this work, we propose [alternative approach].
+5. [Solution] Rather than [traditional method], we [novel method].
+6. [Results] This approach [eliminates/enables] X, achieving [strong results].
+7. [Vision] We hope this work will [broader impact statement].
+```
+
+### MAR Abstract Example (annotated):
+
+```latex
+Conventional wisdom holds that [autoregressive models for image generation
+are typically accompanied by vector-quantized tokens].
+
+We observe that while [discrete-valued space can facilitate representing
+a categorical distribution], it is [not a necessity for autoregressive modeling].
+
+In this work, we propose to [model the per-token probability distribution
+using a diffusion procedure], which allows us to [apply autoregressive models
+in a continuous-valued space].
+
+Rather than using [categorical cross-entropy loss], we define a
+[Diffusion Loss function] to model the per-token probability.
+
+This approach [eliminates the need for discrete-valued tokenizers].
+
+We evaluate its effectiveness across [a wide range of cases], including
+[standard autoregressive models and generalized masked autoregressive (MAR) variants].
+
+By removing vector quantization, our image generator achieves [strong results]
+while enjoying [the speed advantage of sequence modeling].
+
+We hope this work will motivate [the use of autoregressive generation in
+other continuous-valued domains and applications].
+```
+
+### Key Techniques:
+
+1. **"Conventional wisdom holds that..."** - Strong, respectful opening that acknowledges prevailing beliefs
+2. **"We observe that..."** - Signals empirical insight rather than mere speculation
+3. **"it is not a necessity for..."** - Gentle but direct challenge to the assumption
+4. **"Rather than..."** - Clear alternative positioning
+5. **"This approach eliminates the need for..."** - Practical benefit statement
+6. **"We hope this work will..."** - Forward-looking vision
+
+---
+
+## 2. Introduction: The Question-Driven Framework
+
+### Pattern: Start with the Question
+
+**Traditional Introduction** (less effective):
+- "Image generation is an important problem..."
+- "Existing methods use VQ tokenizers..."
+- "We propose a new method..."
+
+**"Rethinking" Introduction** (Kaiming He style):
+```markdown
+1. [Establish Context] Domain context + prevailing approach
+2. [Identify Assumption] The widely-held belief
+3. [Formulate Question] "Is it necessary for..."
+4. [Analyze Requirements] What is truly essential?
+5. [Propose Alternative] If alternative model exists...
+6. [Present Solution] Our specific proposal
+7. [Broader Implications] What this enables
+```
+
+### MAR Introduction Structure (lines 20-79):
+
+#### Part 1: Context and Prevailing Belief (lines 20-29)
+```latex
+Autoregressive models are currently the de facto solution to generative
+models in natural language processing [38, 39, 3]. These models predict
+the next word or token in a sequence based on the previous words as input.
+
+Given the discrete nature of languages, the inputs and outputs of these
+models are in a categorical, discrete-valued space.
+
+This prevailing approach has led to a widespread belief that autoregressive
+models are inherently linked to discrete representations.
+```
+
+**Technique**: Start from uncontroversial facts (NLP success) → Show how they led to a belief (AR ↔ discrete)
+
+#### Part 2: Consequences of the Belief (lines 25-29)
+```latex
+As a result, research on generalizing autoregressive models to continuous-
+valued domains—most notably, image generation—has intensely focused on
+discretizing the data [6, 13, 40].
+
+A commonly adopted strategy is to train a discrete-valued tokenizer on
+images, which involves a finite vocabulary obtained by vector quantization
+(VQ) [51, 41, 41].
+```
+
+**Technique**: Show concrete consequences of the belief (VQ tokenizers everywhere)
+
+#### Part 3: The Research Question (lines 30-33)
+```latex
+In this work, we aim to address the following question:
+
+Is it necessary for autoregressive models to be coupled with vector-
+quantized representations?
+```
+
+**Technique**: Explicit question format. Bold, direct, centered.
+
+#### Part 4: Analyzing What's Essential (lines 31-37)
+```latex
+We note that the autoregressive nature, i.e., "predicting next tokens based
+on previous ones", is independent of whether the values are discrete or
+continuous.
+
+What is needed is to model the per-token probability distribution, which
+can be measured by a loss function and used to draw samples from.
+
+Discrete-valued representations can be conveniently modeled by a categorical
+distribution, but it is not conceptually necessary.
+```
+
+**Technique**: Distinguish mechanism (autoregression) from implementation (discrete tokens)
+
+#### Part 5: The "If..." Condition (lines 36-37)
+```latex
+If alternative models for per-token probability distributions are presented,
+autoregressive models can be approached without vector quantization.
+```
+
+**Technique**: Logical bridge - "If X, then Y" sets up your contribution
+
+#### Part 6: Your Solution (lines 38-58)
+```latex
+With this observation, we propose to model the per-token probability
+distribution by a diffusion procedure operating on continuous-valued domains.
+
+[Technical description of Diffusion Loss...]
+```
+
+#### Part 7: Benefits and Implications (lines 59-79)
+```latex
+Our approach eliminates the need for discrete-valued tokenizers. Vector-
+quantized tokenizers are difficult to train and are sensitive to gradient
+approximation strategies [51, 41, 40, 27]. Their reconstruction quality
+often falls short compared to continuous-valued counterparts [42].
+
+Our approach allows autoregressive models to enjoy the benefits of higher-
+quality, non-quantized tokenizers.
+
+[...]
+
+The effectiveness of our method reveals a largely uncharted realm of image
+generation: modeling the interdependence of tokens by autoregression,
+jointly with the per-token distribution by diffusion.
+```
+
+**Technique**: Multiple benefit levels:
+- **Eliminates pain points**: VQ is hard to train
+- **Enables benefits**: Higher-quality tokenizers
+- **Reveals new territory**: "uncharted realm"
+
+---
+
+## 3. Rethinking Section: Dissecting the Status Quo
+
+### Pattern: "Rethinking X" Chapter
+
+When challenging conventional wisdom, dedicate a section to re-examining the assumptions.
+
+### MAR Section 3.1: "Rethinking Discrete-Valued Tokens"
+
+**Structure**:
+```markdown
+1. [Setup] Define the conventional approach mathematically
+2. [Analysis] Identify the essential properties (not the implementation)
+3. [Insight] Show that the implementation is not necessary
+4. [Conclusion] State what's actually needed
+```
+
+### MAR Example (lines 110-126):
+
+#### Step 1: Define the Conventional Approach
+```latex
+To begin with, we revisit the roles of discrete-valued tokens in
+autoregressive generation models.
+
+Denote as x the ground-truth token to be predicted at the next position.
+With a discrete tokenizer, x can be represented as an integer: 0 ≤ x < K,
+with a vocabulary size K.
+
+The autoregressive model produces a continuous-valued D-dim vector z ∈ R^D,
+which is then projected by a K-way classifier matrix W ∈ R^(K×D).
+
+Conceptually, this formulation models a categorical probability distribution
+in the form of p(x|z) = softmax(Wz).
+```
+
+**Technique**: Mathematically precise setup. Shows you deeply understand the status quo.
+
+#### Step 2: Identify Essential Properties
+```latex
+In the context of generative modeling, this probability distribution must
+exhibit two essential properties.
+
+(i) A loss function that can measure the difference between the estimated
+and true distributions.
+
+(ii) A sampler that can draw samples from the distribution x ~ p(x|z) at
+inference time.
+```
+
+**Technique**: Abstract away from implementation to functional requirements
+
+#### Step 3: Show Convention is Not Necessary
+```latex
+In the case of categorical distribution, this can be simply done by the
+cross-entropy loss.
+
+[...]
+
+This analysis suggests that discrete-valued tokens are not necessary for
+autoregressive models.
+```
+
+**Technique**: "This analysis suggests" - evidence-based conclusion
+
+#### Step 4: What's Actually Needed
+```latex
+Instead, it is the requirement of modeling a distribution that is essential.
+
+A discrete-valued token space implies a categorical distribution, whose loss
+function and sampler are simple to define.
+
+What we actually need are a loss function and its corresponding sampler for
+distribution modeling.
+```
+
+**Technique**: Reposition the problem - it's about distribution modeling, not discrete tokens
+
+---
+
+## 4. Unifying Different Methods: The "Generalized Framework" Pattern
+
+### Pattern: Show Two Seemingly Different Methods Are Special Cases
+
+**MAR Section 3.4**: "Unifying Autoregressive and Masked Generative Models"
+
+**Structure**:
+```markdown
+1. [Observation] These methods seem different but share a core principle
+2. [Insight] The core principle is X, not the surface differences
+3. [Demonstration] Show how Method A fits the principle
+4. [Demonstration] Show how Method B fits the principle
+5. [Unification] Both are special cases of a general framework
+6. [Benefit] This understanding enables new combinations/insights
+```
+
+### MAR Example (lines 181-259):
+
+#### Opening Observation
+```latex
+We show that masked generative models, e.g., MaskGIT [4] and MAGE [29],
+can be generalized under the broad concept of autoregression, i.e.,
+next token prediction.
+```
+
+#### The Insight
+```latex
+Bidirectional attention can perform autoregression.
+
+The concept of autoregression is orthogonal to network architectures:
+autoregression can be done by RNNs [50], CNNs [49, 7], and
+Transformers [38, 36, 6].
+
+When using Transformers, although autoregressive models are popularly
+implemented by causal attention, we show that they can also be done by
+bidirectional attention.
+```
+
+**Technique**: "Orthogonal to" - shows independence of concepts
+
+#### Visual Demonstration (Figure 2)
+```latex
+Note that the goal of autoregression is to predict the next token given
+the previous tokens; it does not constrain how the previous tokens
+communicate with the next token.
+
+We can adopt the bidirectional attention implementation as done in Masked
+Autoencoder (MAE) [21]. See Figure 2(b).
+```
+
+**Technique**: Use visualization to show "unexpected" equivalence
+
+#### Generalization (Figure 3)
+```latex
+Autoregressive models in random orders...
+
+Masked autoregressive models: In masked generative modeling [4, 29],
+the models predict a random subset of tokens based on known/predicted
+tokens.
+
+This can be formulated as permuting the token sequence by a random order,
+and then predicting multiple tokens based on previous tokens.
+
+Conceptually, this is an autoregressive procedure...
+```
+
+**Technique**: Mathematical unification - same formula, different instantiations
+
+#### Naming the Generalization
+```latex
+We refer to this variant as Masked Autoregressive (MAR) models.
+
+MAR is a random-order autoregressive model that can predict multiple
+tokens simultaneously.
+```
+
+**Technique**: Define new terminology to capture the unified concept
+
+---
+
+## 5. Flexibility Arguments: Demonstrating Generality
+
+### Pattern: Show Your Method Works in Many Configurations
+
+**MAR Section 5.1**: "Flexibility of Diffusion Loss"
+
+**Structure**:
+```markdown
+1. [Claim] One significant advantage is flexibility with various X
+2. [Demonstration 1] Works with configuration A
+3. [Demonstration 2] Works with configuration B (even surprising case)
+4. [Demonstration 3] Works with configuration C
+5. [Insight] This flexibility enables Y
+```
+
+### MAR Example (lines 349-366, Table 2):
+
+#### Opening Claim
+```latex
+One significant advantage of Diffusion Loss is its flexibility with
+various tokenizers.
+```
+
+#### Surprising Case 1: VQ Tokenizers
+```latex
+Diffusion Loss can be easily used even given a VQ tokenizer.
+
+We simply treat the continuous-valued latent before the VQ layer as the
+tokens.
+
+This variant gives us 7.82 FID (w/o CFG), compared favorably with 8.79
+FID (Table 1) of cross-entropy loss using the same VQ tokenizer.
+```
+
+**Technique**: Show it works even with the "wrong" tokenizer type (VQ)
+
+#### Surprising Case 2: Mismatched Stride
+```latex
+Interestingly, Diffusion Loss also enables us to use tokenizers with
+mismatched strides.
+
+In Table 2, we study a KL-8 tokenizer whose stride is 8 and output
+sequence length is 32×32. Without increasing the sequence length of the
+generator, we group 2×2 tokens into a new token.
+
+Despite the mismatch, we are able to obtain decent results...
+```
+
+**Technique**: "Interestingly" + "Despite the mismatch" - emphasizes robustness
+
+#### Surprising Case 3: Different Architecture
+```latex
+Further, this property allows us to investigate other tokenizers, e.g.,
+Consistency Decoder [35], a non-VQ tokenizer of a different
+architecture/stride designed for different goals.
+```
+
+**Technique**: Show applicability beyond original design space
+
+#### Comprehiveness Check
+```latex
+For comprehensiveness, we also train a KL-16 tokenizer on ImageNet using
+the code of [42]...
+```
+
+**Technique**: "For comprehensiveness" - signals thoroughness
+
+---
+
+## 6. Speed/Accuracy Trade-offs: Plotting the Pareto Frontier
+
+### Pattern: Show Your Method Dominates or Expands the Frontier
+
+**MAR Section 5.2**: "Speed/accuracy Trade-off" (Figure 6)
+
+**Structure**:
+```markdown
+1. [Setup] We enjoy flexibility of X
+2. [Visualization] Figure/plot showing trade-off curves
+3. [Comparison 1] Compare within your variants
+4. [Comparison 2] Compare to other methods
+5. [Highlight] Notable point on the curve
+```
+
+### MAR Example (lines 425-474):
+
+#### Setup
+```latex
+Following MaskGIT [4], our MAR enjoys the flexibility of predicting
+multiple tokens at a time.
+
+This is controlled by the number of autoregressive steps at inference time.
+```
+
+#### Comparison Within Family
+```latex
+Figure 6 plots the speed/accuracy trade-off.
+
+MAR has a better trade-off than its AR counterpart, noting that AR is
+with the efficient kv-cache.
+```
+
+**Technique**: "noting that..." - acknowledge AR's advantage, still win
+
+#### Comparison to Other Methods
+```latex
+With Diffusion Loss, MAR also shows a favorable trade-off in comparison
+with the recently popular Diffusion Transformer (DiT) [37].
+
+As a latent diffusion model, DiT models the interdependence of all tokens
+by the diffusion process. The speed/accuracy trade-off of DiT is mainly
+controlled by its diffusion steps.
+
+Unlike our diffusion process on a small MLP, the diffusion process of DiT
+involves the entire Transformer architecture.
+
+Our method is more accurate and faster.
+```
+
+**Technique**: Explain *why* you win (architectural difference)
+
+#### Highlight Specific Point
+```latex
+Notably, our method can generate at a rate of <0.3 second per image with
+a strong FID of <2.0.
+```
+
+**Technique**: "Notably" + impressive numbers - memorable takeaway
+
+---
+
+## 7. System-Level Comparison Tables: Organizing by Categories
+
+### Pattern: Group Related Work, Highlight Your Position
+
+**MAR Table 4**: "System-level comparison on ImageNet 256×256"
+
+**Structure**:
+```markdown
+Table 4:
+┌─────────────────────────────────┐
+│ Category 1: pixel-based │
+│ - Method A │
+│ - Method B │
+├─────────────────────────────────┤
+│ Category 2: vector-quantized │
+│ - Method C │
+│ - Method D │
+├─────────────────────────────────┤
+│ Category 3: continuous-valued │
+│ - Method E │
+│ - Method F │
+├─────────────────────────────────┤
+│ **Your Methods** (highlighted) │
+│ - Your Method B │
+│ - Your Method L │
+│ - Your Method H │
+└─────────────────────────────────┘
+```
+
+### MAR Example (lines 448-470):
+
+```latex
+Table 4: System-level comparison on ImageNet 256×256 conditional
+generation. Diffusion Loss enables Masked Autoregression to achieve
+leading results in comparison with previous systems.
+
+†: LDM operates on continuous-valued tokens, though this result uses
+a quantized tokenizer.
+
+w/o CFG w/ CFG
+#params FID↓ IS↑ Pre.↑ Rec.↑ FID↓ IS↑ Pre.↑ Rec.↑
+────────────────────────────────────────────────────────────
+pixel-based
+ADM [10] 554M 10.94 101.0 0.69 0.63 4.59 186.7 0.82 0.52
+VDM++ [26] 2B 2.40 225.3 - - 2.12 267.7 - -
+
+vector-quantized tokens
+Autoreg. w/ VQGAN [13] 1.4B 15.78 78.3 - - - - - -
+MaskGIT [4] 227M 6.18 182.1 0.80 0.51 - - - -
+MAGE [29] 230M 6.93 195.8 - - - - - -
+MAGVIT-v2 [55] 307M 3.65 200.5 - - 1.78 319.4 - -
+
+continuous-valued tokens
+LDM-4† [42] 400M 10.56 103.5 0.71 0.62 3.60 247.7 0.87 0.48
+U-ViT-H/2-G [2] 501M - - - - 2.29 263.9 0.82 0.57
+DiT-XL/2 [37] 675M 9.62 121.5 0.67 0.67 2.27 278.2 0.83 0.57
+[... other methods ...]
+
+MAR-B, Diff Loss 208M 3.48 192.4 0.78 0.58 2.31 281.7 0.82 0.57
+MAR-L, Diff Loss 479M 2.60 221.4 0.79 0.60 1.78 296.0 0.81 0.60
+MAR-H, Diff Loss 943M 2.35 227.8 0.79 0.62 1.55 303.7 0.81 0.62
+```
+
+**Key Techniques**:
+1. **Group by paradigm**: pixel-based → VQ → continuous-valued
+2. **Show progression**: Earlier methods → later methods → yours
+3. **Multiple metrics**: FID, IS, Precision, Recall (comprehensive)
+4. **Multiple configurations**: w/o CFG and w/ CFG (fair comparison)
+5. **Model sizes**: Show efficiency (your 479M vs their 675M)
+6. **Dagger (†)**: Clarify edge cases (LDM uses quantized despite continuous)
+7. **Bold your methods**: Visual separation (here shown as last group)
+
+---
+
+## 8. Admitting Limitations: Honest and Specific
+
+### Pattern: Acknowledge Weaknesses Proactively
+
+**MAR Appendix A**: "Limitations and Broader Impacts"
+
+**Structure**:
+```markdown
+Limitations:
+1. [Specific artifact] Show example (Figure 8)
+2. [Dependency] Acknowledge reliance on external components
+3. [Scope] Be honest about what you haven't tested
+
+Broader Impacts:
+1. [Positive] How this advances the field
+2. [Positive] Practical applications
+3. [Negative] Potential misuse considerations
+```
+
+### MAR Limitations Example (lines 629-642):
+
+#### Limitation 1: Visual Artifacts
+```latex
+First of all, our image generation system can produce images with
+noticeable artifacts (Figure 8).
+
+This limitation is commonly observed in existing methods, especially when
+trained on controlled, academic data (e.g., ImageNet).
+
+Research-driven models trained on ImageNet still have a noticeable gap
+in visual quality in comparison with commercial models trained on
+massive data.
+```
+
+**Techniques**:
+- Show example (Figure 8) - transparency
+- "commonly observed" - you're not uniquely bad
+- Contextualize: academic vs. commercial data
+
+#### Limitation 2: External Dependency
+```latex
+Second, our image generation system relies on existing pre-trained
+tokenizers.
+
+The quality of our system can be limited by the quality of these tokenizers.
+
+Pre-training better tokenizers is beyond the scope of this paper.
+```
+
+**Techniques**:
+- "relies on" - direct acknowledgment
+- "can be limited by" - honest constraint
+- "beyond the scope" - boundary setting
+
+#### Limitation 3: Unexplored Territory
+```latex
+Last, we note that given the limited computational resources, we have
+primarily tested our method on the ImageNet benchmark.
+
+Further validation is needed to assess the scalability and robustness
+of our approach in more diverse and real-world scenarios.
+```
+
+**Techniques**:
+- "given limited computational resources" - context, not excuse
+- "primarily tested" - honesty about scope
+- "Further validation is needed" - explicit call for future work
+
+---
+
+## 9. Visionary Conclusion: The "We Hope" Pattern
+
+### Pattern: End with Forward-Looking Impact Statement
+
+**MAR Conclusion** (lines 482-488):
+
+```latex
+The effectiveness of Diffusion Loss on various autoregressive models
+suggests new opportunities: modeling the interdependence of tokens by
+autoregression, jointly with the per-token distribution by diffusion.
+
+This is unlike the common usage of diffusion that models the joint
+distribution of all tokens.
+
+Our strong results on image generation suggest that autoregressive models
+or their extensions are powerful tools beyond language modeling.
+
+These models do not need to be constrained by vector-quantized
+representations.
+
+We hope our work will motivate the research community to explore sequence
+models with continuous-valued representations in other domains.
+```
+
+### Structure:
+```markdown
+1. [Synthesis] What your results suggest (new opportunities)
+2. [Contrast] How this differs from common usage
+3. [Generalization] Broader lesson (powerful tools beyond X)
+4. [Freedom] Removing constraints (not limited by Y)
+5. [Call to action] "We hope" - inspire future work
+```
+
+### Key Phrases:
+- "suggests new opportunities"
+- "unlike the common usage"
+- "powerful tools beyond [original domain]"
+- "do not need to be constrained by"
+- "We hope our work will motivate..."
+
+---
+
+## 10. Writing Style: Kaiming He's Signature Techniques
+
+### Tone Characteristics:
+
+1. **Respectful but Firm Challenge**
+ - "Conventional wisdom holds that..." (respect)
+ - "...is not a necessity" (firm)
+ - Never dismissive of prior work
+
+2. **Empirically Grounded**
+ - "We observe that..." (not "We believe that...")
+ - "This analysis suggests..." (evidence-based)
+ - Show, don't just tell
+
+3. **Logical Precision**
+ - Distinguish mechanism from implementation
+ - "If X, then Y" formulations
+ - Mathematical clarity in conceptual arguments
+
+4. **Measured Claims**
+ - "can be" not "is always"
+ - "suggests" not "proves"
+ - "enables" not "guarantees"
+
+5. **Generous Citation**
+ - Cite the methods you're challenging
+ - Credit relevant prior work
+ - "following [X]" for techniques you adopt
+
+### Sentence Patterns:
+
+**Challenge Patterns:**
+- "Conventional wisdom holds that [X]. We observe that [Y]."
+- "This prevailing approach has led to a widespread belief that [X]."
+- "[X] is not a necessity for [Y]."
+- "What is needed is [X], not [Y]."
+
+**Insight Patterns:**
+- "The concept of [X] is orthogonal to [Y]."
+- "This is unlike the common usage of [X]."
+- "These models do not need to be constrained by [X]."
+- "This reveals a largely uncharted realm of [X]."
+
+**Demonstration Patterns:**
+- "Interestingly, [X] also enables us to..."
+- "Despite [challenge], we are able to..."
+- "For comprehensiveness, we also..."
+- "Notably, [impressive result]."
+
+**Vision Patterns:**
+- "We hope this work will motivate..."
+- "This suggests new opportunities for..."
+- "We believe this will be beneficial to..."
+- "Further validation is needed to assess..."
+
+---
+
+## 11. Figures: Making the Invisible Visible
+
+### Pattern: Use Visualization to Show Conceptual Equivalence
+
+**MAR Figure 2**: "Bidirectional attention can do autoregression"
+
+**Purpose**: Challenge the assumption that autoregression requires causal attention
+
+**Technique**: Side-by-side comparison
+- (a) Causal attention (conventional)
+- (b) Bidirectional attention (surprising but equivalent)
+
+**Annotation Key Points**:
+- "next token prediction" (highlight both do this)
+- "loss on [all/unknown] tokens" (show the difference)
+- Arrows showing attention flow
+
+**MAR Figure 3**: "Generalized Autoregressive Models"
+
+**Purpose**: Show AR, random-order AR, and MAR are special cases
+
+**Technique**: Progressive generalization
+- (a) AR, raster order (standard)
+- (b) AR, random order (small variation)
+- (c) Masked AR (generalization)
+
+**Visual Language**:
+- "unknown" vs "known/predicted" tokens
+- Color coding for what's predicted at each step
+- Consistent notation across panels
+
+**Key**: Figures should make conceptual contributions visually obvious
+
+---
+
+## 12. Related Work: Positioning Within Traditions
+
+### Pattern: Acknowledge Lineage, Show Departure
+
+**MAR Section 2**: "Related Work" (lines 80-103)
+
+**Structure**:
+```markdown
+1. [Main tradition] Sequence Models for Image Generation
+ - Pioneering work [citations]
+ - Your position: "Related to our work, [X] also focuses on..."
+ - Contrast: "In [X], [limitation]. In contrast, our method..."
+
+2. [Adjacent tradition] Diffusion for Representation Learning
+ - Prior work [citations]
+ - Clarify difference: "These efforts have been focused on [X],
+ rather than [Y]"
+ - "In their scenarios, [goal] is not a goal"
+
+3. [Conceptual connection] Diffusion for Policy Learning
+ - "Our work is conceptually related to [X]"
+ - Analogy: "In image generation, we can think of [X] as [Y]"
+ - Difference: "Despite this conceptual connection, [key difference]"
+```
+
+### Key Techniques:
+
+1. **"Related to our work..."** - Acknowledge contemporaries generously
+2. **"In contrast..."** - Sharp differentiation
+3. **"These efforts have been focused on..."** - Respectful boundary setting
+4. **"In their scenarios..."** - Contextualize differences
+5. **"Conceptually related to..."** - Find connections across domains
+6. **"We can think of X as Y"** - Analogies for insight
+7. **"Despite this conceptual connection..."** - Honest differences
+
+---
+
+## 13. Experiments: Ablation as Storytelling
+
+### Pattern: Experiments Should Validate the "Rethinking"
+
+**MAR Section 5**: Experiments organized to prove the rethinking
+
+**Flow**:
+```markdown
+1. Properties of Diffusion Loss (prove the alternative works)
+ - vs Cross-entropy (Table 1)
+ - Flexibility (Table 2)
+ - Ablations (Table 3, Figures 4-5)
+
+2. Properties of Generalized AR (prove the unification)
+ - From AR to MAR (Table 1)
+ - Speed/accuracy trade-off (Figure 6)
+
+3. Benchmarking (prove the results are strong)
+ - System-level comparison (Table 4)
+ - Qualitative results (Figure 7)
+```
+
+**Key**: Every experiment should map to a conceptual claim from the introduction
+
+### Table Design Patterns:
+
+**Comparison Tables** (Table 1):
+- Group by variants (AR → MAR)
+- Show progression (Cross-ent → Diff Loss)
+- Multiple configurations (w/ and w/o CFG)
+- Clear metrics (FID↓, IS↑)
+
+**Flexibility Tables** (Table 2):
+- "Flexibility of X" in caption
+- Diverse configurations
+- Architecture variations
+- Stride mismatches
+- rFID column (reconstruction quality)
+
+**Ablation Tables** (Table 3):
+- One dimension varied (MLP width)
+- Show params and inference time
+- Demonstrate efficiency
+- Default row marked (implicit)
+
+---
+
+## 14. Summary: The "Rethinking" Paper Template
+
+### When to Use This Pattern:
+
+**Your paper is a "Rethinking" paper if:**
+- You challenge a widely-held assumption in your field
+- You show two seemingly different methods are equivalent
+- You propose removing a "necessary" component
+- You unify multiple approaches under one framework
+
+**Not a "Rethinking" paper if:**
+- You propose an incremental improvement
+- You combine existing techniques without conceptual insight
+- You're optimizing within an established paradigm
+
+### Abstract Template:
+```
+Conventional wisdom holds that [assumption]. We observe that [nuance].
+Is it necessary for [assumption]? In this work, we propose [alternative].
+Rather than [traditional method], we [novel method]. This approach [benefits].
+We hope this work will [vision].
+```
+
+### Introduction Template:
+```
+[Context] Domain X uses method Y widely.
+[Belief] This has led to belief that Z.
+[Question] Is Z necessary?
+[Analysis] What's actually needed is W.
+[Proposal] We propose alternative that achieves W.
+[Results] Strong performance + [specific benefit].
+[Vision] This opens new direction.
+```
+
+### Section Template ("Rethinking X"):
+```
+1. Define the conventional approach mathematically
+2. Identify essential properties (2-3 items)
+3. Show conventional is just one way to achieve these
+4. State what's actually needed (abstract)
+5. Position your method as satisfying these needs
+```
+
+### Unification Template:
+```
+[Observation] Methods A and B seem different.
+[Insight] But they share core principle X.
+[Demonstration] Show A = X + implementation Y
+[Demonstration] Show B = X + implementation Z
+[Generalization] Both are special cases of framework F
+[Benefit] This understanding enables [new possibilities]
+```
+
+### Conclusion Template:
+```
+Our results suggest [new opportunity].
+Unlike common usage that [old approach], we show [new insight].
+This reveals [uncharted realm].
+We hope this will motivate [future direction].
+```
+
+---
+
+## 15. Common Pitfalls to Avoid
+
+### ❌ Don't:
+- Dismiss prior work as "wrong" - it led to the belief for good reasons
+- Overstate your case - "completely eliminates" vs "reduces the need for"
+- Ignore implementation realities - VQ was solving real problems
+- Be vague about alternatives - show concrete alternatives
+- Forget to cite the methods you're challenging
+
+### ✅ Do:
+- Acknowledge why the conventional wisdom emerged
+- Show limitations respectfully
+- Provide rigorous comparisons
+- Admit when your method doesn't help
+- Credit relevant work extensively
+- Use precise language ("can be" not "is always")
+
+---
+
+## 16. Citation Integration Examples
+
+### How MAR Cites Challenges:
+
+**Citing the method you're improving:**
+```latex
+Discrete tokenizers are difficult to train [51, 41, 40, 27].
+```
+- Multiple citations show it's a known problem
+- Recent citations ([27]) show it's still active
+
+**Citing contemporaries:**
+```latex
+Related to our work, the recent work on GIVT [48] also focuses on
+continuous-valued tokens in sequence models.
+
+GIVT and our work both reveal the significance and potential of this
+direction.
+
+In GIVT, [limitation]. In contrast, our method [advantage].
+```
+- "Related to our work" - generous positioning
+- "both reveal" - shared progress
+- "In contrast" - clear differentiation
+
+**Citing the technique you adapt:**
+```latex
+We can adopt the bidirectional attention implementation as done in
+Masked Autoencoder (MAE) [21].
+
+See Figure 2(b).
+```
+- "as done in" - giving credit
+- Reference to figure for transparency
+
+---
+
+## 17. Revision Checklist for "Rethinking" Papers
+
+**Before Submission, Verify:**
+
+- [ ] Abstract clearly states the challenged assumption
+- [ ] Introduction asks an explicit question ("Is it necessary...")
+- [ ] "Rethinking" section dissects the status quo rigorously
+- [ ] Unification section shows mathematical/conceptual equivalence
+- [ ] Experiments directly test the rethinking claims
+- [ ] Flexibility/robustness experiments included
+- [ ] Limitations acknowledge remaining challenges
+- [ ] Related work cites challenged methods generously
+- [ ] Conclusion frames work as opening new territory
+- [ ] Figures make conceptual contributions visible
+- [ ] Tone is respectful but firm
+- [ ] Claims are measured ("can be", "suggests", not "proves")
+- [ ] Vision statement inspires without overpromising
+
+---
+
+## 18. Example: Applying This Pattern
+
+### Original Idea (Not "Rethinking"):
+"We propose a new tokenizer that improves image quality by 10%."
+
+### Rethinking Version:
+"Conventional wisdom holds that autoregressive models require
+vector-quantized tokenizers. We observe that VQ introduces artifacts and
+training difficulties. Is quantization necessary for autoregressive
+image generation? We propose Diffusion Loss that enables continuous-valued
+tokens, eliminating VQ while achieving SOTA results. We hope this will
+motivate continuous-valued modeling in other domains."
+
+**The Rethinking Frame:**
+- Assumption: AR ↔ VQ (challenged)
+- Insight: What's needed is distribution modeling, not discreteness
+- Alternative: Diffusion Loss for continuous tokens
+- Benefit: Eliminates VQ artifacts + enables better tokenizers
+- Vision: Continuous-valued AR beyond images
+
+---
+
+## Paper Metadata
+
+**Title**: Autoregressive Image Generation without Vector Quantization
+
+**Authors**: Tianhong Li, Yonglong Tian, He Li, Mingyang Deng, Kaiming He
+
+**Venue**: NeurIPS 2024 (Spotlight)
+
+**arXiv**: 2406.11838
+
+**Code**: https://github.com/LTH14/mar
+
+**Key Citations**:
+- VQ-VAE [51]: Original VQ paper
+- MaskGIT [4], MAGE [29]: Masked generative models
+- MAE [21]: Bidirectional attention implementation
+- DiT [37]: Speed/accuracy comparison
+- LDM [42]: Tokenizer source
+
+---
+
+## Extracted by
+
+**Date**: 2025-01-26
+
+**Source**: Full PDF analysis of arXiv:2406.11838v3
+
+**Extraction Focus**: Writing patterns for challenging conventional wisdom,
+unifying methods, and structuring "rethinking" papers
+
+**For Integration**: ml-paper-writing skill knowledge base
diff --git a/.agents/skills/ml-paper-writing/references/knowledge/review-response.md b/.agents/skills/ml-paper-writing/references/knowledge/review-response.md
new file mode 100644
index 0000000..e6e5748
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/knowledge/review-response.md
@@ -0,0 +1,429 @@
+# Review Response and Rebuttal Strategies
+
+This file contains effective strategies for responding to reviewer comments and addressing reviewer concerns, extracted from successful ML conference paper rebuttals.
+
+---
+
+## General Rebuttal Principles
+
+### Core Philosophy
+**Source:** Analysis of successful NeurIPS/ICML rebuttals
+
+**Key Principles:**
+1. **Respectful tone**: Thank reviewers for their time
+2. **Direct addressing**: Respond point-by-point to each concern
+3. **Evidence-based**: Support claims with data, experiments, or citations
+4. **Concise communication**: Be clear but brief
+5. **No over-committing**: Only promise what can be done
+
+### Response Structure
+
+**Template:**
+```markdown
+# Response to Reviewer [Number]
+
+Thank you for this insightful comment. We [address the concern].
+
+[Specific response to concern].
+
+[Additional evidence/experiments if needed].
+
+We have revised the manuscript to clarify this point (see changes marked in blue).
+```
+
+---
+
+## Addressing Specific Concerns
+
+### Concern: Clarity Issues
+
+**Strategy:**
+- Acknowledge the confusion
+- Clarify with revised text
+- Add examples if helpful
+
+**Template:**
+```markdown
+# Response to Clarity Concern
+
+We apologize for the confusion. The original text was:
+
+[Original unclear text]
+
+We have revised this to:
+"Revised text with clearer explanation"
+
+We also added an example (Figure X) to illustrate this concept.
+```
+
+**Real Example:**
+- **Concern:** "The algorithm description is unclear."
+- **Response:** "We've rewritten Algorithm 1 with more detailed steps and added pseudocode. We also included a concrete example in Appendix B to illustrate the algorithm's execution."
+
+### Concern: Missing Experiments
+
+**Strategy:**
+- Assess whether experiment is feasible
+- If yes: add experiment and report results
+- If not: explain why experiment is not essential
+- Offer alternative evidence if possible
+
+**Template:**
+```markdown
+# Response to Missing Experiment Request
+
+We agree that [experiment] would strengthen the evaluation. We have:
+[Option 1: Added experiment and results]
+OR
+[Option 2: Explained why not essential with alternative evidence]
+
+We believe this addresses the concern while maintaining focus on our core contribution.
+```
+
+**Real Example:**
+- **Concern:** "Add comparison with Method X on dataset Y."
+- **Response:** "We've added results on dataset Y (Table 3). Our method outperforms Method X by 5%. We also include ablation showing our improvement comes from [feature], not just better optimization."
+
+### Concern: Statistical Significance
+
+**Strategy:**
+- Add statistical tests if appropriate
+- Report confidence intervals
+- Discuss practical significance vs statistical significance
+- Note sample size limitations
+
+**Template:**
+```markdown
+# Response to Statistical Significance
+
+We agree statistical testing is important. We have:
+- Added paired t-test results showing significance (p<0.01)
+- Included 95% confidence intervals in Figure 3
+- Reported standard deviations across 5 runs
+- Noted that while some differences are not statistically significant due to sample size, they are practically meaningful for [application]
+
+We have updated Section 4.2 with these statistical details.
+```
+
+### Concern: Insufficient Baselines
+
+**Strategy:**
+- Add missing baselines if available
+- Explain why certain baselines are inappropriate
+- Cite reasons for exclusions with references
+
+**Template:**
+```markdown
+# Response to Baseline Concern
+
+We have added comparisons with:
+- [Method A]: Added in Table 2
+- [Method B]: Excluded because [reason with citation]
+
+For Method B, while it seems related, it [specific reason why not comparable], making direct comparison inappropriate.
+```
+
+### Concern: Writing Quality
+
+**Strategy:**
+- Revise problematic text
+- Fix grammatical issues
+- Improve flow and clarity
+- Add signposting
+
+**Template:**
+```markdown
+# Response to Writing Concern
+
+We've revised the writing to address your concerns:
+- Restructured Section 3 for better flow
+- Fixed typos and grammar
+- Added transition sentences between paragraphs
+- Clarified technical terminology
+
+The revised manuscript has been proofread and edited for clarity.
+```
+
+### Concern: Overclaiming
+
+**Strategy:**
+- Tone down absolute statements
+- Add qualifications where appropriate
+- Acknowledge limitations more explicitly
+- Reframe claims to match evidence
+
+**Template:**
+```markdown
+# Response to Overclaiming Concern
+
+We accept that our original claim was too strong. We have revised the text:
+
+Original: "Our method achieves state-of-the-art on all tasks."
+Revised: "Our method achieves state-of-the-art on [specific tasks] and competitive performance on [other tasks]."
+
+We also added a Limitations section acknowledging that our method may not generalize to [condition].
+```
+
+---
+
+## Tone and Phrasing Patterns
+
+### Opening Statements
+
+**Thanking:**
+- "Thank you for this insightful comment."
+- "We appreciate the reviewer's suggestion to..."
+- "We thank the reviewer for pointing this out."
+
+**Acknowledging Valid Points:**
+- "The reviewer is right that..."
+- "We agree this is a limitation."
+- "This is an excellent suggestion."
+
+### Addressing Disagreements
+
+**Respectful Disagreement:**
+- "We respectfully disagree with this assessment based on..."
+- "While we understand the concern, our results suggest..."
+- "We believe our approach is justified because..."
+
+**Providing Evidence:**
+- "Our experimental results (Table 3) show..."
+- "As shown in Figure 4, the difference is..."
+- "This is supported by prior work [Citation]."
+
+### Making Commitments
+
+**Full Commitments:**
+- "We will add this experiment in the revised version."
+- "We have added additional ablation studies in Section 5."
+
+**Partial Commitments:**
+- "We have added clarification in the appendix due to space constraints."
+- "We've expanded discussion of this point in the revision."
+
+**Declining Requests:**
+- "Unfortunately, due to [constraint], we cannot add this experiment."
+- "This would require substantial additional resources beyond our current scope."
+- "We believe this is beyond the scope of the current paper but note it as future work."
+
+---
+
+## Common Rebuttal Strategies
+
+### Strategy: Organized Response
+
+**Structure:**
+```markdown
+# Summary of Changes
+
+We thank the reviewers for their constructive feedback. In this response, we:
+- [Major change 1]
+- [Major change 2]
+- [Improvement 3]
+
+We believe these changes have significantly strengthened the paper.
+
+# Response to Reviewer 1
+
+[Point-by-point responses]
+
+# Response to Reviewer 2
+
+[Point-by-point responses]
+```
+
+### Strategy: Evidence-Based Arguments
+
+**Template:**
+```markdown
+# Response to Technical Concern
+
+Our approach is valid because:
+1. [Reason 1 with reference/evidence]
+2. [Reason 2 with data/figure]
+3. [Reason 3 with theoretical justification]
+
+This is supported by [Citation], which demonstrates that [fact].
+```
+
+### Strategy: Highlighting Improvements
+
+**Template:**
+```markdown
+# Major Revisions
+
+1. **New Experiments**: Added comparison with [method] on [dataset]
+2. **New Analysis**: Included ablation study in Table 4
+3. **Clarified Writing**: Rewrote Section 3 for clarity
+4. **Added Limitations**: New section 5.2 acknowledging constraints
+
+These additions strengthen our core claims about [contribution].
+```
+
+---
+
+## Venue-Specific Considerations
+
+### NeurIPS
+
+**Emphasis:**
+- Novelty and conceptual contribution
+- Broader impact (lay summary)
+- Reproducibility checklist
+
+**Rebuttal Focus:**
+- How work advances understanding
+- Significance of contribution
+- Ethical considerations
+
+### ICML
+
+**Emphasis:**
+- Methodological rigor
+- Theoretical contributions
+- Broader impact statement
+
+**Rebuttal Focus:**
+- Soundness of methods
+- Theoretical guarantees
+- Practical implications
+
+### ICLR
+
+**Emphasis:**
+- Experimental thoroughness
+- Limitations acknowledgment
+- LLM usage disclosure
+
+**Rebuttal Focus:**
+- Comprehensive evaluation
+- Honest limitation discussion
+- Transparency about methods
+
+### ACL
+
+**Emphasis:**
+- Linguistic appropriateness
+- Ethical considerations
+- Clear limitations
+
+**Rebuttal Focus:**
+- Language quality and appropriateness
+- Data provenance and ethics
+- Practical utility
+
+---
+
+## Tips for Successful Rebuttals
+
+### Before Writing
+
+1. **Understand the concerns**: Read carefully, identify key issues
+2. **Prioritize**: Address major concerns first
+3. **Be realistic**: Only promise what can deliver
+4. **Gather evidence**: Collect data, results, citations
+5. **Coordinate**: Discuss with co-authors if applicable
+
+### While Writing
+
+1. **Be specific**: Reference exact sections, figures, tables
+2. **Be concise**: Keep responses focused and brief
+3. **Be respectful**: Thank reviewers, acknowledge good points
+4. **Be confident**: Defend your work appropriately
+5. **Be honest**: Acknowledge limitations, don't overpromise
+
+### Common Mistakes to Avoid
+
+- **Defensive tone**: Don't argue excessively
+- **Vague responses**: Be specific about changes
+- **Ignoring concerns**: Address every point
+- **Over-promising**: Only commit to feasible additions
+- **Disorganized:**
+- **Poor formatting:** Use clear sections and structure
+- **Rude language:** Maintain professional tone
+
+---
+
+## Rebuttal Examples
+
+### Example 1: Clarity Concern
+
+**Reviewer:** "The method description in Section 3 is unclear and hard to follow."
+
+**Response:**
+```markdown
+We apologize for the confusion. We have rewritten Section 3.2 to clarify our algorithm:
+
+**Original:** "We process the data using our method and get results."
+
+**Revised:** "Our method consists of three stages: (1) We first normalize the input
+features using [technique]. (2) We then apply our core algorithm, which iteratively [process].
+(3) Finally, we post-process the outputs using [method]."
+
+We also added Algorithm 1 with detailed steps and included a concrete example in
+Appendix A. We believe this revision makes the method reproducible and clear.
+```
+
+### Example 2: Missing Baseline
+
+**Reviewer:** "You should compare with Method X (Smith et al., 2022)."
+
+**Response:**
+```markdown
+Thank you for this suggestion. We have added comparisons with Method X in our
+revised manuscript:
+
+**Results in Table 3:** Our method achieves 92% accuracy compared to Method X's
+85% on dataset Y. This 7% improvement demonstrates the value of our [key innovation].
+
+**Ablation Study:** We show in Table 4 that our improvement comes specifically from
+[feature], not just better optimization.
+
+We chose not to include Method Z because [reason with citation].
+```
+
+### Example 3: Overclaiming
+
+**Reviewer:** "The abstract claims 'state-of-the-art' too broadly."
+
+**Response:**
+```markdown
+We accept this critique. Our original claim was too broad. We have revised the
+abstract:
+
+**Original:** "Our method achieves state-of-the-art performance across all tasks."
+
+**Revised:** "Our method achieves state-of-the-art on [specific tasks A and B] (Table 1)
+and competitive performance on [other tasks C and D] (Table 2)."
+
+We also added a Limitations section (Section 5) noting that performance may vary
+across domains and tasks.
+```
+
+---
+
+## Final Checklist
+
+Before submitting rebuttal:
+
+- [ ] All reviewer concerns addressed
+- [ ] Responses are clear and specific
+- [ ] Tone is respectful and professional
+- [ ] Changes are marked in manuscript
+- [ ] Evidence provided for claims
+- [ ] Feasible commitments made
+- [ ] Co-authors agree with responses
+- [ ] Proofread for errors
+- [ ] Check formatting requirements
+
+---
+
+## Notes
+
+- **Learn from successful rebuttals**: Read well-received papers' reviewer exchanges
+- **Practice humility**: Acknowledge mistakes, show willingness to improve
+- **Focus on core contribution**: Defend your main contribution without overclaiming
+- **Keep it concise**: Reviewers are busy; be respectful of their time
+
+**Updates:** This file is periodically updated with new strategies and examples from successful rebuttals.
diff --git a/.agents/skills/ml-paper-writing/references/knowledge/structure.md b/.agents/skills/ml-paper-writing/references/knowledge/structure.md
new file mode 100644
index 0000000..9c77d88
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/knowledge/structure.md
@@ -0,0 +1,349 @@
+# Paper Structure Patterns
+
+This file contains actionable patterns for organizing ML conference papers, extracted from successful publications.
+
+---
+
+## Introduction Patterns
+
+### Pattern: Contribution Statement Structure
+**Source:** "Attention Is All You Need", NeurIPS (2017)
+**Context:** Introducing the main contribution
+
+**Pattern:**
+1. Start with broader context or problem
+2. Narrow down to specific limitation
+3. Present your approach as solution
+4. State clear contribution upfront
+
+**Example Template:**
+```markdown
+[Context/Problem]: Existing approaches struggle with [limitation] due to [reason].
+
+[Our Approach]: We propose [method name], which [key innovation].
+
+[Contribution]: This achieves [result] and enables [capability].
+```
+
+**Application:** Use this pattern when introducing your main contribution in the first or second paragraph of the introduction.
+
+---
+
+### Pattern: Bulleted Contribution List
+**Source:** "BERT: Pre-training of Deep Bidirectional Transformers", NAACL (2019)
+**Context:** Summarizing contributions for clarity
+
+**Pattern:**
+- Place near end of Introduction (after Related Work)
+- Use 2-4 bullets
+- Each bullet: 1-2 lines max (in two-column format)
+- Start with strong verbs ("We propose", "We demonstrate", "We show")
+
+**Example Template:**
+```markdown
+Our contributions are three-fold:
+- We propose [method], which achieves [result].
+- We demonstrate that [technique] improves [metric].
+- We show that [approach] enables [new capability].
+```
+
+**Application:** Use this when you need to clearly delineate multiple contributions for reviewers.
+
+---
+
+### Pattern: Related Work Organization
+**Source:** "Attention Is All You Need", NeurIPS (2017)
+**Context:** Structuring literature review
+
+**Pattern:**
+- Organize methodologically, not chronologically
+- Group papers by approach/assumption
+- Contrast your approach with each group
+- Use "One line of work uses X whereas we use Y because..."
+
+**Example Template:**
+```markdown
+[Approach Category]: Several approaches use [assumption A] [refs].
+[Contrast]: We adopt [assumption B] because it allows [benefit].
+
+[Alternative Category]: Other methods focus on [aspect C] [refs].
+[Positioning]: We build on this by adding [our innovation].
+```
+
+**Application:** Use this to position your work relative to existing literature without paper-by-paper reviews.
+
+---
+
+## Methods Section Patterns
+
+### Pattern: Algorithm Presentation
+**Source:** "Adam: A Method for Stochastic Optimization", ICLR (2015)
+**Context:** Describing algorithms clearly
+
+**Pattern:**
+1. High-level overview first
+2. Mathematical formulation
+3. Algorithm pseudocode (if complex)
+4. Implementation details
+
+**Example Template:**
+```markdown
+[Overview]: We formulate [problem] as optimization. Let [objective] be our goal.
+
+[Method]: Our approach optimizes [objective] using [technique].
+Specifically, we [algorithm description].
+
+[Algorithm]: The full procedure is shown in Algorithm 1.
+
+[Implementation]: In practice, we [practical details].
+```
+
+**Application:** Use this when presenting novel algorithms or optimization methods.
+
+---
+
+### Pattern: Component Breakdown
+**Source:** "BERT: Pre-training of Deep Bidirectional Transformers", NAACL (2019)
+**Context:** Describing multi-component systems
+
+**Pattern:**
+- Present model architecture first
+- Break down into key components
+- Explain each component's role
+- Show how components interact
+
+**Example Template:**
+```markdown
+[Architecture]: Our model consists of [N components]: [list].
+
+[Component 1]: The [component] module [function].
+[Component 2]: The [component] layer [operation].
+
+[Integration]: These components are stacked sequentially, with [connection pattern].
+```
+
+**Application:** Use this when describing complex architectures with multiple interacting parts.
+
+---
+
+## Results Section Patterns
+
+### Pattern: Quantitative Opening
+**Source:** "BERT: Pre-training of Deep Bidirectional Transformers", NAACL (2019)
+**Context:** Presenting main findings
+
+**Pattern:**
+- Start with strongest quantitative result
+- Use exact numbers and metrics
+- Include comparison to baselines
+- State statistical significance
+
+**Example Template:**
+```markdown
+[Main Result]: Our method achieves [score] on [dataset], improving
+over the previous best of [baseline] by [margin] (p<0.001).
+
+[Comparison]: Compared to baselines:
+- [Method A]: [score]
+- [Method B]: [score]
+- Ours: [score]
+
+[Significance]: Results are averaged over N runs; standard deviations shown in parentheses.
+```
+
+**Application:** Use this to open your Results section with your strongest finding.
+
+---
+
+### Pattern: Table Integration
+**Source:** "Attention Is All All You Need", NeurIPS (2017)
+**Context:** Presenting results in tables
+
+**Pattern:**
+- Bold best results in each column
+- Include direction indicators (↑↓)
+- Provide table caption that stands alone
+- Reference table in text before presenting
+
+**Example Template:**
+```markdown
+Table 1 shows our method's performance. Our model (bold) outperforms
+all baselines across datasets.
+
+[Table content]
+
+As shown in Table 1, we achieve state-of-the-art on [datasets].
+```
+
+**Application:** Use this when presenting comparative results in table format.
+
+---
+
+## Discussion Section Patterns
+
+### Pattern: Limitations First
+**Source:** "Attention Is All You Need", NeurIPS (2017)
+**Context:** Acknowledging limitations proactively
+
+**Pattern:**
+- State limitations clearly in first paragraph
+- Explain why limitations don't undermine core claims
+- Distinguish between limitations and future work
+
+**Example Template:**
+```markdown
+[Limitation Statement]: Our approach has [limitation]. Specifically,
+[constraint].
+
+[Mitigation]: Despite this, our core findings about [main contribution] remain
+valid because [reason].
+
+[Future Work]: Addressing this limitation is an important direction for
+future research.
+```
+
+**Application:** Use this to acknowledge limitations honestly while maintaining paper strength.
+
+---
+
+### Pattern: Broader Impact Framing
+**Source:** "Language Models are Few-Shot Learners", GPT-3 Paper (2020)
+**Context:** Discussing wider implications
+
+**Pattern:**
+- Start with direct implications
+- Expand to related domains
+- Consider societal impact (if appropriate)
+- End with forward-looking statement
+
+**Example Template:**
+```markdown
+[Direct Impact]: Our findings suggest that [implication for domain].
+
+[Broader Implications]: Beyond [specific domain], this approach could
+enable [application in other areas].
+
+[Future Outlook]: As [trend] continues, methods like ours will become
+increasingly important for [reason].
+```
+
+**Application:** Use this when writing the final paragraphs of Discussion or Conclusion.
+
+---
+
+## Transition Patterns
+
+### Pattern: Section Transitions
+**Source:** "Attention Is All You Need", NeurIPS (2017)
+**Context:** Moving between sections
+
+**Pattern:**
+- Introduction → Methods: "We now describe our approach."
+- Methods → Results: "We evaluate our method on [tasks]."
+- Results → Discussion: "These results suggest that [insight]."
+
+**Example Template:**
+```markdown
+[Transition to Methods]: Having established [motivation], we present
+our method.
+
+[Transition to Results]: To validate our approach, we conduct experiments
+on [datasets].
+
+[Transition to Discussion]: The experimental results reveal several insights
+about [phenomenon], which we discuss next.
+```
+
+**Application:** Use these to create smooth transitions between major sections.
+
+---
+
+## Notes
+
+- **Consistency**: Maintain consistent terminology throughout the paper
+- **Flow**: Each section should logically lead to the next
+- **Clarity**: Make structure explicit with signposting
+- **Audience**: Write for tired reviewers - make their job easy
+
+
+
+## 何凯明(Kaiming He)的论文结构模式
+
+> 来源: 分析了何凯明的 19 篇代表性论文
+> 添加时间: {datetime.now().strftime('%Y-%m-%d')}
+
+### 摘要结构模式
+
+何凯明在摘要中常用的开场模式:
+
+**模式 1: 直接陈述贡献**
+```
+We introduce [method name], a [key feature] framework for [task].
+We show that [method] achieves [result] on [dataset].
+```
+
+**模式 2: 问题-解决方案**
+```
+[Problem] is difficult for [task]. We present [solution]
+that addresses this by [key mechanism].
+```
+
+**示例** (来自 ResNet):
+```
+Deeper neural networks are more difficult to train. We present a
+residual learning framework to ease the training of networks that
+are substantially deeper than those used previously.
+```
+
+### 引言结构模式
+
+**三段式引言:**
+1. **问题陈述** (2-3段) - 描述挑战和现有方法
+2. **方法概述** (1-2段) - 简洁介绍解决方案
+3. **主要贡献** (1段) - 列表形式,每条 1-2 行
+
+**贡献列表模式:**
+```markdown
+- 我们提出了 [方法],解决了 [问题]
+- 我们展示了 [方法] 在 [数据集] 上的 [性能提升]
+- 我们证明了 [原理] 是有效的
+```
+
+### 方法部分结构
+
+何凯明的方法部分通常包含:
+
+1. **符号定义** - 清晰定义所有变量和符号
+2. **问题形式化** - 数学公式表达
+3. **方法描述** - 逐步算法解释
+4. **实现细节** - 网络架构、训练设置
+
+**常用句式:**
+- "Let us consider [变量] as [定义]"
+- "Formally, we define [公式]"
+- "We hypothesize that [假设]"
+- "To the extreme, [极端情况]"
+
+### 实验部分结构
+
+1. **实验设置** - 数据集、评价指标、实现细节
+2. **主要结果** - 核心性能对比
+3. **消融实验** - 组件分析
+4. **可视化分析** - 图表展示
+
+**结果描述模式:**
+- "Table X shows that [结果]"
+- "Fig. Y illustrates that [观察]"
+- "Our method achieves [指标] on [任务]"
+- "This represents a [X]% improvement over baseline"
+
+### 相关工作部分组织
+
+何凯明倾向于**主题式组织**而非时间顺序:
+
+**好的组织方式:**
+- "One line of work uses [方法A] [引用], whereas we use [方法B]"
+- "[方法A] [引用] assumes [假设], but we show [反驳]"
+
+**避免:**
+- "X et al. introduced [方法]. Y et al. improved [方法]"
diff --git a/.agents/skills/ml-paper-writing/references/knowledge/submission-guides.md b/.agents/skills/ml-paper-writing/references/knowledge/submission-guides.md
new file mode 100644
index 0000000..993df52
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/knowledge/submission-guides.md
@@ -0,0 +1,326 @@
+# Submission Guides and Venue Requirements
+
+This file contains venue-specific submission requirements, formatting guidelines, and checklist items extracted from ML conference and journal publications.
+
+---
+
+## NeurIPS Requirements
+
+### Format Requirements
+**Source:** NeurIPS 2025 Conference Guidelines
+
+**Page Limits:**
+- Main paper: 9 pages (excluding references)
+- References: Unlimited (don't count toward page limit)
+- Appendices: Allowed but reviewers not required to read
+
+**Required Sections:**
+- Abstract: 150-250 words
+- Introduction: Must clearly state contribution
+- Methods: Sufficient for reproduction
+- Experiments: Comprehensive evaluation
+- Discussion: Interpret results and limitations
+- References: Complete citations
+- **Checklist**: Mandatory submission checklist (16 items)
+- **Lay Summary**: Required for accepted papers (1 page, non-technical)
+
+**Formatting:**
+- Double-blind review (anonymize submissions)
+- LaTeX template required
+- 9pt font, two-column format
+- Margins: 1 inch on all sides
+
+**Submission Checklist Items:**
+1. Do the main claims of the paper match the checklist?
+2. Have you checked the checklist for missing items?
+3. Is the paper anonymized?
+4. Are all figures/tables clear and readable?
+5. Have you included code and data availability statements?
+6. Are all equations properly formatted?
+7. Is the abstract within word limit?
+8. Are all citations complete and correct?
+9. Have you addressed potential ethical concerns?
+10. Are experimental settings clearly described?
+11. Is statistical significance properly reported?
+12. Have you included limitations?
+13. Is the broader impact discussed (if required)?
+14. Are all figures referenced in text?
+15. Is the supplementary material well-organized?
+16. Have you proofread for typos and grammar?
+
+---
+
+## ICML Requirements
+
+### Format Requirements
+**Source:** ICML 2026 Conference Guidelines
+
+**Page Limits:**
+- Main paper: 8 pages
+- Camera-ready: +1 page (9 total)
+- References: Unlimited (don't count toward page limit)
+
+**Required Sections:**
+- Abstract: Clear summary of contribution
+- Introduction: Problem and contribution
+- Methods: Complete description
+- Experiments: Thorough evaluation
+- **Broader Impact Statement**: Required (after conclusion)
+- References: Complete citations
+
+**Formatting:**
+- Double-blind review (anonymize submissions)
+- LaTeX template required
+- Two-column format
+- Margins as per template
+
+**Broader Impact Statement:**
+- Discuss positive and negative societal impacts
+- Consider biases, fairness, environmental impact
+- 1 page maximum
+- Required for all submissions
+
+---
+
+## ICLR Requirements
+
+### Format Requirements
+**Source:** ICLR 2026 Conference Guidelines
+
+**Page Limits:**
+- Main paper: 9 pages
+- Camera-ready: +1 page (10 total)
+- References: Unlimited (don't count toward page limit)
+
+**Required Sections:**
+- Abstract: Summary of contribution
+- Introduction: Clear problem statement
+- Methods: Reproducible description
+- Experiments: Comprehensive evaluation
+- **Limitations Section**: MANDATORY
+- **LLM Disclosure**: Required if using LLMs
+- References: Complete citations
+
+**Formatting:**
+- Double-blind review (anonymize submissions)
+- LaTeX template required
+- Two-column format
+
+**LLM Disclosure Requirements:**
+- Describe LLM use in the paper
+- Include model details (architecture, training data, compute)
+- Acknowledge LLM limitations
+- Note any automated text generation
+
+---
+
+## ACL Requirements
+
+### Format Requirements
+**Source:** ACL 2025 Conference Guidelines
+
+**Page Limits:**
+- Main paper: 8 pages (long papers)
+- Short papers: 4 pages
+- References: Unlimited (don't count toward page limit)
+
+**Required Sections:**
+- Abstract: 150-200 words
+- Introduction: Background and contribution
+- Methods: Technical description
+- Experiments: Evaluation
+- **Limitations Section**: MANDATORY
+- **Ethics Statement**: Required if applicable
+- References: Complete citations
+
+**Formatting:**
+- Double-blind review (anonymize submissions)
+- LaTeX template required (ACL style files)
+- Two-column format
+
+**Ethics Considerations:**
+- Human subjects research: IRB approval required
+- Data privacy: Anonymization and consent
+- Environmental impact: Compute resource usage
+
+---
+
+## AAAI Requirements
+
+### Format Requirements
+**Source:** AAAI 2026 Conference Guidelines
+
+**Page Limits:**
+- Main paper: 7 pages
+- Camera-ready: +1 page (8 total)
+- References: Unlimited (don't count toward page limit)
+
+**Required Sections:**
+- Abstract: 150-250 words
+- Introduction: Problem and contribution
+- Methods: Technical description
+- Experiments: Evaluation
+- References: Complete citations
+
+**Formatting:**
+- Double-blind review (anonymize submissions)
+- **Strict style file adherence**: Must use official template
+- Two-column format
+- No modifications to style files
+
+**Strict Requirements:**
+- Follow AAAI template exactly
+- No custom formatting beyond template
+- Font sizes and margins as specified
+- Page limits strictly enforced
+
+---
+
+## COLM Requirements
+
+### Format Requirements
+**Source:** COLM 2025 Conference Guidelines
+
+**Page Limits:**
+- Main paper: 9 pages
+- Camera-ready: +1 page (10 total)
+- References: Unlimited (don't count toward page limit)
+
+**Required Sections:**
+- Abstract: Summary of contribution
+- Introduction: Problem and contribution
+- Methods: Technical description
+- Experiments: Evaluation
+- **Focus**: Language models specifically
+- References: Complete citations
+
+**Formatting:**
+- Double-blind review (anonymize submissions)
+- LaTeX template required
+- Two-column format
+
+**Language Model Focus:**
+- Papers should address language model challenges
+- Method contributions applicable to LM community
+- Experimental setup relevant to language tasks
+
+---
+
+## Common Submission Requirements
+
+### Double-Blind Review
+**Applies to:** NeurIPS, ICML, ICLR, ACL, AAAI, COLM
+
+**Requirements:**
+- Remove author names and affiliations
+- Anonymize citations to own work (use [Anonymous, 2024])
+- Remove acknowledgments that reveal identity
+- Avoid distinctive phrases that identify authors
+- Supplementary materials must also be anonymized
+
+**Common Mistakes:**
+- Forgetting to anonymize GitHub links
+- Including author names in file paths
+- Thanking specific colleagues in acknowledgments
+- Citing own work with author names
+
+### Code and Data Availability
+
+**Increasingly Required:**
+
+**NeurIPS:** Encourages code/data availability statements
+**ICML:** Encourages reproducibility
+**ICLR:** Recommends code sharing
+
+**Best Practices:**
+- Include code repository link (anonymized if under review)
+- Provide data access instructions
+- Describe hyperparameters and settings
+- Note any proprietary constraints
+
+### Supplementary Materials
+
+**General Guidelines:**
+- Appendices allowed but not required reading
+- Use for additional experiments, proofs, tables
+- Keep main paper self-contained
+- Reference supplementary in main text
+
+**Formatting:**
+- Same style as main paper
+- Clear section numbering (S1, S2, etc.)
+- Include in submission PDF or as separate file
+
+---
+
+## Citation Styles
+
+### Common Styles in ML
+
+**IEEE Style (Numbered):**
+```
+[1] J. Doe, "Paper title," Conference Name, Year.
+[2] A. Smith, "Another paper," Journal Name, vol. 10, pp. 1-15, 2020.
+```
+
+**ACM Style (Numbered):**
+```
+[J. Doe and A. Smith, "Paper title," Conference Name, Year.
+[A. Smith and B. Jones, "Another paper," Journal Name, 2020.
+```
+
+**Author-Year (APA-like):**
+```
+Doe (2020) J. Doe. Paper title. Conference Name.
+Smith (2019) A. Smith. Another paper. Journal Name.
+```
+
+### Reference Management
+
+**Best Practices:**
+- Use consistent style throughout
+- Include DOIs when available
+- Provide arXiv links for preprints
+- Check for broken links
+- Verify all citations before submission
+
+---
+
+## Checklists and Templates
+
+### Pre-Submission Checklist
+
+**Content:**
+- [ ] Novel contribution clearly stated
+- [ ] Related work comprehensive
+- [ ] Methods reproducible
+- [ ] Results support all claims
+- [ ] Limitations acknowledged
+- [ ] Broader impact addressed (if required)
+- [ ] Ethics compliance verified
+
+**Formatting:**
+- [ ] Page limits respected
+- [ ] Style file followed exactly
+- [ ] References complete and consistent
+- [ ] Figures/tables clear and readable
+- [ ] Equations numbered and referenced
+- [ ] Supplementary material organized
+
+**Anonymity:**
+- [ ] Author names removed
+- [ ] Acknowledgements anonymized
+- [ ] Self-citations anonymized
+- [ ] GitHub links anonymized
+- [ ] Identifying information removed
+
+---
+
+## Notes
+
+- **Always verify**: Requirements change between years - always check current conference guidelines
+- **Plan ahead**: Some venues have strict formatting - start early
+- **Read examples**: Look at well-received papers from previous years
+- **Ask for help**: If unsure about a requirement, consult program chairs or experienced colleagues
+
+**Updates:** This file is regularly updated as new conference requirements become available.
diff --git a/.agents/skills/ml-paper-writing/references/knowledge/theory-driven-papers-kaiming-he.md b/.agents/skills/ml-paper-writing/references/knowledge/theory-driven-papers-kaiming-he.md
new file mode 100644
index 0000000..8c0a0e3
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/knowledge/theory-driven-papers-kaiming-he.md
@@ -0,0 +1,561 @@
+# Theory-Driven Papers: From First Principles
+
+**Source**: Kaiming He et al., "Mean Flows for One-step Generative Modeling" (2025)
+
+**Paper Type**: Theory-driven / First-principles paper
+
+**Core Pattern**: Start from first principles → Derive theory → Build method → Demonstrate superiority
+
+---
+
+## 1. Abstract Structure: The "Principle Introduction" Framework
+
+### Pattern: From Theory to Results
+
+**Template**:
+```markdown
+Abstract:
+1. [Background] Established framework provides [foundation]
+2. [Problem] Recent research focuses on [challenge], but existing methods have [limitation]
+3. [Critique] Despite encouraging results, [specific problem with prior approaches]
+4. [Core Concept] We introduce [new concept], in contrast to [old concept]
+5. [Theory] Solely from definition, we derive [theoretical foundation]
+6. [Advantage] This provides [principled basis] vs [heuristic approaches]
+7. [Results] Achieves [strong result] - [relative improvement] over SOTA
+8. [Significance] Self-contained, [independence from external components]
+```
+
+### MeanFlows Abstract Example (annotated):
+
+```latex
+Flow Matching provides an intuitive and conceptually simple framework for
+constructing flow paths that transport one distribution to another.
+
+Recent research has paid significant attention to few-step—and in
+particular, one-step, feedforward—generative models.
+
+Despite encouraging results, the consistency constraint is imposed as a
+property of the network's behavior, while the properties of the underlying
+ground-truth field that should guide learning remain unknown.
+
+The core idea is to introduce a new ground-truth field representing the
+average velocity, in contrast to the instantaneous velocity typically
+modeled in Flow Matching.
+
+Solely originated from this definition, we derive a well-defined, intrinsic
+relation between the average and instantaneous velocities, which naturally
+serves as a principled basis for guiding network training.
+
+Our method achieves an FID of 3.43 using 1-NFE generation, significantly
+outperforming previous state-of-the-art methods by a relative margin of 50%
+to 70%.
+
+It is trained entirely from scratch, without any pre-training, distillation,
+or curriculum learning.
+```
+
+### Key Techniques:
+
+1. **"Provides an intuitive and conceptually simple framework"** - Light touch introduction
+2. **"Recent research has paid significant attention to..."** - Establish context
+3. **"Despite encouraging results..."** - The critique pattern (acknowledge then problem)
+4. **"The core idea is to introduce..."** - Clear concept statement
+5. **"in contrast to"** - Conceptual differentiation
+6. **"Solely originated from this definition"** - First-principles emphasis
+7. **"well-defined, intrinsic relation"** - Theory keywords
+8. **"naturally serves as a principled basis"** - Naturalness emphasis
+9. **Relative improvement (50-70%)** - More impactful than absolute numbers
+10. **Negative list** - What you DON'T need (pre-training, distillation, curriculum)
+
+---
+
+## 2. Introduction: The "Critique-First" Framework
+
+### Pattern: Build Up → Identify Flaw → Propose Alternative
+
+**Structure**:
+```markdown
+1. [Background] Established field with [characteristic]
+2. [Problem Shift] Research focus has moved to [new direction]
+3. [Specific Problem] Existing approaches address this by [method]
+4. [The Critique] Despite [acknowledgment], [fundamental problem]
+ - "imposed as a property of [X]"
+ - "[Y] remains unknown"
+5. [Consequences] Consequently, [practical problems]
+6. [Your Concept] We propose [alternative] with [differentiation]
+7. [Theory] From [first principles], we derive [result]
+8. [Advantage] This is [principled/natural/intrinsic] vs [heuristic/artificial]
+9. [Results] [Quantitative result] with [qualitative advantage]
+```
+
+### MeanFlows Introduction Flow:
+
+#### Background (Light Touch)
+```latex
+Flow Matching provides an intuitive and conceptually simple framework
+for constructing flow paths that transport one distribution to another.
+```
+
+**Technique**:
+- "intuitive and conceptually simple" - Modest, not revolutionary
+- Focus on what it IS, not how important it is
+
+#### Problem Shift
+```latex
+Closely related to diffusion models, Flow Matching focuses on the velocity
+fields that guide model training.
+
+Both Flow Matching and diffusion models perform iterative sampling during
+generation. Recent research has paid significant attention to few-step
+—and in particular, one-step, feedforward—generative models.
+```
+
+**Technique**:
+- "Closely related to" - Establish connection
+- "Recent research has paid significant attention to" - Research trend
+- "few-step—and in particular, one-step" - Progressive emphasis
+
+#### The Critique (Key Pattern)
+```latex
+Consistency Models [46, 43, 15, 31] achieve few-step generation by enforcing
+a consistency constraint on the velocity field.
+
+Despite encouraging results, the consistency constraint is imposed as a
+property of the network's behavior, while the properties of the underlying
+ground-truth field that should guide learning remain unknown.
+
+Consequently, training can be unstable and requires a carefully designed
+'discretization curriculum' to progressively constrain the time domain.
+```
+
+**Technique**:
+- **"Despite encouraging results"** - Always acknowledge first
+- **"imposed as a property of the network's behavior"** - It's artificial
+- **"underlying ground-truth field...remain unknown"** - Missing theory
+- **"Consequently"** - Show practical consequences
+- **Specific problems**: "training can be unstable", "requires...curriculum"
+
+#### Your Concept
+```latex
+The core idea is to introduce a new ground-truth field representing the
+average velocity, in contrast to the instantaneous velocity typically
+modeled in Flow Matching.
+```
+
+**Technique**:
+- **"The core idea is to introduce"** - Direct statement
+- **"in contrast to"** - Conceptual differentiation
+- **Old vs New**: "average velocity" vs "instantaneous velocity"
+
+#### Theory First
+```latex
+Average velocity is defined as the ratio of displacement to a time interval,
+with displacement given by the time integral of the instantaneous velocity.
+
+Solely originated from this definition, we derive a well-defined, intrinsic
+relation between the average and instantaneous velocities, which naturally
+serves as a principled basis for guiding network training.
+```
+
+**Technique**:
+- **"Solely originated from this definition"** - Pure derivation
+- **"well-defined, intrinsic relation"** - Theory keywords
+- **"naturally serves as"** - Not forced
+- **"principled basis"** - Foundation
+
+---
+
+## 3. Methods Section: The "Named Identity" Pattern
+
+### Pattern: Define → Derive → Name
+
+**Structure**:
+```markdown
+1. [Concept Name] Define with formal notation
+2. [Motivation] Explain why we need this
+3. [Derivation] Step-by-step with justifications
+4. [Naming] Give it a memorable name
+5. [Comparison] Contrast with prior approaches
+```
+
+### MeanFlows Example:
+
+#### Step 1: Concept Naming
+```latex
+Average Velocity. We define average velocity as the displacement between
+two time steps t and r (obtained by integration) divided by the time interval.
+
+Formally, the average velocity u is:
+
+u(zt, r, t) ≜ 1/(t−r) ∫_r^t v(zτ, τ)dτ. (3)
+```
+
+**Techniques**:
+- **Bold heading**: "Average Velocity." - Makes it memorable
+- **Text description first**: Explain before formula
+- **"Formally,"**: Signals math coming
+- **≜ symbol**: "defined as" (clearer than =)
+
+#### Step 2: Derivation with Motivation
+```latex
+To have a formulation amenable to training, we rewrite Eq. (3) as:
+
+(t−r)u(zt, r, t) = ∫_r^t v(zτ, τ)dτ. (4)
+
+Now we differentiate both sides with respect to t, treating r as independent
+of t. This leads to:
+
+d/dt(t−r)u = d/dt∫_r^t v(zτ, τ)dτ
+
+⇒ u + (t−r)d/dt u = v(zt, t), (5)
+
+where the manipulation of the left hand side employs the product rule and
+the right hand side uses the fundamental theorem of calculus.
+```
+
+**Techniques**:
+- **"To have a formulation amenable to training"** - Explain why
+- **"Now we differentiate..."** - Guide reader
+- **Step-by-step**: Don't skip
+- **"where..."**: Explain each manipulation
+- **"⇒" symbol**: Clear direction
+
+#### Step 3: Naming the Identity
+```latex
+Rearranging terms, we obtain the identity:
+
+u(zt, r, t) = v(zt, t) − (t−r)d/dt u(zt, r, t) (6)
+
+We refer to this equation as the "MeanFlow Identity", which describes the
+relation between v and u.
+```
+
+**Techniques**:
+- **"Rearranging terms, we obtain..."** - What you did
+- **"We refer to this equation as the 'X Identity'"** - Brand it
+- **Explain**: "which describes..." - What it does
+
+---
+
+## 4. Comparison: Principled vs Heuristic
+
+### Pattern: Emphasize Theoretical Independence
+
+**Structure**:
+```markdown
+1. [Your Core] At the core of our method is [fundamental principle]
+2. [Independence] This [does not depend on / is independent of] [implementation]
+3. [Contrast] In contrast, prior works typically rely on [heuristic/artificial constraint]
+4. [Qualitative] [Natural/principled/intrinsic] vs [imposed/empirical/heuristic]
+```
+
+### MeanFlows Example:
+
+```latex
+At the core of our method is the functional relationship between two
+underlying fields v and u, which naturally leads to the MeanFlow Identity
+that u must satisfy (Eq. (6)).
+
+This identity does not depend on the introduction of neural networks.
+
+In contrast, prior works typically rely on extra consistency constraints,
+imposed on the behavior of the neural network.
+```
+
+**Techniques**:
+- **"At the core of our method is..."** - What matters
+- **"naturally leads to"** - Not forced
+- **"does not depend on"** - Independence
+- **"In contrast"** - Clear pivot
+- **"imposed on"** - Theirs is artificial
+
+### Specific Method Comparison
+
+```latex
+Consistency Models [46, 43, 15, 31] are focused on paths anchored at the
+data side: in our notations, this corresponds to fixing r≡0 for any t.
+
+As a result, Consistency Models are conditioned on a single time variable,
+unlike ours.
+```
+
+**Techniques**:
+- **"focused on X"** - Their scope
+- **"in our notations, this corresponds to..."** - Precise mapping
+- **"As a result"** - Consequence
+- **"unlike ours"** - One-word differentiation
+
+---
+
+## 5. Results: Significant Improvements with Context
+
+### Pattern: Relative Improvement + Independence
+
+**Structure**:
+```markdown
+1. [Absolute] We achieve [metric] on [task]
+2. [Relative] This represents [X-Y%] relative improvement over [comparison]
+3. [Context] Our method is [self-contained / independent]
+4. [Negative List] without [list of things you don't need]
+```
+
+### MeanFlows Example:
+
+```latex
+Our method achieves an FID of 3.43 using 1-NFE generation.
+
+This result significantly outperforms previous state-of-the-art methods in
+its class by a relative margin of 50% to 70% (Fig. 1).
+
+In addition, our method stands as a self-contained generative model: it is
+trained entirely from scratch, without any pre-training, distillation, or
+curriculum learning.
+```
+
+**Techniques**:
+- **Absolute first**: "FID of 3.43"
+- **"significantly outperforms"** - Strong but not "dramatically"
+- **"by a relative margin of 50% to 70%"** - Range, not single number
+- **Reference to figure**: "(Fig. 1)"
+- **"In addition"** - Second dimension of value
+- **"self-contained"** - Independence keyword
+- **"trained entirely from scratch"** - Complete independence
+- **Negative list**: "without any pre-training, distillation, or curriculum learning"
+
+---
+
+## 6. Table Design: System-Level Comparison
+
+### Pattern: Multiple Paradigms, Clear Highlighting
+
+**Structure**:
+```markdown
+Table X:
+┌────────────────────────────────────┐
+│ Left side: Your direct competitors │
+│ (1-NFE and 2-NFE methods) │
+├────────────────────────────────────┤
+│ Right side: Other paradigms │
+│ (GANs, autoregressive, etc.) │
+├────────────────────────────────────┤
+│ **Your method** (bold, positioned) │
+└────────────────────────────────────┘
+```
+
+### MeanFlows Table 2 Organization:
+
+```latex
+Table 2: Comparison on ImageNet 256×256.
+
+Left: 1-NFE and 2-NFE diffusion/flow models
+Right: Other generative models
+
+Highlighted: MeanFlow (our method)
+```
+
+**Key Techniques**:
+1. **Split paradigm**: Direct competitors on left, others on right
+2. **Fair metrics**: params, NFE, FID (same for all)
+3. **Bold your method**: Visual emphasis
+4. **Position strategically**: Where you look best
+5. **Comprehensive**: Include all major paradigms
+
+---
+
+## 7. Figure Design: Visual Storytelling
+
+### Pattern: Multi-Panel Narrative
+
+**MeanFlows Figure 1**: "One-step generation on ImageNet 256×256 from scratch"
+
+**Structure**:
+- **Main panel**: Generated images (visual evidence)
+- **Caption**: Detailed comparison table
+- **Annotations**: FID scores of competing methods
+- **Highlight**: "Our MeanFlow (MF) model achieves significantly better..."
+
+**Techniques**:
+1. **Title tells the story**: "from scratch" - key differentiator
+2. **Images + numbers**: Both visual and quantitative
+3. **Competitor scores in caption**: Reader doesn't need to flip pages
+4. **"significantly better"**: In the figure caption itself
+
+---
+
+## 8. Ablation Study: Destructive Testing
+
+### Pattern: Prove Necessity by Breaking Things
+
+**Structure**:
+```markdown
+Table X:
+┌──────────────────────────────────┐
+│ (a) Vary one design dimension │
+│ - Show effect of parameter │
+│ - Mark default in gray │
+├──────────────────────────────────┤
+│ (b) Destructive comparison │
+│ - Intentionally use WRONG values │
+│ - Show only correct works │
+└──────────────────────────────────┘
+```
+
+### MeanFlows Table 1 Example:
+
+#### Part (a): Design Sweep
+```latex
+(a) Ratio of sampling r≠t
+% of r≠t FID, 1-NFE
+0% (= FM) 328.91
+25% 61.06
+50% 63.14
+100% 67.32
+```
+
+**Techniques**:
+- **Descriptive caption**: "Ratio of sampling r≠t"
+- **Show failure mode**: "0% (= FM) 328.91" - pure FM fails
+- **Range**: 0% to 100% of parameter
+- **Default marked**: In original (not shown here)
+
+#### Part (b): Destructive Testing
+```latex
+(b) JVP computation
+jvp tangent FID, 1-NFE
+(v, 0, 1) 61.06
+(v, 0, 0) [wrong] 268.06
+(v, 1, 0) [wrong] 329.22
+(v, 1, 1) [wrong] 137.96
+```
+
+**Techniques**:
+- **"Destructive comparison"** in caption
+- **"intentionally performed"** in text
+- **Only first row works**: Others are wrong by design
+- **Proves necessity**: "meaningful results are achieved only when..."
+
+---
+
+## 9. Writing Style: Theory Keywords
+
+### Emphasis Words for Theory-Driven Papers
+
+**Naturalness Keywords** (use these to describe your theory):
+- "naturally" - "This naturally leads to..."
+- "intrinsic" - "intrinsic relation"
+- "well-defined" - "well-defined problem"
+- "principled" - "principled basis"
+- "first principles" - "from first principles"
+- "solely originated from" - "solely from definition"
+
+**Independence Keywords**:
+- "does not depend on" - Theory independence
+- "independent of" - Implementation independence
+- "self-contained" - System independence
+- "from scratch" - No external dependencies
+- "without any X" - Negative list
+
+**Differentiation Keywords**:
+- "in contrast to" - Conceptual contrast
+- "unlike" - Direct comparison
+- "typically" - "typically modeled" (their approach)
+- "prior works typically rely on" - Their limitation
+- "imposed as" - Artificial constraint (theirs)
+
+### Avoid These (Too Promotional):
+- ❌ "revolutionary" - Too strong
+- ❌ "breakthrough" - Let others say it
+- ❌ "completely eliminates" - Too absolute
+- ✅ "significantly outperforms" - Strong but measured
+- ✅ "substantial improvement" - Professional
+
+---
+
+## 10. Common Mistakes in Theory Papers
+
+### ❌ Don't:
+- Derive without explaining motivation - Why are we doing this?
+- Skip steps in derivation - Readers aren't you
+- Use heuristics without admitting it - Be honest
+- Overclaim - "proves optimal" vs "improves over"
+- Forget to acknowledge dependencies - If you use X, say it
+
+### ✅ Do:
+- Start from first principles explicitly
+- Give each equation/dentity a memorable name
+- Show "destructive" ablations to prove necessity
+- Report relative improvements (more impactful)
+- Use "principled" keywords consistently
+- Admit what you DON'T need (negative list)
+
+---
+
+## 11. Revision Checklist for Theory-Driven Papers
+
+**Before Submission, Verify:**
+
+- [ ] Abstract starts from established framework (not "X is important")
+- [ ] Introduction has "Despite encouraging results..." critique
+- [ ] Core concept has a memorable name
+- [ ] Derivation is step-by-step with justifications
+- [ ] Key equation is named ("X Identity")
+- [ ] Theory is contrasted as "principled" vs "heuristic"
+- [ ] Results include relative improvement (X-Y%)
+- [ ] Self-containment is emphasized (what you don't need)
+- [ ] Ablations include destructive tests
+- [ ] Tables organize by paradigm, highlight your position
+- [ ] Figures tell visual story with captions
+- [ ] Theory keywords used consistently (principled, intrinsic, natural)
+
+---
+
+## 12. Example: Applying This Pattern
+
+### Original Idea (Not Theory-Driven):
+"We propose a new training method that improves FID by 20%."
+
+### Theory-Driven Version:
+"Flow Matching provides an intuitive framework for generative modeling,
+but recent one-step methods impose consistency constraints heuristically.
+Despite encouraging results, the underlying ground-truth field properties
+remain unknown. We introduce average velocity (in contrast to instantaneous
+velocity), deriving the MeanFlow Identity solely from first principles.
+This provides a principled basis for training, achieving 3.43 FID with
+50-70% relative improvement. Our method is self-contained, trained from
+scratch without pre-training or distillation."
+
+**The Theory-Driven Frame**:
+- Foundation: Flow Matching (established)
+- Problem: Heuristic constraints (theory gap)
+- Concept: Average velocity (new)
+- Theory: MeanFlow Identity (derived)
+- Result: Strong + independent (no external deps)
+
+---
+
+## Paper Metadata
+
+**Title**: Mean Flows for One-step Generative Modeling
+
+**Authors**: Kaiming He et al.
+
+**Year**: 2025
+
+**Key Concepts**:
+- Average velocity vs instantaneous velocity
+- MeanFlow Identity
+- Principled vs heuristic training
+- Self-contained generative models
+
+---
+
+## Extracted by
+
+**Date**: 2026-01-26
+
+**Source**: Analysis of Mean Flows paper (16 pages)
+
+**Extraction Focus**: Theory-driven paper writing patterns, first-principles
+derivations, principled vs heuristic positioning
+
+**For Integration**: ml-paper-writing skill knowledge base
diff --git a/.agents/skills/ml-paper-writing/references/knowledge/writing-techniques.md b/.agents/skills/ml-paper-writing/references/knowledge/writing-techniques.md
new file mode 100644
index 0000000..ae91c01
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/knowledge/writing-techniques.md
@@ -0,0 +1,637 @@
+# Writing Techniques and Patterns
+
+This file contains actionable sentence patterns, transition phrases, and writing techniques extracted from successful ML conference papers.
+
+---
+
+## Transition Phrases
+
+### Literature Review Transitions
+**Source:** Various NeurIPS/ICML papers
+
+**Introducing Problems:**
+- "However, these methods suffer from [limitation]."
+- "Despite recent progress, [challenge] remains unsolved."
+- "While existing approaches address [aspect], they struggle with [issue]."
+
+**Presenting Solutions:**
+- "To address this, we propose..."
+- "We overcome this limitation by..."
+- "Our key insight is that..."
+
+**Connecting to Related Work:**
+- "Building on [prior work], we extend..."
+- "Unlike approaches that [method], we instead..."
+- "Following the success of [paper], we apply..."
+
+### Methods Section Transitions
+**Source:** "BERT: Pre-training of Deep Bidirectional Transformers", NAACL (2019)
+
+**Describing Components:**
+- "Our model consists of two main components: [A] and [B]."
+- "We divide our approach into [N] stages: [list]."
+
+**Explaining Rationale:**
+- "We choose this architecture because..."
+- "This formulation allows us to..."
+- "Motivated by [intuition], we design..."
+
+### Results Section Transitions
+**Source:** "Attention Is All You Need", NeurIPS (2017)
+
+**Presenting Findings:**
+- "Our method achieves [result], outperforming baselines by [margin]."
+- "As shown in Table 1, our approach..."
+- "Figure 2 demonstrates that..."
+
+**Analyzing Results:**
+- "These results suggest that [insight]."
+- "Notably, we observe that..."
+- "This improvement indicates that..."
+
+### Discussion Transitions
+**Source:** "Language Models are Few-Shot Learners", GPT-3 (2020)
+
+**Interpreting Findings:**
+- "These findings reveal that..."
+- "This performance gap suggests that..."
+- "The strong correlation between...indicates..."
+
+**Connecting to Broader Context:**
+- "Beyond the specific task, our results imply..."
+- "This has important implications for..."
+
+**Acknowledging Limitations:**
+- "It is important to note that our study is limited to..."
+- "While these results are promising, several questions remain..."
+
+---
+
+## Sentence Patterns
+
+### Claim Presentation
+**Source:** "Attention Is All You Need", NeurIPS (2017)
+
+**Strong Claims:**
+- "We show that [approach] achieves [result]."
+- "We demonstrate that [method] outperforms..."
+- "We prove that [technique] converges to..."
+
+**Nuanced Claims:**
+- "Our results suggest that [factor] contributes to..."
+- "We observe that [phenomenon] emerges when..."
+- "Experiments indicate that [approach] is particularly effective for..."
+
+### Technical Description
+**Source:** "Adam: A Method for Stochastic Optimization", ICLR (2015)
+
+**Algorithm Description:**
+- "Formally, we optimize [objective] using [method]."
+- "The update rule for [parameter] is given by..."
+- "We modify the standard [approach] by..."
+
+**Implementation Details:**
+- "In practice, we implement [feature] as..."
+- "For computational efficiency, we approximate..."
+- "We initialize [parameters] using..."
+
+### Results Presentation
+**Source:** "BERT: Pre-training of Deep Bidirectional Transformers", NAACL (2019)
+
+**Quantitative Results:**
+- "Our model achieves [score] (±[std]), improving over..."
+- "On [dataset], we obtain [result], compared to..."
+- "We observe a [percentage]% improvement over baselines."
+
+**Statistical Reporting:**
+- "Results are averaged over N runs with different seeds."
+- "Standard deviations are shown in parentheses."
+- "The improvement is statistically significant (p<0.01)."
+
+---
+
+## Clarity Techniques
+
+### Active Voice Usage
+**Source:** Various well-written papers
+
+**Passive (avoid):**
+- "The model was trained using..."
+- "Experiments were conducted on..."
+
+**Active (prefer):**
+- "We trained the model using..."
+- "We conducted experiments on..."
+
+**Guideline:** Use active voice for actions you performed. Use passive for general facts or when the actor is unclear.
+
+### Specificity Over Generality
+**Source:** "Attention Is All You Need", NeurIPS (2017)
+
+**Vague (avoid):**
+- "This approach improves performance."
+- "The method learns good representations."
+
+**Specific (prefer):**
+- "This approach improves accuracy by 15%."
+- "The method learns representations that transfer to downstream tasks."
+
+**Guideline:** Be quantitative whenever possible. Use specific numbers and metrics.
+
+### Signposting
+**Source:** "BERT: Pre-training of Deep Bidirectional Transformers", NAACL (2019)
+
+**Section Openings:**
+- "We now describe our model architecture."
+- "We evaluate on three tasks: [list]."
+- "The results suggest three key insights:"
+
+**Internal Structure:**
+- "First, we [action]. Next, we [action]. Finally, we [action]."
+- "Our approach has three stages: [A], [B], and [C]."
+
+**Guideline:** Use explicit signposting to help tired reviewers follow your paper.
+
+---
+
+## Common Phrase Templates
+
+### Opening Abstract
+**Good Examples:**
+- "We introduce [method], a novel approach for [task]."
+- "We present [method], which achieves [result] by [mechanism]."
+- "We propose [framework] to address [challenge]."
+
+**Avoid:**
+- "In this paper, we study..." (generic)
+- "Large language models have..." (overused opening)
+
+### Introducing Related Work
+**Good Examples:**
+- "Recent work has shown promise in [area] [refs]."
+- "Several approaches have been proposed for [task] [refs]."
+- "The standard approach to [problem] is [method] [refs]."
+
+### Describing Experiments
+**Good Examples:**
+- "We evaluate on [datasets], comparing against [baselines]."
+- "We conduct ablation studies to validate [component]."
+- "To verify [claim], we experiment with [variations]."
+
+### Presenting Results
+**Good Examples:**
+- "Table 1 shows that our method outperforms all baselines."
+- "As shown in Figure 3, performance improves as [factor] increases."
+- "Our method achieves state-of-the-art on [task/metric]."
+
+### Discussing Limitations
+**Good Examples:**
+- "Our approach has limitations: [constraint]."
+- "We note that our method is currently restricted to [condition]."
+- "A key limitation is [issue], which we leave for future work."
+
+---
+
+## Writing Principles
+
+### From Top Papers
+
+**Clarity First:**
+- "Make it easy for reviewers to understand your contribution."
+- "Use concrete examples and specific language."
+- "Avoid vague or ambiguous statements."
+
+**Rigorous Presentation:**
+- "Provide enough detail for reproduction."
+- "Include error bars and statistical tests."
+- "Show negative results when relevant."
+
+**Storytelling:**
+- "Your paper tells a story: problem → approach → solution → impact."
+- "Make the narrative clear in the introduction."
+- "Each section should advance the story."
+
+**Honesty:**
+- "Acknowledge limitations explicitly."
+- "Don't overclaim results."
+- "Trust reviewers to appreciate honesty."
+
+---
+
+## Notes
+
+- **Adapt patterns**: These templates can and should be adapted to your specific context
+- **Venue matters**: Some venues prefer certain styles (check venue-specific guides)
+- **Consistency**: Use consistent terminology throughout
+- **Tone**: Maintain professional, objective tone
+- **Length**: Keep transitions concise; don't over-explain
+
+**Attribution:** All patterns extracted from analyzed papers with source citations for traceability.
+
+
+---
+
+## "Surprisingly" Findings: Multi-Level Reporting Pattern
+
+**Source**: Kaiming He et al., "Exploring Plain Vision Transformer Backbones for Object Detection" (ViTDet, ECCV 2022), "Mean Flows" (2025)
+
+**Paper Type**: Design simplification, unexpected findings
+
+### The Three-Level "Surprisingly" Pattern
+
+#### Level 1: Basic Surprise (Abstract/Opening)
+
+**Pattern**:
+```markdown
+Surprisingly, we observe: (i) [simple sufficient without common practice]
+and (ii) [simple sufficient without common practice]
+```
+
+**Example (ViTDet Abstract)**:
+```latex
+Surprisingly, we observe: (i) it is sufficient to build a simple feature
+pyramid from a single-scale feature map (without the common FPN design) and
+(ii) it is sufficient to use window attention (without shifting) aided with
+very few cross-window propagation blocks.
+```
+
+**Key Techniques**:
+- **Structured list**: Use (i) and (ii) to separate findings
+- **"sufficient"**: Scientific phrasing (not "optimal")
+- **"without [common practice]"**: Negative differentiation
+
+#### Level 2: Competitive Surprise (Introduction)
+
+**Pattern**:
+```markdown
+More surprisingly, under some circumstances, our [method] can compete
+with the leading [competitors].
+```
+
+**Example (ViTDet Introduction)**:
+```latex
+More surprisingly, under some circumstances, our plain-backbone detector,
+named ViTDet, can compete with the leading hierarchical-backbone detectors
+(e.g., Swin, MViT).
+```
+
+**Key Techniques**:
+- **"More surprisingly"**: Progressive emphasis
+- **"under some circumstances"**: Measured claim
+- **"can compete with"**: Not "beat", competitive
+- **Name competitors**: Specific (Swin, MViT)
+
+#### Level 3: Superiority Surprise (Results)
+
+**Pattern**:
+```markdown
+With [specific condition], our [method] can outperform the [competitors]
+that use [stronger condition]. The gains are more prominent for [condition].
+```
+
+**Example**:
+```latex
+With Masked Autoencoder (MAE) pre-training, our plain-backbone detector can
+outperform the hierarchical counterparts that are pre-trained on ImageNet-1K/21K
+with supervision (Figure 3). The gains are more prominent for larger model sizes.
+```
+
+**Key Techniques**:
+- **Specific conditions compared**: MAE vs ImageNet supervised
+- **"outperform"**: Stronger claim here (qualified by conditions)
+- **"The gains are more prominent for..."**: Pattern observation
+
+---
+
+### "Surprisingly" Variants
+
+#### "Interestingly" - Pattern Observation + Explanation
+
+**Pattern**:
+```markdown
+Interestingly, [observation]. This is in line with the observation in [paper]
+that [their finding]. [Additional explanation].
+```
+
+**Example (ViTDet)**:
+```latex
+Interestingly, performing propagation in the last 4 blocks is nearly as
+good as even placement. This is in line with the observation in ViT [14]
+that ViT has longer attention distance in later blocks and is more localized
+in earlier ones.
+```
+
+**Use when**: You have literature support for your observation
+
+#### "Notably" - Important Detail
+
+**Pattern**:
+```markdown
+Notably, [counter-intuitive result or impressive number].
+```
+
+**Examples**:
+- "Notably, even embedding only the interval t−r yields reasonable results."
+- "Notably, our method is self-contained and trained entirely from scratch."
+
+**Use when**: Emphasizing importance or counter-intuitive finding
+
+#### "It is worth noting that" - Caveat/Clarification
+
+**Pattern**:
+```markdown
+It is worth noting that [technical caveat or clarification].
+```
+
+**Examples**:
+- "It is worth noting that even when the conditional flows are designed to be straight ('rectified'), the marginal velocity field typically induces a curved trajectory."
+- "It is worth noting that the 3.34× memory (49G) is estimated as if the same training implementation could be used, which is not practical and requires special memory optimization."
+
+**Use when**: Preventing misunderstanding or clarifying technical details
+
+---
+
+### When to Use "Surprisingly"
+
+**DO use**:
+- When finding genuinely contradicts common practice
+- When simple solution works as well as complex one
+- When you have explanation (literature, hypothesis, theory)
+- With measured claims ("under some circumstances", "can compete")
+- With "sufficient" not "optimal"
+
+**DON'T use**:
+- For incremental improvements (use "additionally" instead)
+- Without explanation/justification
+- Overgeneralizing ("always", "proves")
+- For expected results
+
+---
+
+## Ablation Study Writing Techniques
+
+**Source**: Kaiming He papers (ViTDet, MeanFlows, MoCo v2)
+
+### Table Design: Incremental Progression
+
+**Pattern**:
+```markdown
+Table X: [Component] Ablation
+┌──────────────────────────────────────────┐
+│ no [component] | AP | Δ │
+│ (a) [common variant] | AP | +X.X │
+│ (b) [another variant] | AP | +Y.Y │
+│ (c) ours: simple | AP | +Z.Z ✓ │
+└──────────────────────────────────────────┘
+```
+
+**Example (ViTDet Table 1)**:
+```latex
+pyramid design APbox APmask
+─────────────────────────────────────────
+no feature pyramid 47.8 42.5
+(a) FPN, 4-stage 50.3 44.9
+(b) FPN, last-map 50.9 45.3
+(c) simple feature pyramid 51.2 45.5
+```
+
+**Techniques**:
+- **Baseline**: "no [X]" shows it's needed
+- **(a), (b), (c)**: Progressive variations
+- **Δ标注**: (+2.5) - Show incremental gains
+- **Correspondence**: "The entries (a-c) correspond to Figure X (a-c)"
+- **Conclusion**: "our simple pyramid is sufficient"
+
+---
+
+### Destructive Ablation: Proving Necessity
+
+**Pattern**:
+```markdown
+We conduct a destructive comparison in which [wrong choice] is intentionally
+performed. Meaningful results are achieved only when [correct choice].
+```
+
+**Example (MeanFlows Table 1b)**:
+```latex
+In Tab. 1b, we conduct a destructive comparison in which incorrect JVP
+computation is intentionally performed.
+
+jvp tangent FID, 1-NFE
+(v, 0, 1) [correct] 61.06
+(v, 0, 0) [wrong] 268.06
+(v, 1, 0) [wrong] 329.22
+(v, 1, 1) [wrong] 137.96
+
+It shows that meaningful results are achieved only when the JVP computation
+is correct.
+```
+
+**Use when**: You need to prove a design choice is necessary (not just optional)
+
+---
+
+### Ablation Narrative: Observation → Explanation
+
+**Pattern 1: Observation + Literature Support**
+```latex
+We observe that [observation]. This is consistent with the observation in
+[paper] that [their finding].
+```
+
+**Pattern 2: Observation + Hypothesis**
+```latex
+We hypothesize that this is because [reason 1] and also because [reason 2].
+```
+
+**Pattern 3: Observation + Theory**
+```latex
+[Observation]. This indicates that [theoretical explanation].
+```
+
+---
+
+## Theory-Driven Paper Keywords
+
+**Source**: Kaiming He et al., "Mean Flows for One-step Generative Modeling" (2025)
+
+### Naturalness Keywords (use to describe your theory)
+
+- **"naturally"** - "This naturally leads to..."
+- **"intrinsic"** - "intrinsic relation between..."
+- **"well-defined"** - "well-defined problem"
+- **"principled"** - "principled basis for..."
+- **"first principles"** - "from first principles"
+- **"solely originated from"** - "solely from definition"
+
+### Independence Keywords
+
+- **"does not depend on"** - Theory independence from implementation
+- **"independent of"** - Independent of specific choices
+- **"self-contained"** - System independence
+- **"from scratch"** - No external dependencies
+- **"without any X"** - Negative list (what you don't need)
+
+### Differentiation Keywords
+
+- **"in contrast to"** - Conceptual contrast
+- **"unlike"** - Direct comparison
+- **"typically"** - "typically modeled" (their approach)
+- **"prior works typically rely on"** - Their limitation
+- **"imposed as"** - Artificial constraint (theirs)
+
+### Avoid (Too Promotional)
+
+- ❌ "revolutionary" - Let others say it
+- ❌ "breakthrough" - Overused
+- ❌ "completely eliminates" - Too absolute
+- ✅ "significantly outperforms" - Strong but measured
+- ✅ "substantial improvement" - Professional
+
+---
+
+## Design Simplification Paper Keywords
+
+**Source**: Kaiming He et al., "Exploring Plain Vision Transformer Backbones for Object Detection" (ViTDet, 2022)
+
+### Philosophy Keywords
+
+- **"minimal"** - "minimal adaptations"
+- **"sufficient"** - "is sufficient to" (not "optimal")
+- **"simple"** - "simple feature pyramid"
+- **"plain"** - "plain backbone"
+- **"decouple"** - "decouple pre-training from fine-tuning"
+- **"independence"** - "independence of upstream vs downstream"
+
+### Direction Keywords
+
+- **"pursue a different direction"** - Clear positioning
+- **"in contrast to"** - Differentiation
+- **"abandons"** - What you give up (respectfully)
+- **"enables"** - What your approach allows
+
+### Measured Claim Keywords
+
+- **"under some circumstances"** - Not always
+- **"can compete with"** - Competitive, not dominant
+- **"more prominent for"** - When effect is stronger
+- **"is sufficient"** - Necessary, not maximal
+
+
+---
+
+## Updated: 何凯明的写作技巧
+
+> 来源: 分析了何凯明的 11 篇代表性论文(扩展分析,包括 MeanFlows、ViTDet、MAR 等)
+> 添加时间: 2026-01-26
+
+> 扩展内容包括:
+> - "Surprisingly" 发现的多层次报告模式
+> - Ablation Study 的增量式和破坏性实验设计
+> - 理论驱动型论文的关键词策略
+> - 设计简化型论文的关键词策略
+
+### 句子结构偏好
+
+**主动语态优先** (被动语态仅 9.3%)
+何凯明偏好使用主动、直接的陈述:
+
+**✅ 推荐 (何凯明的风格):**
+- "We present a framework for [task]"
+- "Our method achieves [result]"
+- "This formulation enables [benefit]"
+
+**❌ 避免:**
+- "A framework is presented for [task]"
+- "Results are achieved by our method"
+
+### 贡献表达方式
+
+何凯明常用的贡献表达模式:
+
+**模式 1: 直接陈述**
+```
+We propose [method] that [feature].
+We demonstrate [result] on [dataset].
+```
+
+**模式 2: 对比强调**
+```
+Unlike [previous work], our approach [difference].
+This leads to [improvement] in [metric].
+```
+
+**模式 3: 问题-解决方案**
+```
+[Challenge] remains difficult. We address this by [solution].
+```
+
+### 技术术语使用
+
+何凯明论文中的高频术语组合:
+
+| 术语类别 | 常用术语 |
+|---------|---------|
+| **网络架构** | deep neural networks, convolutional, residual, activation |
+| **训练过程** | training, validation, optimization, convergence |
+| **性能评估** | outperforms, achieves, improves, surpasses |
+| **方法定位** | state-of-the-art, baseline, framework, algorithm |
+| **所有权** | our method, our approach, our framework |
+
+### 过渡短语
+
+何凯明论文中常用的过渡短语(按频率排序):
+
+1. **however** - 用于对比不同观点
+2. **in addition/additionally** - 补充信息
+3. **furthermore** - 递进说明
+4. **therefore/thus** - 得出结论
+5. **specifically** - 举例说明
+6. **conversely** - 对比说明
+
+### 数值结果呈现
+
+何凯明在呈现数值结果时的模式:
+
+**精确性优先:**
+```
+Our method achieves 76.4% accuracy (Table X).
+This represents a 28% relative improvement.
+```
+
+**对比式呈现:**
+```
+Compared to baseline (73.2%), our method (76.4%) improves
+by 3.2 percentage points.
+```
+
+**强调意义:**
+```
+This result won the 1st place in [competition/task].
+```
+
+### 图表引用模式
+
+何凯明引用图表的标准格式:
+
+**图表引入:**
+- "Fig. X shows [现象]"
+- "Table Y summarizes [结果]"
+- "As shown in Fig. Z, [结论]"
+
+**图表描述:**
+- "The solid line denotes [条件 A], the dashed line [条件 B]"
+- "The blue curve shows [指标], while the red curve shows [指标]"
+
+### 网络架构描述
+
+何凯明在描述网络架构时的特点:
+
+1. **表格化呈现** - 使用表格列出层配置
+2. **可视化辅助** - 配合架构图
+3. **简洁符号** - 使用清晰的数学符号
+4. **示例:**
+```
+layer name | output size | configuration
+conv1 | 112×112 | 7×7, 64, /2
+```
diff --git a/.agents/skills/ml-paper-writing/references/literature-research/arxiv-search-guide.md b/.agents/skills/ml-paper-writing/references/literature-research/arxiv-search-guide.md
new file mode 100644
index 0000000..c37c868
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/literature-research/arxiv-search-guide.md
@@ -0,0 +1,199 @@
+# arXiv Literature Search Guide
+
+## Overview
+
+This guide provides workflows for discovering and evaluating recent ML research papers on arXiv. Use this when conducting literature reviews, finding related work, or staying updated on recent publications.
+
+---
+
+## Search Strategies
+
+### 1. Keyword-Based Search
+
+**arXiv Search URL Pattern:**
+```
+https://arxiv.org/search/?searchtype=all&query=KEYWORDS&abstracts=show&order=-announced_date_first
+```
+
+**Common ML Search Keywords:**
+- **General ML**: `machine learning`, `deep learning`, `neural networks`
+- **Specific Areas**: `reinforcement learning`, `transformer`, `attention mechanism`, `graph neural networks`
+- **Applications**: `computer vision`, `natural language processing`, `reinforcement learning`
+- **Methods**: `self-supervised learning`, `contrastive learning`, `foundation models`
+
+**Tips:**
+- Combine keywords with `+` for AND operation
+- Use `|` for OR operation
+- Put phrases in quotes for exact matches: `"attention is all you need"`
+
+### 2. Category-Based Search
+
+**Recommended arXiv Categories for ML:**
+- `cs.LG` (Machine Learning)
+- `cs.AI` (Artificial Intelligence)
+- `cs.CV` (Computer Vision and Pattern Recognition)
+- `cs.CL` (Computation and Language)
+- `cs.NE` (Neural and Evolutionary Computing)
+- `stat.ML` (Machine Learning - Statistics)
+
+**Category Filter URL:**
+```
+https://arxiv.org/search/?cat:cs.LG+OR+cat:cs.AI+AND+all:transformer&abstracts=show&order=-announced_date_first
+```
+
+### 3. Time-Based Filtering
+
+**Recent Papers (Last 3 Months):**
+- Use `order=-announced_date_first` for newest first
+- Manually filter by submission date
+- Check paper metadata for submission date
+
+---
+
+## Using Chrome MCP for arXiv Search
+
+When available, use Chrome MCP tools for automated arXiv searching:
+
+1. **Navigate to arXiv search** using Chrome MCP navigation
+2. **Extract paper information** from search results:
+ - Paper title
+ - Authors
+ - arXiv ID
+ - Abstract preview
+ - Publication date
+
+3. **Navigate to individual papers** for detailed review
+
+---
+
+## Paper Quality Evaluation
+
+Evaluate papers using the 5-dimension criteria below:
+
+| Dimension | Weight | Key Points |
+|-----------|--------|------------|
+| **Innovation** | 30% | Novelty of contribution |
+| **Method Completeness** | 25% | Clarity and reproducibility |
+| **Experimental Thoroughness** | 25% | Validation depth |
+| **Writing Quality** | 10% | Clarity of expression |
+| **Relevance & Impact** | 10% | Domain importance |
+
+### Scoring Guidelines (1-5 scale)
+
+**Innovation (30%):**
+- 5: Breakthrough contribution, major impact
+- 4: Significant improvement, new insights
+- 3: Methodological innovation
+- 2: Incremental improvement
+- 1: Minor improvements
+
+**Method Completeness (25%):**
+- 5: Complete and rigorous, easily reproducible
+- 4: Very detailed, mostly reproducible
+- 3: Core method clear, basically reproducible
+- 2: Lacks key details
+- 1: Unclear description
+
+**Experimental Thoroughness (25%):**
+- 5: Comprehensive multi-dataset, ablation studies
+- 4: Multiple datasets, reasonable ablations
+- 3: Main experiments complete
+- 2: Limited experiments
+- 1: Minimal validation
+
+**Writing Quality (10%):**
+- 5: Excellent clarity and rigor
+- 4: Clear and well-structured
+- 3: Understandable
+- 2: Some ambiguity
+- 1: Confusing
+
+**Relevance & Impact (10%):**
+- 5: Solves important problem, wide impact
+- 4: Important domain problem
+- 3: Meaningful contribution
+- 2: Niche problem
+- 1: Limited impact
+
+### Selection Process
+
+1. **Screen by title/abstract** for relevance
+2. **Navigate to full paper** for detailed review
+3. **Score each dimension** (1-5)
+4. **Calculate weighted total**
+5. **Rank and select** top papers
+
+---
+
+## Extracting Paper Metadata
+
+**From arXiv Abstract Page (`https://arxiv.org/abs/ARXIV_ID`):**
+
+- Title (from `<h1>` tag)
+- Authors (from `.authors` element)
+- Abstract (from `blockquote.abstract`)
+- Submission date (from `.dateline`)
+- arXiv ID (from URL)
+- Categories (from `.subjects`)
+- Comments (if present)
+- Code repository (check abstract for GitHub links)
+
+---
+
+## Integration with Citation Workflow
+
+After finding relevant papers:
+
+1. **Verify citations** using Semantic Scholar API (see `../citation-workflow.md`)
+2. **Fetch BibTeX** programmatically via DOI
+3. **Store in bibliography** with verification status
+
+---
+
+## Common Use Cases
+
+### Finding Related Work
+
+When writing a paper, use arXiv search to:
+1. Find recent papers on your topic
+2. Identify state-of-the-art methods
+3. Discover competing approaches
+4. Find baseline comparisons
+
+### Staying Updated
+
+Set up regular searches for:
+- Your specific research area
+- Competing labs/researchers
+- New methods in your domain
+- Conference proceedings (preprints)
+
+### Literature Reviews
+
+For comprehensive reviews:
+1. Start with broad keyword searches
+2. Filter by recent publications (last 1-3 years)
+3. Use citation chaining (forward and backward)
+4. Evaluate and select high-quality papers
+5. Organize by theme/contribution
+
+---
+
+## Tips for Effective Searching
+
+1. **Use specific keywords** rather than broad terms
+2. **Combine techniques** (keywords + categories + time filters)
+3. **Check code availability** (many arXiv papers link to GitHub)
+4. **Look for citations** to understand impact
+5. **Read abstracts carefully** before full papers
+6. **Use paper metrics** (citation count, code stars) as indicators
+
+---
+
+## External Resources
+
+- **arXiv**: https://arxiv.org/
+- **Semantic Scholar**: https://www.semanticscholar.org/
+- **Papers With Code**: https://paperswithcode.com/
+- **Connected Papers**: https://www.connectedpapers.com/
+- **arXiv API**: http://export.arxiv.org/api_help/
diff --git a/.agents/skills/ml-paper-writing/references/literature-research/paper-quality-criteria.md b/.agents/skills/ml-paper-writing/references/literature-research/paper-quality-criteria.md
new file mode 100644
index 0000000..0e07a8a
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/literature-research/paper-quality-criteria.md
@@ -0,0 +1,303 @@
+# ML Paper Quality Evaluation Criteria
+
+## Overview
+
+Use these criteria to evaluate ML research papers found during literature search or when selecting papers for detailed review. The 5-dimension framework provides structured assessment for paper selection and comparison.
+
+---
+
+## Evaluation Dimensions
+
+| Dimension | Weight | Description |
+|-----------|--------|-------------|
+| **Innovation** | 30% | Novelty and originality of contribution |
+| **Method Completeness** | 25% | Clarity, rigor, and reproducibility |
+| **Experimental Thoroughness** | 25% | Validation depth and analysis quality |
+| **Writing Quality** | 10% | Clarity and presentation |
+| **Relevance & Impact** | 10% | Domain importance and potential impact |
+
+---
+
+## Detailed Scoring Rubrics
+
+### 1. Innovation (30%)
+
+**Score 5 - Breakthrough:**
+- Proposes entirely new paradigm or framework
+- Solves long-standing open problem
+- Major impact expected on the field
+- Challenges fundamental assumptions
+
+**Score 4 - Significant Innovation:**
+- Substantial improvement over existing methods
+- New insights or perspectives
+- Novel combination of techniques
+- Clear advancement over state-of-the-art
+
+**Score 3 - Methodological Innovation:**
+- New method or architecture proposed
+- Some novelty but incremental
+- Reasonable contribution
+- Standard type of innovation
+
+**Score 2 - Incremental Improvement:**
+- Minor improvements to existing methods
+- Limited novelty
+- Small advancement
+- Mostly derivative
+
+**Score 1 - Trivial:**
+- Minimal contribution
+- Obvious extension
+- No real innovation
+- Known results
+
+**Evaluation Questions:**
+- Does this paper propose something genuinely new?
+- Does it advance the state-of-the-art?
+- Will this influence future work?
+- Is the contribution significant or marginal?
+
+---
+
+### 2. Method Completeness (25%)
+
+**Score 5 - Complete and Rigorous:**
+- Full mathematical derivation
+- All hyperparameters specified
+- Complete algorithmic details
+- Easily reproducible
+- Code available
+
+**Score 4 - Very Complete:**
+- Detailed method description
+- Most important details included
+- Mostly reproducible
+- Minor gaps in documentation
+
+**Score 3 - Reproducible:**
+- Core method clearly described
+- Key details present
+- Can be reproduced with effort
+- Some ambiguity in details
+
+**Score 2 - Lacks Details:**
+- Key details missing
+- Difficult to reproduce
+- Incomplete description
+- Ambiguous in important areas
+
+**Score 1 - Unclear:**
+- Method description unclear
+- Missing critical information
+- Cannot determine validity
+- Poorly explained
+
+**Evaluation Questions:**
+- Can another researcher reproduce this work?
+- Are all important details specified?
+- Is mathematical derivation sound?
+- Is code available and documented?
+
+---
+
+### 3. Experimental Thoroughness (25%)
+
+**Score 5 - Comprehensive:**
+- Multiple diverse datasets
+- Extensive ablation studies
+- Statistical significance testing
+- Thorough analysis and discussion
+- Comparison with strong baselines
+
+**Score 4 - Very Thorough:**
+- Multiple datasets
+- Reasonable ablation studies
+- Proper baseline comparisons
+- Good analysis
+
+**Score 3 - Adequate:**
+- Main experiments complete
+- Standard datasets
+- Basic baselines
+- Results are credible
+
+**Score 2 - Limited:**
+- Limited experiments
+- Few datasets
+- Weak baselines
+- Minimal analysis
+
+**Score 1 - Insufficient:**
+- Minimal validation
+- Toy examples only
+- No meaningful comparisons
+- Results not convincing
+
+**Evaluation Questions:**
+- Are experiments comprehensive?
+- Are baselines strong and appropriate?
+- Are statistical tests used?
+- Is there ablation analysis?
+- Are results on standard datasets?
+
+---
+
+### 4. Writing Quality (10%)
+
+**Score 5 - Excellent:**
+- Clear, precise, well-structured
+- Logical flow throughout
+- Professional presentation
+- High-quality figures
+- No ambiguity
+
+**Score 4 - Very Good:**
+- Clear and well-written
+- Mostly logical structure
+- Good presentation
+- Minor issues
+
+**Score 3 - Understandable:**
+- Basically clear
+- Some organizational issues
+- Acceptable presentation
+- Understandable with effort
+
+**Score 2 - Fair:**
+- Some confusing sections
+- Organization problems
+- Presentation issues
+- Hard to follow at times
+
+**Score 1 - Poor:**
+- Unclear or confusing
+- Poor organization
+- Difficult to understand
+- Major presentation problems
+
+**Evaluation Questions:**
+- Is the paper easy to understand?
+- Is the structure logical?
+- Are figures/tables clear?
+- Is the writing professional?
+
+---
+
+### 5. Relevance & Impact (10%)
+
+**Score 5 - High Impact:**
+- Solves important problem
+- Broad applicability
+- Expected wide influence
+- Addresses fundamental challenge
+
+**Score 4 - Domain Important:**
+- Important problem in field
+- Significant potential impact
+- Relevant to many researchers
+
+**Score 3 - Meaningful:**
+- Meaningful contribution
+- Moderate impact expected
+- Relevant to subset of field
+
+**Score 2 - Niche:**
+- Specialized problem
+- Limited applicability
+- Narrow impact
+
+**Score 1 - Limited:**
+- Very narrow problem
+- Minimal impact expected
+- Limited relevance
+
+**Evaluation Questions:**
+- Is this an important problem?
+- Will this influence future work?
+- Is it relevant to current research needs?
+- Does it address a significant challenge?
+
+---
+
+## Scoring Calculation
+
+**Weighted Total:**
+```
+Total = (Innovation × 0.30) + (Method × 0.25) + (Experiments × 0.25) + (Writing × 0.10) + (Impact × 0.10)
+```
+
+**Example Calculation:**
+- Innovation: 4/5
+- Method: 3/5
+- Experiments: 4/5
+- Writing: 3/5
+- Impact: 4/5
+
+```
+Total = (4 × 0.30) + (3 × 0.25) + (4 × 0.25) + (3 × 0.10) + (4 × 0.10)
+ = 1.20 + 0.75 + 1.00 + 0.30 + 0.40
+ = 3.65 / 5.0
+```
+
+---
+
+## Selection Process
+
+### For Literature Reviews
+
+1. **Screen papers** by title/abstract for relevance
+2. **Full review** of potentially relevant papers
+3. **Score each paper** using all 5 dimensions
+4. **Rank by total score**
+5. **Select top papers** for detailed review
+
+### Quality Thresholds
+
+- **Excellent**: 4.0+ (include definitely)
+- **Good**: 3.5-3.9 (include if relevant)
+- **Fair**: 3.0-3.4 (include if highly relevant)
+- **Poor**: <3.0 (exclude unless essential)
+
+---
+
+## Quick Screening Indicators
+
+Before detailed review, check:
+
+**Positive Indicators:**
+- Published at top venue (NeurIPS, ICML, ICLR)
+- Citations in top papers
+- Code available with stars
+- Authors from top labs
+- Clear novelty in abstract
+
+**Negative Indicators:**
+- Vague abstract
+- Limited experiments mentioned
+- No baselines mentioned
+- Poor writing in abstract
+- incremental claims only
+
+---
+
+## Integration with Paper Discovery
+
+When using arXiv search (`arxiv-search-guide.md`):
+
+1. **Search** for relevant papers
+2. **Extract metadata** from arXiv pages
+3. **Quick screen** by abstract/relevance
+4. **Detailed review** of promising papers
+5. **Score using** these criteria
+6. **Rank and select** top candidates
+
+---
+
+## Notes
+
+- These criteria are designed for ML papers specifically
+- Adjust weights based on your specific needs
+- Use scores as relative comparisons, not absolute judgments
+- Consider venue reputation as additional signal
+- Code availability is increasingly important for reproducibility
diff --git a/.agents/skills/ml-paper-writing/references/reviewer-guidelines.md b/.agents/skills/ml-paper-writing/references/reviewer-guidelines.md
new file mode 100644
index 0000000..17e7cf0
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/reviewer-guidelines.md
@@ -0,0 +1,367 @@
+# Reviewer Guidelines & Evaluation Criteria
+
+This reference documents how reviewers evaluate papers at major ML/AI conferences, helping authors anticipate and address reviewer concerns.
+
+---
+
+## Contents
+
+- [Universal Evaluation Dimensions](#universal-evaluation-dimensions)
+- [NeurIPS Reviewer Guidelines](#neurips-reviewer-guidelines)
+- [ICML Reviewer Guidelines](#icml-reviewer-guidelines)
+- [ICLR Reviewer Guidelines](#iclr-reviewer-guidelines)
+- [ACL Reviewer Guidelines](#acl-reviewer-guidelines)
+- [What Makes Reviews Strong](#what-makes-reviews-strong)
+- [Common Reviewer Concerns](#common-reviewer-concerns)
+- [How to Address Reviewer Feedback](#how-to-address-reviewer-feedback)
+
+---
+
+## Universal Evaluation Dimensions
+
+All major ML conferences assess papers across four core dimensions:
+
+### 1. Quality (Technical Soundness)
+
+**What reviewers ask:**
+- Are claims well-supported by theoretical analysis or experimental results?
+- Are the proofs correct? Are the experiments properly controlled?
+- Are baselines appropriate and fairly compared?
+- Is the methodology sound?
+
+**How to ensure high quality:**
+- Include complete proofs (main paper or appendix with sketches)
+- Use appropriate baselines (not strawmen)
+- Report variance/error bars with methodology
+- Document hyperparameter selection process
+
+### 2. Clarity (Writing & Organization)
+
+**What reviewers ask:**
+- Is the paper clearly written and well organized?
+- Can an expert in the field reproduce the results?
+- Is notation consistent? Are terms defined?
+- Is the paper self-contained?
+
+**How to ensure clarity:**
+- Use consistent terminology throughout
+- Define all notation at first use
+- Include reproducibility details (appendix acceptable)
+- Have non-authors read before submission
+
+### 3. Significance (Impact & Importance)
+
+**What reviewers ask:**
+- Are the results impactful for the community?
+- Will others build upon this work?
+- Does it address an important problem?
+- What is the potential for real-world impact?
+
+**How to demonstrate significance:**
+- Clearly articulate the problem's importance
+- Connect to broader research themes
+- Discuss potential applications
+- Compare to existing approaches meaningfully
+
+### 4. Originality (Novelty & Contribution)
+
+**What reviewers ask:**
+- Does this provide new insights?
+- How does it differ from prior work?
+- Is the contribution non-trivial?
+
+**Key insight from NeurIPS guidelines:**
+> "Originality does not necessarily require introducing an entirely new method. Papers that provide novel insights from evaluating existing approaches or shed light on why methods succeed can also be highly original."
+
+---
+
+## NeurIPS Reviewer Guidelines
+
+### Scoring System (1-6 Scale)
+
+| Score | Label | Description |
+|-------|-------|-------------|
+| **6** | Strong Accept | Groundbreaking, flawless work; top 2-3% of submissions |
+| **5** | Accept | Technically solid, high impact; would benefit the community |
+| **4** | Borderline Accept | Solid work with limited evaluation; leans accept |
+| **3** | Borderline Reject | Solid but weaknesses outweigh strengths; leans reject |
+| **2** | Reject | Technical flaws or weak evaluation |
+| **1** | Strong Reject | Well-known results or unaddressed ethics concerns |
+
+### Reviewer Instructions
+
+Reviewers are explicitly instructed to:
+
+1. **Evaluate the paper as written** - not what it could be with revisions
+2. **Provide constructive feedback** - 3-5 actionable points
+3. **Not penalize honest limitations** - acknowledging weaknesses is encouraged
+4. **Assess reproducibility** - can the work be verified?
+5. **Consider ethical implications** - potential misuse or harm
+
+### What Reviewers Should Avoid
+
+- Superficial, uninformed reviews
+- Demanding unreasonable additional experiments
+- Penalizing authors for honest limitation acknowledgment
+- Rejecting for missing citations to reviewer's own work
+
+### Timeline (NeurIPS 2025)
+
+- Bidding: May 17-21
+- Reviewing period: May 29 - July 2
+- Author rebuttals: July 24-30
+- Discussion period: July 31 - August 13
+- Final notifications: September 18
+
+---
+
+## ICML Reviewer Guidelines
+
+### Review Structure
+
+ICML reviewers provide:
+
+1. **Summary** - Brief description of contributions
+2. **Strengths** - Positive aspects
+3. **Weaknesses** - Areas for improvement
+4. **Questions** - Clarifications for authors
+5. **Limitations** - Assessment of stated limitations
+6. **Ethics** - Any concerns
+7. **Overall Score** - Recommendation
+
+### Scoring Guidelines
+
+ICML uses a similar 1-6 scale with calibration:
+- Top 25% of accepted papers: Score 5-6
+- Typical accepted paper: Score 4-5
+- Borderline: Score 3-4
+- Clear reject: Score 1-2
+
+### Key Evaluation Points
+
+1. **Reproducibility** - Are there enough details?
+2. **Experimental rigor** - Multiple seeds, proper baselines?
+3. **Writing quality** - Clear, organized, well-structured?
+4. **Novelty** - Non-trivial contribution?
+
+---
+
+## ICLR Reviewer Guidelines
+
+### OpenReview Process
+
+ICLR uses OpenReview with:
+- Public reviews (after acceptance decisions)
+- Author responses visible to reviewers
+- Discussion between reviewers and ACs
+
+### Scoring
+
+ICLR reviews include:
+- **Soundness**: 1-4 scale
+- **Presentation**: 1-4 scale
+- **Contribution**: 1-4 scale
+- **Overall**: 1-10 scale
+- **Confidence**: 1-5 scale
+
+### Unique ICLR Considerations
+
+1. **LLM Disclosure** - Reviewers assess whether LLM use is properly disclosed
+2. **Reproducibility** - Emphasis on code availability
+3. **Reciprocal Reviewing** - Authors must also serve as reviewers
+
+---
+
+## ACL Reviewer Guidelines
+
+### ACL-Specific Criteria
+
+ACL adds NLP-specific evaluation:
+
+1. **Linguistic soundness** - Are linguistic claims accurate?
+2. **Resource documentation** - Are datasets/models properly documented?
+3. **Multilingual consideration** - If applicable, is language diversity addressed?
+
+### Limitations Section
+
+ACL specifically requires a Limitations section. Reviewers check:
+- Are limitations honest and comprehensive?
+- Do limitations undermine core claims?
+- Are potential negative impacts addressed?
+
+### Ethics Review
+
+ACL has a dedicated ethics review process for:
+- Dual-use concerns
+- Data privacy issues
+- Bias and fairness implications
+
+---
+
+## What Makes Reviews Strong
+
+### Following Daniel Dennett's Rules
+
+Good reviewers follow these principles:
+
+1. **Re-express the position fairly** - Show you understand the paper
+2. **List agreements** - Acknowledge what works well
+3. **List what you learned** - Credit the contribution
+4. **Only then critique** - After establishing understanding
+
+### Review Structure Best Practices
+
+**Strong Review Structure:**
+```
+Summary (1 paragraph):
+- What the paper does
+- Main contribution claimed
+
+Strengths (3-5 bullets):
+- Specific positive aspects
+- Why these matter
+
+Weaknesses (3-5 bullets):
+- Specific concerns
+- Why these matter
+- Suggestions for addressing
+
+Questions (2-4 items):
+- Clarifications needed
+- Things that would change assessment
+
+Minor Issues (optional):
+- Typos, unclear sentences
+- Formatting issues
+
+Overall Assessment:
+- Clear recommendation with reasoning
+```
+
+---
+
+## Common Reviewer Concerns
+
+### Technical Concerns
+
+| Concern | How to Pre-empt |
+|---------|-----------------|
+| "Baselines too weak" | Use state-of-the-art baselines, cite recent work |
+| "Missing ablations" | Include systematic ablation study |
+| "No error bars" | Report std dev/error, multiple runs |
+| "Hyperparameters not tuned" | Document tuning process, search ranges |
+| "Claims not supported" | Ensure every claim has evidence |
+
+### Novelty Concerns
+
+| Concern | How to Pre-empt |
+|---------|-----------------|
+| "Incremental contribution" | Clearly articulate what's new vs prior work |
+| "Similar to [paper X]" | Explicitly compare to X in Related Work |
+| "Straightforward extension" | Highlight non-obvious aspects |
+
+### Clarity Concerns
+
+| Concern | How to Pre-empt |
+|---------|-----------------|
+| "Hard to follow" | Use clear structure, signposting |
+| "Notation inconsistent" | Review all notation, create notation table |
+| "Missing details" | Include reproducibility appendix |
+| "Figures unclear" | Self-contained captions, proper sizing |
+
+### Significance Concerns
+
+| Concern | How to Pre-empt |
+|---------|-----------------|
+| "Limited impact" | Discuss broader implications |
+| "Narrow evaluation" | Evaluate on multiple benchmarks |
+| "Only works in restricted setting" | Acknowledge scope, explain why still valuable |
+
+---
+
+## How to Address Reviewer Feedback
+
+### Rebuttal Best Practices
+
+**Do:**
+- Thank reviewers for their time
+- Address each concern specifically
+- Provide evidence (new experiments if possible)
+- Be concise—reviewers are busy
+- Acknowledge valid criticisms
+
+**Don't:**
+- Be defensive or dismissive
+- Make promises you can't keep
+- Ignore difficult criticisms
+- Write excessively long rebuttals
+- Argue about subjective assessments
+
+### Rebuttal Template
+
+```markdown
+We thank the reviewers for their thoughtful feedback.
+
+## Reviewer 1
+
+**R1-Q1: [Quoted concern]**
+[Direct response with evidence]
+
+**R1-Q2: [Quoted concern]**
+[Direct response with evidence]
+
+## Reviewer 2
+
+...
+
+## Summary of Changes
+If accepted, we will:
+1. [Specific change]
+2. [Specific change]
+3. [Specific change]
+```
+
+### When to Accept Criticism
+
+Some reviewer feedback should simply be accepted:
+- Valid technical errors
+- Missing important related work
+- Unclear explanations
+- Missing experimental details
+
+Acknowledge these gracefully: "The reviewer is correct that... We will revise to..."
+
+### When to Push Back
+
+You can respectfully disagree when:
+- Reviewer misunderstood the paper
+- Requested experiments are out of scope
+- Criticism is factually incorrect
+
+Frame disagreements constructively: "We appreciate this perspective. However, [explanation]..."
+
+---
+
+## Pre-Submission Reviewer Simulation
+
+Before submitting, ask yourself:
+
+**Quality:**
+- [ ] Would I trust these results if I saw them?
+- [ ] Are all claims supported by evidence?
+- [ ] Are baselines fair and recent?
+
+**Clarity:**
+- [ ] Can someone reproduce this from the paper?
+- [ ] Is the writing clear to non-experts in this subfield?
+- [ ] Are all terms and notation defined?
+
+**Significance:**
+- [ ] Why should the community care about this?
+- [ ] What can people do with this work?
+- [ ] Is the problem important?
+
+**Originality:**
+- [ ] What specifically is new here?
+- [ ] How does this differ from closest related work?
+- [ ] Is the contribution non-trivial?
diff --git a/.agents/skills/ml-paper-writing/references/sources.md b/.agents/skills/ml-paper-writing/references/sources.md
new file mode 100644
index 0000000..1690d2b
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/sources.md
@@ -0,0 +1,159 @@
+# Source Bibliography
+
+This document lists all authoritative sources used to build this skill, organized by topic.
+
+---
+
+## Writing Philosophy & Guides
+
+### Primary Sources (Must-Read)
+
+| Source | Author | URL | Key Contribution |
+|--------|--------|-----|------------------|
+| **Highly Opinionated Advice on How to Write ML Papers** | Neel Nanda | [Alignment Forum](https://www.alignmentforum.org/posts/eJGptPbbFPZGLpjsp/highly-opinionated-advice-on-how-to-write-ml-papers) | Narrative framework, "What/Why/So What", time allocation |
+| **How to Write ML Papers** | Sebastian Farquhar (DeepMind) | [Blog](https://sebastianfarquhar.com/on-research/2024/11/04/how_to_write_ml_papers/) | 5-sentence abstract formula, structure templates |
+| **A Survival Guide to a PhD** | Andrej Karpathy | [Blog](http://karpathy.github.io/2016/09/07/phd/) | Paper structure recipe, contribution framing |
+| **Heuristics for Scientific Writing** | Zachary Lipton (CMU) | [Blog](https://www.approximatelycorrect.com/2018/01/29/heuristics-technical-scientific-writing-machine-learning-perspective/) | Word choice, section balance, intensifier warnings |
+| **Advice for Authors** | Jacob Steinhardt (UC Berkeley) | [Blog](https://jsteinhardt.stat.berkeley.edu/blog/advice-for-authors) | Precision over brevity, consistent terminology |
+| **Easy Paper Writing Tips** | Ethan Perez (Anthropic) | [Blog](https://ethanperez.net/easy-paper-writing-tips/) | Micro-level tips, apostrophe unfolding, clarity tricks |
+
+### Foundational Scientific Writing
+
+| Source | Author | URL | Key Contribution |
+|--------|--------|-----|------------------|
+| **The Science of Scientific Writing** | Gopen & Swan | [PDF](https://cseweb.ucsd.edu/~swanson/papers/science-of-writing.pdf) | Topic/stress positions, old-before-new, 7 principles |
+| **Summary of Science of Scientific Writing** | Lawrence Crowl | [Summary](https://www.crowl.org/Lawrence/writing/GopenSwan90.html) | Condensed version of Gopen & Swan |
+
+### Additional Resources
+
+| Source | URL | Key Contribution |
+|--------|-----|------------------|
+| How To Write A Research Paper In ML | [Blog](https://grigorisg9gr.github.io/machine%20learning/research%20paper/how-to-write-a-research-paper-in-machine-learning/) | Practical walkthrough, LaTeX tips |
+| A Recipe for Training Neural Networks | [Karpathy Blog](http://karpathy.github.io/2019/04/25/recipe/) | Debugging methodology that translates to paper structure |
+| ICML Paper Writing Best Practices | [ICML](https://icml.cc/Conferences/2022/BestPractices) | Official venue guidance |
+| Bill Freeman's Writing Slides | [MIT](https://billf.mit.edu/sites/default/files/documents/cvprPapers.pdf) | Visual guide to paper structure |
+
+---
+
+## Official Conference Guidelines
+
+### NeurIPS
+
+| Document | URL | Purpose |
+|----------|-----|---------|
+| Paper Checklist Guidelines | [NeurIPS](https://neurips.cc/public/guides/PaperChecklist) | 16-item mandatory checklist |
+| Reviewer Guidelines 2025 | [NeurIPS](https://neurips.cc/Conferences/2025/ReviewerGuidelines) | Evaluation criteria, scoring |
+| Style Files | [NeurIPS](https://neurips.cc/Conferences/2025/PaperInformation/StyleFiles) | LaTeX templates |
+
+### ICML
+
+| Document | URL | Purpose |
+|----------|-----|---------|
+| Paper Guidelines | [ICML](https://icml.cc/Conferences/2024/PaperGuidelines) | Submission requirements |
+| Reviewer Instructions 2025 | [ICML](https://icml.cc/Conferences/2025/ReviewerInstructions) | Review form, evaluation |
+| Style & Author Instructions | [ICML](https://icml.cc/Conferences/2022/StyleAuthorInstructions) | Formatting specifications |
+
+### ICLR
+
+| Document | URL | Purpose |
+|----------|-----|---------|
+| Author Guide 2026 | [ICLR](https://iclr.cc/Conferences/2026/AuthorGuide) | Submission requirements, LLM disclosure |
+| Reviewer Guide 2025 | [ICLR](https://iclr.cc/Conferences/2025/ReviewerGuide) | Review process, evaluation |
+
+### ACL/EMNLP
+
+| Document | URL | Purpose |
+|----------|-----|---------|
+| ACL Style Files | [GitHub](https://github.com/acl-org/acl-style-files) | LaTeX templates |
+| ACL Rolling Review | [ARR](https://aclrollingreview.org/) | Submission process |
+
+### AAAI
+
+| Document | URL | Purpose |
+|----------|-----|---------|
+| Author Kit 2026 | [AAAI](https://aaai.org/authorkit26/) | Templates and guidelines |
+
+### COLM
+
+| Document | URL | Purpose |
+|----------|-----|---------|
+| Template | [GitHub](https://github.com/COLM-org/Template) | LaTeX templates |
+
+---
+
+## Citation APIs & Tools
+
+### APIs
+
+| API | Documentation | Best For |
+|-----|---------------|----------|
+| **Semantic Scholar** | [Docs](https://api.semanticscholar.org/api-docs/) | ML/AI papers, citation graphs |
+| **CrossRef** | [Docs](https://www.crossref.org/documentation/retrieve-metadata/rest-api/) | DOI lookup, BibTeX retrieval |
+| **arXiv** | [Docs](https://info.arxiv.org/help/api/basics.html) | Preprints, PDF access |
+| **OpenAlex** | [Docs](https://docs.openalex.org/) | Open alternative, bulk access |
+
+### Python Libraries
+
+| Library | Install | Purpose |
+|---------|---------|---------|
+| `semanticscholar` | `pip install semanticscholar` | Semantic Scholar wrapper |
+| `arxiv` | `pip install arxiv` | arXiv search and download |
+| `habanero` | `pip install habanero` | CrossRef client |
+
+### Citation Verification
+
+| Tool | URL | Purpose |
+|------|-----|---------|
+| Citely | [citely.ai](https://citely.ai/citation-checker) | Batch verification |
+| ReciteWorks | [reciteworks.com](https://reciteworks.com/) | In-text citation checking |
+
+---
+
+## Visualization & Formatting
+
+### Figure Creation
+
+| Tool | URL | Purpose |
+|------|-----|---------|
+| PlotNeuralNet | [GitHub](https://github.com/HarisIqbal88/PlotNeuralNet) | TikZ neural network diagrams |
+| SciencePlots | [GitHub](https://github.com/garrettj403/SciencePlots) | Publication-ready matplotlib |
+| Okabe-Ito Palette | [Reference](https://jfly.uni-koeln.de/color/) | Colorblind-safe colors |
+
+### LaTeX Resources
+
+| Resource | URL | Purpose |
+|----------|-----|---------|
+| Overleaf Templates | [Overleaf](https://www.overleaf.com/latex/templates) | Online LaTeX editor |
+| BibLaTeX Guide | [CTAN](https://ctan.org/pkg/biblatex) | Modern citation management |
+
+---
+
+## Research on AI Writing & Hallucination
+
+| Source | URL | Key Finding |
+|--------|-----|-------------|
+| AI Hallucinations in Citations | [Enago](https://www.enago.com/academy/ai-hallucinations-research-citations/) | ~40% error rate |
+| Hallucination in AI Writing | [PMC](https://pmc.ncbi.nlm.nih.gov/articles/PMC10726751/) | Types of citation errors |
+| NeurIPS 2025 AI Report | [ByteIota](https://byteiota.com/neurips-2025-100-ai-hallucinations-slip-through-review/) | 100+ hallucinated citations |
+
+---
+
+## Quick Reference by Topic
+
+### For Narrative & Structure
+→ Start with: Neel Nanda, Sebastian Farquhar, Andrej Karpathy
+
+### For Sentence-Level Clarity
+→ Start with: Gopen & Swan, Ethan Perez, Zachary Lipton
+
+### For Word Choice & Style
+→ Start with: Zachary Lipton, Jacob Steinhardt
+
+### For Conference-Specific Requirements
+→ Start with: Official venue guidelines (NeurIPS, ICML, ICLR, ACL)
+
+### For Citation Management
+→ Start with: Semantic Scholar API, CrossRef, citation-workflow.md
+
+### For Reviewer Expectations
+→ Start with: Venue reviewer guidelines, reviewer-guidelines.md
diff --git a/.agents/skills/ml-paper-writing/references/writing-guide.md b/.agents/skills/ml-paper-writing/references/writing-guide.md
new file mode 100644
index 0000000..3da7233
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/references/writing-guide.md
@@ -0,0 +1,476 @@
+# ML Paper Writing Philosophy & Best Practices
+
+This reference compiles writing advice from prominent ML researchers including Neel Nanda, Andrej Karpathy, Sebastian Farquhar, Zachary Lipton, and Jacob Steinhardt.
+
+---
+
+## Contents
+
+- [The Narrative Principle](#the-narrative-principle)
+- [Time Allocation](#time-allocation)
+- [Abstract Writing Formula](#abstract-writing-formula)
+- [Introduction Structure](#introduction-structure)
+- [Sentence-Level Clarity](#sentence-level-clarity)
+- [Word Choice and Precision](#word-choice-and-precision)
+- [Mathematical Writing](#mathematical-writing)
+- [Figure Design](#figure-design)
+- [Common Mistakes to Avoid](#common-mistakes-to-avoid)
+
+---
+
+## The Narrative Principle
+
+### From Neel Nanda
+
+"A paper is a short, rigorous, evidence-based technical story with a takeaway readers care about."
+
+The narrative rests on three pillars that must be crystal clear by the end of your introduction:
+
+**The "What"**: One to three specific novel claims fitting within a cohesive theme. Vague contributions like "we study X" fail immediately—reviewers need precise, falsifiable claims.
+
+**The "Why"**: Rigorous empirical evidence that convincingly supports those claims, including strong baselines honestly tuned and experiments that distinguish between competing hypotheses rather than merely showing "decent results."
+
+**The "So What"**: Why readers should care, connecting your contribution to problems the community recognizes as important.
+
+### From Andrej Karpathy
+
+"A paper is not a random collection of experiments you report on. The paper sells a single thing that was not obvious or present before. The entire paper is organized around this core contribution with surgical precision."
+
+This applies whether you're presenting a new architecture, a theoretical result, or improved understanding of existing methods—NeurIPS explicitly notes that "originality does not necessarily require an entirely new method."
+
+**Practical Implication**: If you cannot state your contribution in one sentence, you don't yet have a paper. Everything else—experiments, related work, discussion—exists only to support that core claim.
+
+---
+
+## Time Allocation
+
+### From Neel Nanda
+
+Spend approximately **the same amount of time** on each of:
+1. The abstract
+2. The introduction
+3. The figures
+4. Everything else combined
+
+This isn't hyperbole—most reviewers form preliminary judgments before reaching your methods section. Readers encounter your paper in a predictable pattern: **title → abstract → introduction → figures → maybe the rest.**
+
+### Reviewer Reading Patterns
+
+Studies of reviewer behavior show:
+- Abstract is read 100% of the time
+- Introduction is skimmed by 90%+ of reviewers
+- Figures are examined before methods by most reviewers
+- Full methods are read only if interest is established
+
+**Implication**: Front-load your paper's value. Don't bury the contribution.
+
+---
+
+## Abstract Writing Formula
+
+### Sebastian Farquhar's 5-Sentence Formula
+
+1. **What you achieved**: "We introduce...", "We prove...", "We demonstrate..."
+2. **Why this is hard and important**
+3. **How you do it** (with specialist keywords for discoverability)
+4. **What evidence you have**
+5. **Your most remarkable number/result**
+
+### Example (Good Abstract)
+
+```
+We prove that gradient descent on overparameterized neural networks
+converges to global minima at a linear rate. [What]
+This resolves a fundamental question about why deep learning works
+despite non-convex optimization landscapes. [Why hard/important]
+Our proof relies on showing that the Neural Tangent Kernel remains
+approximately constant during training, reducing the problem to
+kernel regression. [How with keywords]
+We validate our theory on CIFAR-10 and ImageNet, showing that
+predicted convergence rates match experiments within 5%. [Evidence]
+This is the first polynomial-time convergence guarantee for
+networks with practical depth and width. [Remarkable result]
+```
+
+### What to Avoid
+
+From Zachary Lipton: "If the first sentence can be pre-pended to any ML paper, delete it."
+
+**Delete these openings**:
+- "Large language models have achieved remarkable success..."
+- "Deep learning has revolutionized..."
+- "In recent years, neural networks have..."
+
+**Start with your specific contribution instead.**
+
+---
+
+## Introduction Structure
+
+### Requirements
+
+- **1-1.5 pages maximum** (in two-column format)
+- **Methods should start by page 2-3**
+- Must include **2-4 bullet contribution list** (max 1-2 lines each)
+
+### Structure Template
+
+```markdown
+1. Opening Hook (2-3 sentences)
+ - State the problem your paper addresses
+ - Why it matters RIGHT NOW
+
+2. Background/Challenge (1 paragraph)
+ - What makes this problem hard?
+ - What have others tried? Why is it insufficient?
+
+3. Your Approach (1 paragraph)
+ - What do you do differently?
+ - Key insight that enables your contribution
+
+4. Contribution Bullets (2-4 items)
+ - Be specific and falsifiable
+ - Each bullet: 1-2 lines maximum
+
+5. Results Preview (2-3 sentences)
+ - Most impressive numbers
+ - Scope of evaluation
+
+6. Paper Organization (optional, 1-2 sentences)
+ - "Section 2 presents... Section 3 describes..."
+```
+
+### Contribution Bullets: Good vs Bad
+
+**Good:**
+- We prove that X converges in O(n log n) time under assumption Y
+- We introduce Z, a 3-layer architecture that reduces memory by 40%
+- We demonstrate that A outperforms B by 15% on benchmark C
+
+**Bad:**
+- We study the problem of X (not a contribution)
+- We provide extensive experiments (too vague)
+- We make several contributions to the field (says nothing)
+
+---
+
+## Sentence-Level Clarity
+
+### From Gopen & Swan: "The Science of Scientific Writing"
+
+The seminal 1990 paper by George Gopen and Judith Swan establishes that **readers have structural expectations** about where information appears in prose. Violating these expectations forces readers to spend energy on structure rather than content.
+
+> "If the reader is to grasp what the writer means, the writer must understand what the reader needs."
+
+#### The 7 Principles of Reader Expectations
+
+**Principle 1: Subject-Verb Proximity**
+
+Keep grammatical subject and verb close together. Anything intervening reads as interruption of lesser importance.
+
+**Weak**: "The model, which was trained on 100M tokens and fine-tuned on domain-specific data using LoRA with rank 16, achieves state-of-the-art results"
+
+**Strong**: "The model achieves state-of-the-art results after training on 100M tokens and fine-tuning with LoRA (rank 16)"
+
+**Principle 2: Stress Position (Save the Best for Last)**
+
+Readers naturally emphasize the **last words of a sentence**. Place your most important information there.
+
+**Weak**: "Accuracy improves by 15% when using attention"
+**Strong**: "When using attention, accuracy improves by **15%**"
+
+**Principle 3: Topic Position (First Things First)**
+
+The beginning of a sentence establishes perspective. Put the "whose story" element first—readers expect the sentence to be about whoever shows up first.
+
+**Weak**: "A novel attention mechanism that computes alignment scores is introduced"
+**Strong**: "To address the alignment problem, we introduce a novel attention mechanism"
+
+**Principle 4: Old Information Before New**
+
+Put familiar information (old) in the topic position for backward linkage; put new information in the stress position for emphasis.
+
+**Weak**: "Sparse attention was introduced by Child et al. The quadratic complexity of standard attention motivates this work."
+**Strong**: "Standard attention has quadratic complexity. To address this, Child et al. introduced sparse attention."
+
+**Principle 5: One Unit, One Function**
+
+Each unit of discourse (sentence, paragraph, section) should serve a single function. If you have two points, use two units.
+
+**Principle 6: Articulate Action in the Verb**
+
+Express the action of each sentence in its verb, not in nominalized nouns.
+
+**Weak**: "We performed an analysis of the results" (nominalization)
+**Strong**: "We analyzed the results" (action in verb)
+
+**Principle 7: Context Before New Information**
+
+Provide context before asking the reader to consider anything new. This applies at all levels—sentence, paragraph, section.
+
+**Weak**: "Equation 3 shows that convergence is guaranteed when the learning rate satisfies..."
+**Strong**: "For convergence to be guaranteed, the learning rate must satisfy the condition in Equation 3..."
+
+#### Summary Table
+
+| Principle | Rule | Mnemonic |
+|-----------|------|----------|
+| Subject-Verb Proximity | Keep subject and verb close | "Don't interrupt yourself" |
+| Stress Position | Emphasis at sentence end | "Save the best for last" |
+| Topic Position | Context at sentence start | "First things first" |
+| Old Before New | Familiar → unfamiliar | "Build on known ground" |
+| One Unit, One Function | Each paragraph = one point | "One idea per container" |
+| Action in Verb | Use verbs, not nominalizations | "Verbs do, nouns sit" |
+| Context Before New | Explain before presenting | "Set the stage first" |
+
+---
+
+---
+
+## Micro-Level Writing Tips
+
+### From Ethan Perez (Anthropic)
+
+These practical micro-level tips improve clarity at the sentence and word level.
+
+#### Pronoun Management
+
+**Minimize pronouns** ("this," "it," "these," "that"). When pronouns are necessary, use them as adjectives with a noun:
+
+**Weak**: "This shows that the model converges."
+**Strong**: "This result shows that the model converges."
+
+**Weak**: "It improves performance."
+**Strong**: "This modification improves performance."
+
+#### Verb Placement
+
+**Position verbs early** in sentences for better parsing:
+
+**Weak**: "The gradient, after being computed and normalized, updates the weights."
+**Strong**: "The gradient updates the weights after being computed and normalized."
+
+#### Apostrophe Unfolding
+
+Transform possessive constructions for clarity:
+
+**Original**: "X's Y" → **Unfolded**: "The Y of X"
+
+**Before**: "The model's accuracy on the test set"
+**After**: "The accuracy of the model on the test set"
+
+This isn't always better, but when sentences feel awkward, try unfolding.
+
+#### Words to Eliminate
+
+Delete these filler words in almost all cases:
+- "actually"
+- "a bit"
+- "fortunately" / "unfortunately"
+- "very" / "really"
+- "quite"
+- "basically"
+- "essentially"
+- Excessive connectives ("however," "moreover," "furthermore" when not needed)
+
+#### Sentence Construction Rules
+
+1. **One idea per sentence** - If struggling to express an idea in one sentence, it needs two
+2. **No repeated sounds** - Avoid similar-sounding words in the same sentence
+3. **Every sentence adds information** - Delete sentences that merely restate
+4. **Active voice always** - Specify the actor ("We find..." not "It is found...")
+5. **Expand contractions** - "don't" → "do not" for formality
+
+#### Paragraph Architecture
+
+- **First sentence**: State the point clearly
+- **Middle sentences**: Support with evidence
+- **Last sentence**: Reinforce or transition
+
+Don't bury key information in the middle of paragraphs.
+
+---
+
+## Word Choice and Precision
+
+### From Zachary Lipton
+
+**Eliminate hedging** unless genuine uncertainty exists:
+- Delete "may" and "can" unless necessary
+- "provides *very* tight approximation" drips with insecurity
+- "provides tight approximation" is confident
+
+**Avoid vacuous intensifiers**:
+- Delete: very, extremely, highly, significantly (unless statistical)
+- These words signal insecurity, not strength
+
+### From Jacob Steinhardt
+
+**Precision over brevity**: Replace vague terms with specific ones.
+
+| Vague | Specific |
+|-------|----------|
+| performance | accuracy, latency, throughput |
+| improves | increases accuracy by X%, reduces latency by Y |
+| large | 1B parameters, 100M tokens |
+| fast | 3x faster, 50ms latency |
+| good results | 92% accuracy, 0.85 F1 |
+
+**Consistent terminology**: Referring to the same concept with different terms creates confusion.
+
+**Choose one and stick with it**:
+- "model" vs "network" vs "architecture"
+- "training" vs "learning" vs "optimization"
+- "sample" vs "example" vs "instance"
+
+### Vocabulary Signaling
+
+**Avoid words signaling incremental work**:
+- Never: "combine," "modify," "expand," "extend"
+- Instead: "develop," "propose," "introduce"
+
+**Why**: "We combine X and Y" sounds like you stapled two existing ideas together. "We develop a method that leverages X for Y" sounds like genuine contribution.
+
+---
+
+## Mathematical Writing
+
+### From Ethan Perez
+
+**Unfold apostrophes** for clarity:
+- Weak: "X's Y"
+- Strong: "The Y of X"
+
+Example: "the model's accuracy" → "the accuracy of the model"
+
+### General Principles
+
+1. **State all assumptions formally** before theorems
+2. **Provide intuitive explanations** alongside proofs
+3. **Use consistent notation** throughout the paper
+4. **Define symbols at first use**
+
+### Notation Conventions
+
+```latex
+% Scalars: lowercase italic
+$x$, $y$, $\alpha$, $\beta$
+
+% Vectors: lowercase bold
+$\mathbf{x}$, $\mathbf{v}$
+
+% Matrices: uppercase bold
+$\mathbf{W}$, $\mathbf{X}$
+
+% Sets: uppercase calligraphic
+$\mathcal{X}$, $\mathcal{D}$
+
+% Functions: roman for named functions
+$\mathrm{softmax}$, $\mathrm{ReLU}$
+```
+
+---
+
+## Figure Design
+
+### From Neel Nanda
+
+Figures should tell a coherent story even if the reader skips the text. Many readers DO skip the text initially.
+
+### Design Principles
+
+1. **Figure 1 is crucial**: Often the first thing readers examine after abstract
+2. **Self-contained captions**: Reader should understand figure without main text
+3. **No title inside figure**: The caption serves this function (ICML/NeurIPS rule)
+4. **Vector graphics**: PDF/EPS for plots, PNG (600 DPI) only for photographs
+
+### Accessibility Requirements
+
+8% of men have color vision deficiency. Your figures must work for them.
+
+**Solutions**:
+- Use colorblind-safe palettes: Okabe-Ito or Paul Tol
+- Avoid red-green combinations
+- Verify figures work in grayscale
+- Use different line styles (solid, dashed, dotted) in addition to colors
+
+### Tools
+
+```python
+# SciencePlots: Publication-ready styles
+import matplotlib.pyplot as plt
+plt.style.use(['science', 'ieee'])
+
+# Or for Nature-style
+plt.style.use(['science', 'nature'])
+```
+
+---
+
+## Common Mistakes to Avoid
+
+### Structure Mistakes
+
+| Mistake | Solution |
+|---------|----------|
+| Introduction too long (>1.5 pages) | Move background to Related Work |
+| Methods buried (after page 3) | Front-load contribution, cut intro |
+| Missing contribution bullets | Add 2-4 specific, falsifiable claims |
+| Experiments without explicit claims | State what each experiment tests |
+
+### Writing Mistakes
+
+| Mistake | Solution |
+|---------|----------|
+| Generic abstract opening | Start with your specific contribution |
+| Inconsistent terminology | Choose one term per concept |
+| Passive voice overuse | Use active voice: "We show" not "It is shown" |
+| Hedging everywhere | Be confident unless genuinely uncertain |
+
+### Figure Mistakes
+
+| Mistake | Solution |
+|---------|----------|
+| Raster graphics for plots | Use vector (PDF/EPS) |
+| Red-green color scheme | Use colorblind-safe palette |
+| Title inside figure | Put title in caption |
+| Captions require main text | Make captions self-contained |
+
+### Citation Mistakes
+
+| Mistake | Solution |
+|---------|----------|
+| Paper-by-paper Related Work | Organize methodologically |
+| Missing relevant citations | Reviewers authored papers—cite generously |
+| AI-generated citations | Always verify via APIs |
+| Inconsistent citation format | Use BibLaTeX with consistent keys |
+
+---
+
+## Pre-Submission Checklist
+
+Before submitting, verify:
+
+**Narrative**:
+- [ ] Can state contribution in one sentence
+- [ ] Three pillars (What/Why/So What) clear in intro
+- [ ] Every experiment supports a specific claim
+
+**Structure**:
+- [ ] Abstract follows 5-sentence formula
+- [ ] Introduction ≤1.5 pages
+- [ ] Methods start by page 2-3
+- [ ] 2-4 contribution bullets included
+- [ ] Limitations section present
+
+**Writing**:
+- [ ] Consistent terminology throughout
+- [ ] No generic opening sentences
+- [ ] Hedging removed unless necessary
+- [ ] All figures have self-contained captions
+
+**Technical**:
+- [ ] All citations verified via API
+- [ ] Error bars included with methodology
+- [ ] Compute resources documented
+- [ ] Code/data availability stated
diff --git a/.agents/skills/ml-paper-writing/templates/README.md b/.agents/skills/ml-paper-writing/templates/README.md
new file mode 100644
index 0000000..0633b73
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/README.md
@@ -0,0 +1,251 @@
+# LaTeX Templates for ML/AI Conferences
+
+This directory contains official LaTeX templates for major machine learning and AI conferences.
+
+---
+
+## Compiling LaTeX to PDF
+
+### Option 1: VS Code with LaTeX Workshop (Recommended)
+
+**Setup:**
+1. Install [TeX Live](https://www.tug.org/texlive/) (full distribution recommended)
+ - macOS: `brew install --cask mactex`
+ - Ubuntu: `sudo apt install texlive-full`
+ - Windows: Download from [tug.org/texlive](https://www.tug.org/texlive/)
+
+2. Install VS Code extension: **LaTeX Workshop** by James Yu
+ - Open VS Code → Extensions (Cmd/Ctrl+Shift+X) → Search "LaTeX Workshop" → Install
+
+**Usage:**
+- Open any `.tex` file in VS Code
+- Save the file (Cmd/Ctrl+S) → Auto-compiles to PDF
+- Click the green play button or use `Cmd/Ctrl+Alt+B` to build
+- View PDF: Click "View LaTeX PDF" icon or `Cmd/Ctrl+Alt+V`
+- Side-by-side view: `Cmd/Ctrl+Alt+V` then drag tab
+
+**Settings** (add to VS Code `settings.json`):
+```json
+{
+ "latex-workshop.latex.autoBuild.run": "onSave",
+ "latex-workshop.view.pdf.viewer": "tab",
+ "latex-workshop.latex.recipes": [
+ {
+ "name": "pdflatex → bibtex → pdflatex × 2",
+ "tools": ["pdflatex", "bibtex", "pdflatex", "pdflatex"]
+ }
+ ]
+}
+```
+
+### Option 2: Command Line
+
+```bash
+# Basic compilation
+pdflatex main.tex
+
+# With bibliography (full workflow)
+pdflatex main.tex
+bibtex main
+pdflatex main.tex
+pdflatex main.tex
+
+# Using latexmk (handles dependencies automatically)
+latexmk -pdf main.tex
+
+# Continuous compilation (watches for changes)
+latexmk -pdf -pvc main.tex
+```
+
+### Option 3: Overleaf (Online)
+
+1. Go to [overleaf.com](https://www.overleaf.com)
+2. New Project → Upload Project → Upload the template folder as ZIP
+3. Edit online with real-time PDF preview
+4. No local installation needed
+
+### Option 4: Other IDEs
+
+| IDE | Extension/Plugin | Notes |
+|-----|------------------|-------|
+| **Cursor** | LaTeX Workshop | Same as VS Code |
+| **Sublime Text** | LaTeXTools | Popular, well-maintained |
+| **Vim/Neovim** | VimTeX | Powerful, keyboard-driven |
+| **Emacs** | AUCTeX | Comprehensive LaTeX environment |
+| **TeXstudio** | Built-in | Dedicated LaTeX IDE |
+| **Texmaker** | Built-in | Cross-platform LaTeX editor |
+
+### Troubleshooting Compilation
+
+**"File not found" errors:**
+```bash
+# Ensure you're in the template directory
+cd templates/icml2026
+pdflatex example_paper.tex
+```
+
+**Bibliography not appearing:**
+```bash
+# Run bibtex after first pdflatex
+pdflatex main.tex
+bibtex main # Uses main.aux to find citations
+pdflatex main.tex # Incorporates bibliography
+pdflatex main.tex # Resolves references
+```
+
+**Missing packages:**
+```bash
+# TeX Live package manager
+tlmgr install <package-name>
+
+# Or install full distribution to avoid this
+```
+
+---
+
+## Available Templates
+
+| Conference | Directory | Year | Source |
+|------------|-----------|------|--------|
+| ICML | `icml2026/` | 2026 | [Official ICML](https://icml.cc/Conferences/2026/AuthorInstructions) |
+| ICLR | `iclr2026/` | 2026 | [Official GitHub](https://github.com/ICLR/Master-Template) |
+| NeurIPS | `neurips2025/` | 2025 | Community template |
+| ACL | `acl/` | 2025+ | [Official ACL](https://github.com/acl-org/acl-style-files) |
+| AAAI | `aaai2026/` | 2026 | [AAAI Author Kit](https://aaai.org/authorkit26/) |
+| COLM | `colm2025/` | 2025 | [Official COLM](https://github.com/COLM-org/Template) |
+
+## Usage
+
+### ICML 2026
+
+```latex
+\documentclass{article}
+\usepackage{icml2026} % For submission
+% \usepackage[accepted]{icml2026} % For camera-ready
+
+\begin{document}
+% Your paper content
+\end{document}
+```
+
+Key files:
+- `icml2026.sty` - Style file
+- `icml2026.bst` - Bibliography style
+- `example_paper.tex` - Example document
+
+### ICLR 2026
+
+```latex
+\documentclass{article}
+\usepackage[submission]{iclr2026_conference} % For submission
+% \usepackage[final]{iclr2026_conference} % For camera-ready
+
+\begin{document}
+% Your paper content
+\end{document}
+```
+
+Key files:
+- `iclr2026_conference.sty` - Style file
+- `iclr2026_conference.bst` - Bibliography style
+- `iclr2026_conference.tex` - Example document
+
+### ACL Venues (ACL, EMNLP, NAACL)
+
+```latex
+\documentclass[11pt]{article}
+\usepackage[review]{acl} % For review
+% \usepackage{acl} % For camera-ready
+
+\begin{document}
+% Your paper content
+\end{document}
+```
+
+Key files:
+- `acl.sty` - Style file
+- `acl_natbib.bst` - Bibliography style
+- `acl_latex.tex` - Example document
+
+### AAAI 2026
+
+```latex
+\documentclass[letterpaper]{article}
+\usepackage[submission]{aaai2026} % For submission
+% \usepackage{aaai2026} % For camera-ready
+
+\begin{document}
+% Your paper content
+\end{document}
+```
+
+Key files:
+- `aaai2026.sty` - Style file
+- `aaai2026.bst` - Bibliography style
+
+### COLM 2025
+
+```latex
+\documentclass{article}
+\usepackage[submission]{colm2025_conference} % For submission
+% \usepackage[final]{colm2025_conference} % For camera-ready
+
+\begin{document}
+% Your paper content
+\end{document}
+```
+
+Key files:
+- `colm2025_conference.sty` - Style file
+- `colm2025_conference.bst` - Bibliography style
+
+## Page Limits Summary
+
+| Conference | Submission | Camera-Ready | Notes |
+|------------|-----------|--------------|-------|
+| ICML 2026 | 8 pages | 9 pages | +unlimited refs/appendix |
+| ICLR 2026 | 9 pages | 10 pages | +unlimited refs/appendix |
+| NeurIPS 2025 | 9 pages | 9 pages | +checklist outside limit |
+| ACL 2025 | 8 pages (long) | varies | +unlimited refs/appendix |
+| AAAI 2026 | 7 pages | 8 pages | +unlimited refs/appendix |
+| COLM 2025 | 9 pages | 10 pages | +unlimited refs/appendix |
+
+## Common Issues
+
+### Compilation Errors
+
+1. **Missing packages**: Install full TeX distribution (TeX Live Full or MikTeX)
+2. **Bibliography errors**: Use the provided `.bst` file with `\bibliographystyle{}`
+3. **Font warnings**: Install `cm-super` or use `\usepackage{lmodern}`
+
+### Anonymization
+
+For submission, ensure:
+- No author names in `\author{}`
+- No acknowledgments section
+- No grant numbers
+- Use anonymous repositories
+- Cite own work in third person
+
+### Common LaTeX Packages
+
+```latex
+% Recommended packages (check compatibility with venue style)
+\usepackage{amsmath,amsthm,amssymb} % Math
+\usepackage{graphicx} % Figures
+\usepackage{booktabs} % Tables
+\usepackage{hyperref} % Links
+\usepackage{algorithm,algorithmic} % Algorithms
+\usepackage{natbib} % Citations
+```
+
+## Updating Templates
+
+Templates are updated annually. Check official sources before each submission:
+
+- ICML: https://icml.cc/
+- ICLR: https://iclr.cc/
+- NeurIPS: https://neurips.cc/
+- ACL: https://github.com/acl-org/acl-style-files
+- AAAI: https://aaai.org/
+- COLM: https://colmweb.org/
diff --git a/.agents/skills/ml-paper-writing/templates/aaai2026/README.md b/.agents/skills/ml-paper-writing/templates/aaai2026/README.md
new file mode 100644
index 0000000..401ff3e
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/aaai2026/README.md
@@ -0,0 +1,534 @@
+# AAAI 2026 统一LaTeX模板使用说明 / AAAI 2026 Unified LaTeX Template Guide
+
+> **📝 重要说明 / Important Notice**: 本仓库借助Cursor在AAAI 2026官方模板基础上改进得到。如果遇到不满足或有冲突的情况,请积极提issues。
+>
+> **📝 Important Notice**: This repository is improved based on the official AAAI 2026 template with the assistance of Cursor. If you encounter any issues or conflicts, please actively submit issues.
+
+[中文](#中文版本) | [English](#english-version)
+
+---
+
+## 🌐 在线查看 / Online Access
+
+**📖 在线阅读和测试模板**: [https://cn.overleaf.com/read/wyhcnvcrtpyt#cd4a07](https://cn.overleaf.com/read/wyhcnvcrtpyt#cd4a07)
+
+**📖 Online View and Test Template**: [https://cn.overleaf.com/read/wyhcnvcrtpyt#cd4a07](https://cn.overleaf.com/read/wyhcnvcrtpyt#cd4a07)
+
+💡 **提示 / Tips**:
+- 中文:您可以通过上述链接在Overleaf中直接查看、编辑和编译模板,无需本地安装LaTeX环境
+- English: You can view, edit, and compile the template directly in Overleaf using the link above, without needing a local LaTeX installation
+
+---
+
+## 中文版本
+
+### 概述 ✅
+
+我已经将AAAI 2026的两个版本(匿名投稿版本和camera-ready版本)**完整合并**成一个统一的模板文件 `aaai2026-unified-template.tex`。
+
+该模板包含了原始两个模板的**所有完整内容**(共886行,比原始文件更全面),包括:
+- 所有格式化说明和要求
+- 完整的示例代码和表格
+- 图片处理指南
+- 参考文献格式要求
+- 所有章节和附录内容
+- 版本特定的Acknowledgments部分
+
+### 主要差异分析
+
+通过比较原始的两个模板,我发现主要差异在于:
+
+#### 1. 包的加载方式
+- **匿名版本**: `\usepackage[submission]{aaai2026}`
+- **Camera-ready版本**: `\usepackage{aaai2026}`
+
+#### 2. 标题差异
+- **匿名版本**: "AAAI Press Anonymous Submission Instructions for Authors Using LaTeX"
+- **Camera-ready版本**: "AAAI Press Formatting Instructions for Authors Using LaTeX --- A Guide"
+
+#### 3. Links环境的处理
+- **匿名版本**: Links环境被注释掉,防止泄露作者身份
+- **Camera-ready版本**: Links环境正常显示
+
+#### 4. 内容部分差异
+- **匿名版本**: 包含"Preparing an Anonymous Submission"部分的特殊说明
+- **Camera-ready版本**: 包含完整的格式说明和版权信息
+
+### 依赖文件检查结果
+
+✅ **已验证并复制到主目录的文件**:
+
+- `aaai2026.sty` - AAAI 2026 样式文件(两个版本完全相同)
+- `aaai2026.bst` - 参考文献样式文件(两个版本完全相同)
+- `aaai2026.bib` - 示例参考文献文件
+- `figure1.pdf` 和 `figure2.pdf` - 示例图片文件
+
+所有这些文件在两个版本中都是相同的,因此统一模板可以正常工作。
+
+### 如何使用统一模板
+
+#### 切换到匿名投稿版本
+在模板文件第11行,**取消注释**这一行:
+```latex
+\def\aaaianonymous{true}
+```
+
+#### 切换到Camera-ready版本
+在模板文件第11行,**注释掉**或**删除**这一行:
+```latex
+% \def\aaaianonymous{true}
+```
+
+### 一键切换的核心机制
+
+统一模板使用了LaTeX的条件编译功能:
+
+```latex
+% 条件包加载
+\ifdefined\aaaianonymous
+ \usepackage[submission]{aaai2026} % 匿名版本
+\else
+ \usepackage{aaai2026} % Camera-ready版本
+\fi
+
+% 条件标题设置
+\ifdefined\aaaianonymous
+ \title{AAAI Press Anonymous Submission\\Instructions for Authors Using \LaTeX{}}
+\else
+ \title{AAAI Press Formatting Instructions \\for Authors Using \LaTeX{} --- A Guide}
+\fi
+
+% 条件内容显示
+\ifdefined\aaaianonymous
+ % 匿名版本特有内容
+\else
+ % Camera-ready版本特有内容
+\fi
+```
+
+### 文件清单
+
+主目录现在包含以下文件:
+
+- `aaai2026-unified-template.tex` - 统一主论文模板文件
+- `aaai2026-unified-supp.tex` - 统一补充材料模板文件
+- `aaai2026.sty` - AAAI 2026 LaTeX 样式文件
+- `aaai2026.bst` - 参考文献样式文件
+- `aaai2026.bib` - 示例参考文献文件
+- `figure1.pdf` - 示例图片1
+- `figure2.pdf` - 示例图片2
+- `README.md` - 本说明文档
+
+### 补充材料模板 (Supplementary Material Template)
+
+#### 概述
+`aaai2026-unified-supp.tex` 是专门为AAAI 2026补充材料设计的统一模板,与主论文模板使用相同的版本切换机制。
+
+#### 主要功能
+- **版本切换**: 通过修改一行代码在匿名投稿和camera-ready版本间切换
+- **补充内容支持**: 支持额外的实验、推导、数据、图表、算法等
+- **格式一致性**: 与主论文模板保持完全一致的格式要求
+- **代码示例**: 包含算法、代码列表等补充材料的示例
+
+#### 使用方法
+与主论文模板相同,只需修改第11行:
+```latex
+% 匿名投稿版本
+\def\aaaianonymous{true}
+
+% Camera-ready版本
+% \def\aaaianonymous{true}
+```
+
+#### 补充材料内容建议
+- 额外的实验结果和消融研究
+- 详细的数学推导和证明
+- 更多的图表和可视化
+- 算法伪代码和实现细节
+- 数据集描述和预处理步骤
+- 超参数设置和实验配置
+- 失败案例分析
+- 计算复杂度分析
+
+### 使用检查清单 (Usage Checklist)
+
+#### 📋 投稿前检查清单 (Pre-Submission Checklist)
+
+**版本设置**:
+- [ ] 已设置 `\def\aaaianonymous{true}` (匿名投稿)
+- [ ] 已注释掉所有可能暴露身份的信息
+- [ ] 已匿名化参考文献(移除作者姓名)
+
+**内容完整性**:
+- [ ] 标题、摘要、关键词已填写
+- [ ] 所有章节内容完整
+- [ ] 图表编号连续且正确
+- [ ] 参考文献格式正确
+- [ ] 补充材料(如有)已准备
+
+**格式检查**:
+- [ ] 页面边距符合要求
+- [ ] 字体和字号正确
+- [ ] 行间距符合标准
+- [ ] 图表位置和大小合适
+- [ ] 数学公式格式正确
+
+**技术检查**:
+- [ ] LaTeX编译无错误
+- [ ] 参考文献正确生成
+- [ ] PDF输出正常
+- [ ] 文件大小在限制范围内
+
+#### 📋 录用后检查清单 (Post-Acceptance Checklist)
+
+**版本切换**:
+- [ ] 已注释掉 `\def\aaaianonymous{true}` (camera-ready)
+- [ ] 已添加完整的作者信息
+- [ ] 已添加所有作者单位信息
+- [ ] 已恢复所有被注释的内容
+
+**内容更新**:
+- [ ] 已根据审稿意见修改内容
+- [ ] 已更新所有图表和实验
+- [ ] 已完善补充材料
+- [ ] 已检查所有链接和引用
+
+**最终检查**:
+- [ ] 最终PDF质量检查
+- [ ] 所有文件已备份
+- [ ] 符合会议最终提交要求
+- [ ] 补充材料已单独提交(如需要)
+
+#### 📋 补充材料检查清单 (Supplementary Material Checklist)
+
+**内容组织**:
+- [ ] 补充材料与主论文内容对应
+- [ ] 章节结构清晰合理
+- [ ] 图表编号与主论文不冲突
+- [ ] 参考文献格式一致
+
+**技术细节**:
+- [ ] 算法伪代码清晰完整
+- [ ] 实验设置详细说明
+- [ ] 数据预处理步骤明确
+- [ ] 超参数配置完整
+
+**格式要求**:
+- [ ] 使用统一的supp模板
+- [ ] 页面设置与主论文一致
+- [ ] 字体和格式符合要求
+- [ ] 文件大小在限制范围内
+
+### 实际使用建议
+
+1. **投稿阶段**:
+ - 取消注释 `\def\aaaianonymous{true}`
+ - 确保不包含任何可能暴露身份的信息
+ - 检查参考文献是否已匿名化
+
+2. **录用后准备final版本**:
+ - 注释掉或删除 `\def\aaaianonymous{true}` 这一行
+ - 添加完整的作者信息和affiliations
+ - 取消注释links环境(如果需要)
+
+3. **编译测试**:
+ - 分别在两种模式下编译,确保都能正常工作
+ - 检查输出的PDF是否符合要求
+ - 验证参考文献格式是否正确
+
+4. **依赖文件确认**:
+ - 确保所有依赖文件都在同一目录下
+ - 如果移动模板文件,记得同时移动依赖文件
+
+### 重要注意事项
+
+⚠️ **关于Bibliography Style**:
+- `aaai2026.sty`文件已经自动设置了`\bibliographystyle{aaai2026}`
+- **不要**在文档中再次添加`\bibliographystyle{aaai2026}`命令
+- 否则会出现"`Illegal, another \bibstyle command`"错误
+- 只需要使用`\bibliography{aaai2026}`命令即可
+
+### 编译命令示例
+
+```bash
+# 编译LaTeX文档
+pdflatex aaai2026-unified-template.tex
+bibtex aaai2026-unified-template
+pdflatex aaai2026-unified-template.tex
+pdflatex aaai2026-unified-template.tex
+```
+
+### 常见问题解决
+
+#### 1. "Illegal, another \bibstyle command"错误
+**原因**: 重复设置了bibliography style
+**解决方案**: 删除文档中的`\bibliographystyle{aaai2026}`命令,`aaai2026.sty`会自动处理
+
+#### 2. 参考文献格式不正确
+**原因**: 可能缺少natbib包或者BibTeX文件问题
+**解决方案**: 确保按照标准的LaTeX编译流程:pdflatex → bibtex → pdflatex → pdflatex
+
+---
+
+## English Version
+
+### Overview ✅
+
+I have **completely merged** the two AAAI 2026 versions (anonymous submission and camera-ready) into a single unified template file `aaai2026-unified-template.tex`.
+
+This template contains **all complete content** from both original templates (886 lines total, more comprehensive than the original files), including:
+- All formatting instructions and requirements
+- Complete example codes and tables
+- Image processing guidelines
+- Reference formatting requirements
+- All sections and appendix content
+- Version-specific Acknowledgments sections
+
+### Key Differences Analysis
+
+By comparing the two original templates, the main differences are:
+
+#### 1. Package Loading Method
+- **Anonymous version**: `\usepackage[submission]{aaai2026}`
+- **Camera-ready version**: `\usepackage{aaai2026}`
+
+#### 2. Title Differences
+- **Anonymous version**: "AAAI Press Anonymous Submission Instructions for Authors Using LaTeX"
+- **Camera-ready version**: "AAAI Press Formatting Instructions for Authors Using LaTeX --- A Guide"
+
+#### 3. Links Environment Handling
+- **Anonymous version**: Links environment commented out to prevent identity disclosure
+- **Camera-ready version**: Links environment displayed normally
+
+#### 4. Content Section Differences
+- **Anonymous version**: Contains special instructions in "Preparing an Anonymous Submission" section
+- **Camera-ready version**: Contains complete formatting instructions and copyright information
+
+### Dependency Files Verification
+
+✅ **Files verified and copied to main directory**:
+
+- `aaai2026.sty` - AAAI 2026 style file (identical in both versions)
+- `aaai2026.bst` - Bibliography style file (identical in both versions)
+- `aaai2026.bib` - Sample bibliography file
+- `figure1.pdf` and `figure2.pdf` - Sample image files
+
+All these files are identical in both versions, so the unified template works properly.
+
+### How to Use the Unified Template
+
+#### Switch to Anonymous Submission Version
+On line 11 of the template file, **uncomment** this line:
+```latex
+\def\aaaianonymous{true}
+```
+
+#### Switch to Camera-ready Version
+On line 11 of the template file, **comment out** or **delete** this line:
+```latex
+% \def\aaaianonymous{true}
+```
+
+### Core Mechanism of One-Click Switching
+
+The unified template uses LaTeX conditional compilation:
+
+```latex
+% Conditional package loading
+\ifdefined\aaaianonymous
+ \usepackage[submission]{aaai2026} % Anonymous version
+\else
+ \usepackage{aaai2026} % Camera-ready version
+\fi
+
+% Conditional title setting
+\ifdefined\aaaianonymous
+ \title{AAAI Press Anonymous Submission\\Instructions for Authors Using \LaTeX{}}
+\else
+ \title{AAAI Press Formatting Instructions \\for Authors Using \LaTeX{} --- A Guide}
+\fi
+
+% Conditional content display
+\ifdefined\aaaianonymous
+ % Anonymous version specific content
+\else
+ % Camera-ready version specific content
+\fi
+```
+
+### File List
+
+The main directory now contains the following files:
+
+- `aaai2026-unified-template.tex` - Unified main paper template file
+- `aaai2026-unified-supp.tex` - Unified supplementary material template file
+- `aaai2026.sty` - AAAI 2026 LaTeX style file
+- `aaai2026.bst` - Bibliography style file
+- `aaai2026.bib` - Sample bibliography file
+- `figure1.pdf` - Sample image 1
+- `figure2.pdf` - Sample image 2
+- `README.md` - This documentation
+
+### Supplementary Material Template
+
+#### Overview
+`aaai2026-unified-supp.tex` is a unified template specifically designed for AAAI 2026 supplementary materials, using the same version switching mechanism as the main paper template.
+
+#### Key Features
+- **Version Switching**: Switch between anonymous submission and camera-ready versions by modifying one line of code
+- **Supplementary Content Support**: Supports additional experiments, derivations, data, figures, algorithms, etc.
+- **Format Consistency**: Maintains complete format consistency with the main paper template
+- **Code Examples**: Includes examples for algorithms, code listings, and other supplementary materials
+
+#### Usage
+Same as the main paper template, just modify line 11:
+```latex
+% Anonymous submission version
+\def\aaaianonymous{true}
+
+% Camera-ready version
+% \def\aaaianonymous{true}
+```
+
+#### Supplementary Material Content Suggestions
+- Additional experimental results and ablation studies
+- Detailed mathematical derivations and proofs
+- More figures and visualizations
+- Algorithm pseudocode and implementation details
+- Dataset descriptions and preprocessing steps
+- Hyperparameter settings and experimental configurations
+- Failure case analysis
+- Computational complexity analysis
+
+### Usage Checklist
+
+#### 📋 Pre-Submission Checklist
+
+**Version Setup**:
+- [ ] Set `\def\aaaianonymous{true}` (anonymous submission)
+- [ ] Commented out all information that could reveal identity
+- [ ] Anonymized references (removed author names)
+
+**Content Completeness**:
+- [ ] Title, abstract, and keywords filled
+- [ ] All sections complete
+- [ ] Figure and table numbers consecutive and correct
+- [ ] Reference format correct
+- [ ] Supplementary materials prepared (if any)
+
+**Format Check**:
+- [ ] Page margins meet requirements
+- [ ] Font and font size correct
+- [ ] Line spacing meets standards
+- [ ] Figure and table positions and sizes appropriate
+- [ ] Mathematical formula format correct
+
+**Technical Check**:
+- [ ] LaTeX compilation error-free
+- [ ] References generated correctly
+- [ ] PDF output normal
+- [ ] File size within limits
+
+#### 📋 Post-Acceptance Checklist
+
+**Version Switch**:
+- [ ] Commented out `\def\aaaianonymous{true}` (camera-ready)
+- [ ] Added complete author information
+- [ ] Added all author affiliation information
+- [ ] Restored all commented content
+
+**Content Updates**:
+- [ ] Modified content according to reviewer comments
+- [ ] Updated all figures and experiments
+- [ ] Completed supplementary materials
+- [ ] Checked all links and citations
+
+**Final Check**:
+- [ ] Final PDF quality check
+- [ ] All files backed up
+- [ ] Meets conference final submission requirements
+- [ ] Supplementary materials submitted separately (if needed)
+
+#### 📋 Supplementary Material Checklist
+
+**Content Organization**:
+- [ ] Supplementary materials correspond to main paper content
+- [ ] Chapter structure clear and reasonable
+- [ ] Figure and table numbers don't conflict with main paper
+- [ ] Reference format consistent
+
+**Technical Details**:
+- [ ] Algorithm pseudocode clear and complete
+- [ ] Experimental setup explained in detail
+- [ ] Data preprocessing steps clear
+- [ ] Hyperparameter configuration complete
+
+**Format Requirements**:
+- [ ] Using unified supp template
+- [ ] Page settings consistent with main paper
+- [ ] Font and format meet requirements
+- [ ] File size within limits
+
+### Practical Usage Recommendations
+
+1. **Submission Stage**:
+ - Uncomment `\def\aaaianonymous{true}`
+ - Ensure no information that could reveal identity is included
+ - Check that references are anonymized
+
+2. **Preparing final version after acceptance**:
+ - Comment out or delete the `\def\aaaianonymous{true}` line
+ - Add complete author information and affiliations
+ - Uncomment links environment (if needed)
+
+3. **Compilation Testing**:
+ - Compile in both modes to ensure proper functionality
+ - Check if the output PDF meets requirements
+ - Verify reference formatting is correct
+
+4. **Dependency File Confirmation**:
+ - Ensure all dependency files are in the same directory
+ - Remember to move dependency files when moving the template file
+
+### Important Notes
+
+⚠️ **About Bibliography Style**:
+- The `aaai2026.sty` file automatically sets `\bibliographystyle{aaai2026}`
+- **Do NOT** add `\bibliographystyle{aaai2026}` command again in your document
+- Otherwise you'll get "`Illegal, another \bibstyle command`" error
+- Just use the `\bibliography{aaai2026}` command
+
+### Compilation Commands Example
+
+```bash
+# Compile LaTeX document
+pdflatex aaai2026-unified-template.tex
+bibtex aaai2026-unified-template
+pdflatex aaai2026-unified-template.tex
+pdflatex aaai2026-unified-template.tex
+```
+
+### Common Issues and Solutions
+
+#### 1. "Illegal, another \bibstyle command" Error
+**Cause**: Duplicate bibliography style setting
+**Solution**: Remove the `\bibliographystyle{aaai2026}` command from your document, `aaai2026.sty` handles it automatically
+
+#### 2. Incorrect Reference Format
+**Cause**: Missing natbib package or BibTeX file issues
+**Solution**: Follow the standard LaTeX compilation process: pdflatex → bibtex → pdflatex → pdflatex
+
+---
+
+## 版本信息 / Version Information
+
+- **模板版本 / Template Version**: AAAI 2026 Unified (Main + Supplementary)
+- **创建日期 / Created**: 2024年12月
+- **支持格式 / Supported Formats**: Anonymous Submission & Camera-Ready
+- **模板类型 / Template Types**: Main Paper Template & Supplementary Material Template
+- **兼容性 / Compatibility**: LaTeX 2020+ / TeXLive 2024+
+
+---
+
+🎉 **现在您只需要修改一行代码就可以在两个版本之间切换,同时所有必要的依赖文件都已经准备就绪!**
+🎉 **Now you only need to modify one line of code to switch between the two versions, with all necessary dependency files ready to use!** \ No newline at end of file
diff --git a/.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-supp.tex b/.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-supp.tex
new file mode 100644
index 0000000..e59d365
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-supp.tex
@@ -0,0 +1,144 @@
+%File: aaai2026-unified-supp.tex
+%
+% UNIFIED AAAI 2026 SUPPLEMENTARY MATERIAL TEMPLATE
+% To switch between anonymous submission and camera-ready versions,
+% simply change the next line:
+%
+% For ANONYMOUS SUBMISSION: uncomment the next line
+% \def\aaaianonymous{true}
+%
+% For CAMERA-READY VERSION: comment out or delete the next line
+% \def\aaaianonymous{true}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass[letterpaper]{article} % DO NOT CHANGE THIS
+
+% Conditional package loading based on version
+\ifdefined\aaaianonymous
+ \usepackage[submission]{aaai2026} % Anonymous submission version
+\else
+ \usepackage{aaai2026} % Camera-ready version
+\fi
+
+\usepackage{times} % DO NOT CHANGE THIS
+\usepackage{helvet} % DO NOT CHANGE THIS
+\usepackage{courier} % DO NOT CHANGE THIS
+\usepackage[hyphens]{url} % DO NOT CHANGE THIS
+\usepackage{graphicx} % DO NOT CHANGE THIS
+\urlstyle{rm} % DO NOT CHANGE THIS
+\def\UrlFont{\rm} % DO NOT CHANGE THIS
+\usepackage{natbib} % DO NOT CHANGE THIS AND DO NOT ADD ANY OPTIONS TO IT
+\usepackage{caption} % DO NOT CHANGE THIS AND DO NOT ADD ANY OPTIONS TO IT
+\frenchspacing % DO NOT CHANGE THIS
+\setlength{\pdfpagewidth}{8.5in} % DO NOT CHANGE THIS
+\setlength{\pdfpageheight}{11in} % DO NOT CHANGE THIS
+
+% These are recommended to typeset algorithms but not required.
+\usepackage{algorithm}
+\usepackage{algorithmic}
+
+% These are recommended to typeset listings but not required.
+\usepackage{newfloat}
+\usepackage{listings}
+\DeclareCaptionStyle{ruled}{labelfont=normalfont,labelsep=colon,strut=off} % DO NOT CHANGE THIS
+\lstset{%
+ basicstyle={\footnotesize\ttfamily},
+ numbers=left,numberstyle=\footnotesize,xleftmargin=2em,
+ aboveskip=0pt,belowskip=0pt,
+ showstringspaces=false,tabsize=2,breaklines=true}
+\floatstyle{ruled}
+\newfloat{listing}{tb}{lst}{}
+\floatname{listing}{Listing}
+
+\pdfinfo{
+/TemplateVersion (2026.1)
+}
+
+\setcounter{secnumdepth}{0} %May be changed to 1 or 2 if section numbers are desired.
+
+% Title - conditionally set based on version
+\ifdefined\aaaianonymous
+ \title{AAAI 2026 Supplementary Material\\Anonymous Submission}
+\else
+ \title{AAAI 2026 Supplementary Material\\Camera Ready}
+\fi
+
+% Author and affiliation information
+\ifdefined\aaaianonymous
+\author{
+ Anonymous Submission
+}
+\affiliations{
+ % Leave affiliations empty for anonymous submission
+}
+\else
+\author{
+ %Authors
+ Written by AAAI Press Staff\textsuperscript{\rm 1}\thanks{With help from the AAAI Publications Committee.}\\
+ AAAI Style Contributions by Pater Patel Schneider,
+ Sunil Issar,\\
+ J. Scott Penberthy,
+ George Ferguson,
+ Hans Guesgen,
+ Francisco Cruz\equalcontrib,
+ Marc Pujol-Gonzalez\equalcontrib
+}
+\affiliations{
+ \textsuperscript{\rm 1}Association for the Advancement of Artificial Intelligence\\
+ 1101 Pennsylvania Ave, NW Suite 300\\
+ Washington, DC 20004 USA\\
+ proceedings-questions@aaai.org
+}
+\fi
+
+\begin{document}
+
+\maketitle
+
+\begin{abstract}
+This document provides supplementary material for the main paper, including additional experiments, derivations, data, figures, algorithms, and other relevant content. Please add detailed information as needed. This supplementary material is submitted together with the main paper to further support and complement the main findings.
+\end{abstract}
+
+% ----------- Supplementary Content Starts Here -----------
+
+\section{Example Supplementary Content}
+
+This is the main body of the supplementary material. You may add extra experimental results, ablation studies, detailed derivations, additional figures, pseudocode, dataset descriptions, etc.
+
+\subsection{Additional Experiments}
+
+% Example: Insert a figure
+% Uncomment and modify the following lines to add your own figures:
+% \begin{figure}[h]
+% \centering
+% \includegraphics[width=0.9\columnwidth]{your-figure-name}
+% \caption{Your figure caption here.}
+% \label{fig:supp1}
+% \end{figure}
+
+\subsection{Detailed Derivations}
+
+You may provide detailed mathematical derivations, proofs, or other technical details here.
+
+\subsection{Pseudocode}
+
+\begin{algorithm}[h]
+\caption{Example Supplementary Algorithm}
+\begin{algorithmic}[1]
+\STATE Initialize parameters
+\FOR{each sample}
+ \STATE Compute loss
+ \STATE Update parameters
+\ENDFOR
+\STATE \textbf{return} optimal parameters
+\end{algorithmic}
+\end{algorithm}
+
+% ----------- Supplementary Content Ends Here -----------
+
+% References and End of Paper
+% These lines must be placed at the end of your paper
+\bibliography{aaai2026}
+
+\end{document} \ No newline at end of file
diff --git a/.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-template.tex b/.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-template.tex
new file mode 100644
index 0000000..0a7612f
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026-unified-template.tex
@@ -0,0 +1,952 @@
+%File: aaai2026-unified-template.tex
+%
+% UNIFIED AAAI 2026 TEMPLATE
+% To switch between anonymous submission and camera-ready versions,
+% simply change the next line:
+%
+% For ANONYMOUS SUBMISSION: uncomment the next line
+% \def\aaaianonymous{true}
+%
+% For CAMERA-READY VERSION: comment out or delete the next line
+% \def\aaaianonymous{true}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass[letterpaper]{article} % DO NOT CHANGE THIS
+
+% Conditional package loading based on version
+\ifdefined\aaaianonymous
+ \usepackage[submission]{aaai2026} % Anonymous submission version
+\else
+ \usepackage{aaai2026} % Camera-ready version
+\fi
+
+\usepackage{times} % DO NOT CHANGE THIS
+\usepackage{helvet} % DO NOT CHANGE THIS
+\usepackage{courier} % DO NOT CHANGE THIS
+\usepackage[hyphens]{url} % DO NOT CHANGE THIS
+\usepackage{graphicx} % DO NOT CHANGE THIS
+\urlstyle{rm} % DO NOT CHANGE THIS
+\def\UrlFont{\rm} % DO NOT CHANGE THIS
+\usepackage{natbib} % DO NOT CHANGE THIS AND DO NOT ADD ANY OPTIONS TO IT
+\usepackage{caption} % DO NOT CHANGE THIS AND DO NOT ADD ANY OPTIONS TO IT
+\frenchspacing % DO NOT CHANGE THIS
+\setlength{\pdfpagewidth}{8.5in} % DO NOT CHANGE THIS
+\setlength{\pdfpageheight}{11in} % DO NOT CHANGE THIS
+
+%
+% These are recommended to typeset algorithms but not required. See the subsubsection on algorithms. Remove them if you don't have algorithms in your paper.
+\usepackage{algorithm}
+\usepackage{algorithmic}
+
+%
+% These are are recommended to typeset listings but not required. See the subsubsection on listing. Remove this block if you don't have listings in your paper.
+\usepackage{newfloat}
+\usepackage{listings}
+\DeclareCaptionStyle{ruled}{labelfont=normalfont,labelsep=colon,strut=off} % DO NOT CHANGE THIS
+\lstset{%
+ basicstyle={\footnotesize\ttfamily},% footnotesize acceptable for monospace
+ numbers=left,numberstyle=\footnotesize,xleftmargin=2em,% show line numbers, remove this entire line if you don't want the numbers.
+ aboveskip=0pt,belowskip=0pt,%
+ showstringspaces=false,tabsize=2,breaklines=true}
+\floatstyle{ruled}
+\newfloat{listing}{tb}{lst}{}
+\floatname{listing}{Listing}
+
+%
+% Keep the \pdfinfo as shown here. There's no need
+% for you to add the /Title and /Author tags.
+\pdfinfo{
+/TemplateVersion (2026.1)
+}
+
+% DISALLOWED PACKAGES
+% \usepackage{authblk} -- This package is specifically forbidden
+% \usepackage{balance} -- This package is specifically forbidden
+% \usepackage{color (if used in text)
+% \usepackage{CJK} -- This package is specifically forbidden
+% \usepackage{float} -- This package is specifically forbidden
+% \usepackage{flushend} -- This package is specifically forbidden
+% \usepackage{fontenc} -- This package is specifically forbidden
+% \usepackage{fullpage} -- This package is specifically forbidden
+% \usepackage{geometry} -- This package is specifically forbidden
+% \usepackage{grffile} -- This package is specifically forbidden
+% \usepackage{hyperref} -- This package is specifically forbidden
+% \usepackage{navigator} -- This package is specifically forbidden
+% (or any other package that embeds links such as navigator or hyperref)
+% \indentfirst} -- This package is specifically forbidden
+% \layout} -- This package is specifically forbidden
+% \multicol} -- This package is specifically forbidden
+% \nameref} -- This package is specifically forbidden
+% \usepackage{savetrees} -- This package is specifically forbidden
+% \usepackage{setspace} -- This package is specifically forbidden
+% \usepackage{stfloats} -- This package is specifically forbidden
+% \usepackage{tabu} -- This package is specifically forbidden
+% \usepackage{titlesec} -- This package is specifically forbidden
+% \usepackage{tocbibind} -- This package is specifically forbidden
+% \usepackage{ulem} -- This package is specifically forbidden
+% \usepackage{wrapfig} -- This package is specifically forbidden
+
+% DISALLOWED COMMANDS
+% \nocopyright -- Your paper will not be published if you use this command
+% \addtolength -- This command may not be used
+% \balance -- This command may not be used
+% \baselinestretch -- Your paper will not be published if you use this command
+% \clearpage -- No page breaks of any kind may be used for the final version of your paper
+% \columnsep -- This command may not be used
+% \newpage -- No page breaks of any kind may be used for the final version of your paper
+% \pagebreak -- No page breaks of any kind may be used for the final version of your paperr
+% \pagestyle -- This command may not be used
+% \tiny -- This is not an acceptable font size.
+% \vspace{- -- No negative value may be used in proximity of a caption, figure, table, section, subsection, subsubsection, or reference
+% \vskip{- -- No negative value may be used to alter spacing above or below a caption, figure, table, section, subsection, subsubsection, or reference
+
+\setcounter{secnumdepth}{0} %May be changed to 1 or 2 if section numbers are desired.
+
+% The file aaai2026.sty is the style file for AAAI Press
+% proceedings, working notes, and technical reports.
+%
+
+% Title - conditionally set based on version
+\ifdefined\aaaianonymous
+ \title{AAAI Press Anonymous Submission\\Instructions for Authors Using \LaTeX{}}
+\else
+ \title{AAAI Press Formatting Instructions \\for Authors Using \LaTeX{} --- A Guide}
+\fi
+
+% Author and affiliation information
+\author{
+ %Authors
+ % All authors must be in the same font size and format.
+ Written by AAAI Press Staff\textsuperscript{\rm 1}\thanks{With help from the AAAI Publications Committee.}\\
+ AAAI Style Contributions by Pater Patel Schneider,
+ Sunil Issar,\\
+ J. Scott Penberthy,
+ George Ferguson,
+ Hans Guesgen,
+ Francisco Cruz\equalcontrib,
+ Marc Pujol-Gonzalez\equalcontrib
+}
+\affiliations{
+ %Afiliations
+ \textsuperscript{\rm 1}Association for the Advancement of Artificial Intelligence\\
+ % If you have multiple authors and multiple affiliations
+ % use superscripts in text and roman font to identify them.
+ % For example,
+
+ % Sunil Issar\textsuperscript{\rm 2},
+ % J. Scott Penberthy\textsuperscript{\rm 3},
+ % George Ferguson\textsuperscript{\rm 4},
+ % Hans Guesgen\textsuperscript{\rm 5}
+ % Note that the comma should be placed after the superscript
+
+ 1101 Pennsylvania Ave, NW Suite 300\\
+ Washington, DC 20004 USA\\
+ % email address must be in roman text type, not monospace or sans serif
+ proceedings-questions@aaai.org
+%
+% See more examples next
+}
+
+%Example, Single Author, ->> remove \iffalse,\fi and place them surrounding AAAI title to use it
+\iffalse
+\title{My Publication Title --- Single Author}
+\author {
+ Author Name
+}
+\affiliations{
+ Affiliation\\
+ Affiliation Line 2\\
+ name@example.com
+}
+\fi
+
+\iffalse
+%Example, Multiple Authors, ->> remove \iffalse,\fi and place them surrounding AAAI title to use it
+\title{My Publication Title --- Multiple Authors}
+\author {
+ % Authors
+ First Author Name\textsuperscript{\rm 1},
+ Second Author Name\textsuperscript{\rm 2},
+ Third Author Name\textsuperscript{\rm 1}
+}
+\affiliations {
+ % Affiliations
+ \textsuperscript{\rm 1}Affiliation 1\\
+ \textsuperscript{\rm 2}Affiliation 2\\
+ firstAuthor@affiliation1.com, secondAuthor@affilation2.com, thirdAuthor@affiliation1.com
+}
+\fi
+
+% REMOVE THIS: bibentry
+% This is only needed to show inline citations in the guidelines document. You should not need it and can safely delete it.
+\usepackage{bibentry}
+% END REMOVE bibentry
+
+\begin{document}
+
+\maketitle
+
+\begin{abstract}
+AAAI creates proceedings, working notes, and technical reports directly from electronic source furnished by the authors. To ensure that all papers in the publication have a uniform appearance, authors must adhere to the following instructions.
+\end{abstract}
+
+% Links section - only shown in camera-ready version
+\ifdefined\aaaianonymous
+% Uncomment the following to link to your code, datasets, an extended version or similar.
+% You must keep this block between (not within) the abstract and the main body of the paper.
+% NOTE: For anonymous submissions, do not include links that could reveal your identity
+% \begin{links}
+% \link{Code}{https://aaai.org/example/code}
+% \link{Datasets}{https://aaai.org/example/datasets}
+% \link{Extended version}{https://aaai.org/example/extended-version}
+% \end{links}
+\else
+% Uncomment the following to link to your code, datasets, an extended version or similar.
+% You must keep this block between (not within) the abstract and the main body of the paper.
+\begin{links}
+ \link{Code}{https://aaai.org/example/code}
+ \link{Datasets}{https://aaai.org/example/datasets}
+ \link{Extended version}{https://aaai.org/example/extended-version}
+\end{links}
+\fi
+
+% Version-specific content
+\ifdefined\aaaianonymous
+\section{Preparing an Anonymous Submission}
+
+This document details the formatting requirements for anonymous submissions. The requirements are the same as for camera ready papers but with a few notable differences:
+
+\begin{itemize}
+ \item Anonymous submissions must not include the author names and affiliations. Write ``Anonymous Submission'' as the ``sole author'' and leave the affiliations empty.
+ \item The PDF document's metadata should be cleared with a metadata-cleaning tool before submitting it. This is to prevent leaked information from revealing your identity.
+ \item References must be anonymized whenever the reader can infer that they are to the authors' previous work.
+ \item AAAI's copyright notice should not be included as a footer in the first page.
+ \item Only the PDF version is required at this stage. No source versions will be requested, nor any copyright transfer form.
+\end{itemize}
+
+You can remove the copyright notice and ensure that your names aren't shown by including \texttt{submission} option when loading the \texttt{aaai2026} package:
+
+\begin{quote}\begin{scriptsize}\begin{verbatim}
+\documentclass[letterpaper]{article}
+\usepackage[submission]{aaai2026}
+\end{verbatim}\end{scriptsize}\end{quote}
+
+The remainder of this document are the original camera-ready instructions. Any contradiction of the above points ought to be ignored while preparing anonymous submissions.
+
+\section{Camera-Ready Guidelines}
+\else
+\section{Introduction}
+\fi
+
+Congratulations on having a paper selected for inclusion in an AAAI Press proceedings or technical report! This document details the requirements necessary to get your accepted paper published using PDF\LaTeX{}. If you are using Microsoft Word, instructions are provided in a different document. AAAI Press does not support any other formatting software.
+
+The instructions herein are provided as a general guide for experienced \LaTeX{} users. If you do not know how to use \LaTeX{}, please obtain assistance locally. AAAI cannot provide you with support and the accompanying style files are \textbf{not} guaranteed to work. If the results you obtain are not in accordance with the specifications you received, you must correct your source file to achieve the correct result.
+
+These instructions are generic. Consequently, they do not include specific dates, page charges, and so forth. Please consult your specific written conference instructions for details regarding your submission. Please review the entire document for specific instructions that might apply to your particular situation. All authors must comply with the following:
+
+\begin{itemize}
+\item You must use the 2026 AAAI Press \LaTeX{} style file and the aaai2026.bst bibliography style files, which are located in the 2026 AAAI Author Kit (aaai2026.sty, aaai2026.bst).
+\item You must complete, sign, and return by the deadline the AAAI copyright form (unless directed by AAAI Press to use the AAAI Distribution License instead).
+\item You must read and format your paper source and PDF according to the formatting instructions for authors.
+\item You must submit your electronic files and abstract using our electronic submission form \textbf{on time.}
+\item You must pay any required page or formatting charges to AAAI Press so that they are received by the deadline.
+\item You must check your paper before submitting it, ensuring that it compiles without error, and complies with the guidelines found in the AAAI Author Kit.
+\end{itemize}
+
+\ifdefined\aaaianonymous
+\else
+\section{Copyright}
+All papers submitted for publication by AAAI Press must be accompanied by a valid signed copyright form. They must also contain the AAAI copyright notice at the bottom of the first page of the paper. There are no exceptions to these requirements. If you fail to provide us with a signed copyright form or disable the copyright notice, we will be unable to publish your paper. There are \textbf{no exceptions} to this policy. You will find a PDF version of the AAAI copyright form in the AAAI AuthorKit. Please see the specific instructions for your conference for submission details.
+\fi
+
+\section{Formatting Requirements in Brief}
+We need source and PDF files that can be used in a variety of ways and can be output on a variety of devices. The design and appearance of the paper is \ifdefined\aaaianonymous governed by the aaai2026.sty file (aaai2026.bst for the bibliography style).\else strictly governed by the aaai style file (aaai2026.sty).\fi
+\ifdefined\aaaianonymous
+\begin{itemize}
+\item You must not modify the aaai2026.sty file or change the TeX commands.
+\item You must not use any commands that alter the layout or formatting of your document (i.e., you cannot change the default margins, line spacing, etc.).
+\item You may include other font size changes, color changes, or other formatting commands in your own source, but the paper has to be able to compile, and the styling commands are ignored.
+\end{itemize}
+\else
+\textbf{You must not make any changes to the aaai style file, nor use any commands, packages, style files, or macros within your own paper that alter that design, including, but not limited to spacing, floats, margins, fonts, font size, and appearance.} AAAI imposes requirements on your source and PDF files that must be followed. Most of these requirements are based on our efforts to standardize conference manuscript properties and layout. All papers submitted to AAAI for publication will be recompiled for standardization purposes. Consequently, every paper submission must comply with the following requirements:
+
+\begin{itemize}
+\item Your .tex file must compile in PDF\LaTeX{} --- (you may not include .ps or .eps figure files.)
+\item All fonts must be embedded in the PDF file --- including your figures.
+\item Modifications to the style file, whether directly or via commands in your document may not ever be made, most especially when made in an effort to avoid extra page charges or make your paper fit in a specific number of pages.
+\item No type 3 fonts may be used (even in illustrations).
+\item You may not alter the spacing above and below captions, figures, headings, and subheadings.
+\item You may not alter the font sizes of text elements, footnotes, heading elements, captions, or title information (for references and mathematics, please see the limited exceptions provided herein).
+\item You may not alter the line spacing of text.
+\item Your title must follow Title Case capitalization rules (not sentence case).
+\item \LaTeX{} documents must use the Times or Nimbus font package (you may not use Computer Modern for the text of your paper).
+\item No \LaTeX{} 209 documents may be used or submitted.
+\item Your source must not require use of fonts for non-Roman alphabets within the text itself. If your paper includes symbols in other languages (such as, but not limited to, Arabic, Chinese, Hebrew, Japanese, Thai, Russian and other Cyrillic languages), you must restrict their use to bit-mapped figures. Fonts that require non-English language support (CID and Identity-H) must be converted to outlines or 300 dpi bitmap or removed from the document (even if they are in a graphics file embedded in the document).
+\item Two-column format in AAAI style is required for all papers.
+\item The paper size for final submission must be US letter without exception.
+\item The source file must exactly match the PDF.
+\item The document margins may not be exceeded (no overfull boxes).
+\item The number of pages and the file size must be as specified for your event.
+\item No document may be password protected.
+\item Neither the PDFs nor the source may contain any embedded links or bookmarks (no hyperref or navigator packages).
+\item Your source and PDF must not have any page numbers, footers, or headers (no pagestyle commands).
+\item Your PDF must be compatible with Acrobat 5 or higher.
+\item Your \LaTeX{} source file (excluding references) must consist of a \textbf{single} file (use of the ``input" command is not allowed.
+\item Your graphics must be sized appropriately outside of \LaTeX{} (do not use the ``clip" or ``trim'' command) .
+\end{itemize}
+
+If you do not follow these requirements, your paper will be returned to you to correct the deficiencies.
+\fi
+
+\section{What Files to Submit}
+You must submit the following items to ensure that your paper is published:
+\begin{itemize}
+\item A fully-compliant PDF file.
+\item Your \LaTeX{} source file submitted as a \textbf{single} .tex file (do not use the ``input" command to include sections of your paper --- every section must be in the single source file). (The only allowable exception is .bib file, which should be included separately).
+\item The bibliography (.bib) file(s).
+\item Your source must compile on our system, which includes only standard \LaTeX{} 2020 TeXLive support files.
+\item Only the graphics files used in compiling paper.
+\item The \LaTeX{}-generated files (e.g. .aux, .bbl file, PDF, etc.).
+\end{itemize}
+
+Your \LaTeX{} source will be reviewed and recompiled on our system (if it does not compile, your paper will be returned to you. \textbf{Do not submit your source in multiple text files.} Your single \LaTeX{} source file must include all your text, your bibliography (formatted using aaai2026.bst), and any custom macros.
+
+Your files should work without any supporting files (other than the program itself) on any computer with a standard \LaTeX{} distribution.
+
+\textbf{Do not send files that are not actually used in the paper.} Avoid including any files not needed for compiling your paper, including, for example, this instructions file, unused graphics files, style files, additional material sent for the purpose of the paper review, intermediate build files and so forth.
+
+\textbf{Obsolete style files.} The commands for some common packages (such as some used for algorithms), may have changed. Please be certain that you are not compiling your paper using old or obsolete style files.
+
+\textbf{Final Archive.} Place your source files in a single archive which should be compressed using .zip. The final file size may not exceed 10 MB.
+Name your source file with the last (family) name of the first author, even if that is not you.
+
+\section{Using \LaTeX{} to Format Your Paper}
+
+The latest version of the AAAI style file is available on AAAI's website. Download this file and place it in the \TeX\ search path. Placing it in the same directory as the paper should also work. You must download the latest version of the complete AAAI Author Kit so that you will have the latest instruction set and style file.
+
+\subsection{Document Preamble}
+
+In the \LaTeX{} source for your paper, you \textbf{must} place the following lines as shown in the example in this subsection. This command set-up is for three authors. Add or subtract author and address lines as necessary, and uncomment the portions that apply to you. In most instances, this is all you need to do to format your paper in the Times font. The helvet package will cause Helvetica to be used for sans serif. These files are part of the PSNFSS2e package, which is freely available from many Internet sites (and is often part of a standard installation).
+
+Leave the setcounter for section number depth commented out and set at 0 unless you want to add section numbers to your paper. If you do add section numbers, you must uncomment this line and change the number to 1 (for section numbers), or 2 (for section and subsection numbers). The style file will not work properly with numbering of subsubsections, so do not use a number higher than 2.
+
+\subsubsection{The Following Must Appear in Your Preamble}
+\ifdefined\aaaianonymous
+\begin{quote}
+\begin{scriptsize}\begin{verbatim}
+\documentclass[letterpaper]{article}
+% DO NOT CHANGE THIS
+\usepackage[submission]{aaai2026} % DO NOT CHANGE THIS
+\usepackage{times} % DO NOT CHANGE THIS
+\usepackage{helvet} % DO NOT CHANGE THIS
+\usepackage{courier} % DO NOT CHANGE THIS
+\usepackage[hyphens]{url} % DO NOT CHANGE THIS
+\usepackage{graphicx} % DO NOT CHANGE THIS
+\urlstyle{rm} % DO NOT CHANGE THIS
+\def\UrlFont{\rm} % DO NOT CHANGE THIS
+\usepackage{graphicx} % DO NOT CHANGE THIS
+\usepackage{natbib} % DO NOT CHANGE THIS
+\usepackage{caption} % DO NOT CHANGE THIS
+\frenchspacing % DO NOT CHANGE THIS
+\setlength{\pdfpagewidth}{8.5in} % DO NOT CHANGE THIS
+\setlength{\pdfpageheight}{11in} % DO NOT CHANGE THIS
+%
+% Keep the \pdfinfo as shown here. There's no need
+% for you to add the /Title and /Author tags.
+\pdfinfo{
+/TemplateVersion (2026.1)
+}
+\end{verbatim}\end{scriptsize}
+\end{quote}
+\else
+\begin{quote}
+\begin{scriptsize}\begin{verbatim}
+\documentclass[letterpaper]{article}
+% DO NOT CHANGE THIS
+\usepackage{aaai2026} % DO NOT CHANGE THIS
+\usepackage{times} % DO NOT CHANGE THIS
+\usepackage{helvet} % DO NOT CHANGE THIS
+\usepackage{courier} % DO NOT CHANGE THIS
+\usepackage[hyphens]{url} % DO NOT CHANGE THIS
+\usepackage{graphicx} % DO NOT CHANGE THIS
+\urlstyle{rm} % DO NOT CHANGE THIS
+\def\UrlFont{\rm} % DO NOT CHANGE THIS
+\usepackage{graphicx} % DO NOT CHANGE THIS
+\usepackage{natbib} % DO NOT CHANGE THIS
+\usepackage{caption} % DO NOT CHANGE THIS
+\frenchspacing % DO NOT CHANGE THIS
+\setlength{\pdfpagewidth}{8.5in} % DO NOT CHANGE THIS
+\setlength{\pdfpageheight}{11in} % DO NOT CHANGE THIS
+%
+% Keep the \pdfinfo as shown here. There's no need
+% for you to add the /Title and /Author tags.
+\pdfinfo{
+/TemplateVersion (2026.1)
+}
+\end{verbatim}\end{scriptsize}
+\end{quote}
+\fi
+
+\subsection{Preparing Your Paper}
+
+After the preamble above, you should prepare your paper as follows:
+\begin{quote}
+\begin{scriptsize}\begin{verbatim}
+\begin{document}
+\maketitle
+\begin{abstract}
+%...
+\end{abstract}\end{verbatim}\end{scriptsize}
+\end{quote}
+
+\noindent If you want to add links to the paper's code, dataset(s), and extended version or similar this is the place to add them, within a \emph{links} environment:
+\begin{quote}%
+\begin{scriptsize}\begin{verbatim}
+\begin{links}
+ \link{Code}{https://aaai.org/example/guidelines}
+ \link{Datasets}{https://aaai.org/example/datasets}
+ \link{Extended version}{https://aaai.org/example}
+\end{links}\end{verbatim}\end{scriptsize}
+\end{quote}
+\ifdefined\aaaianonymous
+\noindent Make sure that you do not de-anonymize yourself with these links.
+\fi
+
+\noindent You should then continue with the body of your paper. Your paper must conclude with the references, which should be inserted as follows:
+\begin{quote}
+\begin{scriptsize}\begin{verbatim}
+% References and End of Paper
+% These lines must be placed at the end of your paper
+\bibliography{Bibliography-File}
+\end{document}
+\end{verbatim}\end{scriptsize}
+\end{quote}
+
+\begin{quote}
+\begin{scriptsize}\begin{verbatim}
+\begin{document}\\
+\maketitle\\
+...\\
+\bibliography{Bibliography-File}\\
+\end{document}\\
+\end{verbatim}\end{scriptsize}
+\end{quote}
+
+\subsection{Commands and Packages That May Not Be Used}
+\begin{table*}[t]
+\centering
+\begin{tabular}{l|l|l|l}
+\textbackslash abovecaption &
+\textbackslash abovedisplay &
+\textbackslash addevensidemargin &
+\textbackslash addsidemargin \\
+\textbackslash addtolength &
+\textbackslash baselinestretch &
+\textbackslash belowcaption &
+\textbackslash belowdisplay \\
+\textbackslash break &
+\textbackslash clearpage &
+\textbackslash clip &
+\textbackslash columnsep \\
+\textbackslash float &
+\textbackslash input &
+\textbackslash input &
+\textbackslash linespread \\
+\textbackslash newpage &
+\textbackslash pagebreak &
+\textbackslash renewcommand &
+\textbackslash setlength \\
+\textbackslash text height &
+\textbackslash tiny &
+\textbackslash top margin &
+\textbackslash trim \\
+\textbackslash vskip\{- &
+\textbackslash vspace\{- \\
+\end{tabular}
+\caption{Commands that must not be used}
+\label{table1}
+\end{table*}
+
+\begin{table}[t]
+\centering
+\begin{tabular}{l|l|l|l}
+ authblk & babel & cjk & dvips \\
+ epsf & epsfig & euler & float \\
+ fullpage & geometry & graphics & hyperref \\
+ layout & linespread & lmodern & maltepaper \\
+ navigator & pdfcomment & pgfplots & psfig \\
+ pstricks & t1enc & titlesec & tocbind \\
+ ulem
+\end{tabular}
+\caption{LaTeX style packages that must not be used.}
+\label{table2}
+\end{table}
+
+There are a number of packages, commands, scripts, and macros that are incompatable with aaai2026.sty. The common ones are listed in tables \ref{table1} and \ref{table2}. Generally, if a command, package, script, or macro alters floats, margins, fonts, sizing, linespacing, or the presentation of the references and citations, it is unacceptable. Note that negative vskip and vspace may not be used except in certain rare occurances, and may never be used around tables, figures, captions, sections, subsections, subsubsections, or references.
+
+\subsection{Page Breaks}
+For your final camera ready copy, you must not use any page break commands. References must flow directly after the text without breaks. Note that some conferences require references to be on a separate page during the review process. AAAI Press, however, does not require this condition for the final paper.
+
+\subsection{Paper Size, Margins, and Column Width}
+Papers must be formatted to print in two-column format on 8.5 x 11 inch US letter-sized paper. The margins must be exactly as follows:
+\begin{itemize}
+\ifdefined\aaaianonymous
+\item Top margin: 1.25 inches (first page), .75 inches (others)
+\else
+\item Top margin: .75 inches
+\fi
+\item Left margin: .75 inches
+\item Right margin: .75 inches
+\item Bottom margin: 1.25 inches
+\end{itemize}
+
+The default paper size in most installations of \LaTeX{} is A4. However, because we require that your electronic paper be formatted in US letter size, the preamble we have provided includes commands that alter the default to US letter size. Please note that using any other package to alter page size (such as, but not limited to the Geometry package) will result in your final paper being returned to you for correction.
+
+\subsubsection{Column Width and Margins.}
+To ensure maximum readability, your paper must include two columns. Each column should be 3.3 inches wide (slightly more than 3.25 inches), with a .375 inch (.952 cm) gutter of white space between the two columns. The aaai2026.sty file will automatically create these columns for you.
+
+\subsection{Overlength Papers}
+If your paper is too long and you resort to formatting tricks to make it fit, it is quite likely that it will be returned to you. The best way to retain readability if the paper is overlength is to cut text, figures, or tables. There are a few acceptable ways to reduce paper size that don't affect readability. First, turn on \textbackslash frenchspacing, which will reduce the space after periods. Next, move all your figures and tables to the top of the page. Consider removing less important portions of a figure. If you use \textbackslash centering instead of \textbackslash begin\{center\} in your figure environment, you can also buy some space. For mathematical environments, you may reduce fontsize {\bf but not below 6.5 point}.
+
+Commands that alter page layout are forbidden. These include \textbackslash columnsep, \textbackslash float, \textbackslash topmargin, \textbackslash topskip, \textbackslash textheight, \textbackslash textwidth, \textbackslash oddsidemargin, and \textbackslash evensizemargin (this list is not exhaustive). If you alter page layout, you will be required to pay the page fee. Other commands that are questionable and may cause your paper to be rejected include \textbackslash parindent, and \textbackslash parskip. Commands that alter the space between sections are forbidden. The title sec package is not allowed. Regardless of the above, if your paper is obviously ``squeezed" it is not going to to be accepted. Options for reducing the length of a paper include reducing the size of your graphics, cutting text, or paying the extra page charge (if it is offered).
+
+\subsection{Type Font and Size}
+Your paper must be formatted in Times Roman or Nimbus. We will not accept papers formatted using Computer Modern or Palatino or some other font as the text or heading typeface. Sans serif, when used, should be Courier. Use Symbol or Lucida or Computer Modern for \textit{mathematics only. }
+
+Do not use type 3 fonts for any portion of your paper, including graphics. Type 3 bitmapped fonts are designed for fixed resolution printers. Most print at 300 dpi even if the printer resolution is 1200 dpi or higher. They also often cause high resolution imagesetter devices to crash. Consequently, AAAI will not accept electronic files containing obsolete type 3 fonts. Files containing those fonts (even in graphics) will be rejected. (Authors using blackboard symbols must avoid packages that use type 3 fonts.)
+
+Fortunately, there are effective workarounds that will prevent your file from embedding type 3 bitmapped fonts. The easiest workaround is to use the required times, helvet, and courier packages with \LaTeX{}2e. (Note that papers formatted in this way will still use Computer Modern for the mathematics. To make the math look good, you'll either have to use Symbol or Lucida, or you will need to install type 1 Computer Modern fonts --- for more on these fonts, see the section ``Obtaining Type 1 Computer Modern.")
+
+If you are unsure if your paper contains type 3 fonts, view the PDF in Acrobat Reader. The Properties/Fonts window will display the font name, font type, and encoding properties of all the fonts in the document. If you are unsure if your graphics contain type 3 fonts (and they are PostScript or encapsulated PostScript documents), create PDF versions of them, and consult the properties window in Acrobat Reader.
+
+The default size for your type must be ten-point with twelve-point leading (line spacing). Start all pages (except the first) directly under the top margin. (See the next section for instructions on formatting the title page.) Indent ten points when beginning a new paragraph, unless the paragraph begins directly below a heading or subheading.
+
+\subsubsection{Obtaining Type 1 Computer Modern for \LaTeX{}.}
+If you use Computer Modern for the mathematics in your paper (you cannot use it for the text) you may need to download type 1 Computer fonts. They are available without charge from the American Mathematical Society:
+http://www.ams.org/tex/type1-fonts.html.
+
+\subsubsection{Nonroman Fonts.}
+If your paper includes symbols in other languages (such as, but not limited to, Arabic, Chinese, Hebrew, Japanese, Thai, Russian and other Cyrillic languages), you must restrict their use to bit-mapped figures.
+
+\subsection{Title and Authors}
+Your title must appear centered over both text columns in sixteen-point bold type (twenty-four point leading). The title must be written in Title Case capitalization rules (not sentence case). The rules are a bit involved, but in general verbs (including short verbs like be, is, using, and go), nouns, adverbs, adjectives, and pronouns should be capitalized, (including both words in hyphenated terms), while articles, conjunctions, and prepositions are lower case unless they directly follow a colon or long dash. You can use the online tool \url{https://titlecaseconverter.com/} to double-check the proper capitalization (select the "Chicago" style and mark the "Show explanations" checkbox).
+
+Author's names should appear below the title of the paper, centered in twelve-point type (with fifteen point leading), along with affiliation(s) and complete address(es) (including electronic mail address if available) in nine-point roman type (the twelve point leading). You should begin the two-column format when you come to the abstract.
+
+\subsubsection{Formatting Author Information.}
+Author information has to be set according to the following specification depending if you have one or more than one affiliation. You may not use a table nor may you employ the \textbackslash authorblk.sty package. For one or several authors from the same institution, please separate them with commas and write all affiliation directly below (one affiliation per line) using the macros \textbackslash author and \textbackslash affiliations:
+
+\begin{quote}\begin{scriptsize}\begin{verbatim}
+\author{
+ Author 1, ..., Author n\\
+}
+\affiliations {
+ Address line\\
+ ... \\
+ Address line\\
+}
+\end{verbatim}\end{scriptsize}\end{quote}
+
+\noindent For authors from different institutions, use \textbackslash textsuperscript \{\textbackslash rm x \} to match authors and affiliations. Notice that there should not be any spaces between the author name (or comma following it) and the superscript.
+
+\begin{quote}\begin{scriptsize}\begin{verbatim}
+\author{
+ AuthorOne\equalcontrib\textsuperscript{\rm 1,\rm 2},
+ AuthorTwo\equalcontrib\textsuperscript{\rm 2},
+ AuthorThree\textsuperscript{\rm 3},\\
+ AuthorFour\textsuperscript{\rm 4},
+ AuthorFive \textsuperscript{\rm 5}}
+}
+\affiliations {
+ \textsuperscript{\rm 1}AffiliationOne,\\
+ \textsuperscript{\rm 2}AffiliationTwo,\\
+ \textsuperscript{\rm 3}AffiliationThree,\\
+ \textsuperscript{\rm 4}AffiliationFour,\\
+ \textsuperscript{\rm 5}AffiliationFive\\
+ \{email, email\}@affiliation.com,
+ email@affiliation.com,
+ email@affiliation.com,
+ email@affiliation.com
+}
+\end{verbatim}\end{scriptsize}\end{quote}
+
+You can indicate that some authors contributed equally using the \textbackslash equalcontrib command. This will add a marker after the author names and a footnote on the first page.
+
+Note that you may want to break the author list for better visualization. You can achieve this using a simple line break (\textbackslash \textbackslash).
+
+\subsection{\LaTeX{} Copyright Notice}
+The copyright notice automatically appears if you use aaai2026.sty. It has been hardcoded and may not be disabled.
+
+\subsection{Credits}
+Any credits to a sponsoring agency should appear in the acknowledgments section, unless the agency requires different placement. If it is necessary to include this information on the front page, use
+\textbackslash thanks in either the \textbackslash author or \textbackslash title commands.
+For example:
+\begin{quote}
+\begin{small}
+\textbackslash title\{Very Important Results in AI\textbackslash thanks\{This work is
+ supported by everybody.\}\}
+\end{small}
+\end{quote}
+Multiple \textbackslash thanks commands can be given. Each will result in a separate footnote indication in the author or title with the corresponding text at the botton of the first column of the document. Note that the \textbackslash thanks command is fragile. You will need to use \textbackslash protect.
+
+Please do not include \textbackslash pubnote commands in your document.
+
+\subsection{Abstract}
+Follow the example commands in this document for creation of your abstract. The command \textbackslash begin\{abstract\} will automatically indent the text block. Please do not indent it further. {Do not include references in your abstract!}
+
+\subsection{Page Numbers}
+Do not print any page numbers on your paper. The use of \textbackslash pagestyle is forbidden.
+
+\subsection{Text}
+The main body of the paper must be formatted in black, ten-point Times Roman with twelve-point leading (line spacing). You may not reduce font size or the linespacing. Commands that alter font size or line spacing (including, but not limited to baselinestretch, baselineshift, linespread, and others) are expressly forbidden. In addition, you may not use color in the text.
+
+\subsection{Citations}
+Citations within the text should include the author's last name and year, for example (Newell 1980). Append lower-case letters to the year in cases of ambiguity. Multiple authors should be treated as follows: (Feigenbaum and Engelmore 1988) or (Ford, Hayes, and Glymour 1992). In the case of four or more authors, list only the first author, followed by et al. (Ford et al. 1997).
+
+\subsection{Extracts}
+Long quotations and extracts should be indented ten points from the left and right margins.
+
+\begin{quote}
+This is an example of an extract or quotation. Note the indent on both sides. Quotation marks are not necessary if you offset the text in a block like this, and properly identify and cite the quotation in the text.
+\end{quote}
+
+\subsection{Footnotes}
+Use footnotes judiciously, taking into account that they interrupt the reading of the text. When required, they should be consecutively numbered throughout with superscript Arabic numbers. Footnotes should appear at the bottom of the page, separated from the text by a blank line space and a thin, half-point rule.
+
+\subsection{Headings and Sections}
+When necessary, headings should be used to separate major sections of your paper. Remember, you are writing a short paper, not a lengthy book! An overabundance of headings will tend to make your paper look more like an outline than a paper. The aaai2026.sty package will create headings for you. Do not alter their size nor their spacing above or below.
+
+\subsubsection{Section Numbers.}
+The use of section numbers in AAAI Press papers is optional. To use section numbers in \LaTeX{}, uncomment the setcounter line in your document preamble and change the 0 to a 1. Section numbers should not be used in short poster papers and/or extended abstracts.
+
+\subsubsection{Section Headings.}
+Sections should be arranged and headed as follows:
+\begin{enumerate}
+\item Main content sections
+\item Appendices (optional)
+\item Ethical Statement (optional, unnumbered)
+\item Acknowledgements (optional, unnumbered)
+\item References (unnumbered)
+\end{enumerate}
+
+\subsubsection{Appendices.}
+Any appendices must appear after the main content. If your main sections are numbered, appendix sections must use letters instead of arabic numerals. In \LaTeX{} you can use the \texttt{\textbackslash appendix} command to achieve this effect and then use \texttt{\textbackslash section\{Heading\}} normally for your appendix sections.
+
+\subsubsection{Ethical Statement.}
+You can write a statement about the potential ethical impact of your work, including its broad societal implications, both positive and negative. If included, such statement must be written in an unnumbered section titled \emph{Ethical Statement}.
+
+\subsubsection{Acknowledgments.}
+The acknowledgments section, if included, appears right before the references and is headed ``Acknowledgments". It must not be numbered even if other sections are (use \texttt{\textbackslash section*\{Acknowledgements\}} in \LaTeX{}). This section includes acknowledgments of help from associates and colleagues, credits to sponsoring agencies, financial support, and permission to publish. Please acknowledge other contributors, grant support, and so forth, in this section. Do not put acknowledgments in a footnote on the first page. If your grant agency requires acknowledgment of the grant on page 1, limit the footnote to the required statement, and put the remaining acknowledgments at the back. Please try to limit acknowledgments to no more than three sentences.
+
+\subsubsection{References.}
+The references section should be labeled ``References" and must appear at the very end of the paper (don't end the paper with references, and then put a figure by itself on the last page). A sample list of references is given later on in these instructions. Please use a consistent format for references. Poorly prepared or sloppy references reflect badly on the quality of your paper and your research. Please prepare complete and accurate citations.
+
+\subsection{Illustrations and Figures}
+
+\begin{figure}[t]
+\centering
+\includegraphics[width=0.9\columnwidth]{figure1} % Reduce the figure size so that it is slightly narrower than the column. Don't use precise values for figure width.This setup will avoid overfull boxes.
+\caption{Using the trim and clip commands produces fragile layers that can result in disasters (like this one from an actual paper) when the color space is corrected or the PDF combined with others for the final proceedings. Crop your figures properly in a graphics program -- not in LaTeX.}
+\label{fig1}
+\end{figure}
+
+\begin{figure*}[t]
+\centering
+\includegraphics[width=0.8\textwidth]{figure2} % Reduce the figure size so that it is slightly narrower than the column.
+\caption{Adjusting the bounding box instead of actually removing the unwanted data resulted multiple layers in this paper. It also needlessly increased the PDF size. In this case, the size of the unwanted layer doubled the paper's size, and produced the following surprising results in final production. Crop your figures properly in a graphics program. Don't just alter the bounding box.}
+\label{fig2}
+\end{figure*}
+
+Your paper must compile in PDF\LaTeX{}. Consequently, all your figures must be .jpg, .png, or .pdf. You may not use the .gif (the resolution is too low), .ps, or .eps file format for your figures.
+
+Figures, drawings, tables, and photographs should be placed throughout the paper on the page (or the subsequent page) where they are first discussed. Do not group them together at the end of the paper. If placed at the top of the paper, illustrations may run across both columns. Figures must not invade the top, bottom, or side margin areas. Figures must be inserted using the \textbackslash usepackage\{graphicx\}. Number figures sequentially, for example, figure 1, and so on. Do not use minipage to group figures.
+
+If you normally create your figures using pgfplots, please create the figures first, and then import them as pdfs with proper bounding boxes, as the bounding and trim boxes created by pfgplots are fragile and not valid.
+
+When you include your figures, you must crop them \textbf{outside} of \LaTeX{}. The command \textbackslash includegraphics*[clip=true, viewport 0 0 10 10]{...} might result in a PDF that looks great, but the image is \textbf{not really cropped.} The full image can reappear (and obscure whatever it is overlapping) when page numbers are applied or color space is standardized. Figures \ref{fig1}, and \ref{fig2} display some unwanted results that often occur.
+
+If your paper includes illustrations that are not compatible with PDF\TeX{} (such as .eps or .ps documents), you will need to convert them. The epstopdf package will usually work for eps files. You will need to convert your ps files to PDF in either case.
+
+\subsubsection {Figure Captions.}The illustration number and caption must appear \textit{under} the illustration. Labels and other text with the actual illustration must be at least nine-point type. However, the font and size of figure captions must be 10 point roman. Do not make them smaller, bold, or italic. (Individual words may be italicized if the context requires differentiation.)
+
+\subsection{Tables}
+Tables should be presented in 10 point roman type. If necessary, they may be altered to 9 point type. You must not use \texttt{\textbackslash resizebox} or other commands that resize the entire table to make it smaller, because you can't control the final font size this way.
+If your table is too large you can use \texttt{\textbackslash setlength\{\textbackslash tabcolsep\}\{1mm\}} to compress the columns a bit or you can adapt the content (e.g.: reduce the decimal precision when presenting numbers, use shortened column titles, make some column duble-line to get it narrower).
+
+Tables that do not fit in a single column must be placed across double columns. If your table won't fit within the margins even when spanning both columns and using the above techniques, you must split it in two separate tables.
+
+\subsubsection {Table Captions.} The number and caption for your table must appear \textit{under} (not above) the table. Additionally, the font and size of table captions must be 10 point roman and must be placed beneath the figure. Do not make them smaller, bold, or italic. (Individual words may be italicized if the context requires differentiation.)
+
+\subsubsection{Low-Resolution Bitmaps.}
+You may not use low-resolution (such as 72 dpi) screen-dumps and GIF files---these files contain so few pixels that they are always blurry, and illegible when printed. If they are color, they will become an indecipherable mess when converted to black and white. This is always the case with gif files, which should never be used. The resolution of screen dumps can be increased by reducing the print size of the original file while retaining the same number of pixels. You can also enlarge files by manipulating them in software such as PhotoShop. Your figures should be 300 dpi when incorporated into your document.
+
+\subsubsection{\LaTeX{} Overflow.}
+\LaTeX{} users please beware: \LaTeX{} will sometimes put portions of the figure or table or an equation in the margin. If this happens, you need to make the figure or table span both columns. If absolutely necessary, you may reduce the figure, or reformat the equation, or reconfigure the table.{ \bf Check your log file!} You must fix any overflow into the margin (that means no overfull boxes in \LaTeX{}). \textbf{Nothing is permitted to intrude into the margin or gutter.}
+
+\subsubsection{Using Color.}
+Use of color is restricted to figures only. It must be WACG 2.0 compliant. (That is, the contrast ratio must be greater than 4.5:1 no matter the font size.) It must be CMYK, NOT RGB. It may never be used for any portion of the text of your paper. The archival version of your paper will be printed in black and white and grayscale. The web version must be readable by persons with disabilities. Consequently, because conversion to grayscale can cause undesirable effects (red changes to black, yellow can disappear, and so forth), we strongly suggest you avoid placing color figures in your document. If you do include color figures, you must (1) use the CMYK (not RGB) colorspace and (2) be mindful of readers who may happen to have trouble distinguishing colors. Your paper must be decipherable without using color for distinction.
+
+\subsubsection{Drawings.}
+We suggest you use computer drawing software (such as Adobe Illustrator or, (if unavoidable), the drawing tools in Microsoft Word) to create your illustrations. Do not use Microsoft Publisher. These illustrations will look best if all line widths are uniform (half- to two-point in size), and you do not create labels over shaded areas. Shading should be 133 lines per inch if possible. Use Times Roman or Helvetica for all figure call-outs. \textbf{Do not use hairline width lines} --- be sure that the stroke width of all lines is at least .5 pt. Zero point lines will print on a laser printer, but will completely disappear on the high-resolution devices used by our printers.
+
+\subsubsection{Photographs and Images.}
+Photographs and other images should be in grayscale (color photographs will not reproduce well; for example, red tones will reproduce as black, yellow may turn to white, and so forth) and set to a minimum of 300 dpi. Do not prescreen images.
+
+\subsubsection{Resizing Graphics.}
+Resize your graphics \textbf{before} you include them with LaTeX. You may \textbf{not} use trim or clip options as part of your \textbackslash includegraphics command. Resize the media box of your PDF using a graphics program instead.
+
+\subsubsection{Fonts in Your Illustrations.}
+You must embed all fonts in your graphics before including them in your LaTeX document.
+
+\subsubsection{Algorithms.}
+Algorithms and/or programs are a special kind of figures. Like all illustrations, they should appear floated to the top (preferably) or bottom of the page. However, their caption should appear in the header, left-justified and enclosed between horizontal lines, as shown in Algorithm~\ref{alg:algorithm}. The algorithm body should be terminated with another horizontal line. It is up to the authors to decide whether to show line numbers or not, how to format comments, etc.
+
+In \LaTeX{} algorithms may be typeset using the {\tt algorithm} and {\tt algorithmic} packages, but you can also use one of the many other packages for the task.
+
+\begin{algorithm}[tb]
+\caption{Example algorithm}
+\label{alg:algorithm}
+\textbf{Input}: Your algorithm's input\\
+\textbf{Parameter}: Optional list of parameters\\
+\textbf{Output}: Your algorithm's output
+\begin{algorithmic}[1] %[1] enables line numbers
+\STATE Let $t=0$.
+\WHILE{condition}
+\STATE Do some action.
+\IF {conditional}
+\STATE Perform task A.
+\ELSE
+\STATE Perform task B.
+\ENDIF
+\ENDWHILE
+\STATE \textbf{return} solution
+\end{algorithmic}
+\end{algorithm}
+
+\subsubsection{Listings.}
+Listings are much like algorithms and programs. They should also appear floated to the top (preferably) or bottom of the page. Listing captions should appear in the header, left-justified and enclosed between horizontal lines as shown in Listing~\ref{lst:listing}. Terminate the body with another horizontal line and avoid any background color. Line numbers, if included, must appear within the text column.
+
+\begin{listing}[tb]%
+\caption{Example listing {\tt quicksort.hs}}%
+\label{lst:listing}%
+\begin{lstlisting}[language=Haskell]
+quicksort :: Ord a => [a] -> [a]
+quicksort [] = []
+quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater)
+ where
+ lesser = filter (< p) xs
+ greater = filter (>= p) xs
+\end{lstlisting}
+\end{listing}
+
+\subsection{References}
+The AAAI style includes a set of definitions for use in formatting references with BibTeX. These definitions make the bibliography style fairly close to the ones specified in the Reference Examples appendix below. To use these definitions, you also need the BibTeX style file ``aaai2026.bst," available in the AAAI Author Kit on the AAAI web site. Then, at the end of your paper but before \textbackslash end{document}, you need to put the following lines:
+
+\begin{quote}
+\begin{small}
+\textbackslash bibliography\{bibfile1,bibfile2,...\}
+\end{small}
+\end{quote}
+
+Please note that the aaai2026.sty class already sets the bibliographystyle for you, so you do not have to place any \textbackslash bibliographystyle command in the document yourselves. The aaai2026.sty file is incompatible with the hyperref and navigator packages. If you use either, your references will be garbled and your paper will be returned to you.
+
+References may be the same size as surrounding text.
+However, in this section (only), you may reduce the size to {\em \textbackslash small} (9pt) if your paper exceeds the allowable number of pages. Making it any smaller than 9 point with 10 point linespacing, however, is not allowed.
+
+The list of files in the \textbackslash bibliography command should be the names of your BibTeX source files (that is, the .bib files referenced in your paper).
+
+The following commands are available for your use in citing references:
+\begin{quote}
+{\em \textbackslash cite:} Cites the given reference(s) with a full citation. This appears as ``(Author Year)'' for one reference, or ``(Author Year; Author Year)'' for multiple references.\smallskip\\
+{\em \textbackslash shortcite:} Cites the given reference(s) with just the year. This appears as ``(Year)'' for one reference, or ``(Year; Year)'' for multiple references.\smallskip\\
+{\em \textbackslash citeauthor:} Cites the given reference(s) with just the author name(s) and no parentheses.\smallskip\\
+{\em \textbackslash citeyear:} Cites the given reference(s) with just the date(s) and no parentheses.
+\end{quote}
+You may also use any of the \emph{natbib} citation commands.
+
+\section{Proofreading Your PDF}
+Please check all the pages of your PDF file. The most commonly forgotten element is the acknowledgements --- especially the correct grant number. Authors also commonly forget to add the metadata to the source, use the wrong reference style file, or don't follow the capitalization rules or comma placement for their author-title information properly. A final common problem is text (expecially equations) that runs into the margin. You will need to fix these common errors before submitting your file.
+
+\section{Improperly Formatted Files }
+In the past, AAAI has corrected improperly formatted files submitted by the authors. Unfortunately, this has become an increasingly burdensome expense that we can no longer absorb). Consequently, if your file is improperly formatted, it will be returned to you for correction.
+
+\section{Naming Your Electronic File}
+We require that you name your \LaTeX{} source file with the last name (family name) of the first author so that it can easily be differentiated from other submissions. Complete file-naming instructions will be provided to you in the submission instructions.
+
+\section{Submitting Your Electronic Files to AAAI}
+Instructions on paper submittal will be provided to you in your acceptance letter.
+
+\section{Inquiries}
+If you have any questions about the preparation or submission of your paper as instructed in this document, please contact AAAI Press at the address given below. If you have technical questions about implementation of the aaai style file, please contact an expert at your site. We do not provide technical support for \LaTeX{} or any other software package. To avoid problems, please keep your paper simple, and do not incorporate complicated macros and style files.
+
+\begin{quote}
+\noindent AAAI Press\\
+1101 Pennsylvania Ave, NW Suite 300\\
+Washington, DC 20004 USA\\
+\textit{Telephone:} 1-202-360-4062\\
+\textit{E-mail:} See the submission instructions for your particular conference or event.
+\end{quote}
+
+\section{Additional Resources}
+\LaTeX{} is a difficult program to master. If you've used that software, and this document didn't help or some items were not explained clearly, we recommend you read Michael Shell's excellent document (testflow doc.txt V1.0a 2002/08/13) about obtaining correct PS/PDF output on \LaTeX{} systems. (It was written for another purpose, but it has general application as well). It is available at www.ctan.org in the tex-archive.
+
+\appendix
+\section{Reference Examples}
+\label{sec:reference_examples}
+
+\nobibliography*
+Formatted bibliographies should look like the following examples. You should use BibTeX to generate the references. Missing fields are unacceptable when compiling references, and usually indicate that you are using the wrong type of entry (BibTeX class).
+
+\paragraph{Book with multiple authors~\nocite{em:86}} Use the \texttt{@book} class.\\[.2em]
+\bibentry{em:86}.
+
+\paragraph{Journal and magazine articles~\nocite{r:80, hcr:83}} Use the \texttt{@article} class.\\[.2em]
+\bibentry{r:80}.\\[.2em]
+\bibentry{hcr:83}.
+
+\paragraph{Proceedings paper published by a society, press or publisher~\nocite{c:83, c:84}} Use the \texttt{@inproceedings} class. You may abbreviate the \emph{booktitle} field, but make sure that the conference edition is clear.\\[.2em]
+\bibentry{c:84}.\\[.2em]
+\bibentry{c:83}.
+
+\paragraph{University technical report~\nocite{r:86}} Use the \texttt{@techreport} class.\\[.2em]
+\bibentry{r:86}.
+
+\paragraph{Dissertation or thesis~\nocite{c:79}} Use the \texttt{@phdthesis} class.\\[.2em]
+\bibentry{c:79}.
+
+\paragraph{Forthcoming publication~\nocite{c:21}} Use the \texttt{@misc} class with a \texttt{note="Forthcoming"} annotation.
+\begin{quote}
+\begin{footnotesize}
+\begin{verbatim}
+@misc(key,
+ [...]
+ note="Forthcoming",
+)
+\end{verbatim}
+\end{footnotesize}
+\end{quote}
+\bibentry{c:21}.
+
+\paragraph{ArXiv paper~\nocite{c:22}} Fetch the BibTeX entry from the "Export Bibtex Citation" link in the arXiv website. Notice it uses the \texttt{@misc} class instead of the \texttt{@article} one, and that it includes the \texttt{eprint} and \texttt{archivePrefix} keys.
+\begin{quote}
+\begin{footnotesize}
+\begin{verbatim}
+@misc(key,
+ [...]
+ eprint="xxxx.yyyy",
+ archivePrefix="arXiv",
+)
+\end{verbatim}
+\end{footnotesize}
+\end{quote}
+\bibentry{c:22}.
+
+\paragraph{Website or online resource~\nocite{c:23}} Use the \texttt{@misc} class. Add the url in the \texttt{howpublished} field and the date of access in the \texttt{note} field:
+\begin{quote}
+\begin{footnotesize}
+\begin{verbatim}
+@misc(key,
+ [...]
+ howpublished="\url{http://...}",
+ note="Accessed: YYYY-mm-dd",
+)
+\end{verbatim}
+\end{footnotesize}
+\end{quote}
+\bibentry{c:23}.
+
+\vspace{.2em}
+For the most up to date version of the AAAI reference style, please consult the \textit{AI Magazine} Author Guidelines at \url{https://aaai.org/ojs/index.php/aimagazine/about/submissions#authorGuidelines}
+
+\section{Acknowledgments}
+
+% Anonymous submission version - shorter acknowledgments
+AAAI is especially grateful to Peter Patel Schneider for his work in implementing the aaai2026.sty file, liberally using the ideas of other style hackers, including Barbara Beeton. We also acknowledge with thanks the work of George Ferguson for his guide to using the style and BibTeX files --- which has been incorporated into this document --- and Hans Guesgen, who provided several timely modifications, as well as the many others who have, from time to time, sent in suggestions on improvements to the AAAI style. We are especially grateful to Francisco Cruz, Marc Pujol-Gonzalez, and Mico Loretan for the improvements to the Bib\TeX{} and \LaTeX{} files made in 2020.
+
+The preparation of the \LaTeX{} and Bib\TeX{} files that implement these instructions was supported by Schlumberger Palo Alto Research, AT\&T Bell Laboratories, Morgan Kaufmann Publishers, The Live Oak Press, LLC, and AAAI Press. Bibliography style changes were added by Sunil Issar. \verb+\+pubnote was added by J. Scott Penberthy. George Ferguson added support for printing the AAAI copyright slug. Additional changes to aaai2026.sty and aaai2026.bst have been made by Francisco Cruz and Marc Pujol-Gonzalez.
+
+\bigskip
+\noindent Thank you for reading these instructions carefully. We look forward to receiving your electronic files!
+
+
+
+% Note: \bibliographystyle{aaai2026} is automatically set by aaai2026.sty
+% Do not add \bibliographystyle{aaai2026} here as it will cause "Illegal, another \bibstyle command" error
+\bibliography{aaai2026}
+
+\section{Reproducibility Checklist}
+
+Unless specified otherwise, please answer ``yes'' to each question if the relevant information is described either in the paper itself or in a technical appendix with an explicit reference from the main paper. If you wish to explain an answer further, please do so in a section titled ``Reproducibility Checklist'' at the end of the technical appendix.
+
+This paper:
+
+Includes a conceptual outline and/or pseudocode description of AI methods introduced (yes/partial/no/NA)
+
+Clearly delineates statements that are opinions, hypothesis, and speculation from objective facts and results (yes/no)
+
+Provides well marked pedagogical references for less-familiare readers to gain background necessary to replicate the paper (yes/no)
+
+Does this paper make theoretical contributions? (yes/no)
+
+If yes, please complete the list below.
+
+All assumptions and restrictions are stated clearly and formally. (yes/partial/no)
+
+All novel claims are stated formally (e.g., in theorem statements). (yes/partial/no)
+
+Proofs of all novel claims are included. (yes/partial/no)
+
+Proof sketches or intuitions are given for complex and/or novel results. (yes/partial/no)
+
+Appropriate citations to theoretical tools used are given. (yes/partial/no)
+
+All theoretical claims are demonstrated empirically to hold. (yes/partial/no/NA)
+
+All experimental code used to eliminate or disprove claims is included. (yes/no/NA)
+
+Does this paper rely on one or more datasets? (yes/no)
+
+If yes, please complete the list below.
+
+A motivation is given for why the experiments are conducted on the selected datasets (yes/partial/no/NA)
+
+All novel datasets introduced in this paper are included in a data appendix. (yes/partial/no/NA)
+
+All novel datasets introduced in this paper will be made publicly available upon publication of the paper with a license that allows free usage for research purposes. (yes/partial/no/NA)
+
+All datasets drawn from the existing literature (potentially including authors' own previously published work) are accompanied by appropriate citations. (yes/no/NA)
+
+All datasets drawn from the existing literature (potentially including authors' own previously published work) are publicly available. (yes/partial/no/NA)
+
+All datasets that are not publicly available are described in detail, with explanation why publicly available alternatives are not scientifically satisficing. (yes/partial/no/NA)
+
+Does this paper include computational experiments? (yes/no)
+
+If yes, please complete the list below.
+
+This paper states the number and range of values tried per (hyper-) parameter during development of the paper, along with the criterion used for selecting the final parameter setting. (yes/partial/no/NA)
+
+Any code required for pre-processing data is included in the appendix. (yes/partial/no).
+
+All source code required for conducting and analyzing the experiments is included in a code appendix. (yes/partial/no)
+
+All source code required for conducting and analyzing the experiments will be made publicly available upon publication of the paper with a license that allows free usage for research purposes. (yes/partial/no)
+
+All source code implementing new methods have comments detailing the implementation, with references to the paper where each step comes from (yes/partial/no)
+
+If an algorithm depends on randomness, then the method used for setting seeds is described in a way sufficient to allow replication of results. (yes/partial/no/NA)
+
+This paper specifies the computing infrastructure used for running experiments (hardware and software), including GPU/CPU models; amount of memory; operating system; names and versions of relevant software libraries and frameworks. (yes/partial/no)
+
+This paper formally describes evaluation metrics used and explains the motivation for choosing these metrics. (yes/partial/no)
+
+This paper states the number of algorithm runs used to compute each reported result. (yes/no)
+
+Analysis of experiments goes beyond single-dimensional summaries of performance (e.g., average; median) to include measures of variation, confidence, or other distributional information. (yes/no)
+
+The significance of any improvement or decrease in performance is judged using appropriate statistical tests (e.g., Wilcoxon signed-rank). (yes/partial/no)
+
+This paper lists all final (hyper-)parameters used for each model/algorithm in the paper's experiments. (yes/partial/no/NA).
+
+\end{document} \ No newline at end of file
diff --git a/.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026.bib b/.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026.bib
new file mode 100644
index 0000000..7b7d2bc
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026.bib
@@ -0,0 +1,111 @@
+@book{em:86,
+ editor = "Engelmore, Robert and Morgan, Anthony",
+ title = "Blackboard Systems",
+ year = 1986,
+ address = "Reading, Mass.",
+ publisher = "Addison-Wesley",
+}
+
+@inproceedings{c:83,
+ author = "Clancey, William J.",
+ year = 1983,
+ title = "{Communication, Simulation, and Intelligent
+Agents: Implications of Personal Intelligent Machines
+for Medical Education}",
+ booktitle="Proceedings of the Eighth International Joint Conference on Artificial Intelligence {(IJCAI-83)}",
+ pages = "556-560",
+ address = "Menlo Park, Calif",
+ publisher = "{IJCAI Organization}",
+}
+@inproceedings{c:84,
+ author = "Clancey, William J.",
+ year = 1984,
+ title = "{Classification Problem Solving}",
+ booktitle = "Proceedings of the Fourth National
+ Conference on Artificial Intelligence",
+ pages = "45-54",
+ address = "Menlo Park, Calif.",
+ publisher="AAAI Press",
+}
+@article{r:80,
+ author = {Robinson, Arthur L.},
+ title = {New Ways to Make Microcircuits Smaller},
+ volume = {208},
+ number = {4447},
+ pages = {1019--1022},
+ year = {1980},
+ doi = {10.1126/science.208.4447.1019},
+ publisher = {American Association for the Advancement of Science},
+ issn = {0036-8075},
+ URL = {https://science.sciencemag.org/content/208/4447/1019},
+ eprint = {https://science.sciencemag.org/content/208/4447/1019.full.pdf},
+ journal = {Science},
+}
+@article{r:80x,
+ author = "Robinson, Arthur L.",
+ year = 1980,
+ title = "{New Ways to Make Microcircuits Smaller---Duplicate Entry}",
+ journal = "Science",
+ volume = 208,
+ pages = "1019-1026",
+}
+@article{hcr:83,
+title = {Strategic explanations for a diagnostic consultation system},
+journal = {International Journal of Man-Machine Studies},
+volume = {20},
+number = {1},
+pages = {3-19},
+year = {1984},
+issn = {0020-7373},
+doi = {https://doi.org/10.1016/S0020-7373(84)80003-6},
+url = {https://www.sciencedirect.com/science/article/pii/S0020737384800036},
+author = {Diane Warner Hasling and William J. Clancey and Glenn Rennels},
+abstract = {This article examines the problem of automatte explanation of reasoning, especially as it relates to expert systems. By explanation we mean the ability of a program to discuss what it is doing in some understandable way. We first present a general framework in which to view explanation and review some of the research done in this area. We then focus on the explanation system for NEOMYCIN, a medical consultation program. A consultation program interactively helps a user to solve a problem. Our goal is to have NEOMYCIN explain its problem-solving strategies. An explanation of strategy describes the plan the program is using to reach a solution. Such an explanation is usually concrete, referring to aspects of the current problem situation. Abstract explanations articulate a general principle, which can be applied in different situations; such explanations are useful in teaching and in explaining by analogy. We describe the aspects of NEOMYCIN that make abstract strategic explanations possible—the representation of strategic knowledge explicitly and separately from domain knowledge— and demonstrate how this representation can be used to generate explanations.}
+}
+@article{hcrt:83,
+ author = "Hasling, Diane Warner and Clancey, William J. and Rennels, Glenn R. and Test, Thomas",
+ year = 1983,
+ title = "{Strategic Explanations in Consultation---Duplicate}",
+ journal = "The International Journal of Man-Machine Studies",
+ volume = 20,
+ number = 1,
+ pages = "3-19",
+}
+@techreport{r:86,
+ author = "Rice, James",
+ year = 1986,
+ title = "{Poligon: A System for Parallel Problem Solving}",
+ type = "Technical Report",
+ number = "KSL-86-19",
+ institution = "Dept.\ of Computer Science, Stanford Univ.",
+}
+@phdthesis{c:79,
+ author = "Clancey, William J.",
+ year = 1979,
+ title = "{Transfer of Rule-Based Expertise
+through a Tutorial Dialogue}",
+ type = "{Ph.D.} diss.",
+ school = "Dept.\ of Computer Science, Stanford Univ.",
+ address = "Stanford, Calif.",
+}
+@unpublished{c:21,
+ author = "Clancey, William J.",
+ title = "{The Engineering of Qualitative Models}",
+ year = 2021,
+ note = "Forthcoming",
+}
+@misc{c:22,
+ title={Attention Is All You Need},
+ author={Ashish Vaswani and Noam Shazeer and Niki Parmar and Jakob Uszkoreit and Llion Jones and Aidan N. Gomez and Lukasz Kaiser and Illia Polosukhin},
+ year={2017},
+ eprint={1706.03762},
+ archivePrefix={arXiv},
+ primaryClass={cs.CL}
+}
+@misc{c:23,
+ title = "Pluto: The 'Other' Red Planet",
+ author = "{NASA}",
+ howpublished = "\url{https://www.nasa.gov/nh/pluto-the-other-red-planet}",
+ year = 2015,
+ note = "Accessed: 2018-12-06"
+} \ No newline at end of file
diff --git a/.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026.bst b/.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026.bst
new file mode 100644
index 0000000..bc73330
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026.bst
@@ -0,0 +1,1493 @@
+%%
+%% This is file `aaai2026.bst',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% merlin.mbs (with options: `head,ay,nat,ed-au,nm-rev,ed-rev,jnrlst,aunm-semi,mcite,mct-1,mct-x3,keyxyr,dt-beg,yr-per,yrp-per,note-yr,atit-u,volp-sp,num-xser,bkpg-x,add-pub,isbn,ppx,ed,xedn,and-com,and-com-ed,etal-xc,nfss,,{}')
+%% merlin.mbs (with options: `tail,ay,nat,ed-au,nm-rev,ed-rev,jnrlst,aunm-semi,mcite,mct-1,mct-x3,keyxyr,dt-beg,yr-per,yrp-per,note-yr,atit-u,volp-sp,num-xser,bkpg-x,add-pub,isbn,ppx,ed,xedn,and-com,and-com-ed,etal-xc,nfss,,{}')
+%% ----------------------------------------
+%% *** Natbib-compatible implementation of 'aaai' bib style ***
+%%
+ % ===============================================================
+ % IMPORTANT NOTICE:
+ % This bibliographic style (bst) file has been generated from one or
+ % more master bibliographic style (mbs) files, listed above.
+ %
+ % This generated file can be redistributed and/or modified under the terms
+ % of the LaTeX Project Public License Distributed from CTAN
+ % archives in directory macros/latex/base/lppl.txt; either
+ % version 1 of the License, or any later version.
+ % ===============================================================
+ % Name and version information of the main mbs file:
+ % \ProvidesFile{merlin.mbs}[2011/11/18 4.33 (PWD, AO, DPC)]
+ % For use with BibTeX version 0.99a or later
+ %-------------------------------------------------------------------
+ % This bibliography style file is intended for texts in ENGLISH
+ % This is an author-year citation style bibliography. As such, it is
+ % non-standard LaTeX, and requires a special package file to function properly.
+ % Such a package is natbib.sty by Patrick W. Daly
+ % The form of the \bibitem entries is
+ % \bibitem[Jones et al.(1990)]{key}...
+ % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
+ % The essential feature is that the label (the part in brackets) consists
+ % of the author names, as they should appear in the citation, with the year
+ % in parentheses following. There must be no space before the opening
+ % parenthesis!
+ % With natbib v5.3, a full list of authors may also follow the year.
+ % In natbib.sty, it is possible to define the type of enclosures that is
+ % really wanted (brackets or parentheses), but in either case, there must
+ % be parentheses in the label.
+ % The \cite command functions as follows:
+ % \citet{key} ==>> Jones et al. (1990)
+ % \citet*{key} ==>> Jones, Baker, and Smith (1990)
+ % \citep{key} ==>> (Jones et al., 1990)
+ % \citep*{key} ==>> (Jones, Baker, and Smith, 1990)
+ % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
+ % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990)
+ % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., 1990, p. 32)
+ % \citeauthor{key} ==>> Jones et al.
+ % \citeauthor*{key} ==>> Jones, Baker, and Smith
+ % \citeyear{key} ==>> 1990
+ %---------------------------------------------------------------------
+
+ENTRY
+ { address
+ archivePrefix
+ author
+ booktitle
+ chapter
+ edition
+ editor
+ eid
+ eprint
+ howpublished
+ institution
+ isbn
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ }
+ {}
+ { label extra.label sort.label short.list }
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+STRINGS { s t}
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+FUNCTION {new.sentence}
+{ output.state after.block =
+ 'skip$
+ { output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+FUNCTION {add.blank}
+{ " " * before.all 'output.state :=
+}
+
+FUNCTION {date.block}
+{
+ new.block
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+FUNCTION {tie.or.space.prefix}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$
+}
+
+FUNCTION {capitalize}
+{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {space.word}
+{ " " swap$ * " " * }
+ % Here are the language-specific definitions for explicit words.
+ % Each function has a name bbl.xxx where xxx is the English word.
+ % The language selected here is ENGLISH
+FUNCTION {bbl.and}
+{ "and"}
+
+FUNCTION {bbl.etal}
+{ "et~al." }
+
+FUNCTION {bbl.editors}
+{ "eds." }
+
+FUNCTION {bbl.editor}
+{ "ed." }
+
+FUNCTION {bbl.edby}
+{ "edited by" }
+
+FUNCTION {bbl.edition}
+{ "edition" }
+
+FUNCTION {bbl.volume}
+{ "volume" }
+
+FUNCTION {bbl.of}
+{ "of" }
+
+FUNCTION {bbl.number}
+{ "number" }
+
+FUNCTION {bbl.nr}
+{ "no." }
+
+FUNCTION {bbl.in}
+{ "in" }
+
+FUNCTION {bbl.pages}
+{ "" }
+
+FUNCTION {bbl.page}
+{ "" }
+
+FUNCTION {bbl.chapter}
+{ "chapter" }
+
+FUNCTION {bbl.techrep}
+{ "Technical Report" }
+
+FUNCTION {bbl.mthesis}
+{ "Master's thesis" }
+
+FUNCTION {bbl.phdthesis}
+{ "Ph.D. thesis" }
+
+MACRO {jan} {"January"}
+
+MACRO {feb} {"February"}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"October"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+
+MACRO {tods} {"ACM Transactions on Database Systems"}
+
+MACRO {tog} {"ACM Transactions on Graphics"}
+
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+FUNCTION {bibinfo.check}
+{ swap$
+ duplicate$ missing$
+ {
+ pop$ pop$
+ ""
+ }
+ { duplicate$ empty$
+ {
+ swap$ pop$
+ }
+ { swap$
+ pop$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {bibinfo.warn}
+{ swap$
+ duplicate$ missing$
+ {
+ swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
+ ""
+ }
+ { duplicate$ empty$
+ {
+ swap$ "empty " swap$ * " in " * cite$ * warning$
+ }
+ { swap$
+ pop$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {format.eprint}
+{ eprint duplicate$ empty$
+ 'skip$
+ { archivePrefix duplicate$ empty$
+ 'skip$
+ { ":" * swap$ }
+ if$
+ * "." *
+ }
+ if$
+}
+INTEGERS { nameptr namesleft numnames }
+
+
+STRINGS { bibinfo}
+
+FUNCTION {format.names}
+{ 'bibinfo :=
+ duplicate$ empty$ 'skip$ {
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}{, f.}{, jj}"
+ format.name$
+ bibinfo bibinfo.check
+ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { "; " * t * }
+ {
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ ";" *
+ t "others" =
+ {
+ " " * bbl.etal *
+ }
+ {
+ bbl.and
+ space.word * t *
+ }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ } if$
+}
+FUNCTION {format.names.ed}
+{
+ format.names
+}
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION {format.authors}
+{ author "author" format.names
+}
+FUNCTION {get.bbl.editor}
+{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
+
+FUNCTION {format.editors}
+{ editor "editor" format.names duplicate$ empty$ 'skip$
+ {
+ "," *
+ " " *
+ get.bbl.editor
+ *
+ }
+ if$
+}
+FUNCTION {format.isbn}
+{ isbn "isbn" bibinfo.check
+ duplicate$ empty$ 'skip$
+ {
+ new.block
+ "ISBN " swap$ *
+ }
+ if$
+}
+
+FUNCTION {format.note}
+{
+ note empty$
+ { "" }
+ { note #1 #1 substring$
+ duplicate$ "{" =
+ 'skip$
+ { output.state mid.sentence =
+ { "l" }
+ { "u" }
+ if$
+ change.case$
+ }
+ if$
+ note #2 global.max$ substring$ * "note" bibinfo.check
+ }
+ if$
+}
+
+FUNCTION {format.title}
+{ title
+ "title" bibinfo.check
+}
+FUNCTION {format.full.names}
+{'s :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$
+ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ {
+ " " * bbl.etal *
+ }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ bbl.and
+ space.word * t *
+ }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.key.full}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.key.full}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.key.full}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.full
+ { type$ "proceedings" =
+ 'editor.key.full
+ 'author.key.full
+ if$
+ }
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem[{" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "}]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {n.dashify}
+{
+ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION {word.in}
+{ bbl.in capitalize
+ " " * }
+
+FUNCTION {format.date}
+{ year "year" bibinfo.check duplicate$ empty$
+ {
+ "empty year in " cite$ * "; set to ????" * warning$
+ pop$ "????"
+ }
+ 'skip$
+ if$
+ extra.label *
+ before.all 'output.state :=
+ after.sentence 'output.state :=
+}
+FUNCTION {format.btitle}
+{ title "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ {
+ emphasize
+ }
+ if$
+}
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { bbl.volume volume tie.or.space.prefix
+ "volume" bibinfo.check * *
+ series "series" bibinfo.check
+ duplicate$ empty$ 'pop$
+ { swap$ bbl.of space.word * swap$
+ emphasize * }
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { series empty$
+ { number "number" bibinfo.check }
+ { output.state mid.sentence =
+ { bbl.number }
+ { bbl.number capitalize }
+ if$
+ number tie.or.space.prefix "number" bibinfo.check * *
+ bbl.in space.word *
+ series "series" bibinfo.check *
+ }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition duplicate$ empty$ 'skip$
+ {
+ output.state mid.sentence =
+ { "l" }
+ { "t" }
+ if$ change.case$
+ "edition" bibinfo.check
+ " " * bbl.edition *
+ }
+ if$
+}
+INTEGERS { multiresult }
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+FUNCTION {format.pages}
+{ pages duplicate$ empty$ 'skip$
+ { duplicate$ multi.page.check
+ {
+ n.dashify
+ }
+ {
+ }
+ if$
+ "pages" bibinfo.check
+ }
+ if$
+}
+FUNCTION {format.journal.pages}
+{ pages duplicate$ empty$ 'pop$
+ { swap$ duplicate$ empty$
+ { pop$ pop$ format.pages }
+ {
+ ": " *
+ swap$
+ n.dashify
+ "pages" bibinfo.check
+ *
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {format.journal.eid}
+{ eid "eid" bibinfo.check
+ duplicate$ empty$ 'pop$
+ { swap$ duplicate$ empty$ 'skip$
+ {
+ ": " *
+ }
+ if$
+ swap$ *
+ }
+ if$
+}
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ duplicate$ empty$ 'skip$
+ {
+ "volume" bibinfo.check
+ }
+ if$
+ number "number" bibinfo.check duplicate$ empty$ 'skip$
+ {
+ swap$ duplicate$ empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ swap$
+ "(" swap$ * ")" *
+ }
+ if$ *
+ eid empty$
+ { format.journal.pages }
+ { format.journal.eid }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { bbl.chapter }
+ { type "l" change.case$
+ "type" bibinfo.check
+ }
+ if$
+ chapter tie.or.space.prefix
+ "chapter" bibinfo.check
+ * *
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.booktitle}
+{
+ booktitle "booktitle" bibinfo.check
+ emphasize
+}
+FUNCTION {format.in.ed.booktitle}
+{ format.booktitle duplicate$ empty$ 'skip$
+ {
+ editor "editor" format.names.ed duplicate$ empty$ 'pop$
+ {
+ "," *
+ " " *
+ get.bbl.editor
+ ", " *
+ * swap$
+ * }
+ if$
+ word.in swap$ *
+ }
+ if$
+}
+FUNCTION {format.thesis.type}
+{ type duplicate$ empty$
+ 'pop$
+ { swap$ pop$
+ "t" change.case$ "type" bibinfo.check
+ }
+ if$
+}
+FUNCTION {format.tr.number}
+{ number "number" bibinfo.check
+ type duplicate$ empty$
+ { pop$ bbl.techrep }
+ 'skip$
+ if$
+ "type" bibinfo.check
+ swap$ duplicate$ empty$
+ { pop$ "t" change.case$ }
+ { tie.or.space.prefix * * }
+ if$
+}
+FUNCTION {format.article.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.book.crossref}
+{ volume duplicate$ empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ pop$ word.in
+ }
+ { bbl.volume
+ capitalize
+ swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
+ }
+ if$
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.incoll.inproc.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.org.or.pub}
+{ 't :=
+ ""
+ address empty$ t empty$ and
+ 'skip$
+ {
+ address "address" bibinfo.check *
+ t empty$
+ 'skip$
+ { address empty$
+ 'skip$
+ { ": " * }
+ if$
+ t *
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {format.publisher.address}
+{ publisher "publisher" bibinfo.warn format.org.or.pub
+}
+
+FUNCTION {format.organization.address}
+{ organization "organization" bibinfo.check format.org.or.pub
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ {
+ journal
+ "journal" bibinfo.check
+ emphasize
+ "journal" output.check
+ format.vol.num.pages output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ format.date "year" output.check
+ date.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ format.publisher.address output
+ }
+ {
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.isbn output
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ new.block
+ howpublished "howpublished" bibinfo.check output
+ address "address" bibinfo.check output
+ format.isbn output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ format.date "year" output.check
+ date.block
+ format.btitle "title" output.check
+ crossref missing$
+ {
+ format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.number.series output
+ new.sentence
+ format.publisher.address output
+ }
+ {
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ crossref missing$
+ { format.isbn output }
+ 'skip$
+ if$
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.chapter.pages output
+ new.sentence
+ format.publisher.address output
+ format.edition output
+ format.isbn output
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages output
+ new.sentence
+ publisher empty$
+ { format.organization.address output }
+ { organization "organization" bibinfo.check output
+ format.publisher.address output
+ }
+ if$
+ format.isbn output
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {conference} { inproceedings }
+FUNCTION {manual}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ organization "organization" bibinfo.check output
+ address "address" bibinfo.check output
+ format.edition output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle
+ "title" output.check
+ new.block
+ bbl.mthesis format.thesis.type output.nonnull
+ school "school" bibinfo.warn output
+ address "address" bibinfo.check output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title output
+ new.block
+ howpublished "howpublished" bibinfo.check output
+ new.block
+ format.note output
+ format.eprint output
+ fin.entry
+}
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle
+ "title" output.check
+ new.block
+ bbl.phdthesis format.thesis.type output.nonnull
+ school "school" bibinfo.warn output
+ address "address" bibinfo.check output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.editors output
+ editor format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ publisher empty$
+ { format.organization.address output }
+ { organization "organization" bibinfo.check output
+ format.publisher.address output
+ }
+ if$
+ format.isbn output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title
+ "title" output.check
+ new.block
+ format.tr.number output.nonnull
+ institution "institution" bibinfo.warn output
+ address "address" bibinfo.check output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ new.block
+ format.note "note" output.check
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+READ
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+INTEGERS { len }
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+FUNCTION {format.lab.names}
+{'s :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$
+ 't :=
+ nameptr #1 >
+ {
+ nameptr #2 =
+ numnames #3 > and
+ { "others" 't :=
+ #1 'namesleft := }
+ 'skip$
+ if$
+ namesleft #1 >
+ { ", " * t * }
+ {
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ {
+ " " * bbl.etal *
+ }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ bbl.and
+ space.word * t *
+ }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.label}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.label
+ 'author.key.label
+ if$
+ }
+ if$
+ 'short.list :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+ short.list
+ "("
+ *
+ year duplicate$ empty$
+ short.list key field.or.null = or
+ { pop$ "" }
+ 'skip$
+ if$
+ *
+ 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"
+ format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "zzzzz" 't := }
+ 'skip$
+ if$
+ t sortify *
+ }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+FUNCTION {editor.sort}
+{ editor empty$
+ { key empty$
+ { "to sort, need editor or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+FUNCTION {presort}
+{ calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.sort
+ 'author.sort
+ if$
+ }
+ if$
+ #1 entry.max$ substring$
+ 'sort.label :=
+ sort.label
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+SORT
+STRINGS { last.label next.extra }
+INTEGERS { last.extra.num last.extra.num.extended last.extra.num.blank number.label }
+FUNCTION {initialize.extra.label.stuff}
+{ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+ "a" chr.to.int$ #1 - 'last.extra.num.blank :=
+ last.extra.num.blank 'last.extra.num.extended :=
+ #0 'number.label :=
+}
+FUNCTION {forward.pass}
+{ last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num "z" chr.to.int$ >
+ { "a" chr.to.int$ 'last.extra.num :=
+ last.extra.num.extended #1 + 'last.extra.num.extended :=
+ }
+ 'skip$
+ if$
+ last.extra.num.extended last.extra.num.blank >
+ { last.extra.num.extended int.to.chr$
+ last.extra.num int.to.chr$
+ * 'extra.label := }
+ { last.extra.num int.to.chr$ 'extra.label := }
+ if$
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+}
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+}
+EXECUTE {initialize.extra.label.stuff}
+ITERATE {forward.pass}
+REVERSE {reverse.pass}
+FUNCTION {bib.sort.order}
+{ sort.label
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+ITERATE {bib.sort.order}
+SORT
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+}
+EXECUTE {begin.bib}
+EXECUTE {init.state.consts}
+ITERATE {call.type$}
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+EXECUTE {end.bib}
+%% End of customized bst file
+%%
+%% End of file `aaai2026.bst'.
diff --git a/.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026.sty b/.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026.sty
new file mode 100644
index 0000000..1c587a5
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/aaai2026/aaai2026.sty
@@ -0,0 +1,315 @@
+\NeedsTeXFormat{LaTeX2e}%
+\ProvidesPackage{aaai2026}[2026/04/29 AAAI 2026 Submission format]%
+\def\year{2026}%
+\typeout{Conference Style for AAAI for LaTeX 2e -- version for submission}%
+%
+\def\copyright@on{T}
+\def\showauthors@on{T}
+\def\nocopyright{\gdef\copyright@on{}} % Copyright notice is required for camera-ready only.
+\DeclareOption{submission}{%
+ \gdef\copyright@on{}%
+ \gdef\showauthors@on{}%
+ \long\gdef\pdfinfo #1{\relax}%
+}%
+\DeclareOption{draft}{%
+ \gdef\copyright@on{}%
+}%
+\ProcessOptions\relax%
+% WARNING: IF YOU ARE USING THIS STYLE SHEET FOR AN AAAI PUBLICATION, YOU
+% MAY NOT MODIFY IT FOR ANY REASON. MODIFICATIONS (IN YOUR SOURCE
+% OR IN THIS STYLE SHEET WILL RESULT IN REJECTION OF YOUR PAPER).
+%
+% WARNING: This style is NOT guaranteed to work. It is provided in the
+% hope that it might make the preparation of papers easier, but this style
+% file is provided "as is" without warranty of any kind, either express or
+% implied, including but not limited to the implied warranties of
+% merchantability, fitness for a particular purpose, or noninfringement.
+% You use this style file at your own risk. Standard disclaimers apply.
+% There are undoubtably bugs in this style. If you would like to submit
+% bug fixes, improvements, etc. please let us know. Please use the contact form
+% at www.aaai.org.
+%
+% Do not use this file unless you are an experienced LaTeX user.
+%
+% PHYSICAL PAGE LAYOUT
+\setlength\topmargin{-0.25in} \setlength\oddsidemargin{-0.25in}
+\setlength\textheight{9.0in} \setlength\textwidth{7.0in}
+\setlength\columnsep{0.375in} \newlength\titlebox \setlength\titlebox{2.25in}
+\setlength\headheight{0pt} \setlength\headsep{0pt}
+%\setlength\footheight{0pt} \setlength\footskip{0pt}
+\thispagestyle{empty} \pagestyle{empty}
+\flushbottom \twocolumn \sloppy
+% We're never going to need a table of contents, so just flush it to
+% save space --- suggested by drstrip@sandia-2
+\def\addcontentsline#1#2#3{}
+% gf: PRINT COPYRIGHT NOTICE
+\def\copyright@year{\number\year}
+\def\copyright@text{Copyright \copyright\space \copyright@year,
+Association for the Advancement of Artificial Intelligence (www.aaai.org).
+All rights reserved.}
+\def\copyrighttext#1{\gdef\copyright@on{T}\gdef\copyright@text{#1}}
+\def\copyrightyear#1{\gdef\copyright@on{T}\gdef\copyright@year{#1}}
+% gf: End changes for copyright notice (used in \maketitle, below)
+% Title stuff, taken from deproc.
+%
+\def\maketitle{%
+ \par%
+ \begingroup % to make the footnote style local to the title
+ \def\thefootnote{\fnsymbol{footnote}}
+ \twocolumn[\@maketitle] \@thanks%
+ \endgroup%
+ % Insert copyright slug unless turned off
+ \if T\copyright@on\insert\footins{\noindent\footnotesize\copyright@text}\fi%
+ %
+ \setcounter{footnote}{0}%
+ \let\maketitle\relax%
+ \let\@maketitle\relax%
+ \gdef\@thanks{}%
+ \gdef\@author{}%
+ \gdef\@title{}%
+ \let\thanks\relax%
+}%
+\long\gdef\affiliations #1{ \def \affiliations_{\if T\showauthors@on#1\fi}}%
+%
+\def\@maketitle{%
+ \def\theauthors{\if T\showauthors@on\@author\else Anonymous submission\fi}
+ \newcounter{eqfn}\setcounter{eqfn}{0}%
+ \newsavebox{\titlearea}
+ \sbox{\titlearea}{
+ \let\footnote\relax\let\thanks\relax%
+ \setcounter{footnote}{0}%
+ \def\equalcontrib{%
+ \ifnum\value{eqfn}=0%
+ \footnote{These authors contributed equally.}%
+ \setcounter{eqfn}{\value{footnote}}%
+ \else%
+ \footnotemark[\value{eqfn}]%
+ \fi%
+ }%
+ \vbox{%
+ \hsize\textwidth%
+ \linewidth\hsize%
+ \vskip 0.625in minus 0.125in%
+ \centering%
+ {\LARGE\bf \@title \par}%
+ \vskip 0.1in plus 0.5fil minus 0.05in%
+ {\Large{\textbf{\theauthors\ifhmode\\\fi}}}%
+ \vskip .2em plus 0.25fil%
+ {\normalsize \affiliations_\ifhmode\\\fi}%
+ \vskip 1em plus 2fil%
+ }%
+ }%
+%
+ \newlength\actualheight%
+ \settoheight{\actualheight}{\usebox{\titlearea}}%
+ \ifdim\actualheight>\titlebox%
+ \setlength{\titlebox}{\actualheight}%
+ \fi%
+%
+ \vbox to \titlebox {%
+ \let\footnote\thanks\relax%
+ \setcounter{footnote}{0}%
+ \def\equalcontrib{%
+ \ifnum\value{eqfn}=0%
+ \footnote{These authors contributed equally.}%
+ \setcounter{eqfn}{\value{footnote}}%
+ \else%
+ \footnotemark[\value{eqfn}]%
+ \fi%
+ }%
+ \hsize\textwidth%
+ \linewidth\hsize%
+ \vskip 0.625in minus 0.125in%
+ \centering%
+ {\LARGE\bf \@title \par}%
+ \vskip 0.1in plus 0.5fil minus 0.05in%
+ {\Large{\textbf{\theauthors\ifhmode\\\fi}}}%
+ \vskip .2em plus 0.25fil%
+ {\normalsize \affiliations_\ifhmode\\\fi}%
+ \vskip 1em plus 2fil%
+ }%
+}%
+%
+\renewenvironment{abstract}{%
+ \centerline{\bf Abstract}%
+ \vspace{0.5ex}%
+ \setlength{\leftmargini}{10pt}%
+ \begin{quote}%
+ \small%
+}{%
+ \par%
+ \end{quote}%
+ \vskip 1ex%
+}%
+\newenvironment{links}{%
+ \newcommand{\link}[2]{\par\textbf{##1} --- \url{##2}}%
+ \setlength{\hangindent}{10pt}%
+ \setlength{\parskip}{2pt}%
+ \begin{flushleft}%
+}{%
+ \end{flushleft}%
+ \vskip 1ex%
+}%
+% jsp added:
+\def\pubnote#1{
+ \thispagestyle{myheadings}%
+ \pagestyle{myheadings}%
+ \markboth{#1}{#1}%
+ \setlength\headheight{10pt}%
+ \setlength\headsep{10pt}%
+}%
+%
+% SECTIONS with less space
+\def\section{\@startsection {section}{1}{\z@}{-2.0ex plus
+-0.5ex minus -.2ex}{3pt plus 2pt minus 1pt}{\Large\bf\centering}}
+\def\subsection{\@startsection{subsection}{2}{\z@}{-2.0ex plus
+-0.5ex minus -.2ex}{3pt plus 2pt minus 1pt}{\large\bf\raggedright}}
+\def\subsubsection{\@startsection{subparagraph}{3}{\z@}{-6pt plus
+%%% DIEGO changed: 29/11/2009
+%% 2pt minus 1pt}{-1em}{\normalsize\bf}}
+-2pt minus -1pt}{-1em}{\normalsize\bf}}
+%%% END changed
+\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}{-6pt plus -2pt minus -1pt}{-1em}{\normalsize\bf}}%
+\setcounter{secnumdepth}{0}
+% add period to section (but not subsection) numbers, reduce space after
+%\renewcommand{\thesection}
+% {\arabic{section}.\hskip-0.6em}
+%\renewcommand{\thesubsection}
+% {\arabic{section}.\arabic{subsection}\hskip-0.6em}
+% FOOTNOTES
+\footnotesep 6.65pt %
+\skip\footins 9pt plus 4pt minus 2pt
+\def\footnoterule{\kern-3pt \hrule width 5pc \kern 2.6pt }
+\setcounter{footnote}{0}
+% LISTS AND PARAGRAPHS
+\parindent 10pt
+\topsep 4pt plus 1pt minus 2pt
+\partopsep 1pt plus 0.5pt minus 0.5pt
+\itemsep 0.5pt plus 1pt minus 0.5pt
+\parsep 2pt plus 1pt minus 0.5pt
+\leftmargin 10pt \leftmargini 13pt \leftmarginii 10pt \leftmarginiii 5pt \leftmarginiv 5pt \leftmarginv 5pt \leftmarginvi 5pt
+\labelwidth\leftmargini\advance\labelwidth-\labelsep \labelsep 5pt
+\def\@listi{\leftmargin\leftmargini}
+\def\@listii{\leftmargin\leftmarginii
+\labelwidth\leftmarginii\advance\labelwidth-\labelsep
+\topsep 2pt plus 1pt minus 0.5pt
+\parsep 1pt plus 0.5pt minus 0.5pt
+\itemsep \parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+\labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+\topsep 1pt plus 0.5pt minus 0.5pt
+\parsep \z@
+\partopsep 0.5pt plus 0pt minus 0.5pt
+\itemsep \topsep}
+\def\@listiv{\leftmargin\leftmarginiv
+\labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
+\def\@listv{\leftmargin\leftmarginv
+\labelwidth\leftmarginv\advance\labelwidth-\labelsep}
+\def\@listvi{\leftmargin\leftmarginvi
+\labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
+\abovedisplayskip 7pt plus2pt minus5pt%
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus3pt%
+\belowdisplayshortskip 4pt plus3pt minus3pt%
+% Less leading in most fonts (due to the narrow columns)
+% The choices were between 1-pt and 1.5-pt leading
+\def\normalsize{\@setfontsize\normalsize\@xpt{11}} % 10 point on 11
+\def\small{\@setfontsize\small\@ixpt{10}} % 9 point on 10
+\def\footnotesize{\@setfontsize\footnotesize\@ixpt{10}} % 9 point on 10
+\def\scriptsize{\@setfontsize\scriptsize\@viipt{10}} % 7 point on 8
+\def\tiny{\@setfontsize\tiny\@vipt{7}} % 6 point on 7
+\def\large{\@setfontsize\large\@xipt{12}} % 11 point on 12
+\def\Large{\@setfontsize\Large\@xiipt{14}} % 12 point on 14
+\def\LARGE{\@setfontsize\LARGE\@xivpt{16}} % 14 point on 16
+\def\huge{\@setfontsize\huge\@xviipt{20}} % 17 point on 20
+\def\Huge{\@setfontsize\Huge\@xxpt{23}} % 20 point on 23
+
+\AtBeginDocument{%
+ \@ifpackageloaded{natbib}%
+ {%
+ % When natbib is in use, set the proper style and fix a few things
+ \let\cite\citep
+ \let\shortcite\citeyearpar
+ \setcitestyle{aysep={}}
+ \setlength\bibhang{0pt}
+ \bibliographystyle{aaai2026}
+ }{}%
+ \@ifpackageloaded{hyperref}%
+ {%
+ \PackageError{aaai}{You must not use hyperref in AAAI papers.}{You (or one of the packages you imported) are importing the hyperref package, which is forbidden in AAAI papers. You must remove it from the paper to proceed.}
+ }{}%
+ \@ifpackageloaded{bbm}%
+ {%
+ \PackageError{aaai}{You must not use bbm package in AAAI papers because it introduces Type 3 fonts which are forbidden.}{See https://tex.stackexchange.com/questions/479160/a-replacement-to-mathbbm1-with-type-1-fonts for possible alternatives.}
+ }{}%
+ \@ifpackageloaded{authblk}%
+ {%
+ \PackageError{aaai}{Package authblk is forbbidden.}{Package authblk is forbbiden. You must find an alternative.}
+ }{}%
+ \@ifpackageloaded{balance}%
+ {%
+ \PackageError{aaai}{Package balance is forbbidden.}{Package balance is forbbiden. You must find an alternative.}
+ }{}%
+ \@ifpackageloaded{CJK}%
+ {%
+ \PackageError{aaai}{Package CJK is forbbidden.}{Package CJK is forbbiden. You must find an alternative.}
+ }{}%
+ \@ifpackageloaded{flushend}%
+ {%
+ \PackageError{aaai}{Package flushend is forbbidden.}{Package flushend is forbbiden. You must find an alternative.}
+ }{}%
+ \@ifpackageloaded{fontenc}%
+ {%
+ \PackageError{aaai}{Package fontenc is forbbidden.}{Package fontenc is forbbiden. You must find an alternative.}
+ }{}%
+ \@ifpackageloaded{fullpage}%
+ {%
+ \PackageError{aaai}{Package fullpage is forbbidden.}{Package fullpage is forbbiden. You must find an alternative.}
+ }{}%
+ \@ifpackageloaded{geometry}%
+ {%
+ \PackageError{aaai}{Package geometry is forbbidden.}{Package geometry is forbbiden. You must find an alternative.}
+ }{}%
+ \@ifpackageloaded{grffile}%
+ {%
+ \PackageError{aaai}{Package grffile is forbbidden.}{Package grffile is forbbiden. You must find an alternative.}
+ }{}%
+ \@ifpackageloaded{navigator}%
+ {%
+ \PackageError{aaai}{Package navigator is forbbidden.}{Package navigator is forbbiden. You must find an alternative.}
+ }{}%
+ \@ifpackageloaded{savetrees}%
+ {%
+ \PackageError{aaai}{Package savetrees is forbbidden.}{Package savetrees is forbbiden. You must find an alternative.}
+ }{}%
+ \@ifpackageloaded{setspace}%
+ {%
+ \PackageError{aaai}{Package setspace is forbbidden.}{Package setspace is forbbiden. You must find an alternative.}
+ }{}%
+ \@ifpackageloaded{stfloats}%
+ {%
+ \PackageError{aaai}{Package stfloats is forbbidden.}{Package stfloats is forbbiden. You must find an alternative.}
+ }{}%
+ \@ifpackageloaded{tabu}%
+ {%
+ \PackageError{aaai}{Package tabu is forbbidden.}{Package tabu is forbbiden. You must find an alternative.}
+ }{}%
+ \@ifpackageloaded{titlesec}%
+ {%
+ \PackageError{aaai}{Package titlesec is forbbidden.}{Package titlesec is forbbiden. You must find an alternative.}
+ }{}%
+ \@ifpackageloaded{tocbibind}%
+ {%
+ \PackageError{aaai}{Package tocbibind is forbbidden.}{Package tocbibind is forbbiden. You must find an alternative.}
+ }{}%
+ \@ifpackageloaded{ulem}%
+ {%
+ \PackageError{aaai}{Package ulem is forbbidden.}{Package ulem is forbbiden. You must find an alternative.}
+ }{}%
+ \@ifpackageloaded{wrapfig}%
+ {%
+ \PackageError{aaai}{Package wrapfig is forbbidden.}{Package wrapfig is forbbiden. You must find an alternative.}
+ }{}%
+}
+
+\let\endthebibliography=\endlist
diff --git a/.agents/skills/ml-paper-writing/templates/acl/README.md b/.agents/skills/ml-paper-writing/templates/acl/README.md
new file mode 100644
index 0000000..a940427
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/acl/README.md
@@ -0,0 +1,50 @@
+# *ACL Paper Styles
+
+This directory contains the latest LaTeX templates for *ACL conferences.
+
+## Instructions for authors
+
+Paper submissions to *ACL conferences must use the official ACL style
+templates.
+
+The LaTeX style files are available
+
+- as an [Overleaf template](https://www.overleaf.com/latex/templates/association-for-computational-linguistics-acl-conference/jvxskxpnznfj)
+- in this repository
+- as a [.zip file](https://github.com/acl-org/acl-style-files/archive/refs/heads/master.zip)
+
+Please see [`acl_latex.tex`](https://github.com/acl-org/acl-style-files/blob/master/acl_latex.tex) for an example.
+
+Please follow the paper formatting guidelines general to *ACL
+conferences:
+
+- [Paper formatting guidelines](https://acl-org.github.io/ACLPUB/formatting.html)
+
+Authors may not modify these style files or use templates designed for
+other conferences.
+
+## Instructions for publications chairs
+
+To adapt the style files for your conference, please fork this repository and
+make necessary changes. Minimally, you'll need to update the name of
+the conference and rename the files.
+
+If you make improvements to the templates that should be propagated to
+future conferences, please submit a pull request. Thank you in
+advance!
+
+In older versions of the templates, authors were asked to fill in the
+START submission ID so that it would be stamped at the top of each
+page of the anonymized version. This is no longer needed, because it
+is now possible to do this stamping automatically within
+START. Currently, the way to do this is for the program chair to email
+support@softconf.com and request it.
+
+## Instructions for making changes to style files
+
+- merge pull request in github, or push to github
+- git pull from github to a local repository
+- then, git push from your local repository to overleaf project
+ - Overleaf project is https://www.overleaf.com/project/5f64f1fb97c4c50001b60549
+ - Overleaf git url is https://git.overleaf.com/5f64f1fb97c4c50001b60549
+- then, click "Submit" and then "Submit as Template" in overleaf in order to ask overleaf to update the overleaf template from the overleaf project
diff --git a/.agents/skills/ml-paper-writing/templates/acl/acl.sty b/.agents/skills/ml-paper-writing/templates/acl/acl.sty
new file mode 100644
index 0000000..d9b74d0
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/acl/acl.sty
@@ -0,0 +1,312 @@
+% This is the LaTex style file for *ACL.
+% The official sources can be found at
+%
+% https://github.com/acl-org/acl-style-files/
+%
+% This package is activated by adding
+%
+% \usepackage{acl}
+%
+% to your LaTeX file. When submitting your paper for review, add the "review" option:
+%
+% \usepackage[review]{acl}
+
+\newif\ifacl@finalcopy
+\newif\ifacl@anonymize
+\newif\ifacl@linenumbers
+\newif\ifacl@pagenumbers
+\DeclareOption{final}{\acl@finalcopytrue\acl@anonymizefalse\acl@linenumbersfalse\acl@pagenumbersfalse}
+\DeclareOption{review}{\acl@finalcopyfalse\acl@anonymizetrue\acl@linenumberstrue\acl@pagenumberstrue}
+\DeclareOption{preprint}{\acl@finalcopytrue\acl@anonymizefalse\acl@linenumbersfalse\acl@pagenumberstrue}
+\ExecuteOptions{final} % final copy is the default
+
+% include hyperref, unless user specifies nohyperref option like this:
+% \usepackage[nohyperref]{acl}
+\newif\ifacl@hyperref
+\DeclareOption{hyperref}{\acl@hyperreftrue}
+\DeclareOption{nohyperref}{\acl@hyperreffalse}
+\ExecuteOptions{hyperref} % default is to use hyperref
+\ProcessOptions\relax
+
+\typeout{Conference Style for ACL}
+
+\usepackage{xcolor}
+
+\ifacl@linenumbers
+ % Add draft line numbering via the lineno package
+ % https://texblog.org/2012/02/08/adding-line-numbers-to-documents/
+ \usepackage[switch,mathlines]{lineno}
+
+ % Line numbers in gray Helvetica 8pt
+ \font\aclhv = phvb at 8pt
+ \renewcommand\linenumberfont{\aclhv\color{lightgray}}
+
+ % Zero-fill line numbers
+ % NUMBER with left flushed zeros \fillzeros[<WIDTH>]<NUMBER>
+ \newcount\cv@tmpc@ \newcount\cv@tmpc
+ \def\fillzeros[#1]#2{\cv@tmpc@=#2\relax\ifnum\cv@tmpc@<0\cv@tmpc@=-\cv@tmpc@\fi
+ \cv@tmpc=1 %
+ \loop\ifnum\cv@tmpc@<10 \else \divide\cv@tmpc@ by 10 \advance\cv@tmpc by 1 \fi
+ \ifnum\cv@tmpc@=10\relax\cv@tmpc@=11\relax\fi \ifnum\cv@tmpc@>10 \repeat
+ \ifnum#2<0\advance\cv@tmpc1\relax-\fi
+ \loop\ifnum\cv@tmpc<#1\relax0\advance\cv@tmpc1\relax\fi \ifnum\cv@tmpc<#1 \repeat
+ \cv@tmpc@=#2\relax\ifnum\cv@tmpc@<0\cv@tmpc@=-\cv@tmpc@\fi \relax\the\cv@tmpc@}%
+ \renewcommand\thelinenumber{\fillzeros[3]{\arabic{linenumber}}}
+ \AtBeginDocument{\linenumbers}
+
+ \setlength{\linenumbersep}{1.6cm}
+
+ % Bug: An equation with $$ ... $$ isn't numbered, nor is the previous line.
+
+ % Patch amsmath commands so that the previous line and the equation itself
+ % are numbered. Bug: multline has an extra line number.
+ % https://tex.stackexchange.com/questions/461186/how-to-use-lineno-with-amsmath-align
+ \usepackage{etoolbox} %% <- for \pretocmd, \apptocmd and \patchcmd
+
+ \newcommand*\linenomathpatch[1]{%
+ \expandafter\pretocmd\csname #1\endcsname {\linenomath}{}{}%
+ \expandafter\pretocmd\csname #1*\endcsname {\linenomath}{}{}%
+ \expandafter\apptocmd\csname end#1\endcsname {\endlinenomath}{}{}%
+ \expandafter\apptocmd\csname end#1*\endcsname {\endlinenomath}{}{}%
+ }
+ \newcommand*\linenomathpatchAMS[1]{%
+ \expandafter\pretocmd\csname #1\endcsname {\linenomathAMS}{}{}%
+ \expandafter\pretocmd\csname #1*\endcsname {\linenomathAMS}{}{}%
+ \expandafter\apptocmd\csname end#1\endcsname {\endlinenomath}{}{}%
+ \expandafter\apptocmd\csname end#1*\endcsname {\endlinenomath}{}{}%
+ }
+
+ %% Definition of \linenomathAMS depends on whether the mathlines option is provided
+ \expandafter\ifx\linenomath\linenomathWithnumbers
+ \let\linenomathAMS\linenomathWithnumbers
+ %% The following line gets rid of an extra line numbers at the bottom:
+ \patchcmd\linenomathAMS{\advance\postdisplaypenalty\linenopenalty}{}{}{}
+ \else
+ \let\linenomathAMS\linenomathNonumbers
+ \fi
+
+ \AtBeginDocument{%
+ \linenomathpatch{equation}%
+ \linenomathpatchAMS{gather}%
+ \linenomathpatchAMS{multline}%
+ \linenomathpatchAMS{align}%
+ \linenomathpatchAMS{alignat}%
+ \linenomathpatchAMS{flalign}%
+ }
+\else
+ % Hack to ignore these commands, which review mode puts into the .aux file.
+ \newcommand{\@LN@col}[1]{}
+ \newcommand{\@LN}[2]{}
+ \newcommand{\nolinenumbers}{}
+\fi
+
+\PassOptionsToPackage{a4paper,margin=2.5cm,heightrounded=true}{geometry}
+\RequirePackage{geometry}
+
+\setlength\columnsep{0.6cm}
+\newlength\titlebox
+\setlength\titlebox{11\baselineskip}
+% \titlebox should be a multiple of \baselineskip so that
+% column height remaining fits an exact number of lines of text
+
+\flushbottom \twocolumn \sloppy
+
+% We're never going to need a table of contents, so just flush it to
+% save space --- suggested by drstrip@sandia-2
+\def\addcontentsline#1#2#3{}
+
+\ifacl@pagenumbers
+ \pagenumbering{arabic}
+\else
+ \thispagestyle{empty}
+ \pagestyle{empty}
+\fi
+
+%% Title and Authors %%
+
+\let\Thanks\thanks % \Thanks and \thanks used to be different, but keep this for backwards compatibility.
+
+\newcommand\outauthor{%
+ \begin{tabular}[t]{c}
+ \ifacl@anonymize
+ \bfseries Anonymous ACL submission
+ \else
+ \bfseries\@author
+ \fi
+ \end{tabular}}
+
+% Mostly taken from deproc.
+\AtBeginDocument{
+\def\maketitle{\par
+ \begingroup
+ \def\thefootnote{\fnsymbol{footnote}}
+ \twocolumn[\@maketitle]
+ \@thanks
+ \endgroup
+ \setcounter{footnote}{0}
+ \let\maketitle\relax
+ \let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
+\def\@maketitle{\vbox to \titlebox{\hsize\textwidth
+ \linewidth\hsize \vskip 0.125in minus 0.125in \centering
+ {\Large\bfseries \@title \par} \vskip 0.2in plus 1fil minus 0.1in
+ {\def\and{\unskip\enspace{\rmfamily and}\enspace}%
+ \def\And{\end{tabular}\hss \egroup \hskip 1in plus 2fil
+ \hbox to 0pt\bgroup\hss \begin{tabular}[t]{c}\bfseries}%
+ \def\AND{\end{tabular}\hss\egroup \hfil\hfil\egroup
+ \vskip 0.25in plus 1fil minus 0.125in
+ \hbox to \linewidth\bgroup\large \hfil\hfil
+ \hbox to 0pt\bgroup\hss \begin{tabular}[t]{c}\bfseries}
+ \hbox to \linewidth\bgroup\large \hfil\hfil
+ \hbox to 0pt\bgroup\hss
+ \outauthor
+ \hss\egroup
+ \hfil\hfil\egroup}
+ \vskip 0.3in plus 2fil minus 0.1in
+}}
+}
+
+% margins and font size for abstract
+\renewenvironment{abstract}%
+ {\begin{center}\large\textbf{\abstractname}\end{center}%
+ \begin{list}{}%
+ {\setlength{\rightmargin}{0.6cm}%
+ \setlength{\leftmargin}{0.6cm}}%
+ \item[]\ignorespaces%
+ \@setsize\normalsize{12pt}\xpt\@xpt
+ }%
+ {\unskip\end{list}}
+
+% Resizing figure and table captions - SL
+% Support for interacting with the caption, subfigure, and subcaption packages - SL
+\RequirePackage{caption}
+\DeclareCaptionFont{10pt}{\fontsize{10pt}{12pt}\selectfont}
+\captionsetup{font=10pt}
+
+\RequirePackage{natbib}
+% for citation commands in the .tex, authors can use:
+% \citep, \citet, and \citeyearpar for compatibility with natbib, or
+% \cite, \newcite, and \shortcite for compatibility with older ACL .sty files
+\renewcommand\cite{\citep} % to get "(Author Year)" with natbib
+\newcommand\shortcite{\citeyearpar}% to get "(Year)" with natbib
+\newcommand\newcite{\citet} % to get "Author (Year)" with natbib
+\newcommand{\citeposs}[1]{\citeauthor{#1}'s (\citeyear{#1})} % to get "Author's (Year)"
+
+\bibliographystyle{acl_natbib}
+
+% Bibliography
+
+% Don't put a label in the bibliography at all. Just use the unlabeled format
+% instead.
+\def\thebibliography#1{\vskip\parskip%
+\vskip\baselineskip%
+\def\baselinestretch{1}%
+\ifx\@currsize\normalsize\@normalsize\else\@currsize\fi%
+\vskip-\parskip%
+\vskip-\baselineskip%
+\section*{References\@mkboth
+ {References}{References}}\list
+ {}{\setlength{\labelwidth}{0pt}\setlength{\leftmargin}{\parindent}
+ \setlength{\itemindent}{-\parindent}}
+ \def\newblock{\hskip .11em plus .33em minus -.07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}
+\let\endthebibliography=\endlist
+
+
+% Allow for a bibliography of sources of attested examples
+\def\thesourcebibliography#1{\vskip\parskip%
+\vskip\baselineskip%
+\def\baselinestretch{1}%
+\ifx\@currsize\normalsize\@normalsize\else\@currsize\fi%
+\vskip-\parskip%
+\vskip-\baselineskip%
+\section*{Sources of Attested Examples\@mkboth
+ {Sources of Attested Examples}{Sources of Attested Examples}}\list
+ {}{\setlength{\labelwidth}{0pt}\setlength{\leftmargin}{\parindent}
+ \setlength{\itemindent}{-\parindent}}
+ \def\newblock{\hskip .11em plus .33em minus -.07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}
+\let\endthesourcebibliography=\endlist
+
+% sections with less space
+\def\section{\@startsection {section}{1}{\z@}{-2.0ex plus
+ -0.5ex minus -.2ex}{1.5ex plus 0.3ex minus .2ex}{\large\bfseries\raggedright}}
+\def\subsection{\@startsection{subsection}{2}{\z@}{-1.8ex plus
+ -0.5ex minus -.2ex}{0.8ex plus .2ex}{\normalsize\bfseries\raggedright}}
+%% changed by KO to - values to get the initial parindent right
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-1.5ex plus
+ -0.5ex minus -.2ex}{0.5ex plus .2ex}{\normalsize\bfseries\raggedright}}
+\def\paragraph{\@startsection{paragraph}{4}{\z@}{1.5ex plus
+ 0.5ex minus .2ex}{-1em}{\normalsize\bfseries}}
+\def\subparagraph{\@startsection{subparagraph}{5}{\parindent}{1.5ex plus
+ 0.5ex minus .2ex}{-1em}{\normalsize\bfseries}}
+
+% Footnotes
+\footnotesep 6.65pt %
+\skip\footins 9pt plus 4pt minus 2pt
+\def\footnoterule{\kern-3pt \hrule width 5pc \kern 2.6pt }
+\setcounter{footnote}{0}
+
+% Lists and paragraphs
+\parindent 1em
+\topsep 4pt plus 1pt minus 2pt
+\partopsep 1pt plus 0.5pt minus 0.5pt
+\itemsep 2pt plus 1pt minus 0.5pt
+\parsep 2pt plus 1pt minus 0.5pt
+
+\leftmargin 2em \leftmargini\leftmargin \leftmarginii 2em
+\leftmarginiii 1.5em \leftmarginiv 1.0em \leftmarginv .5em \leftmarginvi .5em
+\labelwidth\leftmargini\advance\labelwidth-\labelsep \labelsep 5pt
+
+\def\@listi{\leftmargin\leftmargini}
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+ \topsep 2pt plus 1pt minus 0.5pt
+ \parsep 1pt plus 0.5pt minus 0.5pt
+ \itemsep \parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+ \topsep 1pt plus 0.5pt minus 0.5pt
+ \parsep \z@ \partopsep 0.5pt plus 0pt minus 0.5pt
+ \itemsep \topsep}
+\def\@listiv{\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
+\def\@listv{\leftmargin\leftmarginv
+ \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
+\def\@listvi{\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
+
+\abovedisplayskip 7pt plus2pt minus5pt%
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus3pt%
+\belowdisplayshortskip 4pt plus3pt minus3pt%
+
+% Less leading in most fonts (due to the narrow columns)
+% The choices were between 1-pt and 1.5-pt leading
+\def\@normalsize{\@setsize\normalsize{11pt}\xpt\@xpt}
+\def\small{\@setsize\small{10pt}\ixpt\@ixpt}
+\def\footnotesize{\@setsize\footnotesize{10pt}\ixpt\@ixpt}
+\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
+\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
+\def\large{\@setsize\large{14pt}\xiipt\@xiipt}
+\def\Large{\@setsize\Large{16pt}\xivpt\@xivpt}
+\def\LARGE{\@setsize\LARGE{20pt}\xviipt\@xviipt}
+\def\huge{\@setsize\huge{23pt}\xxpt\@xxpt}
+\def\Huge{\@setsize\Huge{28pt}\xxvpt\@xxvpt}
+
+% The hyperref manual (section 9) says hyperref should be loaded after natbib
+\ifacl@hyperref
+ \PassOptionsToPackage{breaklinks}{hyperref}
+ \RequirePackage{hyperref}
+ % make links dark blue
+ \definecolor{darkblue}{rgb}{0, 0, 0.5}
+ \hypersetup{colorlinks=true, citecolor=darkblue, linkcolor=darkblue, urlcolor=darkblue}
+\else
+ % This definition is used if the hyperref package is not loaded.
+ % It provides a backup, no-op definiton of \href.
+ % This is necessary because \href command is used in the acl_natbib.bst file.
+ \def\href#1#2{{#2}}
+ \usepackage{url}
+\fi
diff --git a/.agents/skills/ml-paper-writing/templates/acl/acl_latex.tex b/.agents/skills/ml-paper-writing/templates/acl/acl_latex.tex
new file mode 100644
index 0000000..2eba2f1
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/acl/acl_latex.tex
@@ -0,0 +1,377 @@
+\documentclass[11pt]{article}
+
+% Change "review" to "final" to generate the final (sometimes called camera-ready) version.
+% Change to "preprint" to generate a non-anonymous version with page numbers.
+\usepackage[review]{acl}
+
+% Standard package includes
+\usepackage{times}
+\usepackage{latexsym}
+
+% For proper rendering and hyphenation of words containing Latin characters (including in bib files)
+\usepackage[T1]{fontenc}
+% For Vietnamese characters
+% \usepackage[T5]{fontenc}
+% See https://www.latex-project.org/help/documentation/encguide.pdf for other character sets
+
+% This assumes your files are encoded as UTF8
+\usepackage[utf8]{inputenc}
+
+% This is not strictly necessary, and may be commented out,
+% but it will improve the layout of the manuscript,
+% and will typically save some space.
+\usepackage{microtype}
+
+% This is also not strictly necessary, and may be commented out.
+% However, it will improve the aesthetics of text in
+% the typewriter font.
+\usepackage{inconsolata}
+
+%Including images in your LaTeX document requires adding
+%additional package(s)
+\usepackage{graphicx}
+
+% If the title and author information does not fit in the area allocated, uncomment the following
+%
+%\setlength\titlebox{<dim>}
+%
+% and set <dim> to something 5cm or larger.
+
+\title{Instructions for *ACL Proceedings}
+
+% Author information can be set in various styles:
+% For several authors from the same institution:
+% \author{Author 1 \and ... \and Author n \\
+% Address line \\ ... \\ Address line}
+% if the names do not fit well on one line use
+% Author 1 \\ {\bf Author 2} \\ ... \\ {\bf Author n} \\
+% For authors from different institutions:
+% \author{Author 1 \\ Address line \\ ... \\ Address line
+% \And ... \And
+% Author n \\ Address line \\ ... \\ Address line}
+% To start a separate ``row'' of authors use \AND, as in
+% \author{Author 1 \\ Address line \\ ... \\ Address line
+% \AND
+% Author 2 \\ Address line \\ ... \\ Address line \And
+% Author 3 \\ Address line \\ ... \\ Address line}
+
+\author{First Author \\
+ Affiliation / Address line 1 \\
+ Affiliation / Address line 2 \\
+ Affiliation / Address line 3 \\
+ \texttt{email@domain} \\\And
+ Second Author \\
+ Affiliation / Address line 1 \\
+ Affiliation / Address line 2 \\
+ Affiliation / Address line 3 \\
+ \texttt{email@domain} \\}
+
+%\author{
+% \textbf{First Author\textsuperscript{1}},
+% \textbf{Second Author\textsuperscript{1,2}},
+% \textbf{Third T. Author\textsuperscript{1}},
+% \textbf{Fourth Author\textsuperscript{1}},
+%\\
+% \textbf{Fifth Author\textsuperscript{1,2}},
+% \textbf{Sixth Author\textsuperscript{1}},
+% \textbf{Seventh Author\textsuperscript{1}},
+% \textbf{Eighth Author \textsuperscript{1,2,3,4}},
+%\\
+% \textbf{Ninth Author\textsuperscript{1}},
+% \textbf{Tenth Author\textsuperscript{1}},
+% \textbf{Eleventh E. Author\textsuperscript{1,2,3,4,5}},
+% \textbf{Twelfth Author\textsuperscript{1}},
+%\\
+% \textbf{Thirteenth Author\textsuperscript{3}},
+% \textbf{Fourteenth F. Author\textsuperscript{2,4}},
+% \textbf{Fifteenth Author\textsuperscript{1}},
+% \textbf{Sixteenth Author\textsuperscript{1}},
+%\\
+% \textbf{Seventeenth S. Author\textsuperscript{4,5}},
+% \textbf{Eighteenth Author\textsuperscript{3,4}},
+% \textbf{Nineteenth N. Author\textsuperscript{2,5}},
+% \textbf{Twentieth Author\textsuperscript{1}}
+%\\
+%\\
+% \textsuperscript{1}Affiliation 1,
+% \textsuperscript{2}Affiliation 2,
+% \textsuperscript{3}Affiliation 3,
+% \textsuperscript{4}Affiliation 4,
+% \textsuperscript{5}Affiliation 5
+%\\
+% \small{
+% \textbf{Correspondence:} \href{mailto:email@domain}{email@domain}
+% }
+%}
+
+\begin{document}
+\maketitle
+\begin{abstract}
+This document is a supplement to the general instructions for *ACL authors. It contains instructions for using the \LaTeX{} style files for ACL conferences.
+The document itself conforms to its own specifications, and is therefore an example of what your manuscript should look like.
+These instructions should be used both for papers submitted for review and for final versions of accepted papers.
+\end{abstract}
+
+\section{Introduction}
+
+These instructions are for authors submitting papers to *ACL conferences using \LaTeX. They are not self-contained. All authors must follow the general instructions for *ACL proceedings,\footnote{\url{http://acl-org.github.io/ACLPUB/formatting.html}} and this document contains additional instructions for the \LaTeX{} style files.
+
+The templates include the \LaTeX{} source of this document (\texttt{acl\_latex.tex}),
+the \LaTeX{} style file used to format it (\texttt{acl.sty}),
+an ACL bibliography style (\texttt{acl\_natbib.bst}),
+an example bibliography (\texttt{custom.bib}),
+and the bibliography for the ACL Anthology (\texttt{anthology.bib}).
+
+\section{Engines}
+
+To produce a PDF file, pdf\LaTeX{} is strongly recommended (over original \LaTeX{} plus dvips+ps2pdf or dvipdf).
+The style file \texttt{acl.sty} can also be used with
+lua\LaTeX{} and
+Xe\LaTeX{}, which are especially suitable for text in non-Latin scripts.
+The file \texttt{acl\_lualatex.tex} in this repository provides
+an example of how to use \texttt{acl.sty} with either
+lua\LaTeX{} or
+Xe\LaTeX{}.
+
+\section{Preamble}
+
+The first line of the file must be
+\begin{quote}
+\begin{verbatim}
+\documentclass[11pt]{article}
+\end{verbatim}
+\end{quote}
+
+To load the style file in the review version:
+\begin{quote}
+\begin{verbatim}
+\usepackage[review]{acl}
+\end{verbatim}
+\end{quote}
+For the final version, omit the \verb|review| option:
+\begin{quote}
+\begin{verbatim}
+\usepackage{acl}
+\end{verbatim}
+\end{quote}
+
+To use Times Roman, put the following in the preamble:
+\begin{quote}
+\begin{verbatim}
+\usepackage{times}
+\end{verbatim}
+\end{quote}
+(Alternatives like txfonts or newtx are also acceptable.)
+
+Please see the \LaTeX{} source of this document for comments on other packages that may be useful.
+
+Set the title and author using \verb|\title| and \verb|\author|. Within the author list, format multiple authors using \verb|\and| and \verb|\And| and \verb|\AND|; please see the \LaTeX{} source for examples.
+
+By default, the box containing the title and author names is set to the minimum of 5 cm. If you need more space, include the following in the preamble:
+\begin{quote}
+\begin{verbatim}
+\setlength\titlebox{<dim>}
+\end{verbatim}
+\end{quote}
+where \verb|<dim>| is replaced with a length. Do not set this length smaller than 5 cm.
+
+\section{Document Body}
+
+\subsection{Footnotes}
+
+Footnotes are inserted with the \verb|\footnote| command.\footnote{This is a footnote.}
+
+\subsection{Tables and figures}
+
+See Table~\ref{tab:accents} for an example of a table and its caption.
+\textbf{Do not override the default caption sizes.}
+
+\begin{table}
+ \centering
+ \begin{tabular}{lc}
+ \hline
+ \textbf{Command} & \textbf{Output} \\
+ \hline
+ \verb|{\"a}| & {\"a} \\
+ \verb|{\^e}| & {\^e} \\
+ \verb|{\`i}| & {\`i} \\
+ \verb|{\.I}| & {\.I} \\
+ \verb|{\o}| & {\o} \\
+ \verb|{\'u}| & {\'u} \\
+ \verb|{\aa}| & {\aa} \\\hline
+ \end{tabular}
+ \begin{tabular}{lc}
+ \hline
+ \textbf{Command} & \textbf{Output} \\
+ \hline
+ \verb|{\c c}| & {\c c} \\
+ \verb|{\u g}| & {\u g} \\
+ \verb|{\l}| & {\l} \\
+ \verb|{\~n}| & {\~n} \\
+ \verb|{\H o}| & {\H o} \\
+ \verb|{\v r}| & {\v r} \\
+ \verb|{\ss}| & {\ss} \\
+ \hline
+ \end{tabular}
+ \caption{Example commands for accented characters, to be used in, \emph{e.g.}, Bib\TeX{} entries.}
+ \label{tab:accents}
+\end{table}
+
+As much as possible, fonts in figures should conform
+to the document fonts. See Figure~\ref{fig:experiments} for an example of a figure and its caption.
+
+Using the \verb|graphicx| package graphics files can be included within figure
+environment at an appropriate point within the text.
+The \verb|graphicx| package supports various optional arguments to control the
+appearance of the figure.
+You must include it explicitly in the \LaTeX{} preamble (after the
+\verb|\documentclass| declaration and before \verb|\begin{document}|) using
+\verb|\usepackage{graphicx}|.
+
+\begin{figure}[t]
+ \includegraphics[width=\columnwidth]{example-image-golden}
+ \caption{A figure with a caption that runs for more than one line.
+ Example image is usually available through the \texttt{mwe} package
+ without even mentioning it in the preamble.}
+ \label{fig:experiments}
+\end{figure}
+
+\begin{figure*}[t]
+ \includegraphics[width=0.48\linewidth]{example-image-a} \hfill
+ \includegraphics[width=0.48\linewidth]{example-image-b}
+ \caption {A minimal working example to demonstrate how to place
+ two images side-by-side.}
+\end{figure*}
+
+\subsection{Hyperlinks}
+
+Users of older versions of \LaTeX{} may encounter the following error during compilation:
+\begin{quote}
+\verb|\pdfendlink| ended up in different nesting level than \verb|\pdfstartlink|.
+\end{quote}
+This happens when pdf\LaTeX{} is used and a citation splits across a page boundary. The best way to fix this is to upgrade \LaTeX{} to 2018-12-01 or later.
+
+\subsection{Citations}
+
+\begin{table*}
+ \centering
+ \begin{tabular}{lll}
+ \hline
+ \textbf{Output} & \textbf{natbib command} & \textbf{ACL only command} \\
+ \hline
+ \citep{Gusfield:97} & \verb|\citep| & \\
+ \citealp{Gusfield:97} & \verb|\citealp| & \\
+ \citet{Gusfield:97} & \verb|\citet| & \\
+ \citeyearpar{Gusfield:97} & \verb|\citeyearpar| & \\
+ \citeposs{Gusfield:97} & & \verb|\citeposs| \\
+ \hline
+ \end{tabular}
+ \caption{\label{citation-guide}
+ Citation commands supported by the style file.
+ The style is based on the natbib package and supports all natbib citation commands.
+ It also supports commands defined in previous ACL style files for compatibility.
+ }
+\end{table*}
+
+Table~\ref{citation-guide} shows the syntax supported by the style files.
+We encourage you to use the natbib styles.
+You can use the command \verb|\citet| (cite in text) to get ``author (year)'' citations, like this citation to a paper by \citet{Gusfield:97}.
+You can use the command \verb|\citep| (cite in parentheses) to get ``(author, year)'' citations \citep{Gusfield:97}.
+You can use the command \verb|\citealp| (alternative cite without parentheses) to get ``author, year'' citations, which is useful for using citations within parentheses (e.g. \citealp{Gusfield:97}).
+
+A possessive citation can be made with the command \verb|\citeposs|.
+This is not a standard natbib command, so it is generally not compatible
+with other style files.
+
+\subsection{References}
+
+\nocite{Ando2005,andrew2007scalable,rasooli-tetrault-2015}
+
+The \LaTeX{} and Bib\TeX{} style files provided roughly follow the American Psychological Association format.
+If your own bib file is named \texttt{custom.bib}, then placing the following before any appendices in your \LaTeX{} file will generate the references section for you:
+\begin{quote}
+\begin{verbatim}
+\bibliography{custom}
+\end{verbatim}
+\end{quote}
+
+You can obtain the complete ACL Anthology as a Bib\TeX{} file from \url{https://aclweb.org/anthology/anthology.bib.gz}.
+To include both the Anthology and your own .bib file, use the following instead of the above.
+\begin{quote}
+\begin{verbatim}
+\bibliography{anthology,custom}
+\end{verbatim}
+\end{quote}
+
+Please see Section~\ref{sec:bibtex} for information on preparing Bib\TeX{} files.
+
+\subsection{Equations}
+
+An example equation is shown below:
+\begin{equation}
+ \label{eq:example}
+ A = \pi r^2
+\end{equation}
+
+Labels for equation numbers, sections, subsections, figures and tables
+are all defined with the \verb|\label{label}| command and cross references
+to them are made with the \verb|\ref{label}| command.
+
+This an example cross-reference to Equation~\ref{eq:example}.
+
+\subsection{Appendices}
+
+Use \verb|\appendix| before any appendix section to switch the section numbering over to letters. See Appendix~\ref{sec:appendix} for an example.
+
+\section{Bib\TeX{} Files}
+\label{sec:bibtex}
+
+Unicode cannot be used in Bib\TeX{} entries, and some ways of typing special characters can disrupt Bib\TeX's alphabetization. The recommended way of typing special characters is shown in Table~\ref{tab:accents}.
+
+Please ensure that Bib\TeX{} records contain DOIs or URLs when possible, and for all the ACL materials that you reference.
+Use the \verb|doi| field for DOIs and the \verb|url| field for URLs.
+If a Bib\TeX{} entry has a URL or DOI field, the paper title in the references section will appear as a hyperlink to the paper, using the hyperref \LaTeX{} package.
+
+\section*{Limitations}
+
+This document does not cover the content requirements for ACL or any
+other specific venue. Check the author instructions for
+information on
+maximum page lengths, the required ``Limitations'' section,
+and so on.
+
+\section*{Acknowledgments}
+
+This document has been adapted
+by Steven Bethard, Ryan Cotterell and Rui Yan
+from the instructions for earlier ACL and NAACL proceedings, including those for
+ACL 2019 by Douwe Kiela and Ivan Vuli\'{c},
+NAACL 2019 by Stephanie Lukin and Alla Roskovskaya,
+ACL 2018 by Shay Cohen, Kevin Gimpel, and Wei Lu,
+NAACL 2018 by Margaret Mitchell and Stephanie Lukin,
+Bib\TeX{} suggestions for (NA)ACL 2017/2018 from Jason Eisner,
+ACL 2017 by Dan Gildea and Min-Yen Kan,
+NAACL 2017 by Margaret Mitchell,
+ACL 2012 by Maggie Li and Michael White,
+ACL 2010 by Jing-Shin Chang and Philipp Koehn,
+ACL 2008 by Johanna D. Moore, Simone Teufel, James Allan, and Sadaoki Furui,
+ACL 2005 by Hwee Tou Ng and Kemal Oflazer,
+ACL 2002 by Eugene Charniak and Dekang Lin,
+and earlier ACL and EACL formats written by several people, including
+John Chen, Henry S. Thompson and Donald Walker.
+Additional elements were taken from the formatting instructions of the \emph{International Joint Conference on Artificial Intelligence} and the \emph{Conference on Computer Vision and Pattern Recognition}.
+
+% Bibliography entries for the entire Anthology, followed by custom entries
+%\bibliography{custom,anthology-overleaf-1,anthology-overleaf-2}
+
+% Custom bibliography entries only
+\bibliography{custom}
+
+\appendix
+
+\section{Example Appendix}
+\label{sec:appendix}
+
+This is an appendix.
+
+\end{document}
diff --git a/.agents/skills/ml-paper-writing/templates/acl/acl_lualatex.tex b/.agents/skills/ml-paper-writing/templates/acl/acl_lualatex.tex
new file mode 100644
index 0000000..6684e89
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/acl/acl_lualatex.tex
@@ -0,0 +1,101 @@
+% This file compiles with both LuaLaTeX and XeLaTeX
+\documentclass[11pt]{article}
+
+% Change "review" to "final" to generate the final (sometimes called camera-ready) version.
+% Change to "preprint" to generate a non-anonymous version with page numbers.
+\usepackage[review]{acl}
+
+% This is not strictly necessary, and may be commented out,
+% but it will improve the layout of the manuscript,
+% and will typically save some space.
+ \usepackage{microtype}
+
+% If the title and author information does not fit in the area allocated, uncomment the following
+%
+%\setlength\titlebox{<dim>}
+%
+% and set <dim> to something 5cm or larger.
+
+% These font selection commands work with
+% LuaLaTeX and XeLaTeX, but not pdfLaTeX.
+\usepackage[english,bidi=default]{babel} % English as the main language.
+\babelfont{rm}{TeXGyreTermesX} % similar to Times
+%%% include whatever languages you need below this line
+\babelprovide[import]{hindi}
+\babelfont[*devanagari]{rm}{Lohit Devanagari}
+\babelprovide[import]{arabic}
+\babelfont[*arabic]{rm}{Noto Sans Arabic}
+
+
+%\usepackage{polyglossia}
+%\setdefaultlanguage{english}
+%\setotherlanguages{arabic,russian,thai,hindi,kannada}
+
+%%%%%
+
+
+\title{LuaLaTeX and XeLaTeX Template for *ACL Style Files}
+
+% Author information can be set in various styles:
+% For several authors from the same institution:
+% \author{Author 1 \and ... \and Author n \\
+% Address line \\ ... \\ Address line}
+% if the names do not fit well on one line use
+% Author 1 \\ {\bf Author 2} \\ ... \\ {\bf Author n} \\
+% For authors from different institutions:
+% \author{Author 1 \\ Address line \\ ... \\ Address line
+% \And ... \And
+% Author n \\ Address line \\ ... \\ Address line}
+% To start a seperate ``row'' of authors use \AND, as in
+% \author{Author 1 \\ Address line \\ ... \\ Address line
+% \AND
+% Author 2 \\ Address line \\ ... \\ Address line \And
+% Author 3 \\ Address line \\ ... \\ Address line}
+
+\author{First Author \\
+ Affiliation / Address line 1 \\
+ Affiliation / Address line 2 \\
+ Affiliation / Address line 3 \\
+ \texttt{email@domain} \\\And
+ Second Author \\
+ Affiliation / Address line 1 \\
+ Affiliation / Address line 2 \\
+ Affiliation / Address line 3 \\
+ \texttt{email@domain} \\}
+
+\begin{document}
+
+\maketitle
+\begin{abstract}
+This document provides an example showing how
+to use the *ACL style files with either
+LuaLaTeX or XeLaTeX.
+\end{abstract}
+
+
+\section{Introduction}
+
+Please see the general instructions
+in the file \verb|acl_latex.tex|.
+
+Here are some examples of text in various languages.
+
+Hindi: \foreignlanguage{hindi}{मानव अधिकारों की सार्वभौम घोषणा}
+
+Arabic: \foreignlanguage{arabic}{الإعلان العالمي لحقوق الإنسان}
+
+Here is an example citation:
+\citet{Gusfield:97} argues that...
+
+
+% Entries for the entire Anthology, followed by custom entries
+\bibliography{custom}
+
+\appendix
+
+\section{Example Appendix}
+\label{sec:appendix}
+
+This is an appendix.
+
+\end{document}
diff --git a/.agents/skills/ml-paper-writing/templates/acl/acl_natbib.bst b/.agents/skills/ml-paper-writing/templates/acl/acl_natbib.bst
new file mode 100644
index 0000000..4919681
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/acl/acl_natbib.bst
@@ -0,0 +1,1940 @@
+%%% Modification of BibTeX style file acl_natbib_nourl.bst
+%%% ... by urlbst, version 0.9.1 (marked with "% urlbst")
+%%% See <https://purl.org/nxg/dist/urlbst> and repository <https://heptapod.host/nxg/urlbst>
+%%% Modifications Copyright 2002–23, Norman Gray,
+%%% and distributed under the terms of the LPPL; see README for discussion.
+%%%
+%%% Added webpage entry type, and url and lastchecked fields.
+%%% Added eprint support.
+%%% Added DOI support.
+%%% Added PUBMED support.
+%%% Added hyperref support.
+%%% Original headers follow...
+
+%%
+%% This is file `acl_natbib_basic.bst',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% merlin.mbs (with options: `ay,nat,pres,ed-au,keyxyr,blkyear,dt-beg,yr-per,note-yr,num-xser,pre-edn,xedn,nfss')
+%% ----------------------------------------
+%% *** Intended for ACL conferences ***
+%%
+%% Copyright 1994-2011 Patrick W Daly
+ % ===============================================================
+ % IMPORTANT NOTICE:
+ % This bibliographic style (bst) file has been generated from one or
+ % more master bibliographic style (mbs) files, listed above.
+ %
+ % This generated file can be redistributed and/or modified under the terms
+ % of the LaTeX Project Public License Distributed from CTAN
+ % archives in directory macros/latex/base/lppl.txt; either
+ % version 1 of the License, or any later version.
+ % ===============================================================
+ % Name and version information of the main mbs file:
+ % \ProvidesFile{merlin.mbs}[2011/11/18 4.33 (PWD, AO, DPC)]
+ % For use with BibTeX version 0.99a or later
+ %-------------------------------------------------------------------
+ % This bibliography style file is intended for texts in ENGLISH
+ % This is an author-year citation style bibliography. As such, it is
+ % non-standard LaTeX, and requires a special package file to function properly.
+ % Such a package is natbib.sty by Patrick W. Daly
+ % The form of the \bibitem entries is
+ % \bibitem[Jones et al.(1990)]{key}...
+ % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
+ % The essential feature is that the label (the part in brackets) consists
+ % of the author names, as they should appear in the citation, with the year
+ % in parentheses following. There must be no space before the opening
+ % parenthesis!
+ % With natbib v5.3, a full list of authors may also follow the year.
+ % In natbib.sty, it is possible to define the type of enclosures that is
+ % really wanted (brackets or parentheses), but in either case, there must
+ % be parentheses in the label.
+ % The \cite command functions as follows:
+ % \citet{key} ==>> Jones et al. (1990)
+ % \citet*{key} ==>> Jones, Baker, and Smith (1990)
+ % \citep{key} ==>> (Jones et al., 1990)
+ % \citep*{key} ==>> (Jones, Baker, and Smith, 1990)
+ % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
+ % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990)
+ % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., 1990, p. 32)
+ % \citeauthor{key} ==>> Jones et al.
+ % \citeauthor*{key} ==>> Jones, Baker, and Smith
+ % \citeyear{key} ==>> 1990
+ %---------------------------------------------------------------------
+
+%% 2025 modified to truncate author lists of more than 20 authors
+
+ENTRY
+ { address
+ archivePrefix
+ author
+ booktitle
+ chapter
+ edition
+ editor
+ eid
+ eprint
+ eprinttype % = archivePrefix
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ doi % urlbst
+ pubmed % urlbst
+ url % urlbst
+ lastchecked % urlbst
+ }
+ {}
+ { label extra.label sort.label short.list }
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+% urlbst...
+% urlbst constants and state variables
+STRINGS { urlintro
+ eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl
+ citedstring onlinestring linktextstring
+ openinlinelink closeinlinelink }
+INTEGERS { hrefform doiform inlinelinks makeinlinelink
+ addeprints adddoi addpubmed }
+FUNCTION {init.urlbst.variables}
+{
+ % The following constants may be adjusted by hand, if desired
+
+ % The first set allow you to enable or disable certain functionality.
+ #1 'addeprints := % 0=no eprints; 1=include eprints
+ #2 'hrefform := % 0=no crossrefs; 1=hypertex hrefs; 2=hyperref hrefs
+ #1 'inlinelinks := % 0=URLs explicit; 1=URLs attached to titles
+ #1 'adddoi := % 0=no DOI resolver; 1=include it
+ #1 'addpubmed := % 0=no PUBMED resolver; 1=include it
+ #0 'doiform := % 0=with href; 1=with \doi{}
+
+ % String constants, which you _might_ want to tweak.
+ "online" 'onlinestring := % label that a resource is online
+ "[link]" 'linktextstring := % anonymous link text
+ "http://www.ncbi.nlm.nih.gov/pubmed/" 'pubmedurl := % prefix to make URL from PUBMED
+ "https://doi.org/" 'doiurl := % prefix to make URL from DOI
+ "doi:" 'doiprefix := % printed text to introduce DOI
+ "https://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref
+ "cited " 'citedstring := % label in "lastchecked" remark
+ "arXiv:" 'eprintprefix := % text prefix printed before eprint ref
+ "PMID:" 'pubmedprefix := % text prefix printed before PUBMED ref
+ "URL: " 'urlintro := % text prefix before URL
+
+ % The following are internal state variables, not configuration constants,
+ % so they shouldn't be fiddled with.
+ #0 'makeinlinelink := % state variable managed by possibly.setup.inlinelink
+ "" 'openinlinelink := % ditto
+ "" 'closeinlinelink := % ditto
+}
+INTEGERS {
+ bracket.state
+ outside.brackets
+ open.brackets
+ within.brackets
+ close.brackets
+}
+% ...urlbst to here
+FUNCTION {init.state.consts}
+{ #0 'outside.brackets := % urlbst...
+ #1 'open.brackets :=
+ #2 'within.brackets :=
+ #3 'close.brackets := % ...urlbst to here
+
+ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+STRINGS { s t}
+% urlbst
+FUNCTION {output.nonnull.original}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+% urlbst...
+% Minimal DOI parsing.
+% Given a DOI on the stack, check whether it starts with 'doiurl' or not.
+% In either case, leave on the stack first a DOI with, and then a DOI without, the URL prefix.
+FUNCTION {parse.doi}
+{
+ #1 doiurl text.length$ substring$
+ doiurl =
+ { doi
+ doi doiurl text.length$ #1 + #999 substring$ }
+ { doiurl doi *
+ doi }
+ if$
+}
+% The following three functions are for handling inlinelink. They wrap
+% a block of text which is potentially output with write$ by multiple
+% other functions, so we don't know the content a priori.
+% They communicate between each other using the variables makeinlinelink
+% (which is true if a link should be made), and closeinlinelink (which holds
+% the string which should close any current link. They can be called
+% at any time, but start.inlinelink will be a no-op unless something has
+% previously set makeinlinelink true, and the two ...end.inlinelink functions
+% will only do their stuff if start.inlinelink has previously set
+% closeinlinelink to be non-empty.
+% (thanks to 'ijvm' for suggested code here)
+FUNCTION {uand}
+{ 'skip$ { pop$ #0 } if$ } % 'and' (which isn't defined at this point in the file)
+FUNCTION {possibly.setup.inlinelink}
+{ makeinlinelink hrefform #0 > uand
+ { doi empty$ adddoi uand
+ { pubmed empty$ addpubmed uand
+ { eprint empty$ addeprints uand
+ { url empty$
+ { "" }
+ { url }
+ if$ }
+ { eprinturl eprint * }
+ if$ }
+ { pubmedurl pubmed * }
+ if$ }
+% { doiurl doi * }
+ { doi empty$
+ { "XXX" }
+ { doi parse.doi pop$ }
+ if$
+ }
+ if$
+ % an appropriately-formatted URL is now on the stack
+ hrefform #1 = % hypertex
+ { "\special {html:<a href=" quote$ * swap$ * quote$ * "> }{" * 'openinlinelink :=
+ "\special {html:</a>}" 'closeinlinelink := }
+ { "\href {" swap$ * "} {" * 'openinlinelink := % hrefform=#2 -- hyperref
+ % the space between "} {" matters: a URL of just the right length can cause "\% newline em"
+ "}" 'closeinlinelink := }
+ if$
+ #0 'makeinlinelink :=
+ }
+ 'skip$
+ if$ % makeinlinelink
+}
+FUNCTION {add.inlinelink}
+{ openinlinelink empty$
+ 'skip$
+ { openinlinelink swap$ * closeinlinelink *
+ "" 'openinlinelink :=
+ }
+ if$
+}
+FUNCTION {output.nonnull}
+{ % Save the thing we've been asked to output
+ 's :=
+ % If the bracket-state is close.brackets, then add a close-bracket to
+ % what is currently at the top of the stack, and set bracket.state
+ % to outside.brackets
+ bracket.state close.brackets =
+ { "]" *
+ outside.brackets 'bracket.state :=
+ }
+ 'skip$
+ if$
+ bracket.state outside.brackets =
+ { % We're outside all brackets -- this is the normal situation.
+ % Write out what's currently at the top of the stack, using the
+ % original output.nonnull function.
+ s
+ add.inlinelink
+ output.nonnull.original % invoke the original output.nonnull
+ }
+ { % Still in brackets. Add open-bracket or (continuation) comma, add the
+ % new text (in s) to the top of the stack, and move to the close-brackets
+ % state, ready for next time (unless inbrackets resets it). If we come
+ % into this branch, then output.state is carefully undisturbed.
+ bracket.state open.brackets =
+ { " [" * }
+ { ", " * } % bracket.state will be within.brackets
+ if$
+ s *
+ close.brackets 'bracket.state :=
+ }
+ if$
+}
+
+% Call this function just before adding something which should be presented in
+% brackets. bracket.state is handled specially within output.nonnull.
+FUNCTION {inbrackets}
+{ bracket.state close.brackets =
+ { within.brackets 'bracket.state := } % reset the state: not open nor closed
+ { open.brackets 'bracket.state := }
+ if$
+}
+
+FUNCTION {format.lastchecked}
+{ lastchecked empty$
+ { "" }
+ { inbrackets citedstring lastchecked * }
+ if$
+}
+% ...urlbst to here
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+FUNCTION {fin.entry.original} % urlbst (renamed from fin.entry, so it can be wrapped below)
+{ add.period$
+ write$
+ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+FUNCTION {new.sentence}
+{ output.state after.block =
+ 'skip$
+ { output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+FUNCTION {add.blank}
+{ " " * before.all 'output.state :=
+}
+
+FUNCTION {date.block}
+{
+ new.block
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+FUNCTION {tie.or.space.prefix} % puts ~ before the preceding part if it is of length <3
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$
+}
+
+FUNCTION {capitalize}
+{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {space.word}
+{ " " swap$ * " " * }
+ % Here are the language-specific definitions for explicit words.
+ % Each function has a name bbl.xxx where xxx is the English word.
+ % The language selected here is ENGLISH
+FUNCTION {bbl.and}
+{ "and"}
+
+FUNCTION {bbl.etal}
+{ "et~al." }
+
+FUNCTION {bbl.editors}
+{ "editors" }
+
+FUNCTION {bbl.editor}
+{ "editor" }
+
+FUNCTION {bbl.edby}
+{ "edited by" }
+
+FUNCTION {bbl.edition}
+{ "edition" }
+
+FUNCTION {bbl.volume}
+{ "volume" }
+
+FUNCTION {bbl.of}
+{ "of" }
+
+FUNCTION {bbl.number}
+{ "number" }
+
+FUNCTION {bbl.nr}
+{ "no." }
+
+FUNCTION {bbl.in}
+{ "in" }
+
+FUNCTION {bbl.pages}
+{ "pages" }
+
+FUNCTION {bbl.page}
+{ "page" }
+
+FUNCTION {bbl.chapter}
+{ "chapter" }
+
+FUNCTION {bbl.techrep}
+{ "Technical Report" }
+
+FUNCTION {bbl.mthesis}
+{ "Master's thesis" }
+
+FUNCTION {bbl.phdthesis}
+{ "Ph.D. thesis" }
+
+MACRO {jan} {"January"}
+
+MACRO {feb} {"February"}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"October"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+
+MACRO {tods} {"ACM Transactions on Database Systems"}
+
+MACRO {tog} {"ACM Transactions on Graphics"}
+
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+% bibinfo.check avoids acting on missing fields while bibinfo.warn will
+% issue a warning message if a missing field is detected. Prior to calling
+% the bibinfo functions, the user should push the field value and then its
+% name string, in that order.
+FUNCTION {bibinfo.check}
+{ swap$
+ duplicate$ missing$
+ {
+ pop$ pop$
+ ""
+ }
+ { duplicate$ empty$
+ {
+ swap$ pop$
+ }
+ { swap$
+ pop$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {bibinfo.warn}
+{ swap$
+ duplicate$ missing$
+ {
+ swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
+ ""
+ }
+ { duplicate$ empty$
+ {
+ swap$ "empty " swap$ * " in " * cite$ * warning$
+ }
+ { swap$
+ pop$
+ }
+ if$
+ }
+ if$
+}
+INTEGERS { nameptr namesleft numnames }
+
+
+STRINGS { bibinfo}
+
+FUNCTION {format.names}
+{ 'bibinfo :=
+ duplicate$ empty$ 'skip$ {
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ff~}{vv~}{ll}{, jj}" % first name first for all authors
+ format.name$
+ bibinfo bibinfo.check
+ 't :=
+ nameptr #1 >
+ {
+ nameptr #19 % truncate after 19 names
+ #1 + =
+ numnames #20 % if there are more than 20 names
+ > and
+ { "others" 't :=
+ #1 'namesleft := }
+ 'skip$
+ if$ % end truncation of long list of names
+ namesleft #1 >
+ { ", " * t * }
+ {
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ {
+ %% " " * bbl.etal *
+ % compute the number of remaining authors
+ " and " * numnames nameptr - #1 + int.to.str$ * " others" *
+ }
+ {
+ bbl.and
+ space.word * t *
+ }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ } if$
+}
+FUNCTION {format.names.ed}
+{
+ format.names
+}
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION {format.authors}
+{ author "author" format.names
+}
+FUNCTION {get.bbl.editor}
+{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
+
+FUNCTION {format.editors}
+{ editor "editor" format.names duplicate$ empty$ 'skip$
+ {
+ "," *
+ " " *
+ get.bbl.editor
+ *
+ }
+ if$
+}
+FUNCTION {format.note}
+{
+ note empty$
+ { "" }
+ { note #1 #1 substring$
+ duplicate$ "{" =
+ 'skip$
+ { output.state mid.sentence =
+ { "l" }
+ { "u" }
+ if$
+ change.case$
+ }
+ if$
+ note #2 global.max$ substring$ * "note" bibinfo.check
+ }
+ if$
+}
+
+FUNCTION {format.title}
+{ title
+ duplicate$ empty$ 'skip$
+ { "t" change.case$ }
+ if$
+ "title" bibinfo.check
+}
+FUNCTION {format.full.names}
+{'s :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$
+ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ {
+ " " * bbl.etal *
+ }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ bbl.and
+ space.word * t *
+ }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.key.full}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.key.full}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.key.full}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.full
+ { type$ "proceedings" =
+ 'editor.key.full
+ 'author.key.full
+ if$
+ }
+ if$
+}
+
+FUNCTION {output.bibitem.original} % urlbst (renamed from output.bibitem, so it can be wrapped below)
+{ newline$
+ "\bibitem[{" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "}]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {n.dashify}
+{
+ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION {word.in}
+{ bbl.in capitalize
+ " " * }
+
+FUNCTION {format.date}
+{ year "year" bibinfo.check duplicate$ empty$
+ {
+ }
+ 'skip$
+ if$
+ extra.label *
+ before.all 'output.state :=
+ after.sentence 'output.state :=
+}
+FUNCTION {format.btitle}
+{ title "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ {
+ emphasize
+ }
+ if$
+}
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { bbl.volume volume tie.or.space.prefix
+ "volume" bibinfo.check * *
+ series "series" bibinfo.check
+ duplicate$ empty$ 'pop$
+ { swap$ bbl.of space.word * swap$
+ emphasize * }
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { series empty$
+ { number "number" bibinfo.check }
+ { output.state mid.sentence =
+ { bbl.number }
+ { bbl.number capitalize }
+ if$
+ number tie.or.space.prefix "number" bibinfo.check * *
+ bbl.in space.word *
+ series "series" bibinfo.check *
+ }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition duplicate$ empty$ 'skip$
+ {
+ output.state mid.sentence =
+ { "l" }
+ { "t" }
+ if$ change.case$
+ "edition" bibinfo.check
+ " " * bbl.edition *
+ }
+ if$
+}
+INTEGERS { multiresult }
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+FUNCTION {format.pages}
+{ pages duplicate$ empty$ 'skip$
+ { duplicate$ multi.page.check
+ {
+ bbl.pages swap$
+ n.dashify
+ }
+ {
+ bbl.page swap$
+ }
+ if$
+ tie.or.space.prefix
+ "pages" bibinfo.check
+ * *
+ }
+ if$
+}
+FUNCTION {format.journal.pages}
+{ pages duplicate$ empty$ 'pop$
+ { swap$ duplicate$ empty$
+ { pop$ pop$ format.pages }
+ {
+ ":" *
+ swap$
+ n.dashify
+ "pages" bibinfo.check
+ *
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {format.journal.eid}
+{ eid "eid" bibinfo.check
+ duplicate$ empty$ 'pop$
+ { swap$ duplicate$ empty$ 'skip$
+ {
+ ":" *
+ }
+ if$
+ swap$ *
+ }
+ if$
+}
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ duplicate$ empty$ 'skip$
+ {
+ "volume" bibinfo.check
+ }
+ if$
+ number "number" bibinfo.check duplicate$ empty$ 'skip$
+ {
+ swap$ duplicate$ empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ swap$
+ "(" swap$ * ")" *
+ }
+ if$ *
+ eid empty$
+ { format.journal.pages }
+ { format.journal.eid }
+ if$
+}
+
+FUNCTION {format.chapter}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { bbl.chapter }
+ { type "l" change.case$
+ "type" bibinfo.check
+ }
+ if$
+ chapter tie.or.space.prefix
+ "chapter" bibinfo.check
+ * *
+ }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { bbl.chapter }
+ { type "l" change.case$
+ "type" bibinfo.check
+ }
+ if$
+ chapter tie.or.space.prefix
+ "chapter" bibinfo.check
+ * *
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.booktitle}
+{
+ booktitle "booktitle" bibinfo.check
+ emphasize
+}
+FUNCTION {format.in.booktitle}
+{ format.booktitle duplicate$ empty$ 'skip$
+ {
+ word.in swap$ *
+ }
+ if$
+}
+FUNCTION {format.in.ed.booktitle}
+{ format.booktitle duplicate$ empty$ 'skip$
+ {
+ editor "editor" format.names.ed duplicate$ empty$ 'pop$
+ {
+ "," *
+ " " *
+ get.bbl.editor
+ ", " *
+ * swap$
+ * }
+ if$
+ word.in swap$ *
+ }
+ if$
+}
+FUNCTION {format.thesis.type}
+{ type duplicate$ empty$
+ 'pop$
+ { swap$ pop$
+ "t" change.case$ "type" bibinfo.check
+ }
+ if$
+}
+FUNCTION {format.tr.number}
+{ number "number" bibinfo.check
+ type duplicate$ empty$
+ { pop$ bbl.techrep }
+ 'skip$
+ if$
+ "type" bibinfo.check
+ swap$ duplicate$ empty$
+ { pop$ "t" change.case$ }
+ { tie.or.space.prefix * * }
+ if$
+}
+FUNCTION {format.article.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.book.crossref}
+{ volume duplicate$ empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ pop$ word.in
+ }
+ { bbl.volume
+ capitalize
+ swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
+ }
+ if$
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.incoll.inproc.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.org.or.pub}
+{ 't :=
+ ""
+ address empty$ t empty$ and
+ 'skip$
+ {
+ t empty$
+ { address "address" bibinfo.check *
+ }
+ { t *
+ address empty$
+ 'skip$
+ { ", " * address "address" bibinfo.check * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {format.publisher.address}
+{ publisher "publisher" bibinfo.warn format.org.or.pub
+}
+
+FUNCTION {format.organization.address}
+{ organization "organization" bibinfo.check format.org.or.pub
+}
+
+FUNCTION {archiveprefix.or.eprinttype} % holder for eprinttype with archiveprefix precedence
+{
+ archiveprefix empty$
+ {
+ eprinttype empty$
+ { "" } % not using 'skip$ to reduce errors like "nothing to pop from stack"
+ { eprinttype }
+ if$
+ }
+ { archiveprefix }
+ if$
+}
+
+FUNCTION {output.eprint} % this is only used with the @misc record type (common for arXiv and other preprint server bibtex records)
+{
+ eprint empty$
+ {% if eprint field is empty
+ publisher field.or.null "arXiv" = % field.or.null here helps when no publisher field in the record
+ { publisher " preprint" * } % add " preprint" to publisher with the idea that publisher is the name of the preprint server
+ { "" } % if publisher != "arXiv" then empty output
+ if$
+ emphasize % no output function after emphasize because nothing goes after this
+ }
+ {% if eprint field is not empty
+ archiveprefix.or.eprinttype empty$
+ { "" } % not using 'skip$ to reduce errors like "nothing to pop from stack"
+ {% if archiveprefix or eprinttype fields are not empty
+ journal empty$
+ { "Preprint" } % if journal field is empty: output just "Preprint" emphasized like a journal name
+ { journal } % if journal field is not empty, output it (takes precedence)
+ if$
+ emphasize output % emphasize what we formed before, setting output as a border to the subblock that follows with the comma delimiter
+ archiveprefix.or.eprinttype ":" * eprint * % subblock with eprinttype and eprint number
+ }
+ if$
+ }
+ if$
+}
+
+% urlbst...
+% Functions for making hypertext links.
+% In all cases, the stack has (link-text href-url)
+%
+% make 'null' specials
+FUNCTION {make.href.null}
+{
+ pop$
+}
+% make hypertex specials
+FUNCTION {make.href.hypertex}
+{
+ "\special {html:<a href=" quote$ *
+ swap$ * quote$ * "> }" * swap$ *
+ "\special {html:</a>}" *
+}
+% make hyperref specials
+FUNCTION {make.href.hyperref}
+{
+ "\href {" swap$ * "} {\path{" * swap$ * "}}" *
+}
+FUNCTION {make.href}
+{ hrefform #2 =
+ 'make.href.hyperref % hrefform = 2
+ { hrefform #1 =
+ 'make.href.hypertex % hrefform = 1
+ 'make.href.null % hrefform = 0 (or anything else)
+ if$
+ }
+ if$
+}
+
+% If inlinelinks is true, then format.url should be a no-op, since it's
+% (a) redundant, and (b) could end up as a link-within-a-link.
+FUNCTION {format.url}
+{ inlinelinks #1 = url empty$ or
+ { "" }
+ { hrefform #1 =
+ { % special case -- add HyperTeX specials
+ urlintro "\url{" url * "}" * url make.href.hypertex * }
+ { urlintro "\url{" * url * "}" * }
+ if$
+ }
+ if$
+}
+FUNCTION {format.eprint}
+{ eprint empty$
+ { "" }
+ { eprintprefix eprint * eprinturl eprint * make.href }
+ if$
+}
+
+FUNCTION {format.doi}
+{ doi empty$
+ { "" }
+ { doi parse.doi % leaves "https://doi.org/DOI" DOI on the stack
+ 's := 't :=
+ doiform #1 =
+ { "\doi{" s * "}" * }
+ { doiprefix s * t make.href }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.pubmed}
+{ pubmed empty$
+ { "" }
+ { pubmedprefix pubmed * pubmedurl pubmed * make.href }
+ if$
+}
+
+% Output a URL. We can't use the more normal idiom (something like
+% `format.url output'), because the `inbrackets' within
+% format.lastchecked applies to everything between calls to `output',
+% so that `format.url format.lastchecked * output' ends up with both
+% the URL and the lastchecked in brackets.
+FUNCTION {output.url}
+{ url empty$
+ 'skip$
+ { new.block
+ format.url output
+ format.lastchecked output
+ }
+ if$
+}
+
+FUNCTION {output.web.refs}
+{
+ new.block
+ inlinelinks
+ 'skip$ % links were inline -- don't repeat them
+ { % If the generated DOI will be the same as the URL,
+ % then don't print the URL (thanks to Joseph Wright
+ % for (the original version of) this code,
+ % at http://tex.stackexchange.com/questions/5660)
+ adddoi
+ doi empty$ { "X" } { doi parse.doi pop$ } if$ % DOI URL to be generated
+ url empty$ { "Y" } { url } if$ % the URL, or "Y" if empty
+ = % are the strings equal?
+ and
+ 'skip$
+ { output.url }
+ if$
+ addeprints eprint empty$ not and
+ { format.eprint output.nonnull }
+ 'skip$
+ if$
+ adddoi doi empty$ not and
+ { format.doi output.nonnull }
+ 'skip$
+ if$
+ addpubmed pubmed empty$ not and
+ { format.pubmed output.nonnull }
+ 'skip$
+ if$
+ }
+ if$
+}
+
+% Wrapper for output.bibitem.original.
+% If the URL field is not empty, set makeinlinelink to be true,
+% so that an inline link will be started at the next opportunity
+FUNCTION {output.bibitem}
+{ outside.brackets 'bracket.state :=
+ output.bibitem.original
+ inlinelinks url empty$ not doi empty$ not or pubmed empty$ not or eprint empty$ not or and
+ { #1 'makeinlinelink := }
+ { #0 'makeinlinelink := }
+ if$
+}
+
+% Wrapper for fin.entry.original
+FUNCTION {fin.entry}
+{ output.web.refs % urlbst
+ makeinlinelink % ooops, it appears we didn't have a title for inlinelink
+ { possibly.setup.inlinelink % add some artificial link text here, as a fallback
+ linktextstring output.nonnull }
+ 'skip$
+ if$
+ bracket.state close.brackets = % urlbst
+ { "]" * }
+ 'skip$
+ if$
+ fin.entry.original
+}
+
+% Webpage entry type.
+% Title and url fields required;
+% author, note, year, month, and lastchecked fields optional
+% See references
+% ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm
+% http://www.classroom.net/classroom/CitingNetResources.html
+% http://neal.ctstateu.edu/history/cite.html
+% http://www.cas.usf.edu/english/walker/mla.html
+% for citation formats for web pages.
+FUNCTION {webpage}
+{ output.bibitem
+ author empty$
+ { editor empty$
+ 'skip$ % author and editor both optional
+ { format.editors output.nonnull }
+ if$
+ }
+ { editor empty$
+ { format.authors output.nonnull }
+ { "can't use both author and editor fields in " cite$ * warning$ }
+ if$
+ }
+ if$
+ new.block
+ title empty$ 'skip$ 'possibly.setup.inlinelink if$
+ format.title "title" output.check
+ inbrackets onlinestring output
+ new.block
+ year empty$
+ 'skip$
+ { format.date "year" output.check }
+ if$
+ % We don't need to output the URL details ('lastchecked' and 'url'),
+ % because fin.entry does that for us, using output.web.refs. The only
+ % reason we would want to put them here is if we were to decide that
+ % they should go in front of the rather miscellaneous information in 'note'.
+ new.block
+ note output
+ fin.entry
+}
+% ...urlbst to here
+
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ {
+ journal
+ "journal" bibinfo.check
+ emphasize
+ "journal" output.check
+ possibly.setup.inlinelink format.vol.num.pages output% urlbst
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ format.date "year" output.check
+ date.block
+ title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+ format.btitle "title" output.check
+ format.edition output
+ crossref missing$
+ { format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ format.publisher.address output
+ }
+ {
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+ format.title "title" output.check
+ new.block
+ howpublished "howpublished" bibinfo.check output
+ address "address" bibinfo.check output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ format.date "year" output.check
+ date.block
+ title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+ format.btitle "title" output.check
+ crossref missing$
+ {
+ format.edition output
+ format.bvolume output
+ format.chapter "chapter" output.check
+ new.block
+ format.number.series output
+ new.sentence
+ format.publisher.address output
+ }
+ {
+ format.chapter "chapter" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.edition output
+ format.bvolume output
+ format.number.series output
+ format.chapter.pages output
+ new.sentence
+ format.publisher.address output
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages output
+ address "address" bibinfo.check output
+ new.sentence
+ organization "organization" bibinfo.check output
+ publisher "publisher" bibinfo.check output
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {conference} { inproceedings }
+FUNCTION {manual}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+ format.btitle "title" output.check
+ format.edition output
+ organization address new.block.checkb
+ organization "organization" bibinfo.check output
+ address "address" bibinfo.check output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+ format.title
+ "title" output.check
+ new.block
+ bbl.mthesis format.thesis.type output.nonnull
+ school "school" bibinfo.warn output
+ address "address" bibinfo.check output
+ month "month" bibinfo.check output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+ format.title output
+ new.block
+ howpublished "howpublished" bibinfo.check output
+ new.block
+ output.eprint output
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+ format.btitle
+ "title" output.check
+ new.block
+ bbl.phdthesis format.thesis.type output.nonnull
+ school "school" bibinfo.warn output
+ address "address" bibinfo.check output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {presentation}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ new.block
+ title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+ format.title output
+ new.block
+ format.organization.address "organization and address" output.check
+ month "month" output.check
+ year "year" output.check
+ new.block
+ format.note output
+ new.sentence
+ type missing$ 'skip$
+ {"(" type capitalize * ")" * output}
+ if$
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.editors output
+ editor format.key output
+ format.date "year" output.check
+ date.block
+ title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ publisher empty$
+ { format.organization.address output }
+ { organization "organization" bibinfo.check output
+ new.sentence
+ format.publisher.address output
+ }
+ if$
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+ format.title
+ "title" output.check
+ new.block
+ format.tr.number output.nonnull
+ institution "institution" bibinfo.warn output
+ address "address" bibinfo.check output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst
+ format.title "title" output.check
+ new.block
+ format.note "note" output.check
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+READ
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+INTEGERS { len }
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+FUNCTION {format.lab.names}
+{ 's :=
+ "" 't :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$
+ " " * bbl.etal *
+ }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ {
+ " " * bbl.etal *
+ }
+ { bbl.and space.word * s #2 "{vv~}{ll}" format.name$
+ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.label}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.label
+ 'author.key.label
+ if$
+ }
+ if$
+ 'short.list :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+ short.list
+ "("
+ *
+ year duplicate$ empty$
+ short.list key field.or.null = or
+ { pop$ "" }
+ 'skip$
+ if$
+ *
+ 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}"
+ format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "zzzzz" 't := }
+ 'skip$
+ if$
+ t sortify *
+ }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+FUNCTION {editor.sort}
+{ editor empty$
+ { key empty$
+ { "to sort, need editor or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+FUNCTION {presort}
+{ calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.sort
+ 'author.sort
+ if$
+ }
+ if$
+ #1 entry.max$ substring$
+ 'sort.label :=
+ sort.label
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+SORT
+STRINGS { last.label next.extra }
+INTEGERS { last.extra.num last.extra.num.extended last.extra.num.blank number.label }
+FUNCTION {initialize.extra.label.stuff}
+{ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+ "a" chr.to.int$ #1 - 'last.extra.num.blank :=
+ last.extra.num.blank 'last.extra.num.extended :=
+ #0 'number.label :=
+}
+FUNCTION {forward.pass}
+{ last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num "z" chr.to.int$ >
+ { "a" chr.to.int$ 'last.extra.num :=
+ last.extra.num.extended #1 + 'last.extra.num.extended :=
+ }
+ 'skip$
+ if$
+ last.extra.num.extended last.extra.num.blank >
+ { last.extra.num.extended int.to.chr$
+ last.extra.num int.to.chr$
+ * 'extra.label := }
+ { last.extra.num int.to.chr$ 'extra.label := }
+ if$
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+}
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { year field.or.null #-1 #1 substring$ chr.to.int$ #65 <
+ { "{\natexlab{" swap$ * "}}" * }
+ { "{(\natexlab{" swap$ * "})}" * }
+ if$ }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+}
+EXECUTE {initialize.extra.label.stuff}
+ITERATE {forward.pass}
+REVERSE {reverse.pass}
+FUNCTION {bib.sort.order}
+{ sort.label
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+ITERATE {bib.sort.order}
+SORT
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+}
+EXECUTE {begin.bib}
+EXECUTE {init.urlbst.variables} % urlbst
+EXECUTE {init.state.consts}
+ITERATE {call.type$}
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+EXECUTE {end.bib}
+%% End of customized bst file
+%%
+%% End of file `acl_natbib_basic.bst'.
diff --git a/.agents/skills/ml-paper-writing/templates/acl/anthology.bib.txt b/.agents/skills/ml-paper-writing/templates/acl/anthology.bib.txt
new file mode 100644
index 0000000..0d9f1fd
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/acl/anthology.bib.txt
@@ -0,0 +1,26 @@
+For citing papers in the ACL Anthology, we provide a single consolidated
+BibTeX file containing all of its papers. The bibkeys in these papers are
+designed to be semantic in nature: {names}-{year}-{words}, where
+- `names` is the concatenated last names of the authors when there is just
+ one or two authors, or `lastname-etal` for 3+
+- `year` is the four-digit year
+- `words` is the first significant word in the title, or more, if necessary,
+ to preserve uniqueness
+
+For example, https://aclanthology.org/N04-1035 can be cited as \cite{galley-etal-2004-whats}.
+
+The consolidated file can be downloaded from here:
+- https://aclanthology.org/anthology.bib
+
+Unfortunately, as of 2024 or so, this file is now larger than 50 MB, which is Overleaf's
+bib file size limit. Consequently, the Anthology shards the file automatically into
+49 MB shards.
+
+There are currently (2025) two files:
+- https://aclanthology.org/anthology-1.bib
+- https://aclanthology.org/anthology-2.bib
+
+You can download these directly from Overleaf from New File -> From External URL,
+and then adding them to the \bibliography line in acl_latex.tex:
+
+ \bibliography{custom,anthology-1,anthology-2}
diff --git a/.agents/skills/ml-paper-writing/templates/acl/custom.bib b/.agents/skills/ml-paper-writing/templates/acl/custom.bib
new file mode 100644
index 0000000..c2c0106
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/acl/custom.bib
@@ -0,0 +1,70 @@
+% Use this file for citations not found in the ACL Anthology (contained in "anthology.bib").
+
+@book{Aho:72,
+ author = {Alfred V. Aho and Jeffrey D. Ullman},
+ title = {The Theory of Parsing, Translation and Compiling},
+ year = "1972",
+ volume = "1",
+ publisher = {Prentice-Hall},
+ address = {Englewood Cliffs, NJ}
+}
+
+@book{APA:83,
+ author = {{American Psychological Association}},
+ title = {Publications Manual},
+ year = "1983",
+ publisher = {American Psychological Association},
+ address = {Washington, DC}
+}
+
+@article{Chandra:81,
+ author = {Ashok K. Chandra and Dexter C. Kozen and Larry J. Stockmeyer},
+ year = "1981",
+ title = {Alternation},
+ journal = {Journal of the Association for Computing Machinery},
+ volume = "28",
+ number = "1",
+ pages = "114--133",
+ doi = "10.1145/322234.322243",
+}
+
+@inproceedings{andrew2007scalable,
+ title={Scalable training of {L1}-regularized log-linear models},
+ author={Andrew, Galen and Gao, Jianfeng},
+ booktitle={Proceedings of the 24th International Conference on Machine Learning},
+ pages={33--40},
+ year={2007},
+}
+
+@book{Gusfield:97,
+ author = {Dan Gusfield},
+ title = {Algorithms on Strings, Trees and Sequences},
+ year = "1997",
+ publisher = {Cambridge University Press},
+ address = {Cambridge, UK}
+}
+
+@article{rasooli-tetrault-2015,
+ author = {Mohammad Sadegh Rasooli and Joel R. Tetreault},
+ title = {Yara Parser: {A} Fast and Accurate Dependency Parser},
+ journal = {Computing Research Repository},
+ volume = {arXiv:1503.06733},
+ year = {2015},
+ url = {http://arxiv.org/abs/1503.06733},
+ note = {version 2}
+}
+
+@article{Ando2005,
+ Acmid = {1194905},
+ Author = {Ando, Rie Kubota and Zhang, Tong},
+ Issn = {1532-4435},
+ Issue_Date = {12/1/2005},
+ Journal = {Journal of Machine Learning Research},
+ Month = dec,
+ Numpages = {37},
+ Pages = {1817--1853},
+ Publisher = {JMLR.org},
+ Title = {A Framework for Learning Predictive Structures from Multiple Tasks and Unlabeled Data},
+ Volume = {6},
+ Year = {2005}
+}
diff --git a/.agents/skills/ml-paper-writing/templates/acl/formatting.md b/.agents/skills/ml-paper-writing/templates/acl/formatting.md
new file mode 100644
index 0000000..eeb1ce1
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/acl/formatting.md
@@ -0,0 +1,326 @@
+# Instructions for *ACL Proceedings
+
+The following instructions are for authors of papers submitted for review to ACL conferences (hereafter, "review version") or paper accepted for publication in its proceedings (hereafter, "final version").
+All authors are required to adhere to these specifications.
+
+## Style Files
+
+*ACL provides style files for LaTeX and Microsoft Word that meet these requirements. They can be found at:
+
+> https://acl-org.github.io/ACLPUB/
+
+We strongly recommend the use of these style files, which have been appropriately tailored for the *ACL proceedings.
+
+## Paper Length
+
+The conference accepts submissions of long papers and short papers.
+Review versions of long papers may have up to eight (8) pages of content plus unlimited pages for references.
+Upon acceptance, final versions of long papers will be given one additional page -- up to nine (9) pages of content plus unlimited pages for acknowledgements and references -- so that reviewers' comments can be taken into account.
+Review versions of short papers may have up to four (4) pages of content, plus unlimited pages for references.
+Final versions of short papers may have up to five (5) pages, plus unlimited pages for acknowledgements and references.
+For both long and short papers, all figures and tables that are part of the main text must fit within these page limits.
+
+The conference encourages submission of appendices and supplementary material, which are not required to fit within these page limits. However, review versions of papers must be self-contained: it is optional for reviewers to look at appendices or supplementary material. Please see [Appendices](#Appendices) and [Supplementary](#Supplementary Material) for more information.
+
+Review versions should not refer, for further detail, to documents, code or data resources that are not available to the reviewers.
+
+Papers that do not conform to these requirements may be rejected without review.
+
+Workshop chairs may have different rules for allowed length and whether appendices or supplementary materials are welcome.
+As always, the respective call for papers is the authoritative source.
+
+## Anonymity
+
+As reviewing will be double-blind, review versions must not include any identifying information about the authors (such as names, affiliations, or URLs).
+Self-references that reveal the author's identity, e.g.,
+
+> We previously showed (Gusfield, 1997)...
+
+must be avoided, and anonymous citations, e.g.,
+
+> We previously showed (Anonymous, 1997)...
+
+should also be avoided. Instead, use citations such as
+
+> Gusfield (1997) previously showed...
+
+Review versions must not include acknowledgements.
+
+**Papers that do not conform to these requirements may be rejected without review.**
+
+Any preliminary non-archival versions of submitted papers should be listed in the submission form but not in the review version of the paper.
+Reviewers are generally aware that authors may present preliminary versions of their work in other venues, but will not be provided the list of previous presentations from the submission form.
+
+Once a paper has been accepted to the conference, the final version should include the author's names and affiliations, and is allowed to use self-references.
+
+## Multiple Submission
+
+Papers that have been or will be submitted to other meetings or publications must indicate this at submission time in the START submission form, and must be withdrawn from the other venues if accepted by *ACL.
+Authors of papers accepted for presentation at *ACL must notify the program chairs by the deadline for final versions ("camera-ready deadline") whether the paper will be presented.
+We will not accept for publication or presentation any papers that overlap significantly in content or results with papers that will be (or have been) published elsewhere.
+
+Authors submitting more than one paper to *ACL must ensure that submissions do not overlap significantly (>25%) with each other in content or results.
+
+## Formatting Instructions
+
+### File Format
+
+Papers must be in Adobe Portable Document Format (PDF).
+Please make sure that your PDF file embeds all necessary fonts (especially for tree diagrams, symbols, and Asian languages).
+When you print or create the PDF file, there is usually an option in your printer setup to include none, all or just non-standard fonts.
+Please make sure that you select the option of including *all* the fonts.
+**Before sending it, test your PDF by printing it from a computer different from the one where it was created.**
+
+Some word processors may generate very large PDF files, where each page is rendered as an image.
+Such images may reproduce poorly.
+In this case, try alternative ways to obtain the PDF.
+
+All papers must use **A4 paper format** (21 cm x 29.7 cm).
+Papers must not be submitted with any other paper size.
+
+If you cannot meet the above requirements, please contact the publication chairs as soon as possible.
+
+### Layout
+
+All text except for page numbers must fit within the margins.
+
+Review versions should have page numbers, centered in the bottom margin, but **pages should not be numbered in the final version.**
+
+Manuscripts must be set in two columns.
+Exceptions to the two-column format include the title, authors' names and complete addresses, which must be centered at the top of the first page, and any full-width figures or tables.
+
+The exact dimensions for a page on A4 paper are:
+
+* Left margin: 2.5 cm
+* Right margin: 2.5 cm
+* Top margin: 2.5 cm
+* Bottom margin: 2.5 cm
+* Column width: 7.7 cm
+* Column height: 24.7 cm
+* Gap between columns: 0.6 cm
+
+In the review version, a ruler (line numbers in the left and right margins of the article) should be printed, so that reviewers may comment on particular lines in the paper.
+The ruler should not change the appearance of any other content on the page.
+The final version should not contain a ruler.
+
+### Fonts
+
+All text (except non-Latin scripts and mathematical formulas) should be set in **Times Roman**.
+If Times Roman is unavailable, you may use **Times New Roman** or **Computer Modern Roman.**
+
+The following table specifies what font sizes and styles must be used for each type of text in the manuscript.
+
+| Type of Text | Font Size | Style |
+| --------------------- | --------- | ----- |
+| paper title | 15 pt | bold |
+| author names | 12 pt | bold |
+| author affiliation | 12 pt | |
+| the word ``Abstract'' | 12 pt | bold |
+| section titles | 12 pt | bold |
+| subsection titles | 11 pt | bold |
+| document text | 11 pt | |
+| captions | 10 pt | |
+| abstract text | 10 pt | |
+| bibliography | 10 pt | |
+| footnotes | 9 pt | |
+
+### Title and Authors
+
+Center the title, author's name(s) and affiliation(s) across both columns.
+
+Place the title centered at the top of the first page, in 15-point bold.
+Long titles should be typed on two lines without a blank line intervening.
+Put the title 2.5 cm from the top of the page.
+Write the title in [title case](https://apastyle.apa.org/style-grammar-guidelines/capitalization/title-case); do not write the title in all capital letters, except for acronyms (e.g., "BLEU") or proper nouns ("English") that are normally uppercased or capitalized.
+
+Place the author name(s) and affiliation(s) under the title.
+Write authors' full names; do not abbreviate given names to initials, unless they are normally written as initials ("Margaret Mitchell", not "M. Mitchell").
+Do not format surnames in all capitals ("Mitchell", not "MITCHELL").
+
+Do not use footnotes for affiliations.
+The affiliation should contain the author's complete address, and if possible, an electronic mail address.
+
+The title, author names and addresses should be completely identical to those entered to the paper submission website in order to maintain the consistency of author information among all publications of the conference.
+If they are different, the publication chairs may resolve the difference without consulting with you; so it is in your own interest to double-check that the information is consistent.
+
+Start the body of the first page 7.5 cm from the top of the page.
+**Even in the review version of the paper, you should maintain space for names and addresses so that they will fit in the final version.**
+
+### Abstract
+
+Type the abstract at the beginning of the first column.
+Center the word **Abstract** in 12 point bold above the body of the abstract.
+The width of the abstract should be smaller than the
+normal column width by 0.6 cm on each side.
+The abstract text should be 10 point roman, single-spaced.
+
+The abstract should be a concise summary of the general thesis and conclusions of the paper.
+It should be no longer than 200 words.
+
+### Text
+
+Begin typing the main body of the text immediately after the abstract, continuing in two columns.
+The text should be 11 point roman, single-spaced.
+
+Indent 0.4 cm when starting a new paragraph, except for the first paragraph in a section.
+
+### Sections
+
+Use numbered sections (Arabic numerals) to facilitate cross references.
+Number subsections with the section number and the subsection number separated by a dot, in Arabic numerals, e.g.,
+
+> 1 Introduction
+
+or
+
+> 6.1 File Format
+
+### Footnotes
+Put footnotes at the bottom of the page and use 9 point font.
+They may be numbered or referred to by asterisks or other symbols.
+Footnotes should be separated from the text by a line.
+
+### Figures and tables
+
+Place figures and tables in the paper near where they are first discussed, rather than at the end, if possible.
+Wide figures/tables may run across both columns.
+
+To accommodate people who are color-blind (as well as those printing with black-and-white printers), grayscale readability is strongly encouraged.
+Color is not forbidden, but authors should ensure that tables and figures do not rely solely on color to convey critical distinctions.
+
+**Captions:**
+Provide a caption for every figure/table; number each one sequentially in the form:
+
+> Figure 1: Caption of the Figure.
+
+and
+
+> Table 1: Caption of the Table.
+
+Captions should be placed below figures/tables, in 10 point roman type.
+Captions that are one line are centered.
+Captions longer than one line are left-aligned.
+
+### Hyperlinks
+
+Within-document and external hyperlinks should be dark blue (hex #000099), not underlined or boxed.
+
+### Non-English Text
+
+Text in languages other than English should be accompanied by translations into English, and text in scripts other than Latin should \emph{also} be accompanied by transliterations into Latin script, since not all readers can recognize non-Latin characters easily.
+
+For example, παράδειγμα *paradeigma* ‘example’ is a Greek word, and this is a Greek sentence:
+
+> Αυτό είναι ένα παράδειγμα.
+> auto einai ena paradeigma.
+> ‘This is an example.’
+
+### Citations
+
+Citations within the text appear in parentheses (Gusfield, 1997), or, if the author's name appears in the text itself: Gusfield (1997).
+Append lowercase letters to the year in cases of ambiguities.
+Cite papers with two authors using both authors' names (Aho and Ullman, 1972), but cite papers with more than two authors by the first author's name and ``et al.'' (Chandra et al., 1981).
+Collapse multiple citations into a single pair of parentheses (Gusfield, 1997; Aho and Ullman, 1972).
+
+Refrain from using full citations as sentence constituents.
+Instead of
+
+> (Gusfield, 1997) showed that ...
+> In (Gusfield, 1997), ...''
+
+write
+
+> Gusfield (1997) showed that ...
+> In Gusfield (1997), ...
+
+Submissions should accurately reference prior and related work, including code and data.
+If a piece of prior work appeared in multiple venues, the version that appeared in a refereed, archival venue should be referenced.
+If multiple versions of a piece of prior work exist, the one used by the authors should be referenced.
+
+### Acknowledgments
+
+The acknowledgments should go immediately before the references.
+Do not number the acknowledgments section.
+Do not include this section in the review version.
+
+### References
+
+Gather the full set of references together under the unnumbered section heading **References**.
+Place the References section before any Appendices.
+Arrange the references alphabetically by first author, rather than by order of occurrence in the text.
+
+Provide as complete a citation as possible, using a consistent format, such as the [one for Computational Linguistics](http://cljournal.org/style_guide_refs.html) or the one in the [Publication Manual of the American Psychological Association](https://apastyle.apa.org/products/publication-manual-7th-edition).
+Use full names for authors, not just initials.
+Authors should not rely on automated citation indices to provide accurate references for prior and related work.
+
+As part of our work to make ACL materials more widely used and cited outside of our discipline, ACL has registered as a CrossRef member, as a registrant of Digital Object Identifiers (DOIs), the standard for registering permanent URNs for referencing scholarly materials.
+
+All references are required to contain DOIs of all cited works when possible, or, as a second resort, links to ACL Anthology pages.
+Appropriate records should be found for most materials in the current [ACL Anthology](https://aclweb.org/anthology/).
+
+Example article in a journal:
+
+> Rie Kubota Ando and Tong Zhang. 2005. [A framework for learning predictive structures from multiple tasks and unlabeled data](https://www.jmlr.org/papers/v6/ando05a.html). *Journal of Machine Learning Research*, 6:1817–1853.
+
+Example paper in non-ACL proceedings, with DOI:
+
+> Galen Andrew and Jianfeng Gao. 2007. [Scalable training of L1-regularized log-linear models](https://doi.org/10.1145/1273496.1273501). In *Proceedings of the 24th International Conference on Machine Learning*, pages 33–40.
+
+Example ACL Anthology paper with DOI:
+
+> James Goodman, Andreas Vlachos, and Jason Naradowsky. 2016. [Noise reduction and targeted exploration in imitation learning for Abstract Meaning Representation parsing](http://dx.doi.org/10.18653/v1/P16-1001). In *Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)*, pages 1–45711, Berlin, Germany. Association for Computational Linguistics.
+
+Example ACL Anthology paper without DOI:
+
+> Benjamin Börschinger and Mark Johnson. 2011. [A particle filter algorithm for Bayesian word segmentation](https://www.aclweb.org/anthology/U11-1004/). In *Proceedings of the Australasian Language Technology Association Workshop 2011*, pages 10–44718, Canberra, Australia.
+
+Example arXiv paper:
+
+> Mohammad Sadegh Rasooli and Joel R. Tetreault. 2015. [Yara parser: A fast and accurate dependency parser](http://arxiv.org/abs/1503.06733). *Computing Research Repository*, arXiv:1503.06733. Version 2.
+
+## Appendices
+
+Appendices are material that can be read, and include lemmas, formulas, proofs, and tables that are not critical to the reading and understanding of the paper.
+Letter them in sequence and provide an informative title:
+
+> Appendix A. Title of Appendix
+
+The appendices come after the references.
+
+Review versions of appendices must follow the same anonymity guidelines as the main paper.
+
+## Supplementary Material
+
+Submissions may include non-readable supplementary material used in the work and described in the paper.
+Any accompanying software and/or data should include licenses and documentation of research review as appropriate.
+Supplementary material may report preprocessing decisions, model parameters, and other details necessary for the replication of the experiments reported in the paper.
+Seemingly small preprocessing decisions can sometimes make a large difference in performance, so it is crucial to record such decisions to precisely characterize state-of-the-art methods.
+
+Nonetheless, supplementary material should be supplementary (rather than central) to the paper.
+**Submissions that misuse the supplementary material may be rejected without review.**
+Supplementary material may include explanations or details of proofs or derivations that do not fit into the paper, lists of features or feature templates, sample inputs and outputs for a system, pseudo-code or source code, and data.
+(Source code and data should be separate uploads, rather than part of the paper).
+
+The paper should not rely on the supplementary material: while the paper may refer to and cite the supplementary material and the supplementary material will be available to the reviewers, they will not be asked to review the supplementary material.
+
+Review versions of supplementary material must follow the same anonymity guidelines as the main paper.
+
+## Credits
+
+This document has been adapted from the instructions for earlier ACL and NAACL proceedings, including those for
+ACL 2020 by Steven Bethard, Ryan Cotterell and Rui Yan,
+ACL 2019 by Douwe Kiela and Ivan Ivan Vulić,
+NAACL 2019 by Stephanie Lukin and Alla Roskovskaya,
+ACL 2018 by Shay Cohen, Kevin Gimpel, and Wei Lu,
+NAACL 2018 by Margaret Mitchell and Stephanie Lukin,
+BibTeX suggestions for (NA)ACL 2017/2018 from Jason Eisner,
+ACL 2017 by Dan Gildea and Min-Yen Kan,
+NAACL 2017 by Margaret Mitchell,
+ACL 2012 by Maggie Li and Michael White,
+ACL 2010 by Jing-Shin Chang and Philipp Koehn,
+ACL 2008 by Johanna D. Moore, Simone Teufel, James Allan, and Sadaoki Furui,
+ACL 2005 by Hwee Tou Ng and Kemal Oflazer,
+ACL 2002 by Eugene Charniak and Dekang Lin,
+and earlier ACL and EACL formats written by several people, including
+John Chen, Henry S. Thompson and Donald Walker.
+Additional elements were taken from the formatting instructions of the *International Joint Conference on Artificial Intelligence* and the *Conference on Computer Vision and Pattern Recognition*.
diff --git a/.agents/skills/ml-paper-writing/templates/colm2025/README.md b/.agents/skills/ml-paper-writing/templates/colm2025/README.md
new file mode 100644
index 0000000..5a2c5ff
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/colm2025/README.md
@@ -0,0 +1,3 @@
+# Template
+
+Template and style files for CoLM 2025
diff --git a/.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bib b/.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bib
new file mode 100644
index 0000000..95744c2
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bib
@@ -0,0 +1,11 @@
+@inproceedings{Vaswani+2017,
+ author = {Vaswani, Ashish and Shazeer, Noam and Parmar, Niki and Uszkoreit, Jakob and Jones, Llion and Gomez, Aidan N and Kaiser, \L ukasz and Polosukhin, Illia},
+ booktitle = {Advances in Neural Information Processing Systems},
+ pages = {},
+ publisher = {Curran Associates, Inc.},
+ title = {Attention is All you Need},
+ url = {https://proceedings.neurips.cc/paper_files/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf},
+ volume = {30},
+ year = {2017}
+}
+
diff --git a/.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bst b/.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bst
new file mode 100644
index 0000000..a85a008
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.bst
@@ -0,0 +1,1440 @@
+%% File: `iclr2024.bst'
+%% A copy of iclm2010.bst, which is a modification of `plainnl.bst' for use with natbib package
+%%
+%% Copyright 2010 Hal Daum\'e III
+%% Modified by J. Fürnkranz
+%% - Changed labels from (X and Y, 2000) to (X & Y, 2000)
+%%
+%% Copyright 1993-2007 Patrick W Daly
+%% Max-Planck-Institut f\"ur Sonnensystemforschung
+%% Max-Planck-Str. 2
+%% D-37191 Katlenburg-Lindau
+%% Germany
+%% E-mail: daly@mps.mpg.de
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or any later version.
+%%
+ % Version and source file information:
+ % \ProvidesFile{icml2010.mbs}[2007/11/26 1.93 (PWD)]
+ %
+ % BibTeX `plainnat' family
+ % version 0.99b for BibTeX versions 0.99a or later,
+ % for LaTeX versions 2.09 and 2e.
+ %
+ % For use with the `natbib.sty' package; emulates the corresponding
+ % member of the `plain' family, but with author-year citations.
+ %
+ % With version 6.0 of `natbib.sty', it may also be used for numerical
+ % citations, while retaining the commands \citeauthor, \citefullauthor,
+ % and \citeyear to print the corresponding information.
+ %
+ % For version 7.0 of `natbib.sty', the KEY field replaces missing
+ % authors/editors, and the date is left blank in \bibitem.
+ %
+ % Includes field EID for the sequence/citation number of electronic journals
+ % which is used instead of page numbers.
+ %
+ % Includes fields ISBN and ISSN.
+ %
+ % Includes field URL for Internet addresses.
+ %
+ % Includes field DOI for Digital Object Idenfifiers.
+ %
+ % Works best with the url.sty package of Donald Arseneau.
+ %
+ % Works with identical authors and year are further sorted by
+ % citation key, to preserve any natural sequence.
+ %
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ doi
+ eid
+ edition
+ editor
+ howpublished
+ institution
+ isbn
+ issn
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ url
+ volume
+ year
+ }
+ {}
+ { label extra.label sort.label short.list }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+ 'skip$
+ { output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {new.sentence.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { author format.names }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { editor format.names
+ editor num.names$ #1 >
+ { " (eds.)" * }
+ { " (ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.isbn}
+{ isbn empty$
+ { "" }
+ { new.block "ISBN " isbn * }
+ if$
+}
+
+FUNCTION {format.issn}
+{ issn empty$
+ { "" }
+ { new.block "ISSN " issn * }
+ if$
+}
+
+FUNCTION {format.url}
+{ url empty$
+ { "" }
+ { new.block "URL \url{" url * "}" * }
+ if$
+}
+
+FUNCTION {format.doi}
+{ doi empty$
+ { "" }
+ { new.block "\doi{" doi * "}" * }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title "t" change.case$ }
+ if$
+}
+
+FUNCTION {format.full.names}
+{'s :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.full}
+{ author empty$
+ { editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.full}
+{ author empty$
+ { "" }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.full}
+{ editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.full
+ { type$ "proceedings" =
+ 'editor.full
+ 'author.full
+ if$
+ }
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem[" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION {format.date}
+{ year duplicate$ empty$
+ { "empty year in " cite$ * warning$
+ pop$ "" }
+ 'skip$
+ if$
+ month empty$
+ 'skip$
+ { month
+ " " * swap$ *
+ }
+ if$
+ extra.label *
+}
+
+FUNCTION {format.btitle}
+{ title emphasize
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { "volume" volume tie.or.space.connect
+ series empty$
+ 'skip$
+ { " of " * series emphasize * }
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { output.state mid.sentence =
+ { "number" }
+ { "Number" }
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { output.state mid.sentence =
+ { edition "l" change.case$ " edition" * }
+ { edition "t" change.case$ " edition" * }
+ if$
+ }
+ if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+ { "" }
+ { pages multi.page.check
+ { "pp.\ " pages n.dashify tie.or.space.connect }
+ { "pp.\ " pages tie.or.space.connect }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.eid}
+{ eid empty$
+ { "" }
+ { "art." eid tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ number empty$
+ 'skip$
+ { "\penalty0 (" number * ")" * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ":\penalty0 " * pages n.dashify * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.vol.num.eid}
+{ volume field.or.null
+ number empty$
+ 'skip$
+ { "\penalty0 (" number * ")" * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ eid empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.eid }
+ { ":\penalty0 " * eid * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { "chapter" }
+ { type "l" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { "In " booktitle emphasize * }
+ { "In " format.editors * ", " * booktitle emphasize * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$
+ and and and and and
+ key empty$ not and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type "t" change.case$
+ }
+ if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+ { "Technical Report" }
+ 'type
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+ { journal empty$
+ { "need key or journal for " cite$ * " to crossref " * crossref *
+ warning$
+ ""
+ }
+ { "In \emph{" journal * "}" * }
+ if$
+ }
+ { "In " }
+ if$
+ " \citet{" * crossref * "}" *
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Volume" volume tie.or.space.connect
+ " of " *
+ }
+ if$
+ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { series empty$
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "\emph{" * series * "}" * }
+ if$
+ }
+ 'skip$
+ if$
+ }
+ 'skip$
+ if$
+ " \citet{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { booktitle empty$
+ { "need editor, key, or booktitle for " cite$ * " to crossref " *
+ crossref * warning$
+ ""
+ }
+ { "In \emph{" booktitle * "}" * }
+ if$
+ }
+ { "In " }
+ if$
+ }
+ { "In " }
+ if$
+ " \citet{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { journal emphasize "journal" output.check
+ eid empty$
+ { format.vol.num.pages output }
+ { format.vol.num.eid output }
+ if$
+ format.date "year" output.check
+ }
+ { format.article.crossref output.nonnull
+ eid empty$
+ { format.pages output }
+ { format.eid output }
+ if$
+ }
+ if$
+ format.issn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ new.block
+ format.title "title" output.check
+ howpublished address new.block.checkb
+ howpublished output
+ address output
+ format.date output
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.chapter.pages output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ format.edition output
+ format.date "year" output.check
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages output
+ address empty$
+ { organization publisher new.sentence.checkb
+ organization output
+ publisher output
+ format.date "year" output.check
+ }
+ { address output.nonnull
+ format.date "year" output.check
+ new.sentence
+ organization output
+ publisher output
+ }
+ if$
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ new.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ organization output
+ address output
+ format.edition output
+ format.date output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ "Master's thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ title howpublished new.block.checkb
+ format.title output
+ howpublished new.block.checka
+ howpublished output
+ format.date output
+ format.issn output
+ format.url output
+ new.block
+ note output
+ fin.entry
+ empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.btitle "title" output.check
+ new.block
+ "PhD thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.editors output
+ editor format.key output
+ new.block
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+ address output
+ format.date "year" output.check
+ new.sentence
+ organization output
+ publisher output
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ format.tr.number output.nonnull
+ institution "institution" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ note "note" output.check
+ format.date output
+ format.url output
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+
+MACRO {jan} {"January"}
+
+MACRO {feb} {"February"}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"October"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+
+MACRO {tods} {"ACM Transactions on Database Systems"}
+
+MACRO {tog} {"ACM Transactions on Graphics"}
+
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ " et~al." * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al." * }
+ { " \& " * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+ 'short.list :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+ short.list
+ "("
+ *
+ year duplicate$ empty$
+ short.list key field.or.null = or
+ { pop$ "" }
+ 'skip$
+ if$
+ *
+ 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ {
+ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "zzzzz" * }
+ { numnames #2 > nameptr #2 = and
+ { "zz" * year field.or.null * " " * }
+ 'skip$
+ if$
+ t sortify *
+ }
+ if$
+ }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+
+FUNCTION {presort}
+{ calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ cite$
+ *
+ #1 entry.max$ substring$
+ 'sort.label :=
+ sort.label *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { longest.label last.label next.extra }
+
+INTEGERS { longest.label.width last.extra.num number.label }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {forward.pass}
+{ last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION {bib.sort.order}
+{ sort.label 'sort.key$ :=
+}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+ "\providecommand{\url}[1]{\texttt{#1}}"
+ write$ newline$
+ "\expandafter\ifx\csname urlstyle\endcsname\relax"
+ write$ newline$
+ " \providecommand{\doi}[1]{doi: #1}\else"
+ write$ newline$
+ " \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
+ write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
diff --git a/.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.pdf b/.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.pdf
new file mode 100644
index 0000000..1e78480
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.pdf
Binary files differ
diff --git a/.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.sty b/.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.sty
new file mode 100644
index 0000000..ae6c90f
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.sty
@@ -0,0 +1,218 @@
+%%%% COLM Macros (LaTex)
+%%%% Adapted by Yoav Artzi and Sasha Rush from Hugo Larochelle's adaptation for ICLR, which has been adaptated from the NIPS stylefile Macros
+%%%% Style File
+%%%% Dec 12, 1990 Rev Aug 14, 1991; Sept, 1995; April, 1997; April, 1999; October 2014
+
+% This file can be used with Latex2e whether running in main mode, or
+% 2.09 compatibility mode.
+%
+% If using main mode, you need to include the commands
+% \documentclass{article}
+% \usepackage{colm14submit_e}
+%
+
+% Define options
+\newif\ifcolmsubmission
+\newif\ifcolmpreprint
+\newif\ifcolmfinal
+
+% Set submission as default
+\colmsubmissiontrue
+\colmpreprintfalse
+\colmfinalfalse
+
+% Define option handling
+\DeclareOption{submission}{\colmsubmissiontrue\colmpreprintfalse\colmfinalfalse}
+\DeclareOption{preprint}{\colmsubmissionfalse\colmpreprinttrue\colmfinalfalse}
+\DeclareOption{final}{\colmsubmissionfalse\colmpreprintfalse\colmfinaltrue}
+\ProcessOptions\relax
+
+
+% Palatino font
+\RequirePackage{tgpagella} % text only
+\RequirePackage{mathpazo} % math & text
+\RequirePackage{inconsolata} % for tt font
+
+% Change the overall width of the page. If these parameters are
+% changed, they will require corresponding changes in the
+% maketitle section.
+%
+\usepackage{eso-pic} % used by \AddToShipoutPicture
+\RequirePackage{fancyhdr}
+\RequirePackage{natbib}
+
+% modification to natbib citations
+\setcitestyle{authoryear,round,citesep={;},aysep={,},yysep={;}}
+
+\renewcommand{\topfraction}{0.95} % let figure take up nearly whole page
+\renewcommand{\textfraction}{0.05} % let figure take up nearly whole page
+
+
+% Specify the dimensions of each page
+
+\setlength{\paperheight}{11in}
+\setlength{\paperwidth}{8.5in}
+
+
+\oddsidemargin .5in % Note \oddsidemargin = \evensidemargin
+\evensidemargin .5in
+\marginparwidth 0.07 true in
+%\marginparwidth 0.75 true in
+%\topmargin 0 true pt % Nominal distance from top of page to top of
+%\topmargin 0.125in
+\topmargin -0.625in
+\addtolength{\headsep}{0.25in}
+\textheight 9.0 true in % Height of text (including footnotes & figures)
+\textwidth 5.5 true in % Width of text line.
+\widowpenalty=10000
+\clubpenalty=10000
+
+% \thispagestyle{empty} \pagestyle{empty}
+\flushbottom \sloppy
+
+% We're never going to need a table of contents, so just flush it to
+% save space --- suggested by drstrip@sandia-2
+\def\addcontentsline#1#2#3{}
+
+% Title stuff, taken from deproc.
+\def\maketitle{\par
+\begingroup
+ \def\thefootnote{\fnsymbol{footnote}}
+ \def\@makefnmark{\hbox to 0pt{$^{\@thefnmark}$\hss}} % for perfect author
+ % name centering
+% The footnote-mark was overlapping the footnote-text,
+% added the following to fix this problem (MK)
+ \long\def\@makefntext##1{\parindent 1em\noindent
+ \hbox to1.8em{\hss $\m@th ^{\@thefnmark}$}##1}
+ \@maketitle \@thanks
+\endgroup
+\setcounter{footnote}{0}
+\let\maketitle\relax \let\@maketitle\relax
+\gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
+
+% The toptitlebar has been raised to top-justify the first page
+
+\usepackage{fancyhdr}
+\pagestyle{fancy}
+\renewcommand{\headrulewidth}{1.5pt}
+\fancyhead{}
+
+% Title (includes both anonymized and non-anonymized versions)
+\def\@maketitle{\vbox{\hsize\textwidth
+%\linewidth\hsize \vskip 0.1in \toptitlebar \centering
+{\Large\bf \@title\par}
+%\bottomtitlebar % \vskip 0.1in % minus
+\ifcolmfinal
+ \lhead{Published as a conference paper at COLM 2025}
+ \def\And{\end{tabular}\hfil\linebreak[0]\hfil
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
+ \def\AND{\end{tabular}\hfil\linebreak[4]\hfil
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\@author\end{tabular}%
+\else\ifcolmpreprint
+\lhead{Preprint. Under review.}
+\def\And{\end{tabular}\hfil\linebreak[0]\hfil
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
+\def\AND{\end{tabular}\hfil\linebreak[4]\hfil
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
+\begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\@author\end{tabular}%
+\else
+\lhead{Under review as a conference paper at COLM 2025}
+ \def\And{\end{tabular}\hfil\linebreak[0]\hfil
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
+ \def\AND{\end{tabular}\hfil\linebreak[4]\hfil
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}Anonymous authors\\Paper under double-blind review\end{tabular}%
+\fi\fi
+\vskip 0.3in minus 0.1in}}
+
+\renewenvironment{abstract}{\vskip.075in\centerline{\large\bf
+Abstract}\vspace{0.5ex}\begin{quote}}{\par\end{quote}\vskip 1ex}
+
+% Less leading in most fonts (due to the narrow columns)
+% The choices were between 1-pt and 1.5-pt leading
+%\def\@normalsize{\@setsize\normalsize{11pt}\xpt\@xpt} % got rid of @ (MK)
+\def\normalsize{\@setsize\normalsize{11pt}\xpt\@xpt}
+\def\small{\@setsize\small{10pt}\ixpt\@ixpt}
+\def\footnotesize{\@setsize\footnotesize{10pt}\ixpt\@ixpt}
+\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
+\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
+\def\large{\@setsize\large{14pt}\xiipt\@xiipt}
+\def\Large{\@setsize\Large{16pt}\xivpt\@xivpt}
+\def\LARGE{\@setsize\LARGE{20pt}\xviipt\@xviipt}
+\def\huge{\@setsize\huge{23pt}\xxpt\@xxpt}
+\def\Huge{\@setsize\Huge{28pt}\xxvpt\@xxvpt}
+
+
+
+% sections with less space
+\def\section{\@startsection {section}{1}{\z@}{-2.0ex plus
+ -0.5ex minus -.2ex}{1.5ex plus 0.3ex
+minus0.2ex}{\large\bf\raggedright}}
+
+\def\subsection{\@startsection{subsection}{2}{\z@}{-1.8ex plus
+-0.5ex minus -.2ex}{0.8ex plus .2ex}{\normalsize\bf\raggedright}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-1.5ex
+plus -0.5ex minus -.2ex}{0.5ex plus
+.2ex}{\normalsize\bf\itshape\raggedright}}
+\def\paragraph{\@startsection{paragraph}{4}{\z@}{1.5ex plus
+0.5ex minus .2ex}{-1em}{\normalsize\bf}}
+\def\subparagraph{\@startsection{subparagraph}{5}{\z@}{1.5ex plus
+ 0.5ex minus .2ex}{-1em}{\normalsize\it}}
+\def\subsubsubsection{\vskip
+5pt{\noindent\normalsize\raggedright}}
+
+
+% Footnotes
+\footnotesep 6.65pt %
+\skip\footins 9pt plus 4pt minus 2pt
+\def\footnoterule{\kern-3pt \hrule width 12pc \kern 2.6pt }
+\setcounter{footnote}{0}
+
+% Lists and paragraphs
+\parindent 0pt
+\topsep 4pt plus 1pt minus 2pt
+\partopsep 1pt plus 0.5pt minus 0.5pt
+\itemsep 2pt plus 1pt minus 0.5pt
+\parsep 2pt plus 1pt minus 0.5pt
+\parskip .5pc
+
+
+%\leftmargin2em
+\leftmargin3pc
+\leftmargini\leftmargin \leftmarginii 2em
+\leftmarginiii 1.5em \leftmarginiv 1.0em \leftmarginv .5em
+
+%\labelsep \labelsep 5pt
+
+\def\@listi{\leftmargin\leftmargini}
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+ \topsep 2pt plus 1pt minus 0.5pt
+ \parsep 1pt plus 0.5pt minus 0.5pt
+ \itemsep \parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+ \topsep 1pt plus 0.5pt minus 0.5pt
+ \parsep \z@ \partopsep 0.5pt plus 0pt minus 0.5pt
+ \itemsep \topsep}
+\def\@listiv{\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
+\def\@listv{\leftmargin\leftmarginv
+ \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
+\def\@listvi{\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
+
+\abovedisplayskip 7pt plus2pt minus5pt%
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus3pt%
+\belowdisplayshortskip 4pt plus3pt minus3pt%
+
+
+\def\toptitlebar{\hrule height4pt\vskip .25in\vskip-\parskip}
+
+\def\bottomtitlebar{\vskip .29in\vskip-\parskip\hrule height1pt\vskip
+.09in} %
+%Reduced second vskip to compensate for adding the strut in \@author
+
+
diff --git a/.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.tex b/.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.tex
new file mode 100644
index 0000000..cd02cdc
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/colm2025/colm2025_conference.tex
@@ -0,0 +1,305 @@
+
+\documentclass{article} % For LaTeX2e
+\usepackage[submission]{colm2025_conference}
+
+\usepackage{microtype}
+\usepackage{hyperref}
+\usepackage{url}
+\usepackage{booktabs}
+
+\usepackage{lineno}
+
+\definecolor{darkblue}{rgb}{0, 0, 0.5}
+\hypersetup{colorlinks=true, citecolor=darkblue, linkcolor=darkblue, urlcolor=darkblue}
+
+
+\title{Formatting Instructions for COLM 2025 \\ Conference Submissions}
+
+% Authors must not appear in the submitted version. They should be hidden
+% as long as the \colmfinalcopy macro remains commented out below.
+% Non-anonymous submissions will be rejected without review.
+
+\author{Antiquus S.~Hippocampus, Natalia Cerebro \& Amelie P. Amygdale \thanks{ Use footnote for providing further information
+about author (webpage, alternative address)---\emph{not} for acknowledging
+funding agencies. Funding acknowledgements go at the end of the paper.} \\
+Department of Computer Science\\
+Cranberry-Lemon University\\
+Pittsburgh, PA 15213, USA \\
+\texttt{\{hippo,brain,jen\}@cs.cranberry-lemon.edu} \\
+\And
+Ji Q. Ren \& Yevgeny LeNet \\
+Department of Computational Neuroscience \\
+University of the Witwatersrand \\
+Joburg, South Africa \\
+\texttt{\{robot,net\}@wits.ac.za} \\
+\AND
+Coauthor \\
+Affiliation \\
+Address \\
+\texttt{email}
+}
+
+% The \author macro works with any number of authors. There are two commands
+% used to separate the names and addresses of multiple authors: \And and \AND.
+%
+% Using \And between authors leaves it to \LaTeX{} to determine where to break
+% the lines. Using \AND forces a linebreak at that point. So, if \LaTeX{}
+% puts 3 of 4 authors names on the first line, and the last on the second
+% line, try using \AND instead of \And before the third author name.
+
+\newcommand{\fix}{\marginpar{FIX}}
+\newcommand{\new}{\marginpar{NEW}}
+
+\begin{document}
+
+\ifcolmsubmission
+\linenumbers
+\fi
+
+\maketitle
+
+\begin{abstract}
+The abstract paragraph should be indented 1/2~inch (3~picas) on both left and
+right-hand margins. Use 10~point type, with a vertical spacing of 11~points.
+The word \textit{Abstract} must be centered and in point size 12. Two
+line spaces precede the abstract. The abstract must be limited to one
+paragraph.
+\end{abstract}
+
+\section{Submission of conference papers to COLM 2025}
+
+COLM requires electronic submissions, processed by
+\url{https://openreview.net/}. See COLM's website for more instructions.
+The format for the submissions is a variant of the NeurIPS and ICLR formats.
+Please read carefully the instructions below, and follow them
+faithfully.
+
+
+\subsection{Style}
+
+Papers to be submitted to COLM 2025 must be prepared according to the
+instructions presented here.
+
+%% Please note that we have introduced automatic line number generation
+%% into the style file for \LaTeXe. This is to help reviewers
+%% refer to specific lines of the paper when they make their comments. Please do
+%% NOT refer to these line numbers in your paper as they will be removed from the
+%% style file for the final version of accepted papers.
+
+Authors are required to use the COLM \LaTeX{} style files obtainable at the
+COLM website. Please make sure you use the current files and
+not previous versions. Tweaking the style files may be grounds for rejection.
+
+\subsubsection{Copy Options}
+
+If your paper is ultimately accepted, the option {\tt
+ {\textbackslash}final} should be set for the {\tt {\textbackslash}usepackage[submission]\{colm2025\_conference\}} command for the camera ready version. The {\tt submission} options is the default, and is to be used for all submissions during the review process. It also turns on the line numbers. If you wish to submit a preprint, the option {\tt preprint} should be used.
+
+
+
+\subsection{Retrieval of style files}
+
+The style files for COLM and other conference information are available online at:
+\begin{center}
+ \url{http://www.colmweb.org/}
+\end{center}
+The file \verb+colm2025_conference.pdf+ contains these
+instructions and illustrates the
+various formatting requirements your COLM paper must satisfy.
+Submissions must be made using \LaTeX{} and the style files
+\verb+colm2025_conference.sty+ and \verb+colm2025_conference.bst+ (to be used with \LaTeX{}2e). The file
+\verb+colm2025_conference.tex+ may be used as a ``shell'' for writing your paper. All you
+have to do is replace the author, title, abstract, and text of the paper with
+your own.
+
+The formatting instructions contained in these style files are summarized in
+sections \ref{gen_inst}, \ref{headings}, and \ref{others} below.
+
+\section{General formatting instructions}
+\label{gen_inst}
+
+The text must be confined within a rectangle 5.5~inches (33~picas) wide and
+9~inches (54~picas) long. The left margin is 1.5~inch (9~picas).
+Use 10~point type with a vertical spacing of 11~points. Palatino is the
+preferred typeface throughout, and is mandatory for the main text. Paragraphs are separated by 1/2~line space, with no indentation.
+
+Paper title is 17~point and left-aligned.
+All pages should start at 1~inch (6~picas) from the top of the page.
+
+Please verify that any custom header information you may add does not override the style defined in this document. This has been known to occur especially when submissions are converted to a new template from a previous one (i.e., for re-submission to a different venue).
+
+Authors' names are
+set in boldface, and each name is placed above its corresponding
+address. The lead author's name is to be listed first, and
+the co-authors' names are set to follow. Authors sharing the
+same address can be on the same line.
+
+Please pay special attention to the instructions in section \ref{others}
+regarding figures, tables, acknowledgements, and references.
+
+
+There will be a strict upper limit of 9 pages for the main text of the initial submission, with unlimited additional pages for citations.
+
+We strongly recommend following arXiv's guidelines for making your paper friendly for HTML conversion: \url{https://info.arxiv.org/help/submit_latex_best_practices.html}.
+
+
+\section{Headings: first level}
+\label{headings}
+
+First level headings are in lower case (except for first word and proper nouns), bold face,
+flush left and in point size 12. One line space before the first level
+heading and 1/2~line space after the first level heading.
+
+\subsection{Headings: second level}
+
+Second level headings are in lower case (except for first word and proper nouns), bold face,
+flush left and in point size 10. One line space before the second level
+heading and 1/2~line space after the second level heading.
+
+\subsubsection{Headings: third level}
+
+Third level headings are in lower case (except for first word and proper nouns), bold face, italics,
+flush left and in point size 10. One line space before the third level
+heading and 1/2~line space after the third level heading.
+
+\section{Citations, figures, tables, references}\label{others}
+
+These instructions apply to everyone, regardless of the formatter being used.
+
+\subsection{Citations within the text}
+
+Citations within the text should be based on the \texttt{natbib} package
+and include the authors' last names and year (with the ``et~al.'' construct
+for more than two authors). When the authors or the publication are
+included in the sentence, the citation should not be in parenthesis using \verb|\citet{}| (as
+in ``See \citet{Vaswani+2017} for more information.''). Otherwise, the citation
+should be in parenthesis using \verb|\citep{}| (as in ``Transformers are a key tool
+for developing language models~\citep{Vaswani+2017}.'').
+
+The corresponding references are to be listed in alphabetical order of
+authors, in the \textsc{References} section. As to the format of the
+references themselves, any style is acceptable as long as it is used
+consistently.
+
+\subsection{Footnotes}
+
+Indicate footnotes with a number\footnote{Sample of the first footnote} in the
+text. Place the footnotes at the bottom of the page on which they appear.
+Precede the footnote with a horizontal rule of 2~inches
+(12~picas).\footnote{Sample of the second footnote}
+
+\subsection{Figures}
+
+All artwork must be neat, clean, and legible. Lines should be dark
+enough for purposes of reproduction; art work should not be
+hand-drawn. Any text within the figure must be readable. We ask to not use font sizes below {\tt small}. We strongly recommend to use vector representations (e.g., pdf or svg) for all diagrams.
+We strongly recommend positioning all figures at the top or bottom of the page.
+
+The figure number and caption always appear below the figure. Place one line space before the figure caption, and one line space after the figure. The figure caption is lower case (except for first word and proper nouns); figures are numbered consecutively.
+Make sure the figure caption does not get separated from the figure.
+Leave sufficient space to avoid splitting the figure and figure caption.
+
+You may use color figures.
+However, it is best for the
+figure captions and the paper body to make sense if the paper is printed
+either in black/white or in color.
+\begin{figure}[t]
+\begin{center}
+%\framebox[4.0in]{$\;$}
+\fbox{\rule[-.5cm]{0cm}{4cm} \rule[-.5cm]{4cm}{0cm}}
+\end{center}
+\caption{Sample figure caption.}
+\end{figure}
+
+\subsection{Tables}
+
+All tables must be centered, neat, clean and legible. Do not use hand-drawn tables. The table number and title always appear below the table. See Table~\ref{sample-table}. Please do not use font sizes below {\tt small} in tables. We recommend using {\tt booktabs} or a similar package to style tables.
+We strongly recommend positioning all tables at the top or bottom of the page.
+
+Place one line space before the table title, one line space after the table title, and one line space after the table. The table title must be lowercase (except for first word and proper nouns); tables are numbered consecutively.
+
+\begin{table}[t]
+\begin{center}
+\begin{tabular}{ll}
+\toprule
+\multicolumn{1}{c}{\bf PART} &\multicolumn{1}{c}{\bf DESCRIPTION} \\
+\midrule
+Dendrite &Input terminal \\
+Axon &Output terminal \\
+Soma &Cell body (contains cell nucleus) \\
+\bottomrule
+\end{tabular}
+\end{center}
+\caption{Sample table title}\label{sample-table}
+\end{table}
+
+
+
+
+\section{Final instructions}
+Do not change any aspects of the formatting parameters in the style files.
+In particular, do not modify the width or length of the rectangle the text
+should fit into, and do not change font sizes (except perhaps in the
+\textsc{References} section; see below). Please note that pages should be
+numbered.
+
+\section{Preparing PostScript or PDF files}
+
+Please prepare PostScript or PDF files with paper size ``US Letter'', and
+not, for example, ``A4''. The -t
+letter option on dvips will produce US Letter files.
+
+Consider directly generating PDF files using \verb+pdflatex+
+(especially if you are a MiKTeX user).
+PDF figures must be substituted for EPS figures, however.
+
+Otherwise, please generate your PostScript and PDF files with the following commands:
+\begin{verbatim}
+dvips mypaper.dvi -t letter -Ppdf -G0 -o mypaper.ps
+ps2pdf mypaper.ps mypaper.pdf
+\end{verbatim}
+
+\subsection{Margins in LaTeX}
+
+Most of the margin problems come from figures positioned by hand using
+\verb+\special+ or other commands. We suggest using the command
+\verb+\includegraphics+
+from the graphicx package. Always specify the figure width as a multiple of
+the line width as in the example below using .eps graphics
+\begin{verbatim}
+ \usepackage[dvips]{graphicx} ...
+ \includegraphics[width=0.8\linewidth]{myfile.eps}
+\end{verbatim}
+or % Apr 2009 addition
+\begin{verbatim}
+ \usepackage[pdftex]{graphicx} ...
+ \includegraphics[width=0.8\linewidth]{myfile.pdf}
+\end{verbatim}
+for .pdf graphics.
+See section~4.4 in the graphics bundle documentation (\url{http://www.ctan.org/tex-archive/macros/latex/required/graphics/grfguide.ps})
+
+A number of width problems arise when LaTeX cannot properly hyphenate a
+line. Please give LaTeX hyphenation hints using the \verb+\-+ command.
+
+\section*{Author Contributions}
+If you'd like to, you may include a section for author contributions as is done
+in many journals. This is optional and at the discretion of the authors.
+
+\section*{Acknowledgments}
+Use unnumbered first level headings for the acknowledgments. All
+acknowledgments, including those to funding agencies, go at the end of the paper.
+
+\section*{Ethics Statement}
+Authors can add an optional ethics statement to the paper.
+For papers that touch on ethical issues, this section will be evaluated as part of the review process. The ethics statement should come at the end of the paper. It does not count toward the page limit, but should not be more than 1 page.
+
+
+
+\bibliography{colm2025_conference}
+\bibliographystyle{colm2025_conference}
+
+\appendix
+\section{Appendix}
+You may include other additional sections here.
+
+\end{document}
diff --git a/.agents/skills/ml-paper-writing/templates/colm2025/fancyhdr.sty b/.agents/skills/ml-paper-writing/templates/colm2025/fancyhdr.sty
new file mode 100644
index 0000000..77ed4e3
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/colm2025/fancyhdr.sty
@@ -0,0 +1,485 @@
+% fancyhdr.sty version 3.2
+% Fancy headers and footers for LaTeX.
+% Piet van Oostrum,
+% Dept of Computer and Information Sciences, University of Utrecht,
+% Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands
+% Telephone: +31 30 2532180. Email: piet@cs.uu.nl
+% ========================================================================
+% LICENCE:
+% This file may be distributed under the terms of the LaTeX Project Public
+% License, as described in lppl.txt in the base LaTeX distribution.
+% Either version 1 or, at your option, any later version.
+% ========================================================================
+% MODIFICATION HISTORY:
+% Sep 16, 1994
+% version 1.4: Correction for use with \reversemargin
+% Sep 29, 1994:
+% version 1.5: Added the \iftopfloat, \ifbotfloat and \iffloatpage commands
+% Oct 4, 1994:
+% version 1.6: Reset single spacing in headers/footers for use with
+% setspace.sty or doublespace.sty
+% Oct 4, 1994:
+% version 1.7: changed \let\@mkboth\markboth to
+% \def\@mkboth{\protect\markboth} to make it more robust
+% Dec 5, 1994:
+% version 1.8: corrections for amsbook/amsart: define \@chapapp and (more
+% importantly) use the \chapter/sectionmark definitions from ps@headings if
+% they exist (which should be true for all standard classes).
+% May 31, 1995:
+% version 1.9: The proposed \renewcommand{\headrulewidth}{\iffloatpage...
+% construction in the doc did not work properly with the fancyplain style.
+% June 1, 1995:
+% version 1.91: The definition of \@mkboth wasn't restored on subsequent
+% \pagestyle{fancy}'s.
+% June 1, 1995:
+% version 1.92: The sequence \pagestyle{fancyplain} \pagestyle{plain}
+% \pagestyle{fancy} would erroneously select the plain version.
+% June 1, 1995:
+% version 1.93: \fancypagestyle command added.
+% Dec 11, 1995:
+% version 1.94: suggested by Conrad Hughes <chughes@maths.tcd.ie>
+% CJCH, Dec 11, 1995: added \footruleskip to allow control over footrule
+% position (old hardcoded value of .3\normalbaselineskip is far too high
+% when used with very small footer fonts).
+% Jan 31, 1996:
+% version 1.95: call \@normalsize in the reset code if that is defined,
+% otherwise \normalsize.
+% this is to solve a problem with ucthesis.cls, as this doesn't
+% define \@currsize. Unfortunately for latex209 calling \normalsize doesn't
+% work as this is optimized to do very little, so there \@normalsize should
+% be called. Hopefully this code works for all versions of LaTeX known to
+% mankind.
+% April 25, 1996:
+% version 1.96: initialize \headwidth to a magic (negative) value to catch
+% most common cases that people change it before calling \pagestyle{fancy}.
+% Note it can't be initialized when reading in this file, because
+% \textwidth could be changed afterwards. This is quite probable.
+% We also switch to \MakeUppercase rather than \uppercase and introduce a
+% \nouppercase command for use in headers. and footers.
+% May 3, 1996:
+% version 1.97: Two changes:
+% 1. Undo the change in version 1.8 (using the pagestyle{headings} defaults
+% for the chapter and section marks. The current version of amsbook and
+% amsart classes don't seem to need them anymore. Moreover the standard
+% latex classes don't use \markboth if twoside isn't selected, and this is
+% confusing as \leftmark doesn't work as expected.
+% 2. include a call to \ps@empty in ps@@fancy. This is to solve a problem
+% in the amsbook and amsart classes, that make global changes to \topskip,
+% which are reset in \ps@empty. Hopefully this doesn't break other things.
+% May 7, 1996:
+% version 1.98:
+% Added % after the line \def\nouppercase
+% May 7, 1996:
+% version 1.99: This is the alpha version of fancyhdr 2.0
+% Introduced the new commands \fancyhead, \fancyfoot, and \fancyhf.
+% Changed \headrulewidth, \footrulewidth, \footruleskip to
+% macros rather than length parameters, In this way they can be
+% conditionalized and they don't consume length registers. There is no need
+% to have them as length registers unless you want to do calculations with
+% them, which is unlikely. Note that this may make some uses of them
+% incompatible (i.e. if you have a file that uses \setlength or \xxxx=)
+% May 10, 1996:
+% version 1.99a:
+% Added a few more % signs
+% May 10, 1996:
+% version 1.99b:
+% Changed the syntax of \f@nfor to be resistent to catcode changes of :=
+% Removed the [1] from the defs of \lhead etc. because the parameter is
+% consumed by the \@[xy]lhead etc. macros.
+% June 24, 1997:
+% version 1.99c:
+% corrected \nouppercase to also include the protected form of \MakeUppercase
+% \global added to manipulation of \headwidth.
+% \iffootnote command added.
+% Some comments added about \@fancyhead and \@fancyfoot.
+% Aug 24, 1998
+% version 1.99d
+% Changed the default \ps@empty to \ps@@empty in order to allow
+% \fancypagestyle{empty} redefinition.
+% Oct 11, 2000
+% version 2.0
+% Added LPPL license clause.
+%
+% A check for \headheight is added. An errormessage is given (once) if the
+% header is too large. Empty headers don't generate the error even if
+% \headheight is very small or even 0pt.
+% Warning added for the use of 'E' option when twoside option is not used.
+% In this case the 'E' fields will never be used.
+%
+% Mar 10, 2002
+% version 2.1beta
+% New command: \fancyhfoffset[place]{length}
+% defines offsets to be applied to the header/footer to let it stick into
+% the margins (if length > 0).
+% place is like in fancyhead, except that only E,O,L,R can be used.
+% This replaces the old calculation based on \headwidth and the marginpar
+% area.
+% \headwidth will be dynamically calculated in the headers/footers when
+% this is used.
+%
+% Mar 26, 2002
+% version 2.1beta2
+% \fancyhfoffset now also takes h,f as possible letters in the argument to
+% allow the header and footer widths to be different.
+% New commands \fancyheadoffset and \fancyfootoffset added comparable to
+% \fancyhead and \fancyfoot.
+% Errormessages and warnings have been made more informative.
+%
+% Dec 9, 2002
+% version 2.1
+% The defaults for \footrulewidth, \plainheadrulewidth and
+% \plainfootrulewidth are changed from \z@skip to 0pt. In this way when
+% someone inadvertantly uses \setlength to change any of these, the value
+% of \z@skip will not be changed, rather an errormessage will be given.
+
+% March 3, 2004
+% Release of version 3.0
+
+% Oct 7, 2004
+% version 3.1
+% Added '\endlinechar=13' to \fancy@reset to prevent problems with
+% includegraphics in header when verbatiminput is active.
+
+% March 22, 2005
+% version 3.2
+% reset \everypar (the real one) in \fancy@reset because spanish.ldf does
+% strange things with \everypar between << and >>.
+
+\def\ifancy@mpty#1{\def\temp@a{#1}\ifx\temp@a\@empty}
+
+\def\fancy@def#1#2{\ifancy@mpty{#2}\fancy@gbl\def#1{\leavevmode}\else
+ \fancy@gbl\def#1{#2\strut}\fi}
+
+\let\fancy@gbl\global
+
+\def\@fancyerrmsg#1{%
+ \ifx\PackageError\undefined
+ \errmessage{#1}\else
+ \PackageError{Fancyhdr}{#1}{}\fi}
+\def\@fancywarning#1{%
+ \ifx\PackageWarning\undefined
+ \errmessage{#1}\else
+ \PackageWarning{Fancyhdr}{#1}{}\fi}
+
+% Usage: \@forc \var{charstring}{command to be executed for each char}
+% This is similar to LaTeX's \@tfor, but expands the charstring.
+
+\def\@forc#1#2#3{\expandafter\f@rc\expandafter#1\expandafter{#2}{#3}}
+\def\f@rc#1#2#3{\def\temp@ty{#2}\ifx\@empty\temp@ty\else
+ \f@@rc#1#2\f@@rc{#3}\fi}
+\def\f@@rc#1#2#3\f@@rc#4{\def#1{#2}#4\f@rc#1{#3}{#4}}
+
+% Usage: \f@nfor\name:=list\do{body}
+% Like LaTeX's \@for but an empty list is treated as a list with an empty
+% element
+
+\newcommand{\f@nfor}[3]{\edef\@fortmp{#2}%
+ \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}}
+
+% Usage: \def@ult \cs{defaults}{argument}
+% sets \cs to the characters from defaults appearing in argument
+% or defaults if it would be empty. All characters are lowercased.
+
+\newcommand\def@ult[3]{%
+ \edef\temp@a{\lowercase{\edef\noexpand\temp@a{#3}}}\temp@a
+ \def#1{}%
+ \@forc\tmpf@ra{#2}%
+ {\expandafter\if@in\tmpf@ra\temp@a{\edef#1{#1\tmpf@ra}}{}}%
+ \ifx\@empty#1\def#1{#2}\fi}
+%
+% \if@in <char><set><truecase><falsecase>
+%
+\newcommand{\if@in}[4]{%
+ \edef\temp@a{#2}\def\temp@b##1#1##2\temp@b{\def\temp@b{##1}}%
+ \expandafter\temp@b#2#1\temp@b\ifx\temp@a\temp@b #4\else #3\fi}
+
+\newcommand{\fancyhead}{\@ifnextchar[{\f@ncyhf\fancyhead h}%
+ {\f@ncyhf\fancyhead h[]}}
+\newcommand{\fancyfoot}{\@ifnextchar[{\f@ncyhf\fancyfoot f}%
+ {\f@ncyhf\fancyfoot f[]}}
+\newcommand{\fancyhf}{\@ifnextchar[{\f@ncyhf\fancyhf{}}%
+ {\f@ncyhf\fancyhf{}[]}}
+
+% New commands for offsets added
+
+\newcommand{\fancyheadoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyheadoffset h}%
+ {\f@ncyhfoffs\fancyheadoffset h[]}}
+\newcommand{\fancyfootoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyfootoffset f}%
+ {\f@ncyhfoffs\fancyfootoffset f[]}}
+\newcommand{\fancyhfoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyhfoffset{}}%
+ {\f@ncyhfoffs\fancyhfoffset{}[]}}
+
+% The header and footer fields are stored in command sequences with
+% names of the form: \f@ncy<x><y><z> with <x> for [eo], <y> from [lcr]
+% and <z> from [hf].
+
+\def\f@ncyhf#1#2[#3]#4{%
+ \def\temp@c{}%
+ \@forc\tmpf@ra{#3}%
+ {\expandafter\if@in\tmpf@ra{eolcrhf,EOLCRHF}%
+ {}{\edef\temp@c{\temp@c\tmpf@ra}}}%
+ \ifx\@empty\temp@c\else
+ \@fancyerrmsg{Illegal char `\temp@c' in \string#1 argument:
+ [#3]}%
+ \fi
+ \f@nfor\temp@c{#3}%
+ {\def@ult\f@@@eo{eo}\temp@c
+ \if@twoside\else
+ \if\f@@@eo e\@fancywarning
+ {\string#1's `E' option without twoside option is useless}\fi\fi
+ \def@ult\f@@@lcr{lcr}\temp@c
+ \def@ult\f@@@hf{hf}{#2\temp@c}%
+ \@forc\f@@eo\f@@@eo
+ {\@forc\f@@lcr\f@@@lcr
+ {\@forc\f@@hf\f@@@hf
+ {\expandafter\fancy@def\csname
+ f@ncy\f@@eo\f@@lcr\f@@hf\endcsname
+ {#4}}}}}}
+
+\def\f@ncyhfoffs#1#2[#3]#4{%
+ \def\temp@c{}%
+ \@forc\tmpf@ra{#3}%
+ {\expandafter\if@in\tmpf@ra{eolrhf,EOLRHF}%
+ {}{\edef\temp@c{\temp@c\tmpf@ra}}}%
+ \ifx\@empty\temp@c\else
+ \@fancyerrmsg{Illegal char `\temp@c' in \string#1 argument:
+ [#3]}%
+ \fi
+ \f@nfor\temp@c{#3}%
+ {\def@ult\f@@@eo{eo}\temp@c
+ \if@twoside\else
+ \if\f@@@eo e\@fancywarning
+ {\string#1's `E' option without twoside option is useless}\fi\fi
+ \def@ult\f@@@lcr{lr}\temp@c
+ \def@ult\f@@@hf{hf}{#2\temp@c}%
+ \@forc\f@@eo\f@@@eo
+ {\@forc\f@@lcr\f@@@lcr
+ {\@forc\f@@hf\f@@@hf
+ {\expandafter\setlength\csname
+ f@ncyO@\f@@eo\f@@lcr\f@@hf\endcsname
+ {#4}}}}}%
+ \fancy@setoffs}
+
+% Fancyheadings version 1 commands. These are more or less deprecated,
+% but they continue to work.
+
+\newcommand{\lhead}{\@ifnextchar[{\@xlhead}{\@ylhead}}
+\def\@xlhead[#1]#2{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#2}}
+\def\@ylhead#1{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#1}}
+
+\newcommand{\chead}{\@ifnextchar[{\@xchead}{\@ychead}}
+\def\@xchead[#1]#2{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#2}}
+\def\@ychead#1{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#1}}
+
+\newcommand{\rhead}{\@ifnextchar[{\@xrhead}{\@yrhead}}
+\def\@xrhead[#1]#2{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#2}}
+\def\@yrhead#1{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#1}}
+
+\newcommand{\lfoot}{\@ifnextchar[{\@xlfoot}{\@ylfoot}}
+\def\@xlfoot[#1]#2{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#2}}
+\def\@ylfoot#1{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#1}}
+
+\newcommand{\cfoot}{\@ifnextchar[{\@xcfoot}{\@ycfoot}}
+\def\@xcfoot[#1]#2{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#2}}
+\def\@ycfoot#1{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#1}}
+
+\newcommand{\rfoot}{\@ifnextchar[{\@xrfoot}{\@yrfoot}}
+\def\@xrfoot[#1]#2{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#2}}
+\def\@yrfoot#1{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#1}}
+
+\newlength{\fancy@headwidth}
+\let\headwidth\fancy@headwidth
+\newlength{\f@ncyO@elh}
+\newlength{\f@ncyO@erh}
+\newlength{\f@ncyO@olh}
+\newlength{\f@ncyO@orh}
+\newlength{\f@ncyO@elf}
+\newlength{\f@ncyO@erf}
+\newlength{\f@ncyO@olf}
+\newlength{\f@ncyO@orf}
+\newcommand{\headrulewidth}{0.4pt}
+\newcommand{\footrulewidth}{0pt}
+\newcommand{\footruleskip}{.3\normalbaselineskip}
+
+% Fancyplain stuff shouldn't be used anymore (rather
+% \fancypagestyle{plain} should be used), but it must be present for
+% compatibility reasons.
+
+\newcommand{\plainheadrulewidth}{0pt}
+\newcommand{\plainfootrulewidth}{0pt}
+\newif\if@fancyplain \@fancyplainfalse
+\def\fancyplain#1#2{\if@fancyplain#1\else#2\fi}
+
+\headwidth=-123456789sp %magic constant
+
+% Command to reset various things in the headers:
+% a.o. single spacing (taken from setspace.sty)
+% and the catcode of ^^M (so that epsf files in the header work if a
+% verbatim crosses a page boundary)
+% It also defines a \nouppercase command that disables \uppercase and
+% \Makeuppercase. It can only be used in the headers and footers.
+\let\fnch@everypar\everypar% save real \everypar because of spanish.ldf
+\def\fancy@reset{\fnch@everypar{}\restorecr\endlinechar=13
+ \def\baselinestretch{1}%
+ \def\nouppercase##1{{\let\uppercase\relax\let\MakeUppercase\relax
+ \expandafter\let\csname MakeUppercase \endcsname\relax##1}}%
+ \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e
+ \ifx\@normalsize\undefined \normalsize % for ucthesis.cls
+ \else \@normalsize \fi
+ \else% NFSS (2.09) present
+ \@newbaseline%
+ \fi}
+
+% Initialization of the head and foot text.
+
+% The default values still contain \fancyplain for compatibility.
+\fancyhf{} % clear all
+% lefthead empty on ``plain'' pages, \rightmark on even, \leftmark on odd pages
+% evenhead empty on ``plain'' pages, \leftmark on even, \rightmark on odd pages
+\if@twoside
+ \fancyhead[el,or]{\fancyplain{}{\sl\rightmark}}
+ \fancyhead[er,ol]{\fancyplain{}{\sl\leftmark}}
+\else
+ \fancyhead[l]{\fancyplain{}{\sl\rightmark}}
+ \fancyhead[r]{\fancyplain{}{\sl\leftmark}}
+\fi
+\fancyfoot[c]{\rm\thepage} % page number
+
+% Use box 0 as a temp box and dimen 0 as temp dimen.
+% This can be done, because this code will always
+% be used inside another box, and therefore the changes are local.
+
+\def\@fancyvbox#1#2{\setbox0\vbox{#2}\ifdim\ht0>#1\@fancywarning
+ {\string#1 is too small (\the#1): ^^J Make it at least \the\ht0.^^J
+ We now make it that large for the rest of the document.^^J
+ This may cause the page layout to be inconsistent, however\@gobble}%
+ \dimen0=#1\global\setlength{#1}{\ht0}\ht0=\dimen0\fi
+ \box0}
+
+% Put together a header or footer given the left, center and
+% right text, fillers at left and right and a rule.
+% The \lap commands put the text into an hbox of zero size,
+% so overlapping text does not generate an errormessage.
+% These macros have 5 parameters:
+% 1. LEFTSIDE BEARING % This determines at which side the header will stick
+% out. When \fancyhfoffset is used this calculates \headwidth, otherwise
+% it is \hss or \relax (after expansion).
+% 2. \f@ncyolh, \f@ncyelh, \f@ncyolf or \f@ncyelf. This is the left component.
+% 3. \f@ncyoch, \f@ncyech, \f@ncyocf or \f@ncyecf. This is the middle comp.
+% 4. \f@ncyorh, \f@ncyerh, \f@ncyorf or \f@ncyerf. This is the right component.
+% 5. RIGHTSIDE BEARING. This is always \relax or \hss (after expansion).
+
+\def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset
+ \@fancyvbox\headheight{\hbox
+ {\rlap{\parbox[b]{\headwidth}{\raggedright#2}}\hfill
+ \parbox[b]{\headwidth}{\centering#3}\hfill
+ \llap{\parbox[b]{\headwidth}{\raggedleft#4}}}\headrule}}#5}
+
+\def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset
+ \@fancyvbox\footskip{\footrule
+ \hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2}}\hfill
+ \parbox[t]{\headwidth}{\centering#3}\hfill
+ \llap{\parbox[t]{\headwidth}{\raggedleft#4}}}}}#5}
+
+\def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi
+ \hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}}
+
+\def\footrule{{\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi
+ \vskip-\footruleskip\vskip-\footrulewidth
+ \hrule\@width\headwidth\@height\footrulewidth\vskip\footruleskip}}
+
+\def\ps@fancy{%
+\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%for amsbook
+%
+% Define \MakeUppercase for old LaTeXen.
+% Note: we used \def rather than \let, so that \let\uppercase\relax (from
+% the version 1 documentation) will still work.
+%
+\@ifundefined{MakeUppercase}{\def\MakeUppercase{\uppercase}}{}%
+\@ifundefined{chapter}{\def\sectionmark##1{\markboth
+{\MakeUppercase{\ifnum \c@secnumdepth>\z@
+ \thesection\hskip 1em\relax \fi ##1}}{}}%
+\def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne
+ \thesubsection\hskip 1em\relax \fi ##1}}}%
+{\def\chaptermark##1{\markboth {\MakeUppercase{\ifnum \c@secnumdepth>\m@ne
+ \@chapapp\ \thechapter. \ \fi ##1}}{}}%
+\def\sectionmark##1{\markright{\MakeUppercase{\ifnum \c@secnumdepth >\z@
+ \thesection. \ \fi ##1}}}}%
+%\csname ps@headings\endcsname % use \ps@headings defaults if they exist
+\ps@@fancy
+\gdef\ps@fancy{\@fancyplainfalse\ps@@fancy}%
+% Initialize \headwidth if the user didn't
+%
+\ifdim\headwidth<0sp
+%
+% This catches the case that \headwidth hasn't been initialized and the
+% case that the user added something to \headwidth in the expectation that
+% it was initialized to \textwidth. We compensate this now. This loses if
+% the user intended to multiply it by a factor. But that case is more
+% likely done by saying something like \headwidth=1.2\textwidth.
+% The doc says you have to change \headwidth after the first call to
+% \pagestyle{fancy}. This code is just to catch the most common cases were
+% that requirement is violated.
+%
+ \global\advance\headwidth123456789sp\global\advance\headwidth\textwidth
+\fi}
+\def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy}
+\def\ps@plain@fancy{\@fancyplaintrue\ps@@fancy}
+\let\ps@@empty\ps@empty
+\def\ps@@fancy{%
+\ps@@empty % This is for amsbook/amsart, which do strange things with \topskip
+\def\@mkboth{\protect\markboth}%
+\def\@oddhead{\@fancyhead\fancy@Oolh\f@ncyolh\f@ncyoch\f@ncyorh\fancy@Oorh}%
+\def\@oddfoot{\@fancyfoot\fancy@Oolf\f@ncyolf\f@ncyocf\f@ncyorf\fancy@Oorf}%
+\def\@evenhead{\@fancyhead\fancy@Oelh\f@ncyelh\f@ncyech\f@ncyerh\fancy@Oerh}%
+\def\@evenfoot{\@fancyfoot\fancy@Oelf\f@ncyelf\f@ncyecf\f@ncyerf\fancy@Oerf}%
+}
+% Default definitions for compatibility mode:
+% These cause the header/footer to take the defined \headwidth as width
+% And to shift in the direction of the marginpar area
+
+\def\fancy@Oolh{\if@reversemargin\hss\else\relax\fi}
+\def\fancy@Oorh{\if@reversemargin\relax\else\hss\fi}
+\let\fancy@Oelh\fancy@Oorh
+\let\fancy@Oerh\fancy@Oolh
+
+\let\fancy@Oolf\fancy@Oolh
+\let\fancy@Oorf\fancy@Oorh
+\let\fancy@Oelf\fancy@Oelh
+\let\fancy@Oerf\fancy@Oerh
+
+% New definitions for the use of \fancyhfoffset
+% These calculate the \headwidth from \textwidth and the specified offsets.
+
+\def\fancy@offsolh{\headwidth=\textwidth\advance\headwidth\f@ncyO@olh
+ \advance\headwidth\f@ncyO@orh\hskip-\f@ncyO@olh}
+\def\fancy@offselh{\headwidth=\textwidth\advance\headwidth\f@ncyO@elh
+ \advance\headwidth\f@ncyO@erh\hskip-\f@ncyO@elh}
+
+\def\fancy@offsolf{\headwidth=\textwidth\advance\headwidth\f@ncyO@olf
+ \advance\headwidth\f@ncyO@orf\hskip-\f@ncyO@olf}
+\def\fancy@offself{\headwidth=\textwidth\advance\headwidth\f@ncyO@elf
+ \advance\headwidth\f@ncyO@erf\hskip-\f@ncyO@elf}
+
+\def\fancy@setoffs{%
+% Just in case \let\headwidth\textwidth was used
+ \fancy@gbl\let\headwidth\fancy@headwidth
+ \fancy@gbl\let\fancy@Oolh\fancy@offsolh
+ \fancy@gbl\let\fancy@Oelh\fancy@offselh
+ \fancy@gbl\let\fancy@Oorh\hss
+ \fancy@gbl\let\fancy@Oerh\hss
+ \fancy@gbl\let\fancy@Oolf\fancy@offsolf
+ \fancy@gbl\let\fancy@Oelf\fancy@offself
+ \fancy@gbl\let\fancy@Oorf\hss
+ \fancy@gbl\let\fancy@Oerf\hss}
+
+\newif\iffootnote
+\let\latex@makecol\@makecol
+\def\@makecol{\ifvoid\footins\footnotetrue\else\footnotefalse\fi
+\let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol}
+\def\iftopfloat#1#2{\ifx\topfloat\empty #2\else #1\fi}
+\def\ifbotfloat#1#2{\ifx\botfloat\empty #2\else #1\fi}
+\def\iffloatpage#1#2{\if@fcolmade #1\else #2\fi}
+
+\newcommand{\fancypagestyle}[2]{%
+ \@namedef{ps@#1}{\let\fancy@gbl\relax#2\relax\ps@fancy}}
diff --git a/.agents/skills/ml-paper-writing/templates/colm2025/math_commands.tex b/.agents/skills/ml-paper-writing/templates/colm2025/math_commands.tex
new file mode 100644
index 0000000..0668f93
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/colm2025/math_commands.tex
@@ -0,0 +1,508 @@
+%%%%% NEW MATH DEFINITIONS %%%%%
+
+\usepackage{amsmath,amsfonts,bm}
+
+% Mark sections of captions for referring to divisions of figures
+\newcommand{\figleft}{{\em (Left)}}
+\newcommand{\figcenter}{{\em (Center)}}
+\newcommand{\figright}{{\em (Right)}}
+\newcommand{\figtop}{{\em (Top)}}
+\newcommand{\figbottom}{{\em (Bottom)}}
+\newcommand{\captiona}{{\em (a)}}
+\newcommand{\captionb}{{\em (b)}}
+\newcommand{\captionc}{{\em (c)}}
+\newcommand{\captiond}{{\em (d)}}
+
+% Highlight a newly defined term
+\newcommand{\newterm}[1]{{\bf #1}}
+
+
+% Figure reference, lower-case.
+\def\figref#1{figure~\ref{#1}}
+% Figure reference, capital. For start of sentence
+\def\Figref#1{Figure~\ref{#1}}
+\def\twofigref#1#2{figures \ref{#1} and \ref{#2}}
+\def\quadfigref#1#2#3#4{figures \ref{#1}, \ref{#2}, \ref{#3} and \ref{#4}}
+% Section reference, lower-case.
+\def\secref#1{section~\ref{#1}}
+% Section reference, capital.
+\def\Secref#1{Section~\ref{#1}}
+% Reference to two sections.
+\def\twosecrefs#1#2{sections \ref{#1} and \ref{#2}}
+% Reference to three sections.
+\def\secrefs#1#2#3{sections \ref{#1}, \ref{#2} and \ref{#3}}
+% Reference to an equation, lower-case.
+\def\eqref#1{equation~\ref{#1}}
+% Reference to an equation, upper case
+\def\Eqref#1{Equation~\ref{#1}}
+% A raw reference to an equation---avoid using if possible
+\def\plaineqref#1{\ref{#1}}
+% Reference to a chapter, lower-case.
+\def\chapref#1{chapter~\ref{#1}}
+% Reference to an equation, upper case.
+\def\Chapref#1{Chapter~\ref{#1}}
+% Reference to a range of chapters
+\def\rangechapref#1#2{chapters\ref{#1}--\ref{#2}}
+% Reference to an algorithm, lower-case.
+\def\algref#1{algorithm~\ref{#1}}
+% Reference to an algorithm, upper case.
+\def\Algref#1{Algorithm~\ref{#1}}
+\def\twoalgref#1#2{algorithms \ref{#1} and \ref{#2}}
+\def\Twoalgref#1#2{Algorithms \ref{#1} and \ref{#2}}
+% Reference to a part, lower case
+\def\partref#1{part~\ref{#1}}
+% Reference to a part, upper case
+\def\Partref#1{Part~\ref{#1}}
+\def\twopartref#1#2{parts \ref{#1} and \ref{#2}}
+
+\def\ceil#1{\lceil #1 \rceil}
+\def\floor#1{\lfloor #1 \rfloor}
+\def\1{\bm{1}}
+\newcommand{\train}{\mathcal{D}}
+\newcommand{\valid}{\mathcal{D_{\mathrm{valid}}}}
+\newcommand{\test}{\mathcal{D_{\mathrm{test}}}}
+
+\def\eps{{\epsilon}}
+
+
+% Random variables
+\def\reta{{\textnormal{$\eta$}}}
+\def\ra{{\textnormal{a}}}
+\def\rb{{\textnormal{b}}}
+\def\rc{{\textnormal{c}}}
+\def\rd{{\textnormal{d}}}
+\def\re{{\textnormal{e}}}
+\def\rf{{\textnormal{f}}}
+\def\rg{{\textnormal{g}}}
+\def\rh{{\textnormal{h}}}
+\def\ri{{\textnormal{i}}}
+\def\rj{{\textnormal{j}}}
+\def\rk{{\textnormal{k}}}
+\def\rl{{\textnormal{l}}}
+% rm is already a command, just don't name any random variables m
+\def\rn{{\textnormal{n}}}
+\def\ro{{\textnormal{o}}}
+\def\rp{{\textnormal{p}}}
+\def\rq{{\textnormal{q}}}
+\def\rr{{\textnormal{r}}}
+\def\rs{{\textnormal{s}}}
+\def\rt{{\textnormal{t}}}
+\def\ru{{\textnormal{u}}}
+\def\rv{{\textnormal{v}}}
+\def\rw{{\textnormal{w}}}
+\def\rx{{\textnormal{x}}}
+\def\ry{{\textnormal{y}}}
+\def\rz{{\textnormal{z}}}
+
+% Random vectors
+\def\rvepsilon{{\mathbf{\epsilon}}}
+\def\rvtheta{{\mathbf{\theta}}}
+\def\rva{{\mathbf{a}}}
+\def\rvb{{\mathbf{b}}}
+\def\rvc{{\mathbf{c}}}
+\def\rvd{{\mathbf{d}}}
+\def\rve{{\mathbf{e}}}
+\def\rvf{{\mathbf{f}}}
+\def\rvg{{\mathbf{g}}}
+\def\rvh{{\mathbf{h}}}
+\def\rvu{{\mathbf{i}}}
+\def\rvj{{\mathbf{j}}}
+\def\rvk{{\mathbf{k}}}
+\def\rvl{{\mathbf{l}}}
+\def\rvm{{\mathbf{m}}}
+\def\rvn{{\mathbf{n}}}
+\def\rvo{{\mathbf{o}}}
+\def\rvp{{\mathbf{p}}}
+\def\rvq{{\mathbf{q}}}
+\def\rvr{{\mathbf{r}}}
+\def\rvs{{\mathbf{s}}}
+\def\rvt{{\mathbf{t}}}
+\def\rvu{{\mathbf{u}}}
+\def\rvv{{\mathbf{v}}}
+\def\rvw{{\mathbf{w}}}
+\def\rvx{{\mathbf{x}}}
+\def\rvy{{\mathbf{y}}}
+\def\rvz{{\mathbf{z}}}
+
+% Elements of random vectors
+\def\erva{{\textnormal{a}}}
+\def\ervb{{\textnormal{b}}}
+\def\ervc{{\textnormal{c}}}
+\def\ervd{{\textnormal{d}}}
+\def\erve{{\textnormal{e}}}
+\def\ervf{{\textnormal{f}}}
+\def\ervg{{\textnormal{g}}}
+\def\ervh{{\textnormal{h}}}
+\def\ervi{{\textnormal{i}}}
+\def\ervj{{\textnormal{j}}}
+\def\ervk{{\textnormal{k}}}
+\def\ervl{{\textnormal{l}}}
+\def\ervm{{\textnormal{m}}}
+\def\ervn{{\textnormal{n}}}
+\def\ervo{{\textnormal{o}}}
+\def\ervp{{\textnormal{p}}}
+\def\ervq{{\textnormal{q}}}
+\def\ervr{{\textnormal{r}}}
+\def\ervs{{\textnormal{s}}}
+\def\ervt{{\textnormal{t}}}
+\def\ervu{{\textnormal{u}}}
+\def\ervv{{\textnormal{v}}}
+\def\ervw{{\textnormal{w}}}
+\def\ervx{{\textnormal{x}}}
+\def\ervy{{\textnormal{y}}}
+\def\ervz{{\textnormal{z}}}
+
+% Random matrices
+\def\rmA{{\mathbf{A}}}
+\def\rmB{{\mathbf{B}}}
+\def\rmC{{\mathbf{C}}}
+\def\rmD{{\mathbf{D}}}
+\def\rmE{{\mathbf{E}}}
+\def\rmF{{\mathbf{F}}}
+\def\rmG{{\mathbf{G}}}
+\def\rmH{{\mathbf{H}}}
+\def\rmI{{\mathbf{I}}}
+\def\rmJ{{\mathbf{J}}}
+\def\rmK{{\mathbf{K}}}
+\def\rmL{{\mathbf{L}}}
+\def\rmM{{\mathbf{M}}}
+\def\rmN{{\mathbf{N}}}
+\def\rmO{{\mathbf{O}}}
+\def\rmP{{\mathbf{P}}}
+\def\rmQ{{\mathbf{Q}}}
+\def\rmR{{\mathbf{R}}}
+\def\rmS{{\mathbf{S}}}
+\def\rmT{{\mathbf{T}}}
+\def\rmU{{\mathbf{U}}}
+\def\rmV{{\mathbf{V}}}
+\def\rmW{{\mathbf{W}}}
+\def\rmX{{\mathbf{X}}}
+\def\rmY{{\mathbf{Y}}}
+\def\rmZ{{\mathbf{Z}}}
+
+% Elements of random matrices
+\def\ermA{{\textnormal{A}}}
+\def\ermB{{\textnormal{B}}}
+\def\ermC{{\textnormal{C}}}
+\def\ermD{{\textnormal{D}}}
+\def\ermE{{\textnormal{E}}}
+\def\ermF{{\textnormal{F}}}
+\def\ermG{{\textnormal{G}}}
+\def\ermH{{\textnormal{H}}}
+\def\ermI{{\textnormal{I}}}
+\def\ermJ{{\textnormal{J}}}
+\def\ermK{{\textnormal{K}}}
+\def\ermL{{\textnormal{L}}}
+\def\ermM{{\textnormal{M}}}
+\def\ermN{{\textnormal{N}}}
+\def\ermO{{\textnormal{O}}}
+\def\ermP{{\textnormal{P}}}
+\def\ermQ{{\textnormal{Q}}}
+\def\ermR{{\textnormal{R}}}
+\def\ermS{{\textnormal{S}}}
+\def\ermT{{\textnormal{T}}}
+\def\ermU{{\textnormal{U}}}
+\def\ermV{{\textnormal{V}}}
+\def\ermW{{\textnormal{W}}}
+\def\ermX{{\textnormal{X}}}
+\def\ermY{{\textnormal{Y}}}
+\def\ermZ{{\textnormal{Z}}}
+
+% Vectors
+\def\vzero{{\bm{0}}}
+\def\vone{{\bm{1}}}
+\def\vmu{{\bm{\mu}}}
+\def\vtheta{{\bm{\theta}}}
+\def\va{{\bm{a}}}
+\def\vb{{\bm{b}}}
+\def\vc{{\bm{c}}}
+\def\vd{{\bm{d}}}
+\def\ve{{\bm{e}}}
+\def\vf{{\bm{f}}}
+\def\vg{{\bm{g}}}
+\def\vh{{\bm{h}}}
+\def\vi{{\bm{i}}}
+\def\vj{{\bm{j}}}
+\def\vk{{\bm{k}}}
+\def\vl{{\bm{l}}}
+\def\vm{{\bm{m}}}
+\def\vn{{\bm{n}}}
+\def\vo{{\bm{o}}}
+\def\vp{{\bm{p}}}
+\def\vq{{\bm{q}}}
+\def\vr{{\bm{r}}}
+\def\vs{{\bm{s}}}
+\def\vt{{\bm{t}}}
+\def\vu{{\bm{u}}}
+\def\vv{{\bm{v}}}
+\def\vw{{\bm{w}}}
+\def\vx{{\bm{x}}}
+\def\vy{{\bm{y}}}
+\def\vz{{\bm{z}}}
+
+% Elements of vectors
+\def\evalpha{{\alpha}}
+\def\evbeta{{\beta}}
+\def\evepsilon{{\epsilon}}
+\def\evlambda{{\lambda}}
+\def\evomega{{\omega}}
+\def\evmu{{\mu}}
+\def\evpsi{{\psi}}
+\def\evsigma{{\sigma}}
+\def\evtheta{{\theta}}
+\def\eva{{a}}
+\def\evb{{b}}
+\def\evc{{c}}
+\def\evd{{d}}
+\def\eve{{e}}
+\def\evf{{f}}
+\def\evg{{g}}
+\def\evh{{h}}
+\def\evi{{i}}
+\def\evj{{j}}
+\def\evk{{k}}
+\def\evl{{l}}
+\def\evm{{m}}
+\def\evn{{n}}
+\def\evo{{o}}
+\def\evp{{p}}
+\def\evq{{q}}
+\def\evr{{r}}
+\def\evs{{s}}
+\def\evt{{t}}
+\def\evu{{u}}
+\def\evv{{v}}
+\def\evw{{w}}
+\def\evx{{x}}
+\def\evy{{y}}
+\def\evz{{z}}
+
+% Matrix
+\def\mA{{\bm{A}}}
+\def\mB{{\bm{B}}}
+\def\mC{{\bm{C}}}
+\def\mD{{\bm{D}}}
+\def\mE{{\bm{E}}}
+\def\mF{{\bm{F}}}
+\def\mG{{\bm{G}}}
+\def\mH{{\bm{H}}}
+\def\mI{{\bm{I}}}
+\def\mJ{{\bm{J}}}
+\def\mK{{\bm{K}}}
+\def\mL{{\bm{L}}}
+\def\mM{{\bm{M}}}
+\def\mN{{\bm{N}}}
+\def\mO{{\bm{O}}}
+\def\mP{{\bm{P}}}
+\def\mQ{{\bm{Q}}}
+\def\mR{{\bm{R}}}
+\def\mS{{\bm{S}}}
+\def\mT{{\bm{T}}}
+\def\mU{{\bm{U}}}
+\def\mV{{\bm{V}}}
+\def\mW{{\bm{W}}}
+\def\mX{{\bm{X}}}
+\def\mY{{\bm{Y}}}
+\def\mZ{{\bm{Z}}}
+\def\mBeta{{\bm{\beta}}}
+\def\mPhi{{\bm{\Phi}}}
+\def\mLambda{{\bm{\Lambda}}}
+\def\mSigma{{\bm{\Sigma}}}
+
+% Tensor
+\DeclareMathAlphabet{\mathsfit}{\encodingdefault}{\sfdefault}{m}{sl}
+\SetMathAlphabet{\mathsfit}{bold}{\encodingdefault}{\sfdefault}{bx}{n}
+\newcommand{\tens}[1]{\bm{\mathsfit{#1}}}
+\def\tA{{\tens{A}}}
+\def\tB{{\tens{B}}}
+\def\tC{{\tens{C}}}
+\def\tD{{\tens{D}}}
+\def\tE{{\tens{E}}}
+\def\tF{{\tens{F}}}
+\def\tG{{\tens{G}}}
+\def\tH{{\tens{H}}}
+\def\tI{{\tens{I}}}
+\def\tJ{{\tens{J}}}
+\def\tK{{\tens{K}}}
+\def\tL{{\tens{L}}}
+\def\tM{{\tens{M}}}
+\def\tN{{\tens{N}}}
+\def\tO{{\tens{O}}}
+\def\tP{{\tens{P}}}
+\def\tQ{{\tens{Q}}}
+\def\tR{{\tens{R}}}
+\def\tS{{\tens{S}}}
+\def\tT{{\tens{T}}}
+\def\tU{{\tens{U}}}
+\def\tV{{\tens{V}}}
+\def\tW{{\tens{W}}}
+\def\tX{{\tens{X}}}
+\def\tY{{\tens{Y}}}
+\def\tZ{{\tens{Z}}}
+
+
+% Graph
+\def\gA{{\mathcal{A}}}
+\def\gB{{\mathcal{B}}}
+\def\gC{{\mathcal{C}}}
+\def\gD{{\mathcal{D}}}
+\def\gE{{\mathcal{E}}}
+\def\gF{{\mathcal{F}}}
+\def\gG{{\mathcal{G}}}
+\def\gH{{\mathcal{H}}}
+\def\gI{{\mathcal{I}}}
+\def\gJ{{\mathcal{J}}}
+\def\gK{{\mathcal{K}}}
+\def\gL{{\mathcal{L}}}
+\def\gM{{\mathcal{M}}}
+\def\gN{{\mathcal{N}}}
+\def\gO{{\mathcal{O}}}
+\def\gP{{\mathcal{P}}}
+\def\gQ{{\mathcal{Q}}}
+\def\gR{{\mathcal{R}}}
+\def\gS{{\mathcal{S}}}
+\def\gT{{\mathcal{T}}}
+\def\gU{{\mathcal{U}}}
+\def\gV{{\mathcal{V}}}
+\def\gW{{\mathcal{W}}}
+\def\gX{{\mathcal{X}}}
+\def\gY{{\mathcal{Y}}}
+\def\gZ{{\mathcal{Z}}}
+
+% Sets
+\def\sA{{\mathbb{A}}}
+\def\sB{{\mathbb{B}}}
+\def\sC{{\mathbb{C}}}
+\def\sD{{\mathbb{D}}}
+% Don't use a set called E, because this would be the same as our symbol
+% for expectation.
+\def\sF{{\mathbb{F}}}
+\def\sG{{\mathbb{G}}}
+\def\sH{{\mathbb{H}}}
+\def\sI{{\mathbb{I}}}
+\def\sJ{{\mathbb{J}}}
+\def\sK{{\mathbb{K}}}
+\def\sL{{\mathbb{L}}}
+\def\sM{{\mathbb{M}}}
+\def\sN{{\mathbb{N}}}
+\def\sO{{\mathbb{O}}}
+\def\sP{{\mathbb{P}}}
+\def\sQ{{\mathbb{Q}}}
+\def\sR{{\mathbb{R}}}
+\def\sS{{\mathbb{S}}}
+\def\sT{{\mathbb{T}}}
+\def\sU{{\mathbb{U}}}
+\def\sV{{\mathbb{V}}}
+\def\sW{{\mathbb{W}}}
+\def\sX{{\mathbb{X}}}
+\def\sY{{\mathbb{Y}}}
+\def\sZ{{\mathbb{Z}}}
+
+% Entries of a matrix
+\def\emLambda{{\Lambda}}
+\def\emA{{A}}
+\def\emB{{B}}
+\def\emC{{C}}
+\def\emD{{D}}
+\def\emE{{E}}
+\def\emF{{F}}
+\def\emG{{G}}
+\def\emH{{H}}
+\def\emI{{I}}
+\def\emJ{{J}}
+\def\emK{{K}}
+\def\emL{{L}}
+\def\emM{{M}}
+\def\emN{{N}}
+\def\emO{{O}}
+\def\emP{{P}}
+\def\emQ{{Q}}
+\def\emR{{R}}
+\def\emS{{S}}
+\def\emT{{T}}
+\def\emU{{U}}
+\def\emV{{V}}
+\def\emW{{W}}
+\def\emX{{X}}
+\def\emY{{Y}}
+\def\emZ{{Z}}
+\def\emSigma{{\Sigma}}
+
+% entries of a tensor
+% Same font as tensor, without \bm wrapper
+\newcommand{\etens}[1]{\mathsfit{#1}}
+\def\etLambda{{\etens{\Lambda}}}
+\def\etA{{\etens{A}}}
+\def\etB{{\etens{B}}}
+\def\etC{{\etens{C}}}
+\def\etD{{\etens{D}}}
+\def\etE{{\etens{E}}}
+\def\etF{{\etens{F}}}
+\def\etG{{\etens{G}}}
+\def\etH{{\etens{H}}}
+\def\etI{{\etens{I}}}
+\def\etJ{{\etens{J}}}
+\def\etK{{\etens{K}}}
+\def\etL{{\etens{L}}}
+\def\etM{{\etens{M}}}
+\def\etN{{\etens{N}}}
+\def\etO{{\etens{O}}}
+\def\etP{{\etens{P}}}
+\def\etQ{{\etens{Q}}}
+\def\etR{{\etens{R}}}
+\def\etS{{\etens{S}}}
+\def\etT{{\etens{T}}}
+\def\etU{{\etens{U}}}
+\def\etV{{\etens{V}}}
+\def\etW{{\etens{W}}}
+\def\etX{{\etens{X}}}
+\def\etY{{\etens{Y}}}
+\def\etZ{{\etens{Z}}}
+
+% The true underlying data generating distribution
+\newcommand{\pdata}{p_{\rm{data}}}
+% The empirical distribution defined by the training set
+\newcommand{\ptrain}{\hat{p}_{\rm{data}}}
+\newcommand{\Ptrain}{\hat{P}_{\rm{data}}}
+% The model distribution
+\newcommand{\pmodel}{p_{\rm{model}}}
+\newcommand{\Pmodel}{P_{\rm{model}}}
+\newcommand{\ptildemodel}{\tilde{p}_{\rm{model}}}
+% Stochastic autoencoder distributions
+\newcommand{\pencode}{p_{\rm{encoder}}}
+\newcommand{\pdecode}{p_{\rm{decoder}}}
+\newcommand{\precons}{p_{\rm{reconstruct}}}
+
+\newcommand{\laplace}{\mathrm{Laplace}} % Laplace distribution
+
+\newcommand{\E}{\mathbb{E}}
+\newcommand{\Ls}{\mathcal{L}}
+\newcommand{\R}{\mathbb{R}}
+\newcommand{\emp}{\tilde{p}}
+\newcommand{\lr}{\alpha}
+\newcommand{\reg}{\lambda}
+\newcommand{\rect}{\mathrm{rectifier}}
+\newcommand{\softmax}{\mathrm{softmax}}
+\newcommand{\sigmoid}{\sigma}
+\newcommand{\softplus}{\zeta}
+\newcommand{\KL}{D_{\mathrm{KL}}}
+\newcommand{\Var}{\mathrm{Var}}
+\newcommand{\standarderror}{\mathrm{SE}}
+\newcommand{\Cov}{\mathrm{Cov}}
+% Wolfram Mathworld says $L^2$ is for function spaces and $\ell^2$ is for vectors
+% But then they seem to use $L^2$ for vectors throughout the site, and so does
+% wikipedia.
+\newcommand{\normlzero}{L^0}
+\newcommand{\normlone}{L^1}
+\newcommand{\normltwo}{L^2}
+\newcommand{\normlp}{L^p}
+\newcommand{\normmax}{L^\infty}
+
+\newcommand{\parents}{Pa} % See usage in notation.tex. Chosen to match Daphne's book.
+
+\DeclareMathOperator*{\argmax}{arg\,max}
+\DeclareMathOperator*{\argmin}{arg\,min}
+
+\DeclareMathOperator{\sign}{sign}
+\DeclareMathOperator{\Tr}{Tr}
+\let\ab\allowbreak
diff --git a/.agents/skills/ml-paper-writing/templates/colm2025/natbib.sty b/.agents/skills/ml-paper-writing/templates/colm2025/natbib.sty
new file mode 100644
index 0000000..ff0d0b9
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/colm2025/natbib.sty
@@ -0,0 +1,1246 @@
+%%
+%% This is file `natbib.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% natbib.dtx (with options: `package,all')
+%% =============================================
+%% IMPORTANT NOTICE:
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or any later version.
+%%
+%% This is a generated file.
+%% It may not be distributed without the original source file natbib.dtx.
+%%
+%% Full documentation can be obtained by LaTeXing that original file.
+%% Only a few abbreviated comments remain here to describe the usage.
+%% =============================================
+%% Copyright 1993-2009 Patrick W Daly
+%% Max-Planck-Institut f\"ur Sonnensystemforschung
+%% Max-Planck-Str. 2
+%% D-37191 Katlenburg-Lindau
+%% Germany
+%% E-mail: daly@mps.mpg.de
+\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\ProvidesPackage{natbib}
+ [2009/07/16 8.31 (PWD, AO)]
+
+ % This package reimplements the LaTeX \cite command to be used for various
+ % citation styles, both author-year and numerical. It accepts BibTeX
+ % output intended for many other packages, and therefore acts as a
+ % general, all-purpose citation-style interface.
+ %
+ % With standard numerical .bst files, only numerical citations are
+ % possible. With an author-year .bst file, both numerical and
+ % author-year citations are possible.
+ %
+ % If author-year citations are selected, \bibitem must have one of the
+ % following forms:
+ % \bibitem[Jones et al.(1990)]{key}...
+ % \bibitem[Jones et al.(1990)Jones, Baker, and Williams]{key}...
+ % \bibitem[Jones et al., 1990]{key}...
+ % \bibitem[\protect\citeauthoryear{Jones, Baker, and Williams}{Jones
+ % et al.}{1990}]{key}...
+ % \bibitem[\protect\citeauthoryear{Jones et al.}{1990}]{key}...
+ % \bibitem[\protect\astroncite{Jones et al.}{1990}]{key}...
+ % \bibitem[\protect\citename{Jones et al., }1990]{key}...
+ % \harvarditem[Jones et al.]{Jones, Baker, and Williams}{1990}{key}...
+ %
+ % This is either to be made up manually, or to be generated by an
+ % appropriate .bst file with BibTeX.
+ % Author-year mode || Numerical mode
+ % Then, \citet{key} ==>> Jones et al. (1990) || Jones et al. [21]
+ % \citep{key} ==>> (Jones et al., 1990) || [21]
+ % Multiple citations as normal:
+ % \citep{key1,key2} ==>> (Jones et al., 1990; Smith, 1989) || [21,24]
+ % or (Jones et al., 1990, 1991) || [21,24]
+ % or (Jones et al., 1990a,b) || [21,24]
+ % \cite{key} is the equivalent of \citet{key} in author-year mode
+ % and of \citep{key} in numerical mode
+ % Full author lists may be forced with \citet* or \citep*, e.g.
+ % \citep*{key} ==>> (Jones, Baker, and Williams, 1990)
+ % Optional notes as:
+ % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
+ % \citep[e.g.,][]{key} ==>> (e.g., Jones et al., 1990)
+ % \citep[see][pg. 34]{key}==>> (see Jones et al., 1990, pg. 34)
+ % (Note: in standard LaTeX, only one note is allowed, after the ref.
+ % Here, one note is like the standard, two make pre- and post-notes.)
+ % \citealt{key} ==>> Jones et al. 1990
+ % \citealt*{key} ==>> Jones, Baker, and Williams 1990
+ % \citealp{key} ==>> Jones et al., 1990
+ % \citealp*{key} ==>> Jones, Baker, and Williams, 1990
+ % Additional citation possibilities (both author-year and numerical modes)
+ % \citeauthor{key} ==>> Jones et al.
+ % \citeauthor*{key} ==>> Jones, Baker, and Williams
+ % \citeyear{key} ==>> 1990
+ % \citeyearpar{key} ==>> (1990)
+ % \citetext{priv. comm.} ==>> (priv. comm.)
+ % \citenum{key} ==>> 11 [non-superscripted]
+ % Note: full author lists depends on whether the bib style supports them;
+ % if not, the abbreviated list is printed even when full requested.
+ %
+ % For names like della Robbia at the start of a sentence, use
+ % \Citet{dRob98} ==>> Della Robbia (1998)
+ % \Citep{dRob98} ==>> (Della Robbia, 1998)
+ % \Citeauthor{dRob98} ==>> Della Robbia
+ %
+ %
+ % Citation aliasing is achieved with
+ % \defcitealias{key}{text}
+ % \citetalias{key} ==>> text
+ % \citepalias{key} ==>> (text)
+ %
+ % Defining the citation mode and punctual (citation style)
+ % \setcitestyle{<comma-separated list of keywords, same
+ % as the package options>}
+ % Example: \setcitestyle{square,semicolon}
+ % Alternatively:
+ % Use \bibpunct with 6 mandatory arguments:
+ % 1. opening bracket for citation
+ % 2. closing bracket
+ % 3. citation separator (for multiple citations in one \cite)
+ % 4. the letter n for numerical styles, s for superscripts
+ % else anything for author-year
+ % 5. punctuation between authors and date
+ % 6. punctuation between years (or numbers) when common authors missing
+ % One optional argument is the character coming before post-notes. It
+ % appears in square braces before all other arguments. May be left off.
+ % Example (and default) \bibpunct[, ]{(}{)}{;}{a}{,}{,}
+ %
+ % To make this automatic for a given bib style, named newbib, say, make
+ % a local configuration file, natbib.cfg, with the definition
+ % \newcommand{\bibstyle@newbib}{\bibpunct...}
+ % Then the \bibliographystyle{newbib} will cause \bibstyle@newbib to
+ % be called on THE NEXT LATEX RUN (via the aux file).
+ %
+ % Such preprogrammed definitions may be invoked anywhere in the text
+ % by calling \citestyle{newbib}. This is only useful if the style specified
+ % differs from that in \bibliographystyle.
+ %
+ % With \citeindextrue and \citeindexfalse, one can control whether the
+ % \cite commands make an automatic entry of the citation in the .idx
+ % indexing file. For this, \makeindex must also be given in the preamble.
+ %
+ % Package Options: (for selecting punctuation)
+ % round - round parentheses are used (default)
+ % square - square brackets are used [option]
+ % curly - curly braces are used {option}
+ % angle - angle brackets are used <option>
+ % semicolon - multiple citations separated by semi-colon (default)
+ % colon - same as semicolon, an earlier confusion
+ % comma - separated by comma
+ % authoryear - selects author-year citations (default)
+ % numbers- selects numerical citations
+ % super - numerical citations as superscripts
+ % sort - sorts multiple citations according to order in ref. list
+ % sort&compress - like sort, but also compresses numerical citations
+ % compress - compresses without sorting
+ % longnamesfirst - makes first citation full author list
+ % sectionbib - puts bibliography in a \section* instead of \chapter*
+ % merge - allows the citation key to have a * prefix,
+ % signifying to merge its reference with that of the previous citation.
+ % elide - if references are merged, repeated portions of later ones may be removed.
+ % mcite - recognizes and ignores the * prefix for merging.
+ % Punctuation so selected dominates over any predefined ones.
+ % Package options are called as, e.g.
+ % \usepackage[square,comma]{natbib}
+ % LaTeX the source file natbib.dtx to obtain more details
+ % or the file natnotes.tex for a brief reference sheet.
+ %-----------------------------------------------------------
+\providecommand\@ifxundefined[1]{%
+ \ifx#1\@undefined\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}%
+\providecommand\@ifnum[1]{%
+ \ifnum#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}%
+\providecommand\@ifx[1]{%
+ \ifx#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}%
+\providecommand\appdef[2]{%
+ \toks@\expandafter{#1}\@temptokena{#2}%
+ \edef#1{\the\toks@\the\@temptokena}%
+}%
+\@ifclassloaded{agu2001}{\PackageError{natbib}
+ {The agu2001 class already includes natbib coding,\MessageBreak
+ so you should not add it explicitly}
+ {Type <Return> for now, but then later remove\MessageBreak
+ the command \protect\usepackage{natbib} from the document}
+ \endinput}{}
+\@ifclassloaded{agutex}{\PackageError{natbib}
+ {The AGUTeX class already includes natbib coding,\MessageBreak
+ so you should not add it explicitly}
+ {Type <Return> for now, but then later remove\MessageBreak
+ the command \protect\usepackage{natbib} from the document}
+ \endinput}{}
+\@ifclassloaded{aguplus}{\PackageError{natbib}
+ {The aguplus class already includes natbib coding,\MessageBreak
+ so you should not add it explicitly}
+ {Type <Return> for now, but then later remove\MessageBreak
+ the command \protect\usepackage{natbib} from the document}
+ \endinput}{}
+\@ifclassloaded{nlinproc}{\PackageError{natbib}
+ {The nlinproc class already includes natbib coding,\MessageBreak
+ so you should not add it explicitly}
+ {Type <Return> for now, but then later remove\MessageBreak
+ the command \protect\usepackage{natbib} from the document}
+ \endinput}{}
+\@ifclassloaded{egs}{\PackageError{natbib}
+ {The egs class already includes natbib coding,\MessageBreak
+ so you should not add it explicitly}
+ {Type <Return> for now, but then later remove\MessageBreak
+ the command \protect\usepackage{natbib} from the document}
+ \endinput}{}
+\@ifclassloaded{egu}{\PackageError{natbib}
+ {The egu class already includes natbib coding,\MessageBreak
+ so you should not add it explicitly}
+ {Type <Return> for now, but then later remove\MessageBreak
+ the command \protect\usepackage{natbib} from the document}
+ \endinput}{}
+ % Define citation punctuation for some author-year styles
+ % One may add and delete at this point
+ % Or put additions into local configuration file natbib.cfg
+\newcommand\bibstyle@chicago{\bibpunct{(}{)}{;}{a}{,}{,}}
+\newcommand\bibstyle@named{\bibpunct{[}{]}{;}{a}{,}{,}}
+\newcommand\bibstyle@agu{\bibpunct{[}{]}{;}{a}{,}{,~}}%Amer. Geophys. Union
+\newcommand\bibstyle@copernicus{\bibpunct{(}{)}{;}{a}{,}{,}}%Copernicus Publications
+\let\bibstyle@egu=\bibstyle@copernicus
+\let\bibstyle@egs=\bibstyle@copernicus
+\newcommand\bibstyle@agsm{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}}
+\newcommand\bibstyle@kluwer{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}}
+\newcommand\bibstyle@dcu{\bibpunct{(}{)}{;}{a}{;}{,}\gdef\harvardand{and}}
+\newcommand\bibstyle@aa{\bibpunct{(}{)}{;}{a}{}{,}} %Astronomy & Astrophysics
+\newcommand\bibstyle@pass{\bibpunct{(}{)}{;}{a}{,}{,}}%Planet. & Space Sci
+\newcommand\bibstyle@anngeo{\bibpunct{(}{)}{;}{a}{,}{,}}%Annales Geophysicae
+\newcommand\bibstyle@nlinproc{\bibpunct{(}{)}{;}{a}{,}{,}}%Nonlin.Proc.Geophys.
+ % Define citation punctuation for some numerical styles
+\newcommand\bibstyle@cospar{\bibpunct{/}{/}{,}{n}{}{}%
+ \gdef\bibnumfmt##1{##1.}}
+\newcommand\bibstyle@esa{\bibpunct{(Ref.~}{)}{,}{n}{}{}%
+ \gdef\bibnumfmt##1{##1.\hspace{1em}}}
+\newcommand\bibstyle@nature{\bibpunct{}{}{,}{s}{}{\textsuperscript{,}}%
+ \gdef\bibnumfmt##1{##1.}}
+ % The standard LaTeX styles
+\newcommand\bibstyle@plain{\bibpunct{[}{]}{,}{n}{}{,}}
+\let\bibstyle@alpha=\bibstyle@plain
+\let\bibstyle@abbrv=\bibstyle@plain
+\let\bibstyle@unsrt=\bibstyle@plain
+ % The author-year modifications of the standard styles
+\newcommand\bibstyle@plainnat{\bibpunct{[}{]}{,}{a}{,}{,}}
+\let\bibstyle@abbrvnat=\bibstyle@plainnat
+\let\bibstyle@unsrtnat=\bibstyle@plainnat
+\newif\ifNAT@numbers \NAT@numbersfalse
+\newif\ifNAT@super \NAT@superfalse
+\let\NAT@merge\z@
+\DeclareOption{numbers}{\NAT@numberstrue
+ \ExecuteOptions{square,comma,nobibstyle}}
+\DeclareOption{super}{\NAT@supertrue\NAT@numberstrue
+ \renewcommand\NAT@open{}\renewcommand\NAT@close{}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{authoryear}{\NAT@numbersfalse
+ \ExecuteOptions{round,semicolon,bibstyle}}
+\DeclareOption{round}{%
+ \renewcommand\NAT@open{(} \renewcommand\NAT@close{)}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{square}{%
+ \renewcommand\NAT@open{[} \renewcommand\NAT@close{]}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{angle}{%
+ \renewcommand\NAT@open{$<$} \renewcommand\NAT@close{$>$}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{curly}{%
+ \renewcommand\NAT@open{\{} \renewcommand\NAT@close{\}}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{comma}{\renewcommand\NAT@sep{,}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{semicolon}{\renewcommand\NAT@sep{;}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{colon}{\ExecuteOptions{semicolon}}
+\DeclareOption{nobibstyle}{\let\bibstyle=\@gobble}
+\DeclareOption{bibstyle}{\let\bibstyle=\@citestyle}
+\newif\ifNAT@openbib \NAT@openbibfalse
+\DeclareOption{openbib}{\NAT@openbibtrue}
+\DeclareOption{sectionbib}{\def\NAT@sectionbib{on}}
+\def\NAT@sort{\z@}
+\def\NAT@cmprs{\z@}
+\DeclareOption{sort}{\def\NAT@sort{\@ne}}
+\DeclareOption{compress}{\def\NAT@cmprs{\@ne}}
+\DeclareOption{sort&compress}{\def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}}
+\DeclareOption{mcite}{\let\NAT@merge\@ne}
+\DeclareOption{merge}{\@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}}
+\DeclareOption{elide}{\@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}}
+\@ifpackageloaded{cite}{\PackageWarningNoLine{natbib}
+ {The `cite' package should not be used\MessageBreak
+ with natbib. Use option `sort' instead}\ExecuteOptions{sort}}{}
+\@ifpackageloaded{mcite}{\PackageWarningNoLine{natbib}
+ {The `mcite' package should not be used\MessageBreak
+ with natbib. Use option `merge' instead}\ExecuteOptions{merge}}{}
+\@ifpackageloaded{citeref}{\PackageError{natbib}
+ {The `citeref' package must be loaded after natbib}%
+ {Move \protect\usepackage{citeref} to after \string\usepackage{natbib}}}{}
+\newif\ifNAT@longnames\NAT@longnamesfalse
+\DeclareOption{longnamesfirst}{\NAT@longnamestrue}
+\DeclareOption{nonamebreak}{\def\NAT@nmfmt#1{\mbox{\NAT@up#1}}}
+\def\NAT@nmfmt#1{{\NAT@up#1}}
+\renewcommand\bibstyle[1]{\csname bibstyle@#1\endcsname}
+\AtBeginDocument{\global\let\bibstyle=\@gobble}
+\let\@citestyle\bibstyle
+\newcommand\citestyle[1]{\@citestyle{#1}\let\bibstyle\@gobble}
+\newcommand\bibpunct[7][, ]%
+ {\gdef\NAT@open{#2}\gdef\NAT@close{#3}\gdef
+ \NAT@sep{#4}\global\NAT@numbersfalse
+ \ifx #5n\global\NAT@numberstrue\global\NAT@superfalse
+ \else
+ \ifx #5s\global\NAT@numberstrue\global\NAT@supertrue
+ \fi\fi
+ \gdef\NAT@aysep{#6}\gdef\NAT@yrsep{#7}%
+ \gdef\NAT@cmt{#1}%
+ \NAT@@setcites
+ }
+\newcommand\setcitestyle[1]{
+ \@for\@tempa:=#1\do
+ {\def\@tempb{round}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
+ \def\@tempb{square}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
+ \def\@tempb{angle}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
+ \def\@tempb{curly}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
+ \def\@tempb{semicolon}\ifx\@tempa\@tempb
+ \renewcommand\NAT@sep{;}\fi
+ \def\@tempb{colon}\ifx\@tempa\@tempb
+ \renewcommand\NAT@sep{;}\fi
+ \def\@tempb{comma}\ifx\@tempa\@tempb
+ \renewcommand\NAT@sep{,}\fi
+ \def\@tempb{authoryear}\ifx\@tempa\@tempb
+ \NAT@numbersfalse\fi
+ \def\@tempb{numbers}\ifx\@tempa\@tempb
+ \NAT@numberstrue\NAT@superfalse\fi
+ \def\@tempb{super}\ifx\@tempa\@tempb
+ \NAT@numberstrue\NAT@supertrue\fi
+ \expandafter\NAT@find@eq\@tempa=\relax\@nil
+ \if\@tempc\relax\else
+ \expandafter\NAT@rem@eq\@tempc
+ \def\@tempb{open}\ifx\@tempa\@tempb
+ \xdef\NAT@open{\@tempc}\fi
+ \def\@tempb{close}\ifx\@tempa\@tempb
+ \xdef\NAT@close{\@tempc}\fi
+ \def\@tempb{aysep}\ifx\@tempa\@tempb
+ \xdef\NAT@aysep{\@tempc}\fi
+ \def\@tempb{yysep}\ifx\@tempa\@tempb
+ \xdef\NAT@yrsep{\@tempc}\fi
+ \def\@tempb{notesep}\ifx\@tempa\@tempb
+ \xdef\NAT@cmt{\@tempc}\fi
+ \def\@tempb{citesep}\ifx\@tempa\@tempb
+ \xdef\NAT@sep{\@tempc}\fi
+ \fi
+ }%
+ \NAT@@setcites
+}
+ \def\NAT@find@eq#1=#2\@nil{\def\@tempa{#1}\def\@tempc{#2}}
+ \def\NAT@rem@eq#1={\def\@tempc{#1}}
+ \def\NAT@@setcites{\global\let\bibstyle\@gobble}
+\AtBeginDocument{\let\NAT@@setcites\NAT@set@cites}
+\newcommand\NAT@open{(} \newcommand\NAT@close{)}
+\newcommand\NAT@sep{;}
+\ProcessOptions
+\newcommand\NAT@aysep{,} \newcommand\NAT@yrsep{,}
+\newcommand\NAT@cmt{, }
+\newcommand\NAT@cite%
+ [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi
+ #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup}
+\newcommand\NAT@citenum%
+ [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi
+ #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup}
+\newcommand\NAT@citesuper[3]{\ifNAT@swa
+\if*#2*\else#2\NAT@spacechar\fi
+\unskip\kern\p@\textsuperscript{\NAT@@open#1\NAT@@close}%
+ \if*#3*\else\NAT@spacechar#3\fi\else #1\fi\endgroup}
+\providecommand\textsuperscript[1]{\mbox{$^{\mbox{\scriptsize#1}}$}}
+\begingroup \catcode`\_=8
+\gdef\NAT@ifcat@num#1{%
+ \ifcat_\ifnum\z@<0#1_\else A\fi
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}%
+\endgroup
+\providecommand\@firstofone[1]{#1}
+\newcommand\NAT@citexnum{}
+\def\NAT@citexnum[#1][#2]#3{%
+ \NAT@reset@parser
+ \NAT@sort@cites{#3}%
+ \NAT@reset@citea
+ \@cite{\def\NAT@num{-1}\let\NAT@last@yr\relax\let\NAT@nm\@empty
+ \@for\@citeb:=\NAT@cite@list\do
+ {\@safe@activestrue
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \@safe@activesfalse
+ \@ifundefined{b@\@citeb\@extra@b@citeb}{%
+ {\reset@font\bfseries?}
+ \NAT@citeundefined\PackageWarning{natbib}%
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+ {\let\NAT@last@num\NAT@num\let\NAT@last@nm\NAT@nm
+ \NAT@parse{\@citeb}%
+ \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{%
+ \let\NAT@name=\NAT@all@names
+ \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}%
+ \fi
+ \ifNAT@full\let\NAT@nm\NAT@all@names\else
+ \let\NAT@nm\NAT@name\fi
+ \ifNAT@swa
+ \@ifnum{\NAT@ctype>\@ne}{%
+ \@citea
+ \NAT@hyper@{\@ifnum{\NAT@ctype=\tw@}{\NAT@test{\NAT@ctype}}{\NAT@alias}}%
+ }{%
+ \@ifnum{\NAT@cmprs>\z@}{%
+ \NAT@ifcat@num\NAT@num
+ {\let\NAT@nm=\NAT@num}%
+ {\def\NAT@nm{-2}}%
+ \NAT@ifcat@num\NAT@last@num
+ {\@tempcnta=\NAT@last@num\relax}%
+ {\@tempcnta\m@ne}%
+ \@ifnum{\NAT@nm=\@tempcnta}{%
+ \@ifnum{\NAT@merge>\@ne}{}{\NAT@last@yr@mbox}%
+ }{%
+ \advance\@tempcnta by\@ne
+ \@ifnum{\NAT@nm=\@tempcnta}{%
+ \ifx\NAT@last@yr\relax
+ \def@NAT@last@yr{\@citea}%
+ \else
+ \def@NAT@last@yr{--\NAT@penalty}%
+ \fi
+ }{%
+ \NAT@last@yr@mbox
+ }%
+ }%
+ }{%
+ \@tempswatrue
+ \@ifnum{\NAT@merge>\@ne}{\@ifnum{\NAT@last@num=\NAT@num\relax}{\@tempswafalse}{}}{}%
+ \if@tempswa\NAT@citea@mbox\fi
+ }%
+ }%
+ \NAT@def@citea
+ \else
+ \ifcase\NAT@ctype
+ \ifx\NAT@last@nm\NAT@nm \NAT@yrsep\NAT@penalty\NAT@space\else
+ \@citea \NAT@test{\@ne}\NAT@spacechar\NAT@mbox{\NAT@super@kern\NAT@@open}%
+ \fi
+ \if*#1*\else#1\NAT@spacechar\fi
+ \NAT@mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}%
+ \NAT@def@citea@box
+ \or
+ \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}%
+ \or
+ \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}%
+ \or
+ \NAT@hyper@citea@space\NAT@alias
+ \fi
+ \fi
+ }%
+ }%
+ \@ifnum{\NAT@cmprs>\z@}{\NAT@last@yr}{}%
+ \ifNAT@swa\else
+ \@ifnum{\NAT@ctype=\z@}{%
+ \if*#2*\else\NAT@cmt#2\fi
+ }{}%
+ \NAT@mbox{\NAT@@close}%
+ \fi
+ }{#1}{#2}%
+}%
+\def\NAT@citea@mbox{%
+ \@citea\mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}%
+}%
+\def\NAT@hyper@#1{%
+ \hyper@natlinkstart{\@citeb\@extra@b@citeb}#1\hyper@natlinkend
+}%
+\def\NAT@hyper@citea#1{%
+ \@citea
+ \NAT@hyper@{#1}%
+ \NAT@def@citea
+}%
+\def\NAT@hyper@citea@space#1{%
+ \@citea
+ \NAT@hyper@{#1}%
+ \NAT@def@citea@space
+}%
+\def\def@NAT@last@yr#1{%
+ \protected@edef\NAT@last@yr{%
+ #1%
+ \noexpand\mbox{%
+ \noexpand\hyper@natlinkstart{\@citeb\@extra@b@citeb}%
+ {\noexpand\citenumfont{\NAT@num}}%
+ \noexpand\hyper@natlinkend
+ }%
+ }%
+}%
+\def\NAT@last@yr@mbox{%
+ \NAT@last@yr\let\NAT@last@yr\relax
+ \NAT@citea@mbox
+}%
+\newcommand\NAT@test[1]{%
+ \@ifnum{#1=\@ne}{%
+ \ifx\NAT@nm\NAT@noname
+ \begingroup\reset@font\bfseries(author?)\endgroup
+ \PackageWarning{natbib}{%
+ Author undefined for citation`\@citeb' \MessageBreak on page \thepage%
+ }%
+ \else \NAT@nm
+ \fi
+ }{%
+ \if\relax\NAT@date\relax
+ \begingroup\reset@font\bfseries(year?)\endgroup
+ \PackageWarning{natbib}{%
+ Year undefined for citation`\@citeb' \MessageBreak on page \thepage%
+ }%
+ \else \NAT@date
+ \fi
+ }%
+}%
+\let\citenumfont=\@empty
+\newcommand\NAT@citex{}
+\def\NAT@citex%
+ [#1][#2]#3{%
+ \NAT@reset@parser
+ \NAT@sort@cites{#3}%
+ \NAT@reset@citea
+ \@cite{\let\NAT@nm\@empty\let\NAT@year\@empty
+ \@for\@citeb:=\NAT@cite@list\do
+ {\@safe@activestrue
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \@safe@activesfalse
+ \@ifundefined{b@\@citeb\@extra@b@citeb}{\@citea%
+ {\reset@font\bfseries ?}\NAT@citeundefined
+ \PackageWarning{natbib}%
+ {Citation `\@citeb' on page \thepage \space undefined}\def\NAT@date{}}%
+ {\let\NAT@last@nm=\NAT@nm\let\NAT@last@yr=\NAT@year
+ \NAT@parse{\@citeb}%
+ \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{%
+ \let\NAT@name=\NAT@all@names
+ \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}%
+ \fi
+ \ifNAT@full\let\NAT@nm\NAT@all@names\else
+ \let\NAT@nm\NAT@name\fi
+ \ifNAT@swa\ifcase\NAT@ctype
+ \if\relax\NAT@date\relax
+ \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}\NAT@date}%
+ \else
+ \ifx\NAT@last@nm\NAT@nm\NAT@yrsep
+ \ifx\NAT@last@yr\NAT@year
+ \def\NAT@temp{{?}}%
+ \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}%
+ {Multiple citation on page \thepage: same authors and
+ year\MessageBreak without distinguishing extra
+ letter,\MessageBreak appears as question mark}\fi
+ \NAT@hyper@{\NAT@exlab}%
+ \else\unskip\NAT@spacechar
+ \NAT@hyper@{\NAT@date}%
+ \fi
+ \else
+ \@citea\NAT@hyper@{%
+ \NAT@nmfmt{\NAT@nm}%
+ \hyper@natlinkbreak{%
+ \NAT@aysep\NAT@spacechar}{\@citeb\@extra@b@citeb
+ }%
+ \NAT@date
+ }%
+ \fi
+ \fi
+ \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
+ \or\@citea\NAT@hyper@{\NAT@date}%
+ \or\@citea\NAT@hyper@{\NAT@alias}%
+ \fi \NAT@def@citea
+ \else
+ \ifcase\NAT@ctype
+ \if\relax\NAT@date\relax
+ \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
+ \else
+ \ifx\NAT@last@nm\NAT@nm\NAT@yrsep
+ \ifx\NAT@last@yr\NAT@year
+ \def\NAT@temp{{?}}%
+ \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}%
+ {Multiple citation on page \thepage: same authors and
+ year\MessageBreak without distinguishing extra
+ letter,\MessageBreak appears as question mark}\fi
+ \NAT@hyper@{\NAT@exlab}%
+ \else
+ \unskip\NAT@spacechar
+ \NAT@hyper@{\NAT@date}%
+ \fi
+ \else
+ \@citea\NAT@hyper@{%
+ \NAT@nmfmt{\NAT@nm}%
+ \hyper@natlinkbreak{\NAT@spacechar\NAT@@open\if*#1*\else#1\NAT@spacechar\fi}%
+ {\@citeb\@extra@b@citeb}%
+ \NAT@date
+ }%
+ \fi
+ \fi
+ \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
+ \or\@citea\NAT@hyper@{\NAT@date}%
+ \or\@citea\NAT@hyper@{\NAT@alias}%
+ \fi
+ \if\relax\NAT@date\relax
+ \NAT@def@citea
+ \else
+ \NAT@def@citea@close
+ \fi
+ \fi
+ }}\ifNAT@swa\else\if*#2*\else\NAT@cmt#2\fi
+ \if\relax\NAT@date\relax\else\NAT@@close\fi\fi}{#1}{#2}}
+\def\NAT@spacechar{\ }%
+\def\NAT@separator{\NAT@sep\NAT@penalty}%
+\def\NAT@reset@citea{\c@NAT@ctr\@ne\let\@citea\@empty}%
+\def\NAT@def@citea{\def\@citea{\NAT@separator\NAT@space}}%
+\def\NAT@def@citea@space{\def\@citea{\NAT@separator\NAT@spacechar}}%
+\def\NAT@def@citea@close{\def\@citea{\NAT@@close\NAT@separator\NAT@space}}%
+\def\NAT@def@citea@box{\def\@citea{\NAT@mbox{\NAT@@close}\NAT@separator\NAT@spacechar}}%
+\newif\ifNAT@par \NAT@partrue
+\newcommand\NAT@@open{\ifNAT@par\NAT@open\fi}
+\newcommand\NAT@@close{\ifNAT@par\NAT@close\fi}
+\newcommand\NAT@alias{\@ifundefined{al@\@citeb\@extra@b@citeb}{%
+ {\reset@font\bfseries(alias?)}\PackageWarning{natbib}
+ {Alias undefined for citation `\@citeb'
+ \MessageBreak on page \thepage}}{\@nameuse{al@\@citeb\@extra@b@citeb}}}
+\let\NAT@up\relax
+\newcommand\NAT@Up[1]{{\let\protect\@unexpandable@protect\let~\relax
+ \expandafter\NAT@deftemp#1}\expandafter\NAT@UP\NAT@temp}
+\newcommand\NAT@deftemp[1]{\xdef\NAT@temp{#1}}
+\newcommand\NAT@UP[1]{\let\@tempa\NAT@UP\ifcat a#1\MakeUppercase{#1}%
+ \let\@tempa\relax\else#1\fi\@tempa}
+\newcommand\shortcites[1]{%
+ \@bsphack\@for\@citeb:=#1\do
+ {\@safe@activestrue
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \@safe@activesfalse
+ \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}\@esphack}
+\newcommand\NAT@biblabel[1]{\hfill}
+\newcommand\NAT@biblabelnum[1]{\bibnumfmt{#1}}
+\let\bibnumfmt\@empty
+\providecommand\@biblabel[1]{[#1]}
+\AtBeginDocument{\ifx\bibnumfmt\@empty\let\bibnumfmt\@biblabel\fi}
+\newcommand\NAT@bibsetnum[1]{\settowidth\labelwidth{\@biblabel{#1}}%
+ \setlength{\leftmargin}{\labelwidth}\addtolength{\leftmargin}{\labelsep}%
+ \setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@}%
+ \ifNAT@openbib
+ \addtolength{\leftmargin}{\bibindent}%
+ \setlength{\itemindent}{-\bibindent}%
+ \setlength{\listparindent}{\itemindent}%
+ \setlength{\parsep}{0pt}%
+ \fi
+}
+\newlength{\bibhang}
+\setlength{\bibhang}{1em}
+\newlength{\bibsep}
+ {\@listi \global\bibsep\itemsep \global\advance\bibsep by\parsep}
+
+\newcommand\NAT@bibsetup%
+ [1]{\setlength{\leftmargin}{\bibhang}\setlength{\itemindent}{-\leftmargin}%
+ \setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@}}
+\newcommand\NAT@set@cites{%
+ \ifNAT@numbers
+ \ifNAT@super \let\@cite\NAT@citesuper
+ \def\NAT@mbox##1{\unskip\nobreak\textsuperscript{##1}}%
+ \let\citeyearpar=\citeyear
+ \let\NAT@space\relax
+ \def\NAT@super@kern{\kern\p@}%
+ \else
+ \let\NAT@mbox=\mbox
+ \let\@cite\NAT@citenum
+ \let\NAT@space\NAT@spacechar
+ \let\NAT@super@kern\relax
+ \fi
+ \let\@citex\NAT@citexnum
+ \let\@biblabel\NAT@biblabelnum
+ \let\@bibsetup\NAT@bibsetnum
+ \renewcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@num\NAT@close}%
+ \def\natexlab##1{}%
+ \def\NAT@penalty{\penalty\@m}%
+ \else
+ \let\@cite\NAT@cite
+ \let\@citex\NAT@citex
+ \let\@biblabel\NAT@biblabel
+ \let\@bibsetup\NAT@bibsetup
+ \let\NAT@space\NAT@spacechar
+ \let\NAT@penalty\@empty
+ \renewcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@date\NAT@close}%
+ \def\natexlab##1{##1}%
+ \fi}
+\AtBeginDocument{\NAT@set@cites}
+\AtBeginDocument{\ifx\SK@def\@undefined\else
+\ifx\SK@cite\@empty\else
+ \SK@def\@citex[#1][#2]#3{\SK@\SK@@ref{#3}\SK@@citex[#1][#2]{#3}}\fi
+\ifx\SK@citeauthor\@undefined\def\HAR@checkdef{}\else
+ \let\citeauthor\SK@citeauthor
+ \let\citefullauthor\SK@citefullauthor
+ \let\citeyear\SK@citeyear\fi
+\fi}
+\newif\ifNAT@full\NAT@fullfalse
+\newif\ifNAT@swa
+\DeclareRobustCommand\citet
+ {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@partrue
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\newcommand\NAT@citetp{\@ifnextchar[{\NAT@@citetp}{\NAT@@citetp[]}}
+\newcommand\NAT@@citetp{}
+\def\NAT@@citetp[#1]{\@ifnextchar[{\@citex[#1]}{\@citex[][#1]}}
+\DeclareRobustCommand\citep
+ {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@partrue
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\cite
+ {\begingroup\let\NAT@ctype\z@\NAT@partrue\NAT@swatrue
+ \@ifstar{\NAT@fulltrue\NAT@cites}{\NAT@fullfalse\NAT@cites}}
+\newcommand\NAT@cites{\@ifnextchar [{\NAT@@citetp}{%
+ \ifNAT@numbers\else
+ \NAT@swafalse
+ \fi
+ \NAT@@citetp[]}}
+\DeclareRobustCommand\citealt
+ {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@parfalse
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\citealp
+ {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\citenum
+ {\begingroup
+ \NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse\let\textsuperscript\NAT@spacechar
+ \NAT@citexnum[][]}
+\DeclareRobustCommand\citeauthor
+ {\begingroup\NAT@swafalse\let\NAT@ctype\@ne\NAT@parfalse
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citet
+ {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@partrue
+ \let\NAT@up\NAT@Up
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citep
+ {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@partrue
+ \let\NAT@up\NAT@Up
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citealt
+ {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@parfalse
+ \let\NAT@up\NAT@Up
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citealp
+ {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse
+ \let\NAT@up\NAT@Up
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citeauthor
+ {\begingroup\NAT@swafalse\let\NAT@ctype\@ne\NAT@parfalse
+ \let\NAT@up\NAT@Up
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\citeyear
+ {\begingroup\NAT@swafalse\let\NAT@ctype\tw@\NAT@parfalse\NAT@citetp}
+\DeclareRobustCommand\citeyearpar
+ {\begingroup\NAT@swatrue\let\NAT@ctype\tw@\NAT@partrue\NAT@citetp}
+\newcommand\citetext[1]{\NAT@open#1\NAT@close}
+\DeclareRobustCommand\citefullauthor
+ {\citeauthor*}
+\newcommand\defcitealias[2]{%
+ \@ifundefined{al@#1\@extra@b@citeb}{}
+ {\PackageWarning{natbib}{Overwriting existing alias for citation #1}}
+ \@namedef{al@#1\@extra@b@citeb}{#2}}
+\DeclareRobustCommand\citetalias{\begingroup
+ \NAT@swafalse\let\NAT@ctype\thr@@\NAT@parfalse\NAT@citetp}
+\DeclareRobustCommand\citepalias{\begingroup
+ \NAT@swatrue\let\NAT@ctype\thr@@\NAT@partrue\NAT@citetp}
+\renewcommand\nocite[1]{\@bsphack
+ \@for\@citeb:=#1\do{%
+ \@safe@activestrue
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \@safe@activesfalse
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
+ \if*\@citeb\else
+ \@ifundefined{b@\@citeb\@extra@b@citeb}{%
+ \NAT@citeundefined \PackageWarning{natbib}%
+ {Citation `\@citeb' undefined}}{}\fi}%
+ \@esphack}
+\newcommand\NAT@parse[1]{%
+ \begingroup
+ \let\protect=\@unexpandable@protect
+ \let~\relax
+ \let\active@prefix=\@gobble
+ \edef\NAT@temp{\csname b@#1\@extra@b@citeb\endcsname}%
+ \aftergroup\NAT@split
+ \expandafter
+ \endgroup
+ \NAT@temp{}{}{}{}{}@@%
+ \expandafter\NAT@parse@date\NAT@date??????@@%
+ \ifciteindex\NAT@index\fi
+}%
+\def\NAT@split#1#2#3#4#5@@{%
+ \gdef\NAT@num{#1}\gdef\NAT@name{#3}\gdef\NAT@date{#2}%
+ \gdef\NAT@all@names{#4}%
+ \ifx\NAT@num\@empty\gdef\NAT@num{0}\fi
+ \ifx\NAT@noname\NAT@all@names \gdef\NAT@all@names{#3}\fi
+}%
+\def\NAT@reset@parser{%
+ \global\let\NAT@num\@empty
+ \global\let\NAT@name\@empty
+ \global\let\NAT@date\@empty
+ \global\let\NAT@all@names\@empty
+}%
+\newcommand\NAT@parse@date{}
+\def\NAT@parse@date#1#2#3#4#5#6@@{%
+ \ifnum\the\catcode`#1=11\def\NAT@year{}\def\NAT@exlab{#1}\else
+ \ifnum\the\catcode`#2=11\def\NAT@year{#1}\def\NAT@exlab{#2}\else
+ \ifnum\the\catcode`#3=11\def\NAT@year{#1#2}\def\NAT@exlab{#3}\else
+ \ifnum\the\catcode`#4=11\def\NAT@year{#1#2#3}\def\NAT@exlab{#4}\else
+ \def\NAT@year{#1#2#3#4}\def\NAT@exlab{{#5}}\fi\fi\fi\fi}
+\newcommand\NAT@index{}
+\let\NAT@makeindex=\makeindex
+\renewcommand\makeindex{\NAT@makeindex
+ \renewcommand\NAT@index{\@bsphack\begingroup
+ \def~{\string~}\@wrindex{\NAT@idxtxt}}}
+\newcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@date\NAT@close}
+\@ifxundefined\@indexfile{}{\let\NAT@makeindex\relax\makeindex}
+\newif\ifciteindex \citeindexfalse
+\newcommand\citeindextype{default}
+\newcommand\NAT@index@alt{{\let\protect=\noexpand\let~\relax
+ \xdef\NAT@temp{\NAT@idxtxt}}\expandafter\NAT@exp\NAT@temp\@nil}
+\newcommand\NAT@exp{}
+\def\NAT@exp#1\@nil{\index[\citeindextype]{#1}}
+
+\AtBeginDocument{%
+\@ifpackageloaded{index}{\let\NAT@index=\NAT@index@alt}{}}
+\newcommand\NAT@ifcmd{\futurelet\NAT@temp\NAT@ifxcmd}
+\newcommand\NAT@ifxcmd{\ifx\NAT@temp\relax\else\expandafter\NAT@bare\fi}
+\def\NAT@bare#1(#2)#3(@)#4\@nil#5{%
+ \if @#2
+ \expandafter\NAT@apalk#1, , \@nil{#5}%
+ \else
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{#3}{#5}%
+\fi
+}
+\newcommand\NAT@wrout[5]{%
+\if@filesw
+ {\let\protect\noexpand\let~\relax
+ \immediate
+ \write\@auxout{\string\bibcite{#5}{{#1}{#2}{{#3}}{{#4}}}}}\fi
+\ignorespaces}
+\def\NAT@noname{{}}
+\renewcommand\bibitem{\@ifnextchar[{\@lbibitem}{\@lbibitem[]}}%
+\let\NAT@bibitem@first@sw\@secondoftwo
+\def\@lbibitem[#1]#2{%
+ \if\relax\@extra@b@citeb\relax\else
+ \@ifundefined{br@#2\@extra@b@citeb}{}{%
+ \@namedef{br@#2}{\@nameuse{br@#2\@extra@b@citeb}}%
+ }%
+ \fi
+ \@ifundefined{b@#2\@extra@b@citeb}{%
+ \def\NAT@num{}%
+ }{%
+ \NAT@parse{#2}%
+ }%
+ \def\NAT@tmp{#1}%
+ \expandafter\let\expandafter\bibitemOpen\csname NAT@b@open@#2\endcsname
+ \expandafter\let\expandafter\bibitemShut\csname NAT@b@shut@#2\endcsname
+ \@ifnum{\NAT@merge>\@ne}{%
+ \NAT@bibitem@first@sw{%
+ \@firstoftwo
+ }{%
+ \@ifundefined{NAT@b*@#2}{%
+ \@firstoftwo
+ }{%
+ \expandafter\def\expandafter\NAT@num\expandafter{\the\c@NAT@ctr}%
+ \@secondoftwo
+ }%
+ }%
+ }{%
+ \@firstoftwo
+ }%
+ {%
+ \global\advance\c@NAT@ctr\@ne
+ \@ifx{\NAT@tmp\@empty}{\@firstoftwo}{%
+ \@secondoftwo
+ }%
+ {%
+ \expandafter\def\expandafter\NAT@num\expandafter{\the\c@NAT@ctr}%
+ \global\NAT@stdbsttrue
+ }{}%
+ \bibitem@fin
+ \item[\hfil\NAT@anchor{#2}{\NAT@num}]%
+ \global\let\NAT@bibitem@first@sw\@secondoftwo
+ \NAT@bibitem@init
+ }%
+ {%
+ \NAT@anchor{#2}{}%
+ \NAT@bibitem@cont
+ \bibitem@fin
+ }%
+ \@ifx{\NAT@tmp\@empty}{%
+ \NAT@wrout{\the\c@NAT@ctr}{}{}{}{#2}%
+ }{%
+ \expandafter\NAT@ifcmd\NAT@tmp(@)(@)\@nil{#2}%
+ }%
+}%
+\def\bibitem@fin{%
+ \@ifxundefined\@bibstop{}{\csname bibitem@\@bibstop\endcsname}%
+}%
+\def\NAT@bibitem@init{%
+ \let\@bibstop\@undefined
+}%
+\def\NAT@bibitem@cont{%
+ \let\bibitem@Stop\bibitemStop
+ \let\bibitem@NoStop\bibitemContinue
+}%
+\def\BibitemOpen{%
+ \bibitemOpen
+}%
+\def\BibitemShut#1{%
+ \bibitemShut
+ \def\@bibstop{#1}%
+ \let\bibitem@Stop\bibitemStop
+ \let\bibitem@NoStop\bibitemNoStop
+}%
+\def\bibitemStop{}%
+\def\bibitemNoStop{.\spacefactor\@mmm\space}%
+\def\bibitemContinue{\spacefactor\@mmm\space}%
+\mathchardef\@mmm=3000 %
+\providecommand{\bibAnnote}[3]{%
+ \BibitemShut{#1}%
+ \def\@tempa{#3}\@ifx{\@tempa\@empty}{}{%
+ \begin{quotation}\noindent
+ \textsc{Key:}\ #2\\\textsc{Annotation:}\ \@tempa
+ \end{quotation}%
+ }%
+}%
+\providecommand{\bibAnnoteFile}[2]{%
+ \IfFileExists{#2}{%
+ \bibAnnote{#1}{#2}{\input{#2}}%
+ }{%
+ \bibAnnote{#1}{#2}{}%
+ }%
+}%
+\let\bibitemOpen\relax
+\let\bibitemShut\relax
+\def\bibfield{\@ifnum{\NAT@merge>\tw@}{\@bibfield}{\@secondoftwo}}%
+\def\@bibfield#1#2{%
+ \begingroup
+ \let\Doi\@gobble
+ \let\bibinfo\relax
+ \let\restore@protect\@empty
+ \protected@edef\@tempa{#2}%
+ \aftergroup\def\aftergroup\@tempa
+ \expandafter\endgroup\expandafter{\@tempa}%
+ \expandafter\@ifx\expandafter{\csname @bib#1\endcsname\@tempa}{%
+ \expandafter\let\expandafter\@tempa\csname @bib@X#1\endcsname
+ }{%
+ \expandafter\let\csname @bib#1\endcsname\@tempa
+ \expandafter\let\expandafter\@tempa\csname @bib@Y#1\endcsname
+ }%
+ \@ifx{\@tempa\relax}{\let\@tempa\@firstofone}{}%
+ \@tempa{#2}%
+}%
+\def\bibinfo#1{%
+ \expandafter\let\expandafter\@tempa\csname bibinfo@X@#1\endcsname
+ \@ifx{\@tempa\relax}{\@firstofone}{\@tempa}%
+}%
+\def\@bib@Xauthor#1{\let\@bib@Xjournal\@gobble}%
+\def\@bib@Xjournal#1{\begingroup\let\bibinfo@X@journal\@bib@Z@journal#1\endgroup}%
+\def\@bibibid@#1{\textit{ibid}.}%
+\appdef\NAT@bibitem@init{%
+ \let\@bibauthor \@empty
+ \let\@bibjournal \@empty
+ \let\@bib@Z@journal\@bibibid@
+}%
+\ifx\SK@lbibitem\@undefined\else
+ \let\SK@lbibitem\@lbibitem
+ \def\@lbibitem[#1]#2{%
+ \SK@lbibitem[#1]{#2}\SK@\SK@@label{#2}\ignorespaces}\fi
+\newif\ifNAT@stdbst \NAT@stdbstfalse
+
+\AtEndDocument{%
+ \ifNAT@stdbst\if@filesw
+ \immediate\write\@auxout{%
+ \string\providecommand\string\NAT@force@numbers{}%
+ \string\NAT@force@numbers
+ }%
+ \fi\fi
+ }
+\newcommand\NAT@force@numbers{%
+ \ifNAT@numbers\else
+ \PackageError{natbib}{Bibliography not compatible with author-year
+ citations.\MessageBreak
+ Press <return> to continue in numerical citation style}
+ {Check the bibliography entries for non-compliant syntax,\MessageBreak
+ or select author-year BibTeX style, e.g. plainnat}%
+ \global\NAT@numberstrue\fi}
+
+\providecommand\bibcite{}
+\renewcommand\bibcite[2]{%
+ \@ifundefined{b@#1\@extra@binfo}{\relax}{%
+ \NAT@citemultiple
+ \PackageWarningNoLine{natbib}{Citation `#1' multiply defined}%
+ }%
+ \global\@namedef{b@#1\@extra@binfo}{#2}%
+}%
+\AtEndDocument{\NAT@swatrue\let\bibcite\NAT@testdef}
+\newcommand\NAT@testdef[2]{%
+ \def\NAT@temp{#2}%
+ \expandafter \ifx \csname b@#1\@extra@binfo\endcsname\NAT@temp
+ \else
+ \ifNAT@swa \NAT@swafalse
+ \PackageWarningNoLine{natbib}{%
+ Citation(s) may have changed.\MessageBreak
+ Rerun to get citations correct%
+ }%
+ \fi
+ \fi
+}%
+\newcommand\NAT@apalk{}
+\def\NAT@apalk#1, #2, #3\@nil#4{%
+ \if\relax#2\relax
+ \global\NAT@stdbsttrue
+ \NAT@wrout{#1}{}{}{}{#4}%
+ \else
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#4}%
+ \fi
+}%
+\newcommand\citeauthoryear{}
+\def\citeauthoryear#1#2#3(@)(@)\@nil#4{%
+ \if\relax#3\relax
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#4}%
+ \else
+ \NAT@wrout{\the\c@NAT@ctr}{#3}{#2}{#1}{#4}%
+ \fi
+}%
+\newcommand\citestarts{\NAT@open}%
+\newcommand\citeends{\NAT@close}%
+\newcommand\betweenauthors{and}%
+\newcommand\astroncite{}
+\def\astroncite#1#2(@)(@)\@nil#3{%
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#3}%
+}%
+\newcommand\citename{}
+\def\citename#1#2(@)(@)\@nil#3{\expandafter\NAT@apalk#1#2, \@nil{#3}}
+\newcommand\harvarditem[4][]{%
+ \if\relax#1\relax
+ \bibitem[#2(#3)]{#4}%
+ \else
+ \bibitem[#1(#3)#2]{#4}%
+ \fi
+}%
+\newcommand\harvardleft{\NAT@open}
+\newcommand\harvardright{\NAT@close}
+\newcommand\harvardyearleft{\NAT@open}
+\newcommand\harvardyearright{\NAT@close}
+\AtBeginDocument{\providecommand{\harvardand}{and}}
+\newcommand\harvardurl[1]{\textbf{URL:} \textit{#1}}
+\providecommand\bibsection{}
+\@ifundefined{chapter}{%
+ \renewcommand\bibsection{%
+ \section*{\refname\@mkboth{\MakeUppercase{\refname}}{\MakeUppercase{\refname}}}%
+ }%
+}{%
+ \@ifxundefined\NAT@sectionbib{%
+ \renewcommand\bibsection{%
+ \chapter*{\bibname\@mkboth{\MakeUppercase{\bibname}}{\MakeUppercase{\bibname}}}%
+ }%
+ }{%
+ \renewcommand\bibsection{%
+ \section*{\bibname\ifx\@mkboth\@gobbletwo\else\markright{\MakeUppercase{\bibname}}\fi}%
+ }%
+ }%
+}%
+\@ifclassloaded{amsart}{\renewcommand\bibsection{\section*{\refname}}}{}%
+\@ifclassloaded{amsbook}{\renewcommand\bibsection{\chapter*{\bibname}}}{}%
+\@ifxundefined\bib@heading{}{\let\bibsection\bib@heading}%
+\newcounter{NAT@ctr}
+\renewenvironment{thebibliography}[1]{%
+ \bibsection
+ \parindent\z@
+ \bibpreamble
+ \bibfont
+ \list{\@biblabel{\the\c@NAT@ctr}}{\@bibsetup{#1}\global\c@NAT@ctr\z@}%
+ \ifNAT@openbib
+ \renewcommand\newblock{\par}%
+ \else
+ \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
+ \fi
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.\@m
+ \let\NAT@bibitem@first@sw\@firstoftwo
+ \let\citeN\cite \let\shortcite\cite
+ \let\citeasnoun\cite
+}{%
+ \bibitem@fin
+ \bibpostamble
+ \def\@noitemerr{%
+ \PackageWarning{natbib}{Empty `thebibliography' environment}%
+ }%
+ \endlist
+ \bibcleanup
+}%
+\let\bibfont\@empty
+\let\bibpreamble\@empty
+\let\bibpostamble\@empty
+\def\bibcleanup{\vskip-\lastskip}%
+\providecommand\reset@font{\relax}
+\providecommand\bibname{Bibliography}
+\providecommand\refname{References}
+\newcommand\NAT@citeundefined{\gdef \NAT@undefined {%
+ \PackageWarningNoLine{natbib}{There were undefined citations}}}
+\let \NAT@undefined \relax
+\newcommand\NAT@citemultiple{\gdef \NAT@multiple {%
+ \PackageWarningNoLine{natbib}{There were multiply defined citations}}}
+\let \NAT@multiple \relax
+\AtEndDocument{\NAT@undefined\NAT@multiple}
+\providecommand\@mkboth[2]{}
+\providecommand\MakeUppercase{\uppercase}
+\providecommand{\@extra@b@citeb}{}
+\gdef\@extra@binfo{}
+\def\NAT@anchor#1#2{%
+ \hyper@natanchorstart{#1\@extra@b@citeb}%
+ \def\@tempa{#2}\@ifx{\@tempa\@empty}{}{\@biblabel{#2}}%
+ \hyper@natanchorend
+}%
+\providecommand\hyper@natanchorstart[1]{}%
+\providecommand\hyper@natanchorend{}%
+\providecommand\hyper@natlinkstart[1]{}%
+\providecommand\hyper@natlinkend{}%
+\providecommand\hyper@natlinkbreak[2]{#1}%
+\AtBeginDocument{%
+ \@ifpackageloaded{babel}{%
+ \let\org@@citex\@citex}{}}
+\providecommand\@safe@activestrue{}%
+\providecommand\@safe@activesfalse{}%
+
+\newcommand\NAT@sort@cites[1]{%
+ \let\NAT@cite@list\@empty
+ \@for\@citeb:=#1\do{\expandafter\NAT@star@cite\@citeb\@@}%
+ \if@filesw
+ \expandafter\immediate\expandafter\write\expandafter\@auxout
+ \expandafter{\expandafter\string\expandafter\citation\expandafter{\NAT@cite@list}}%
+ \fi
+ \@ifnum{\NAT@sort>\z@}{%
+ \expandafter\NAT@sort@cites@\expandafter{\NAT@cite@list}%
+ }{}%
+}%
+\def\NAT@star@cite{%
+ \let\NAT@star@sw\@secondoftwo
+ \@ifnum{\NAT@merge>\z@}{%
+ \@ifnextchar*{%
+ \let\NAT@star@sw\@firstoftwo
+ \NAT@star@cite@star
+ }{%
+ \NAT@star@cite@nostar
+ }%
+ }{%
+ \NAT@star@cite@noextension
+ }%
+}%
+\def\NAT@star@cite@star*{%
+ \NAT@star@cite@nostar
+}%
+\def\NAT@star@cite@nostar{%
+ \let\nat@keyopt@open\@empty
+ \let\nat@keyopt@shut\@empty
+ \@ifnextchar[{\NAT@star@cite@pre}{\NAT@star@cite@pre[]}%
+}%
+\def\NAT@star@cite@pre[#1]{%
+ \def\nat@keyopt@open{#1}%
+ \@ifnextchar[{\NAT@star@cite@post}{\NAT@star@cite@post[]}%
+}%
+\def\NAT@star@cite@post[#1]#2\@@{%
+ \def\nat@keyopt@shut{#1}%
+ \NAT@star@sw{\expandafter\global\expandafter\let\csname NAT@b*@#2\endcsname\@empty}{}%
+ \NAT@cite@list@append{#2}%
+}%
+\def\NAT@star@cite@noextension#1\@@{%
+ \let\nat@keyopt@open\@empty
+ \let\nat@keyopt@shut\@empty
+ \NAT@cite@list@append{#1}%
+}%
+\def\NAT@cite@list@append#1{%
+ \edef\@citeb{\@firstofone#1\@empty}%
+ \if@filesw\@ifxundefined\@cprwrite{}{\expandafter\@cprwrite\@citeb=}\fi
+ \if\relax\nat@keyopt@open\relax\else
+ \global\expandafter\let\csname NAT@b@open@\@citeb\endcsname\nat@keyopt@open
+ \fi
+ \if\relax\nat@keyopt@shut\relax\else
+ \global\expandafter\let\csname NAT@b@shut@\@citeb\endcsname\nat@keyopt@shut
+ \fi
+ \toks@\expandafter{\NAT@cite@list}%
+ \ifx\NAT@cite@list\@empty
+ \@temptokena\expandafter{\@citeb}%
+ \else
+ \@temptokena\expandafter{\expandafter,\@citeb}%
+ \fi
+ \edef\NAT@cite@list{\the\toks@\the\@temptokena}%
+}%
+\newcommand\NAT@sort@cites@[1]{%
+ \count@\z@
+ \@tempcntb\m@ne
+ \let\@celt\delimiter
+ \def\NAT@num@list{}%
+ \let\NAT@cite@list\@empty
+ \let\NAT@nonsort@list\@empty
+ \@for \@citeb:=#1\do{\NAT@make@cite@list}%
+ \ifx\NAT@nonsort@list\@empty\else
+ \protected@edef\NAT@cite@list{\NAT@cite@list\NAT@nonsort@list}%
+ \fi
+ \ifx\NAT@cite@list\@empty\else
+ \protected@edef\NAT@cite@list{\expandafter\NAT@xcom\NAT@cite@list @@}%
+ \fi
+}%
+\def\NAT@make@cite@list{%
+ \advance\count@\@ne
+ \@safe@activestrue
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \@safe@activesfalse
+ \@ifundefined{b@\@citeb\@extra@b@citeb}%
+ {\def\NAT@num{A}}%
+ {\NAT@parse{\@citeb}}%
+ \NAT@ifcat@num\NAT@num
+ {\@tempcnta\NAT@num \relax
+ \@ifnum{\@tempcnta<\@tempcntb}{%
+ \let\NAT@@cite@list=\NAT@cite@list
+ \let\NAT@cite@list\@empty
+ \begingroup\let\@celt=\NAT@celt\NAT@num@list\endgroup
+ \protected@edef\NAT@num@list{%
+ \expandafter\NAT@num@celt \NAT@num@list \@gobble @%
+ }%
+ }{%
+ \protected@edef\NAT@num@list{\NAT@num@list \@celt{\NAT@num}}%
+ \protected@edef\NAT@cite@list{\NAT@cite@list\@citeb,}%
+ \@tempcntb\@tempcnta
+ }%
+ }%
+ {\protected@edef\NAT@nonsort@list{\NAT@nonsort@list\@citeb,}}%
+}%
+\def\NAT@celt#1{%
+ \@ifnum{#1>\@tempcnta}{%
+ \xdef\NAT@cite@list{\NAT@cite@list\@citeb,\NAT@@cite@list}%
+ \let\@celt\@gobble
+ }{%
+ \expandafter\def@NAT@cite@lists\NAT@@cite@list\@@
+ }%
+}%
+\def\NAT@num@celt#1#2{%
+ \ifx#1\@celt
+ \@ifnum{#2>\@tempcnta}{%
+ \@celt{\number\@tempcnta}%
+ \@celt{#2}%
+ }{%
+ \@celt{#2}%
+ \expandafter\NAT@num@celt
+ }%
+ \fi
+}%
+\def\def@NAT@cite@lists#1,#2\@@{%
+ \xdef\NAT@cite@list{\NAT@cite@list#1,}%
+ \xdef\NAT@@cite@list{#2}%
+}%
+\def\NAT@nextc#1,#2@@{#1,}
+\def\NAT@restc#1,#2{#2}
+\def\NAT@xcom#1,@@{#1}
+\InputIfFileExists{natbib.cfg}
+ {\typeout{Local config file natbib.cfg used}}{}
+%%
+%% <<<<< End of generated file <<<<<<
+%%
+%% End of file `natbib.sty'.
diff --git a/.agents/skills/ml-paper-writing/templates/iclr2026/fancyhdr.sty b/.agents/skills/ml-paper-writing/templates/iclr2026/fancyhdr.sty
new file mode 100644
index 0000000..77ed4e3
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/iclr2026/fancyhdr.sty
@@ -0,0 +1,485 @@
+% fancyhdr.sty version 3.2
+% Fancy headers and footers for LaTeX.
+% Piet van Oostrum,
+% Dept of Computer and Information Sciences, University of Utrecht,
+% Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands
+% Telephone: +31 30 2532180. Email: piet@cs.uu.nl
+% ========================================================================
+% LICENCE:
+% This file may be distributed under the terms of the LaTeX Project Public
+% License, as described in lppl.txt in the base LaTeX distribution.
+% Either version 1 or, at your option, any later version.
+% ========================================================================
+% MODIFICATION HISTORY:
+% Sep 16, 1994
+% version 1.4: Correction for use with \reversemargin
+% Sep 29, 1994:
+% version 1.5: Added the \iftopfloat, \ifbotfloat and \iffloatpage commands
+% Oct 4, 1994:
+% version 1.6: Reset single spacing in headers/footers for use with
+% setspace.sty or doublespace.sty
+% Oct 4, 1994:
+% version 1.7: changed \let\@mkboth\markboth to
+% \def\@mkboth{\protect\markboth} to make it more robust
+% Dec 5, 1994:
+% version 1.8: corrections for amsbook/amsart: define \@chapapp and (more
+% importantly) use the \chapter/sectionmark definitions from ps@headings if
+% they exist (which should be true for all standard classes).
+% May 31, 1995:
+% version 1.9: The proposed \renewcommand{\headrulewidth}{\iffloatpage...
+% construction in the doc did not work properly with the fancyplain style.
+% June 1, 1995:
+% version 1.91: The definition of \@mkboth wasn't restored on subsequent
+% \pagestyle{fancy}'s.
+% June 1, 1995:
+% version 1.92: The sequence \pagestyle{fancyplain} \pagestyle{plain}
+% \pagestyle{fancy} would erroneously select the plain version.
+% June 1, 1995:
+% version 1.93: \fancypagestyle command added.
+% Dec 11, 1995:
+% version 1.94: suggested by Conrad Hughes <chughes@maths.tcd.ie>
+% CJCH, Dec 11, 1995: added \footruleskip to allow control over footrule
+% position (old hardcoded value of .3\normalbaselineskip is far too high
+% when used with very small footer fonts).
+% Jan 31, 1996:
+% version 1.95: call \@normalsize in the reset code if that is defined,
+% otherwise \normalsize.
+% this is to solve a problem with ucthesis.cls, as this doesn't
+% define \@currsize. Unfortunately for latex209 calling \normalsize doesn't
+% work as this is optimized to do very little, so there \@normalsize should
+% be called. Hopefully this code works for all versions of LaTeX known to
+% mankind.
+% April 25, 1996:
+% version 1.96: initialize \headwidth to a magic (negative) value to catch
+% most common cases that people change it before calling \pagestyle{fancy}.
+% Note it can't be initialized when reading in this file, because
+% \textwidth could be changed afterwards. This is quite probable.
+% We also switch to \MakeUppercase rather than \uppercase and introduce a
+% \nouppercase command for use in headers. and footers.
+% May 3, 1996:
+% version 1.97: Two changes:
+% 1. Undo the change in version 1.8 (using the pagestyle{headings} defaults
+% for the chapter and section marks. The current version of amsbook and
+% amsart classes don't seem to need them anymore. Moreover the standard
+% latex classes don't use \markboth if twoside isn't selected, and this is
+% confusing as \leftmark doesn't work as expected.
+% 2. include a call to \ps@empty in ps@@fancy. This is to solve a problem
+% in the amsbook and amsart classes, that make global changes to \topskip,
+% which are reset in \ps@empty. Hopefully this doesn't break other things.
+% May 7, 1996:
+% version 1.98:
+% Added % after the line \def\nouppercase
+% May 7, 1996:
+% version 1.99: This is the alpha version of fancyhdr 2.0
+% Introduced the new commands \fancyhead, \fancyfoot, and \fancyhf.
+% Changed \headrulewidth, \footrulewidth, \footruleskip to
+% macros rather than length parameters, In this way they can be
+% conditionalized and they don't consume length registers. There is no need
+% to have them as length registers unless you want to do calculations with
+% them, which is unlikely. Note that this may make some uses of them
+% incompatible (i.e. if you have a file that uses \setlength or \xxxx=)
+% May 10, 1996:
+% version 1.99a:
+% Added a few more % signs
+% May 10, 1996:
+% version 1.99b:
+% Changed the syntax of \f@nfor to be resistent to catcode changes of :=
+% Removed the [1] from the defs of \lhead etc. because the parameter is
+% consumed by the \@[xy]lhead etc. macros.
+% June 24, 1997:
+% version 1.99c:
+% corrected \nouppercase to also include the protected form of \MakeUppercase
+% \global added to manipulation of \headwidth.
+% \iffootnote command added.
+% Some comments added about \@fancyhead and \@fancyfoot.
+% Aug 24, 1998
+% version 1.99d
+% Changed the default \ps@empty to \ps@@empty in order to allow
+% \fancypagestyle{empty} redefinition.
+% Oct 11, 2000
+% version 2.0
+% Added LPPL license clause.
+%
+% A check for \headheight is added. An errormessage is given (once) if the
+% header is too large. Empty headers don't generate the error even if
+% \headheight is very small or even 0pt.
+% Warning added for the use of 'E' option when twoside option is not used.
+% In this case the 'E' fields will never be used.
+%
+% Mar 10, 2002
+% version 2.1beta
+% New command: \fancyhfoffset[place]{length}
+% defines offsets to be applied to the header/footer to let it stick into
+% the margins (if length > 0).
+% place is like in fancyhead, except that only E,O,L,R can be used.
+% This replaces the old calculation based on \headwidth and the marginpar
+% area.
+% \headwidth will be dynamically calculated in the headers/footers when
+% this is used.
+%
+% Mar 26, 2002
+% version 2.1beta2
+% \fancyhfoffset now also takes h,f as possible letters in the argument to
+% allow the header and footer widths to be different.
+% New commands \fancyheadoffset and \fancyfootoffset added comparable to
+% \fancyhead and \fancyfoot.
+% Errormessages and warnings have been made more informative.
+%
+% Dec 9, 2002
+% version 2.1
+% The defaults for \footrulewidth, \plainheadrulewidth and
+% \plainfootrulewidth are changed from \z@skip to 0pt. In this way when
+% someone inadvertantly uses \setlength to change any of these, the value
+% of \z@skip will not be changed, rather an errormessage will be given.
+
+% March 3, 2004
+% Release of version 3.0
+
+% Oct 7, 2004
+% version 3.1
+% Added '\endlinechar=13' to \fancy@reset to prevent problems with
+% includegraphics in header when verbatiminput is active.
+
+% March 22, 2005
+% version 3.2
+% reset \everypar (the real one) in \fancy@reset because spanish.ldf does
+% strange things with \everypar between << and >>.
+
+\def\ifancy@mpty#1{\def\temp@a{#1}\ifx\temp@a\@empty}
+
+\def\fancy@def#1#2{\ifancy@mpty{#2}\fancy@gbl\def#1{\leavevmode}\else
+ \fancy@gbl\def#1{#2\strut}\fi}
+
+\let\fancy@gbl\global
+
+\def\@fancyerrmsg#1{%
+ \ifx\PackageError\undefined
+ \errmessage{#1}\else
+ \PackageError{Fancyhdr}{#1}{}\fi}
+\def\@fancywarning#1{%
+ \ifx\PackageWarning\undefined
+ \errmessage{#1}\else
+ \PackageWarning{Fancyhdr}{#1}{}\fi}
+
+% Usage: \@forc \var{charstring}{command to be executed for each char}
+% This is similar to LaTeX's \@tfor, but expands the charstring.
+
+\def\@forc#1#2#3{\expandafter\f@rc\expandafter#1\expandafter{#2}{#3}}
+\def\f@rc#1#2#3{\def\temp@ty{#2}\ifx\@empty\temp@ty\else
+ \f@@rc#1#2\f@@rc{#3}\fi}
+\def\f@@rc#1#2#3\f@@rc#4{\def#1{#2}#4\f@rc#1{#3}{#4}}
+
+% Usage: \f@nfor\name:=list\do{body}
+% Like LaTeX's \@for but an empty list is treated as a list with an empty
+% element
+
+\newcommand{\f@nfor}[3]{\edef\@fortmp{#2}%
+ \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}}
+
+% Usage: \def@ult \cs{defaults}{argument}
+% sets \cs to the characters from defaults appearing in argument
+% or defaults if it would be empty. All characters are lowercased.
+
+\newcommand\def@ult[3]{%
+ \edef\temp@a{\lowercase{\edef\noexpand\temp@a{#3}}}\temp@a
+ \def#1{}%
+ \@forc\tmpf@ra{#2}%
+ {\expandafter\if@in\tmpf@ra\temp@a{\edef#1{#1\tmpf@ra}}{}}%
+ \ifx\@empty#1\def#1{#2}\fi}
+%
+% \if@in <char><set><truecase><falsecase>
+%
+\newcommand{\if@in}[4]{%
+ \edef\temp@a{#2}\def\temp@b##1#1##2\temp@b{\def\temp@b{##1}}%
+ \expandafter\temp@b#2#1\temp@b\ifx\temp@a\temp@b #4\else #3\fi}
+
+\newcommand{\fancyhead}{\@ifnextchar[{\f@ncyhf\fancyhead h}%
+ {\f@ncyhf\fancyhead h[]}}
+\newcommand{\fancyfoot}{\@ifnextchar[{\f@ncyhf\fancyfoot f}%
+ {\f@ncyhf\fancyfoot f[]}}
+\newcommand{\fancyhf}{\@ifnextchar[{\f@ncyhf\fancyhf{}}%
+ {\f@ncyhf\fancyhf{}[]}}
+
+% New commands for offsets added
+
+\newcommand{\fancyheadoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyheadoffset h}%
+ {\f@ncyhfoffs\fancyheadoffset h[]}}
+\newcommand{\fancyfootoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyfootoffset f}%
+ {\f@ncyhfoffs\fancyfootoffset f[]}}
+\newcommand{\fancyhfoffset}{\@ifnextchar[{\f@ncyhfoffs\fancyhfoffset{}}%
+ {\f@ncyhfoffs\fancyhfoffset{}[]}}
+
+% The header and footer fields are stored in command sequences with
+% names of the form: \f@ncy<x><y><z> with <x> for [eo], <y> from [lcr]
+% and <z> from [hf].
+
+\def\f@ncyhf#1#2[#3]#4{%
+ \def\temp@c{}%
+ \@forc\tmpf@ra{#3}%
+ {\expandafter\if@in\tmpf@ra{eolcrhf,EOLCRHF}%
+ {}{\edef\temp@c{\temp@c\tmpf@ra}}}%
+ \ifx\@empty\temp@c\else
+ \@fancyerrmsg{Illegal char `\temp@c' in \string#1 argument:
+ [#3]}%
+ \fi
+ \f@nfor\temp@c{#3}%
+ {\def@ult\f@@@eo{eo}\temp@c
+ \if@twoside\else
+ \if\f@@@eo e\@fancywarning
+ {\string#1's `E' option without twoside option is useless}\fi\fi
+ \def@ult\f@@@lcr{lcr}\temp@c
+ \def@ult\f@@@hf{hf}{#2\temp@c}%
+ \@forc\f@@eo\f@@@eo
+ {\@forc\f@@lcr\f@@@lcr
+ {\@forc\f@@hf\f@@@hf
+ {\expandafter\fancy@def\csname
+ f@ncy\f@@eo\f@@lcr\f@@hf\endcsname
+ {#4}}}}}}
+
+\def\f@ncyhfoffs#1#2[#3]#4{%
+ \def\temp@c{}%
+ \@forc\tmpf@ra{#3}%
+ {\expandafter\if@in\tmpf@ra{eolrhf,EOLRHF}%
+ {}{\edef\temp@c{\temp@c\tmpf@ra}}}%
+ \ifx\@empty\temp@c\else
+ \@fancyerrmsg{Illegal char `\temp@c' in \string#1 argument:
+ [#3]}%
+ \fi
+ \f@nfor\temp@c{#3}%
+ {\def@ult\f@@@eo{eo}\temp@c
+ \if@twoside\else
+ \if\f@@@eo e\@fancywarning
+ {\string#1's `E' option without twoside option is useless}\fi\fi
+ \def@ult\f@@@lcr{lr}\temp@c
+ \def@ult\f@@@hf{hf}{#2\temp@c}%
+ \@forc\f@@eo\f@@@eo
+ {\@forc\f@@lcr\f@@@lcr
+ {\@forc\f@@hf\f@@@hf
+ {\expandafter\setlength\csname
+ f@ncyO@\f@@eo\f@@lcr\f@@hf\endcsname
+ {#4}}}}}%
+ \fancy@setoffs}
+
+% Fancyheadings version 1 commands. These are more or less deprecated,
+% but they continue to work.
+
+\newcommand{\lhead}{\@ifnextchar[{\@xlhead}{\@ylhead}}
+\def\@xlhead[#1]#2{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#2}}
+\def\@ylhead#1{\fancy@def\f@ncyelh{#1}\fancy@def\f@ncyolh{#1}}
+
+\newcommand{\chead}{\@ifnextchar[{\@xchead}{\@ychead}}
+\def\@xchead[#1]#2{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#2}}
+\def\@ychead#1{\fancy@def\f@ncyech{#1}\fancy@def\f@ncyoch{#1}}
+
+\newcommand{\rhead}{\@ifnextchar[{\@xrhead}{\@yrhead}}
+\def\@xrhead[#1]#2{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#2}}
+\def\@yrhead#1{\fancy@def\f@ncyerh{#1}\fancy@def\f@ncyorh{#1}}
+
+\newcommand{\lfoot}{\@ifnextchar[{\@xlfoot}{\@ylfoot}}
+\def\@xlfoot[#1]#2{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#2}}
+\def\@ylfoot#1{\fancy@def\f@ncyelf{#1}\fancy@def\f@ncyolf{#1}}
+
+\newcommand{\cfoot}{\@ifnextchar[{\@xcfoot}{\@ycfoot}}
+\def\@xcfoot[#1]#2{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#2}}
+\def\@ycfoot#1{\fancy@def\f@ncyecf{#1}\fancy@def\f@ncyocf{#1}}
+
+\newcommand{\rfoot}{\@ifnextchar[{\@xrfoot}{\@yrfoot}}
+\def\@xrfoot[#1]#2{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#2}}
+\def\@yrfoot#1{\fancy@def\f@ncyerf{#1}\fancy@def\f@ncyorf{#1}}
+
+\newlength{\fancy@headwidth}
+\let\headwidth\fancy@headwidth
+\newlength{\f@ncyO@elh}
+\newlength{\f@ncyO@erh}
+\newlength{\f@ncyO@olh}
+\newlength{\f@ncyO@orh}
+\newlength{\f@ncyO@elf}
+\newlength{\f@ncyO@erf}
+\newlength{\f@ncyO@olf}
+\newlength{\f@ncyO@orf}
+\newcommand{\headrulewidth}{0.4pt}
+\newcommand{\footrulewidth}{0pt}
+\newcommand{\footruleskip}{.3\normalbaselineskip}
+
+% Fancyplain stuff shouldn't be used anymore (rather
+% \fancypagestyle{plain} should be used), but it must be present for
+% compatibility reasons.
+
+\newcommand{\plainheadrulewidth}{0pt}
+\newcommand{\plainfootrulewidth}{0pt}
+\newif\if@fancyplain \@fancyplainfalse
+\def\fancyplain#1#2{\if@fancyplain#1\else#2\fi}
+
+\headwidth=-123456789sp %magic constant
+
+% Command to reset various things in the headers:
+% a.o. single spacing (taken from setspace.sty)
+% and the catcode of ^^M (so that epsf files in the header work if a
+% verbatim crosses a page boundary)
+% It also defines a \nouppercase command that disables \uppercase and
+% \Makeuppercase. It can only be used in the headers and footers.
+\let\fnch@everypar\everypar% save real \everypar because of spanish.ldf
+\def\fancy@reset{\fnch@everypar{}\restorecr\endlinechar=13
+ \def\baselinestretch{1}%
+ \def\nouppercase##1{{\let\uppercase\relax\let\MakeUppercase\relax
+ \expandafter\let\csname MakeUppercase \endcsname\relax##1}}%
+ \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e
+ \ifx\@normalsize\undefined \normalsize % for ucthesis.cls
+ \else \@normalsize \fi
+ \else% NFSS (2.09) present
+ \@newbaseline%
+ \fi}
+
+% Initialization of the head and foot text.
+
+% The default values still contain \fancyplain for compatibility.
+\fancyhf{} % clear all
+% lefthead empty on ``plain'' pages, \rightmark on even, \leftmark on odd pages
+% evenhead empty on ``plain'' pages, \leftmark on even, \rightmark on odd pages
+\if@twoside
+ \fancyhead[el,or]{\fancyplain{}{\sl\rightmark}}
+ \fancyhead[er,ol]{\fancyplain{}{\sl\leftmark}}
+\else
+ \fancyhead[l]{\fancyplain{}{\sl\rightmark}}
+ \fancyhead[r]{\fancyplain{}{\sl\leftmark}}
+\fi
+\fancyfoot[c]{\rm\thepage} % page number
+
+% Use box 0 as a temp box and dimen 0 as temp dimen.
+% This can be done, because this code will always
+% be used inside another box, and therefore the changes are local.
+
+\def\@fancyvbox#1#2{\setbox0\vbox{#2}\ifdim\ht0>#1\@fancywarning
+ {\string#1 is too small (\the#1): ^^J Make it at least \the\ht0.^^J
+ We now make it that large for the rest of the document.^^J
+ This may cause the page layout to be inconsistent, however\@gobble}%
+ \dimen0=#1\global\setlength{#1}{\ht0}\ht0=\dimen0\fi
+ \box0}
+
+% Put together a header or footer given the left, center and
+% right text, fillers at left and right and a rule.
+% The \lap commands put the text into an hbox of zero size,
+% so overlapping text does not generate an errormessage.
+% These macros have 5 parameters:
+% 1. LEFTSIDE BEARING % This determines at which side the header will stick
+% out. When \fancyhfoffset is used this calculates \headwidth, otherwise
+% it is \hss or \relax (after expansion).
+% 2. \f@ncyolh, \f@ncyelh, \f@ncyolf or \f@ncyelf. This is the left component.
+% 3. \f@ncyoch, \f@ncyech, \f@ncyocf or \f@ncyecf. This is the middle comp.
+% 4. \f@ncyorh, \f@ncyerh, \f@ncyorf or \f@ncyerf. This is the right component.
+% 5. RIGHTSIDE BEARING. This is always \relax or \hss (after expansion).
+
+\def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset
+ \@fancyvbox\headheight{\hbox
+ {\rlap{\parbox[b]{\headwidth}{\raggedright#2}}\hfill
+ \parbox[b]{\headwidth}{\centering#3}\hfill
+ \llap{\parbox[b]{\headwidth}{\raggedleft#4}}}\headrule}}#5}
+
+\def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset
+ \@fancyvbox\footskip{\footrule
+ \hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2}}\hfill
+ \parbox[t]{\headwidth}{\centering#3}\hfill
+ \llap{\parbox[t]{\headwidth}{\raggedleft#4}}}}}#5}
+
+\def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi
+ \hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}}
+
+\def\footrule{{\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi
+ \vskip-\footruleskip\vskip-\footrulewidth
+ \hrule\@width\headwidth\@height\footrulewidth\vskip\footruleskip}}
+
+\def\ps@fancy{%
+\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%for amsbook
+%
+% Define \MakeUppercase for old LaTeXen.
+% Note: we used \def rather than \let, so that \let\uppercase\relax (from
+% the version 1 documentation) will still work.
+%
+\@ifundefined{MakeUppercase}{\def\MakeUppercase{\uppercase}}{}%
+\@ifundefined{chapter}{\def\sectionmark##1{\markboth
+{\MakeUppercase{\ifnum \c@secnumdepth>\z@
+ \thesection\hskip 1em\relax \fi ##1}}{}}%
+\def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne
+ \thesubsection\hskip 1em\relax \fi ##1}}}%
+{\def\chaptermark##1{\markboth {\MakeUppercase{\ifnum \c@secnumdepth>\m@ne
+ \@chapapp\ \thechapter. \ \fi ##1}}{}}%
+\def\sectionmark##1{\markright{\MakeUppercase{\ifnum \c@secnumdepth >\z@
+ \thesection. \ \fi ##1}}}}%
+%\csname ps@headings\endcsname % use \ps@headings defaults if they exist
+\ps@@fancy
+\gdef\ps@fancy{\@fancyplainfalse\ps@@fancy}%
+% Initialize \headwidth if the user didn't
+%
+\ifdim\headwidth<0sp
+%
+% This catches the case that \headwidth hasn't been initialized and the
+% case that the user added something to \headwidth in the expectation that
+% it was initialized to \textwidth. We compensate this now. This loses if
+% the user intended to multiply it by a factor. But that case is more
+% likely done by saying something like \headwidth=1.2\textwidth.
+% The doc says you have to change \headwidth after the first call to
+% \pagestyle{fancy}. This code is just to catch the most common cases were
+% that requirement is violated.
+%
+ \global\advance\headwidth123456789sp\global\advance\headwidth\textwidth
+\fi}
+\def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy}
+\def\ps@plain@fancy{\@fancyplaintrue\ps@@fancy}
+\let\ps@@empty\ps@empty
+\def\ps@@fancy{%
+\ps@@empty % This is for amsbook/amsart, which do strange things with \topskip
+\def\@mkboth{\protect\markboth}%
+\def\@oddhead{\@fancyhead\fancy@Oolh\f@ncyolh\f@ncyoch\f@ncyorh\fancy@Oorh}%
+\def\@oddfoot{\@fancyfoot\fancy@Oolf\f@ncyolf\f@ncyocf\f@ncyorf\fancy@Oorf}%
+\def\@evenhead{\@fancyhead\fancy@Oelh\f@ncyelh\f@ncyech\f@ncyerh\fancy@Oerh}%
+\def\@evenfoot{\@fancyfoot\fancy@Oelf\f@ncyelf\f@ncyecf\f@ncyerf\fancy@Oerf}%
+}
+% Default definitions for compatibility mode:
+% These cause the header/footer to take the defined \headwidth as width
+% And to shift in the direction of the marginpar area
+
+\def\fancy@Oolh{\if@reversemargin\hss\else\relax\fi}
+\def\fancy@Oorh{\if@reversemargin\relax\else\hss\fi}
+\let\fancy@Oelh\fancy@Oorh
+\let\fancy@Oerh\fancy@Oolh
+
+\let\fancy@Oolf\fancy@Oolh
+\let\fancy@Oorf\fancy@Oorh
+\let\fancy@Oelf\fancy@Oelh
+\let\fancy@Oerf\fancy@Oerh
+
+% New definitions for the use of \fancyhfoffset
+% These calculate the \headwidth from \textwidth and the specified offsets.
+
+\def\fancy@offsolh{\headwidth=\textwidth\advance\headwidth\f@ncyO@olh
+ \advance\headwidth\f@ncyO@orh\hskip-\f@ncyO@olh}
+\def\fancy@offselh{\headwidth=\textwidth\advance\headwidth\f@ncyO@elh
+ \advance\headwidth\f@ncyO@erh\hskip-\f@ncyO@elh}
+
+\def\fancy@offsolf{\headwidth=\textwidth\advance\headwidth\f@ncyO@olf
+ \advance\headwidth\f@ncyO@orf\hskip-\f@ncyO@olf}
+\def\fancy@offself{\headwidth=\textwidth\advance\headwidth\f@ncyO@elf
+ \advance\headwidth\f@ncyO@erf\hskip-\f@ncyO@elf}
+
+\def\fancy@setoffs{%
+% Just in case \let\headwidth\textwidth was used
+ \fancy@gbl\let\headwidth\fancy@headwidth
+ \fancy@gbl\let\fancy@Oolh\fancy@offsolh
+ \fancy@gbl\let\fancy@Oelh\fancy@offselh
+ \fancy@gbl\let\fancy@Oorh\hss
+ \fancy@gbl\let\fancy@Oerh\hss
+ \fancy@gbl\let\fancy@Oolf\fancy@offsolf
+ \fancy@gbl\let\fancy@Oelf\fancy@offself
+ \fancy@gbl\let\fancy@Oorf\hss
+ \fancy@gbl\let\fancy@Oerf\hss}
+
+\newif\iffootnote
+\let\latex@makecol\@makecol
+\def\@makecol{\ifvoid\footins\footnotetrue\else\footnotefalse\fi
+\let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol}
+\def\iftopfloat#1#2{\ifx\topfloat\empty #2\else #1\fi}
+\def\ifbotfloat#1#2{\ifx\botfloat\empty #2\else #1\fi}
+\def\iffloatpage#1#2{\if@fcolmade #1\else #2\fi}
+
+\newcommand{\fancypagestyle}[2]{%
+ \@namedef{ps@#1}{\let\fancy@gbl\relax#2\relax\ps@fancy}}
diff --git a/.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bib b/.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bib
new file mode 100644
index 0000000..dbc773b
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bib
@@ -0,0 +1,24 @@
+@incollection{Bengio+chapter2007,
+author = {Bengio, Yoshua and LeCun, Yann},
+booktitle = {Large Scale Kernel Machines},
+publisher = {MIT Press},
+title = {Scaling Learning Algorithms Towards {AI}},
+year = {2007}
+}
+
+@article{Hinton06,
+author = {Hinton, Geoffrey E. and Osindero, Simon and Teh, Yee Whye},
+journal = {Neural Computation},
+pages = {1527--1554},
+title = {A Fast Learning Algorithm for Deep Belief Nets},
+volume = {18},
+year = {2006}
+}
+
+@book{goodfellow2016deep,
+title={Deep learning},
+author={Goodfellow, Ian and Bengio, Yoshua and Courville, Aaron and Bengio, Yoshua},
+volume={1},
+year={2016},
+publisher={MIT Press}
+} \ No newline at end of file
diff --git a/.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bst b/.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bst
new file mode 100644
index 0000000..a85a008
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.bst
@@ -0,0 +1,1440 @@
+%% File: `iclr2024.bst'
+%% A copy of iclm2010.bst, which is a modification of `plainnl.bst' for use with natbib package
+%%
+%% Copyright 2010 Hal Daum\'e III
+%% Modified by J. Fürnkranz
+%% - Changed labels from (X and Y, 2000) to (X & Y, 2000)
+%%
+%% Copyright 1993-2007 Patrick W Daly
+%% Max-Planck-Institut f\"ur Sonnensystemforschung
+%% Max-Planck-Str. 2
+%% D-37191 Katlenburg-Lindau
+%% Germany
+%% E-mail: daly@mps.mpg.de
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or any later version.
+%%
+ % Version and source file information:
+ % \ProvidesFile{icml2010.mbs}[2007/11/26 1.93 (PWD)]
+ %
+ % BibTeX `plainnat' family
+ % version 0.99b for BibTeX versions 0.99a or later,
+ % for LaTeX versions 2.09 and 2e.
+ %
+ % For use with the `natbib.sty' package; emulates the corresponding
+ % member of the `plain' family, but with author-year citations.
+ %
+ % With version 6.0 of `natbib.sty', it may also be used for numerical
+ % citations, while retaining the commands \citeauthor, \citefullauthor,
+ % and \citeyear to print the corresponding information.
+ %
+ % For version 7.0 of `natbib.sty', the KEY field replaces missing
+ % authors/editors, and the date is left blank in \bibitem.
+ %
+ % Includes field EID for the sequence/citation number of electronic journals
+ % which is used instead of page numbers.
+ %
+ % Includes fields ISBN and ISSN.
+ %
+ % Includes field URL for Internet addresses.
+ %
+ % Includes field DOI for Digital Object Idenfifiers.
+ %
+ % Works best with the url.sty package of Donald Arseneau.
+ %
+ % Works with identical authors and year are further sorted by
+ % citation key, to preserve any natural sequence.
+ %
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ doi
+ eid
+ edition
+ editor
+ howpublished
+ institution
+ isbn
+ issn
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ url
+ volume
+ year
+ }
+ {}
+ { label extra.label sort.label short.list }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+ 'skip$
+ { output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {new.sentence.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { author format.names }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { editor format.names
+ editor num.names$ #1 >
+ { " (eds.)" * }
+ { " (ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.isbn}
+{ isbn empty$
+ { "" }
+ { new.block "ISBN " isbn * }
+ if$
+}
+
+FUNCTION {format.issn}
+{ issn empty$
+ { "" }
+ { new.block "ISSN " issn * }
+ if$
+}
+
+FUNCTION {format.url}
+{ url empty$
+ { "" }
+ { new.block "URL \url{" url * "}" * }
+ if$
+}
+
+FUNCTION {format.doi}
+{ doi empty$
+ { "" }
+ { new.block "\doi{" doi * "}" * }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title "t" change.case$ }
+ if$
+}
+
+FUNCTION {format.full.names}
+{'s :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.full}
+{ author empty$
+ { editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.full}
+{ author empty$
+ { "" }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.full}
+{ editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.full
+ { type$ "proceedings" =
+ 'editor.full
+ 'author.full
+ if$
+ }
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem[" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION {format.date}
+{ year duplicate$ empty$
+ { "empty year in " cite$ * warning$
+ pop$ "" }
+ 'skip$
+ if$
+ month empty$
+ 'skip$
+ { month
+ " " * swap$ *
+ }
+ if$
+ extra.label *
+}
+
+FUNCTION {format.btitle}
+{ title emphasize
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { "volume" volume tie.or.space.connect
+ series empty$
+ 'skip$
+ { " of " * series emphasize * }
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { output.state mid.sentence =
+ { "number" }
+ { "Number" }
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { output.state mid.sentence =
+ { edition "l" change.case$ " edition" * }
+ { edition "t" change.case$ " edition" * }
+ if$
+ }
+ if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+ { "" }
+ { pages multi.page.check
+ { "pp.\ " pages n.dashify tie.or.space.connect }
+ { "pp.\ " pages tie.or.space.connect }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.eid}
+{ eid empty$
+ { "" }
+ { "art." eid tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ number empty$
+ 'skip$
+ { "\penalty0 (" number * ")" * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ":\penalty0 " * pages n.dashify * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.vol.num.eid}
+{ volume field.or.null
+ number empty$
+ 'skip$
+ { "\penalty0 (" number * ")" * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ eid empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.eid }
+ { ":\penalty0 " * eid * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { "chapter" }
+ { type "l" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { "In " booktitle emphasize * }
+ { "In " format.editors * ", " * booktitle emphasize * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$
+ and and and and and
+ key empty$ not and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type "t" change.case$
+ }
+ if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+ { "Technical Report" }
+ 'type
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+ { journal empty$
+ { "need key or journal for " cite$ * " to crossref " * crossref *
+ warning$
+ ""
+ }
+ { "In \emph{" journal * "}" * }
+ if$
+ }
+ { "In " }
+ if$
+ " \citet{" * crossref * "}" *
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Volume" volume tie.or.space.connect
+ " of " *
+ }
+ if$
+ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { series empty$
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "\emph{" * series * "}" * }
+ if$
+ }
+ 'skip$
+ if$
+ }
+ 'skip$
+ if$
+ " \citet{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { booktitle empty$
+ { "need editor, key, or booktitle for " cite$ * " to crossref " *
+ crossref * warning$
+ ""
+ }
+ { "In \emph{" booktitle * "}" * }
+ if$
+ }
+ { "In " }
+ if$
+ }
+ { "In " }
+ if$
+ " \citet{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { journal emphasize "journal" output.check
+ eid empty$
+ { format.vol.num.pages output }
+ { format.vol.num.eid output }
+ if$
+ format.date "year" output.check
+ }
+ { format.article.crossref output.nonnull
+ eid empty$
+ { format.pages output }
+ { format.eid output }
+ if$
+ }
+ if$
+ format.issn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ new.block
+ format.title "title" output.check
+ howpublished address new.block.checkb
+ howpublished output
+ address output
+ format.date output
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.chapter.pages output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ format.edition output
+ format.date "year" output.check
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages output
+ address empty$
+ { organization publisher new.sentence.checkb
+ organization output
+ publisher output
+ format.date "year" output.check
+ }
+ { address output.nonnull
+ format.date "year" output.check
+ new.sentence
+ organization output
+ publisher output
+ }
+ if$
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ new.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ organization output
+ address output
+ format.edition output
+ format.date output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ "Master's thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ title howpublished new.block.checkb
+ format.title output
+ howpublished new.block.checka
+ howpublished output
+ format.date output
+ format.issn output
+ format.url output
+ new.block
+ note output
+ fin.entry
+ empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.btitle "title" output.check
+ new.block
+ "PhD thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.editors output
+ editor format.key output
+ new.block
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+ address output
+ format.date "year" output.check
+ new.sentence
+ organization output
+ publisher output
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ format.tr.number output.nonnull
+ institution "institution" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ note "note" output.check
+ format.date output
+ format.url output
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+
+MACRO {jan} {"January"}
+
+MACRO {feb} {"February"}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"October"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+
+MACRO {tods} {"ACM Transactions on Database Systems"}
+
+MACRO {tog} {"ACM Transactions on Graphics"}
+
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ " et~al." * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al." * }
+ { " \& " * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+ 'short.list :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+ short.list
+ "("
+ *
+ year duplicate$ empty$
+ short.list key field.or.null = or
+ { pop$ "" }
+ 'skip$
+ if$
+ *
+ 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ {
+ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "zzzzz" * }
+ { numnames #2 > nameptr #2 = and
+ { "zz" * year field.or.null * " " * }
+ 'skip$
+ if$
+ t sortify *
+ }
+ if$
+ }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+
+FUNCTION {presort}
+{ calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ cite$
+ *
+ #1 entry.max$ substring$
+ 'sort.label :=
+ sort.label *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { longest.label last.label next.extra }
+
+INTEGERS { longest.label.width last.extra.num number.label }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {forward.pass}
+{ last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION {bib.sort.order}
+{ sort.label 'sort.key$ :=
+}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+ "\providecommand{\url}[1]{\texttt{#1}}"
+ write$ newline$
+ "\expandafter\ifx\csname urlstyle\endcsname\relax"
+ write$ newline$
+ " \providecommand{\doi}[1]{doi: #1}\else"
+ write$ newline$
+ " \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
+ write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
diff --git a/.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.pdf b/.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.pdf
new file mode 100644
index 0000000..396adef
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.pdf
Binary files differ
diff --git a/.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.sty b/.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.sty
new file mode 100644
index 0000000..7a3e556
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.sty
@@ -0,0 +1,246 @@
+%%%% ICLR Macros (LaTex)
+%%%% Adapted by Hugo Larochelle from the NIPS stylefile Macros
+%%%% Style File
+%%%% Dec 12, 1990 Rev Aug 14, 1991; Sept, 1995; April, 1997; April, 1999; October 2014
+
+% This file can be used with Latex2e whether running in main mode, or
+% 2.09 compatibility mode.
+%
+% If using main mode, you need to include the commands
+% \documentclass{article}
+% \usepackage{iclr14submit_e,times}
+%
+
+% Change the overall width of the page. If these parameters are
+% changed, they will require corresponding changes in the
+% maketitle section.
+%
+\usepackage{eso-pic} % used by \AddToShipoutPicture
+\RequirePackage{fancyhdr}
+\RequirePackage{natbib}
+
+% modification to natbib citations
+\setcitestyle{authoryear,round,citesep={;},aysep={,},yysep={;}}
+
+\renewcommand{\topfraction}{0.95} % let figure take up nearly whole page
+\renewcommand{\textfraction}{0.05} % let figure take up nearly whole page
+
+% Define iclrfinal, set to true if iclrfinalcopy is defined
+\newif\ificlrfinal
+\iclrfinalfalse
+\def\iclrfinalcopy{\iclrfinaltrue}
+\font\iclrtenhv = phvb at 8pt
+
+% Specify the dimensions of each page
+
+\setlength{\paperheight}{11in}
+\setlength{\paperwidth}{8.5in}
+
+
+\oddsidemargin .5in % Note \oddsidemargin = \evensidemargin
+\evensidemargin .5in
+\marginparwidth 0.07 true in
+%\marginparwidth 0.75 true in
+%\topmargin 0 true pt % Nominal distance from top of page to top of
+%\topmargin 0.125in
+\topmargin -0.625in
+\addtolength{\headsep}{0.25in}
+\textheight 9.0 true in % Height of text (including footnotes & figures)
+\textwidth 5.5 true in % Width of text line.
+\widowpenalty=10000
+\clubpenalty=10000
+
+% \thispagestyle{empty} \pagestyle{empty}
+\flushbottom \sloppy
+
+% We're never going to need a table of contents, so just flush it to
+% save space --- suggested by drstrip@sandia-2
+\def\addcontentsline#1#2#3{}
+
+% Title stuff, taken from deproc.
+\def\maketitle{\par
+\begingroup
+ \def\thefootnote{\fnsymbol{footnote}}
+ \def\@makefnmark{\hbox to 0pt{$^{\@thefnmark}$\hss}} % for perfect author
+ % name centering
+% The footnote-mark was overlapping the footnote-text,
+% added the following to fix this problem (MK)
+ \long\def\@makefntext##1{\parindent 1em\noindent
+ \hbox to1.8em{\hss $\m@th ^{\@thefnmark}$}##1}
+ \@maketitle \@thanks
+\endgroup
+\setcounter{footnote}{0}
+\let\maketitle\relax \let\@maketitle\relax
+\gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
+
+% The toptitlebar has been raised to top-justify the first page
+
+\usepackage{fancyhdr}
+\pagestyle{fancy}
+\fancyhead{}
+
+% Title (includes both anonimized and non-anonimized versions)
+\def\@maketitle{\vbox{\hsize\textwidth
+%\linewidth\hsize \vskip 0.1in \toptitlebar \centering
+{\LARGE\sc \@title\par}
+%\bottomtitlebar % \vskip 0.1in % minus
+\ificlrfinal
+ \lhead{Published as a conference paper at ICLR 2026}
+ \def\And{\end{tabular}\hfil\linebreak[0]\hfil
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
+ \def\AND{\end{tabular}\hfil\linebreak[4]\hfil
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\@author\end{tabular}%
+\else
+ \lhead{Under review as a conference paper at ICLR 2026}
+ \def\And{\end{tabular}\hfil\linebreak[0]\hfil
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
+ \def\AND{\end{tabular}\hfil\linebreak[4]\hfil
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}\ignorespaces}%
+ \begin{tabular}[t]{l}\bf\rule{\z@}{24pt}Anonymous authors\\Paper under double-blind review\end{tabular}%
+\fi
+\vskip 0.3in minus 0.1in}}
+
+\renewenvironment{abstract}{\vskip.075in\centerline{\large\sc
+Abstract}\vspace{0.5ex}\begin{quote}}{\par\end{quote}\vskip 1ex}
+
+% sections with less space
+\def\section{\@startsection {section}{1}{\z@}{-2.0ex plus
+ -0.5ex minus -.2ex}{1.5ex plus 0.3ex
+minus0.2ex}{\large\sc\raggedright}}
+
+\def\subsection{\@startsection{subsection}{2}{\z@}{-1.8ex plus
+-0.5ex minus -.2ex}{0.8ex plus .2ex}{\normalsize\sc\raggedright}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-1.5ex
+plus -0.5ex minus -.2ex}{0.5ex plus
+.2ex}{\normalsize\sc\raggedright}}
+\def\paragraph{\@startsection{paragraph}{4}{\z@}{1.5ex plus
+0.5ex minus .2ex}{-1em}{\normalsize\bf}}
+\def\subparagraph{\@startsection{subparagraph}{5}{\z@}{1.5ex plus
+ 0.5ex minus .2ex}{-1em}{\normalsize\sc}}
+\def\subsubsubsection{\vskip
+5pt{\noindent\normalsize\rm\raggedright}}
+
+
+% Footnotes
+\footnotesep 6.65pt %
+\skip\footins 9pt plus 4pt minus 2pt
+\def\footnoterule{\kern-3pt \hrule width 12pc \kern 2.6pt }
+\setcounter{footnote}{0}
+
+% Lists and paragraphs
+\parindent 0pt
+\topsep 4pt plus 1pt minus 2pt
+\partopsep 1pt plus 0.5pt minus 0.5pt
+\itemsep 2pt plus 1pt minus 0.5pt
+\parsep 2pt plus 1pt minus 0.5pt
+\parskip .5pc
+
+
+%\leftmargin2em
+\leftmargin3pc
+\leftmargini\leftmargin \leftmarginii 2em
+\leftmarginiii 1.5em \leftmarginiv 1.0em \leftmarginv .5em
+
+%\labelsep \labelsep 5pt
+
+\def\@listi{\leftmargin\leftmargini}
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+ \topsep 2pt plus 1pt minus 0.5pt
+ \parsep 1pt plus 0.5pt minus 0.5pt
+ \itemsep \parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+ \topsep 1pt plus 0.5pt minus 0.5pt
+ \parsep \z@ \partopsep 0.5pt plus 0pt minus 0.5pt
+ \itemsep \topsep}
+\def\@listiv{\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
+\def\@listv{\leftmargin\leftmarginv
+ \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
+\def\@listvi{\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
+
+\abovedisplayskip 7pt plus2pt minus5pt%
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus3pt%
+\belowdisplayshortskip 4pt plus3pt minus3pt%
+
+% Less leading in most fonts (due to the narrow columns)
+% The choices were between 1-pt and 1.5-pt leading
+%\def\@normalsize{\@setsize\normalsize{11pt}\xpt\@xpt} % got rid of @ (MK)
+\def\normalsize{\@setsize\normalsize{11pt}\xpt\@xpt}
+\def\small{\@setsize\small{10pt}\ixpt\@ixpt}
+\def\footnotesize{\@setsize\footnotesize{10pt}\ixpt\@ixpt}
+\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
+\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
+\def\large{\@setsize\large{14pt}\xiipt\@xiipt}
+\def\Large{\@setsize\Large{16pt}\xivpt\@xivpt}
+\def\LARGE{\@setsize\LARGE{20pt}\xviipt\@xviipt}
+\def\huge{\@setsize\huge{23pt}\xxpt\@xxpt}
+\def\Huge{\@setsize\Huge{28pt}\xxvpt\@xxvpt}
+
+\def\toptitlebar{\hrule height4pt\vskip .25in\vskip-\parskip}
+
+\def\bottomtitlebar{\vskip .29in\vskip-\parskip\hrule height1pt\vskip
+.09in} %
+%Reduced second vskip to compensate for adding the strut in \@author
+
+
+
+%% % Vertical Ruler
+%% % This code is, largely, from the CVPR 2010 conference style file
+%% % ----- define vruler
+\makeatletter
+\newbox\iclrrulerbox
+\newcount\iclrrulercount
+\newdimen\iclrruleroffset
+\newdimen\cv@lineheight
+\newdimen\cv@boxheight
+\newbox\cv@tmpbox
+\newcount\cv@refno
+\newcount\cv@tot
+% NUMBER with left flushed zeros \fillzeros[<WIDTH>]<NUMBER>
+\newcount\cv@tmpc@ \newcount\cv@tmpc
+\def\fillzeros[#1]#2{\cv@tmpc@=#2\relax\ifnum\cv@tmpc@<0\cv@tmpc@=-\cv@tmpc@\fi
+\cv@tmpc=1 %
+\loop\ifnum\cv@tmpc@<10 \else \divide\cv@tmpc@ by 10 \advance\cv@tmpc by 1 \fi
+ \ifnum\cv@tmpc@=10\relax\cv@tmpc@=11\relax\fi \ifnum\cv@tmpc@>10 \repeat
+\ifnum#2<0\advance\cv@tmpc1\relax-\fi
+\loop\ifnum\cv@tmpc<#1\relax0\advance\cv@tmpc1\relax\fi \ifnum\cv@tmpc<#1 \repeat
+\cv@tmpc@=#2\relax\ifnum\cv@tmpc@<0\cv@tmpc@=-\cv@tmpc@\fi \relax\the\cv@tmpc@}%
+% \makevruler[<SCALE>][<INITIAL_COUNT>][<STEP>][<DIGITS>][<HEIGHT>]
+\def\makevruler[#1][#2][#3][#4][#5]{\begingroup\offinterlineskip
+\textheight=#5\vbadness=10000\vfuzz=120ex\overfullrule=0pt%
+\global\setbox\iclrrulerbox=\vbox to \textheight{%
+{\parskip=0pt\hfuzz=150em\cv@boxheight=\textheight
+\cv@lineheight=#1\global\iclrrulercount=#2%
+\cv@tot\cv@boxheight\divide\cv@tot\cv@lineheight\advance\cv@tot2%
+\cv@refno1\vskip-\cv@lineheight\vskip1ex%
+\loop\setbox\cv@tmpbox=\hbox to0cm{{\iclrtenhv\hfil\fillzeros[#4]\iclrrulercount}}%
+\ht\cv@tmpbox\cv@lineheight\dp\cv@tmpbox0pt\box\cv@tmpbox\break
+\advance\cv@refno1\global\advance\iclrrulercount#3\relax
+\ifnum\cv@refno<\cv@tot\repeat}}\endgroup}%
+\makeatother
+% ----- end of vruler
+
+% \makevruler[<SCALE>][<INITIAL_COUNT>][<STEP>][<DIGITS>][<HEIGHT>]
+\def\iclrruler#1{\makevruler[12pt][#1][1][3][0.993\textheight]\usebox{\iclrrulerbox}}
+\AddToShipoutPicture{%
+\ificlrfinal\else
+\iclrruleroffset=\textheight
+\advance\iclrruleroffset by -3.7pt
+ \color[rgb]{.7,.7,.7}
+ \AtTextUpperLeft{%
+ \put(\LenToUnit{-35pt},\LenToUnit{-\iclrruleroffset}){%left ruler
+ \iclrruler{\iclrrulercount}}
+ }
+\fi
+}
+% %% To add a vertical bar on the side
+% \AddToShipoutPicture{
+% \AtTextLowerLeft{
+% \hspace*{-1.8cm}
+% \colorbox[rgb]{0.7,0.7,0.7}{\small \parbox[b][\textheight]{0.1cm}{}}}
+% }
diff --git a/.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.tex b/.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.tex
new file mode 100644
index 0000000..6950228
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/iclr2026/iclr2026_conference.tex
@@ -0,0 +1,414 @@
+
+\documentclass{article} % For LaTeX2e
+\usepackage{iclr2026_conference,times}
+
+% Optional math commands from https://github.com/goodfeli/dlbook_notation.
+\input{math_commands.tex}
+
+\usepackage{hyperref}
+\usepackage{url}
+
+
+\title{Formatting Instructions for ICLR 2026 \\ Conference Submissions}
+
+% Authors must not appear in the submitted version. They should be hidden
+% as long as the \iclrfinalcopy macro remains commented out below.
+% Non-anonymous submissions will be rejected without review.
+
+\author{Antiquus S.~Hippocampus, Natalia Cerebro \& Amelie P. Amygdale \thanks{ Use footnote for providing further information
+about author (webpage, alternative address)---\emph{not} for acknowledging
+funding agencies. Funding acknowledgements go at the end of the paper.} \\
+Department of Computer Science\\
+Cranberry-Lemon University\\
+Pittsburgh, PA 15213, USA \\
+\texttt{\{hippo,brain,jen\}@cs.cranberry-lemon.edu} \\
+\And
+Ji Q. Ren \& Yevgeny LeNet \\
+Department of Computational Neuroscience \\
+University of the Witwatersrand \\
+Joburg, South Africa \\
+\texttt{\{robot,net\}@wits.ac.za} \\
+\AND
+Coauthor \\
+Affiliation \\
+Address \\
+\texttt{email}
+}
+
+% The \author macro works with any number of authors. There are two commands
+% used to separate the names and addresses of multiple authors: \And and \AND.
+%
+% Using \And between authors leaves it to \LaTeX{} to determine where to break
+% the lines. Using \AND forces a linebreak at that point. So, if \LaTeX{}
+% puts 3 of 4 authors names on the first line, and the last on the second
+% line, try using \AND instead of \And before the third author name.
+
+\newcommand{\fix}{\marginpar{FIX}}
+\newcommand{\new}{\marginpar{NEW}}
+
+%\iclrfinalcopy % Uncomment for camera-ready version, but NOT for submission.
+\begin{document}
+
+
+\maketitle
+
+\begin{abstract}
+The abstract paragraph should be indented 1/2~inch (3~picas) on both left and
+right-hand margins. Use 10~point type, with a vertical spacing of 11~points.
+The word \textsc{Abstract} must be centered, in small caps, and in point size 12. Two
+line spaces precede the abstract. The abstract must be limited to one
+paragraph.
+\end{abstract}
+
+\section{Submission of conference papers to ICLR 2026}
+
+ICLR requires electronic submissions, processed by
+\url{https://openreview.net/}. See ICLR's website for more instructions.
+
+If your paper is ultimately accepted, the statement {\tt
+ {\textbackslash}iclrfinalcopy} should be inserted to adjust the
+format to the camera ready requirements.
+
+The format for the submissions is a variant of the NeurIPS format.
+Please read carefully the instructions below, and follow them
+faithfully.
+
+\subsection{Style}
+
+Papers to be submitted to ICLR 2026 must be prepared according to the
+instructions presented here.
+
+%% Please note that we have introduced automatic line number generation
+%% into the style file for \LaTeXe. This is to help reviewers
+%% refer to specific lines of the paper when they make their comments. Please do
+%% NOT refer to these line numbers in your paper as they will be removed from the
+%% style file for the final version of accepted papers.
+
+Authors are required to use the ICLR \LaTeX{} style files obtainable at the
+ICLR website. Please make sure you use the current files and
+not previous versions. Tweaking the style files may be grounds for rejection.
+
+\subsection{Retrieval of style files}
+
+The style files for ICLR and other conference information are available online at:
+\begin{center}
+ \url{http://www.iclr.cc/}
+\end{center}
+The file \verb+iclr2026_conference.pdf+ contains these
+instructions and illustrates the
+various formatting requirements your ICLR paper must satisfy.
+Submissions must be made using \LaTeX{} and the style files
+\verb+iclr2026_conference.sty+ and \verb+iclr2026_conference.bst+ (to be used with \LaTeX{}2e). The file
+\verb+iclr2026_conference.tex+ may be used as a ``shell'' for writing your paper. All you
+have to do is replace the author, title, abstract, and text of the paper with
+your own.
+
+The formatting instructions contained in these style files are summarized in
+sections \ref{gen_inst}, \ref{headings}, and \ref{others} below.
+
+\section{General formatting instructions}
+\label{gen_inst}
+
+The text must be confined within a rectangle 5.5~inches (33~picas) wide and
+9~inches (54~picas) long. The left margin is 1.5~inch (9~picas).
+Use 10~point type with a vertical spacing of 11~points. Times New Roman is the
+preferred typeface throughout. Paragraphs are separated by 1/2~line space,
+with no indentation.
+
+Paper title is 17~point, in small caps and left-aligned.
+All pages should start at 1~inch (6~picas) from the top of the page.
+
+Authors' names are
+set in boldface, and each name is placed above its corresponding
+address. The lead author's name is to be listed first, and
+the co-authors' names are set to follow. Authors sharing the
+same address can be on the same line.
+
+Please pay special attention to the instructions in section \ref{others}
+regarding figures, tables, acknowledgments, and references.
+
+
+There will be a strict upper limit of \textbf{9 pages} for the main text of the initial submission, with unlimited additional pages for citations. This limit will be expanded to \textbf{10 pages} for rebuttal/camera ready.
+
+\section{Headings: first level}
+\label{headings}
+
+First level headings are in small caps,
+flush left and in point size 12. One line space before the first level
+heading and 1/2~line space after the first level heading.
+
+\subsection{Headings: second level}
+
+Second level headings are in small caps,
+flush left and in point size 10. One line space before the second level
+heading and 1/2~line space after the second level heading.
+
+\subsubsection{Headings: third level}
+
+Third level headings are in small caps,
+flush left and in point size 10. One line space before the third level
+heading and 1/2~line space after the third level heading.
+
+\section{Citations, figures, tables, references}
+\label{others}
+
+These instructions apply to everyone, regardless of the formatter being used.
+
+\subsection{Citations within the text}
+
+Citations within the text should be based on the \texttt{natbib} package
+and include the authors' last names and year (with the ``et~al.'' construct
+for more than two authors). When the authors or the publication are
+included in the sentence, the citation should not be in parenthesis using \verb|\citet{}| (as
+in ``See \citet{Hinton06} for more information.''). Otherwise, the citation
+should be in parenthesis using \verb|\citep{}| (as in ``Deep learning shows promise to make progress
+towards AI~\citep{Bengio+chapter2007}.'').
+
+The corresponding references are to be listed in alphabetical order of
+authors, in the \textsc{References} section. As to the format of the
+references themselves, any style is acceptable as long as it is used
+consistently.
+
+\subsection{Footnotes}
+
+Indicate footnotes with a number\footnote{Sample of the first footnote} in the
+text. Place the footnotes at the bottom of the page on which they appear.
+Precede the footnote with a horizontal rule of 2~inches
+(12~picas).\footnote{Sample of the second footnote}
+
+\subsection{Figures}
+
+All artwork must be neat, clean, and legible. Lines should be dark
+enough for purposes of reproduction; art work should not be
+hand-drawn. The figure number and caption always appear after the
+figure. Place one line space before the figure caption, and one line
+space after the figure. The figure caption is lower case (except for
+first word and proper nouns); figures are numbered consecutively.
+
+Make sure the figure caption does not get separated from the figure.
+Leave sufficient space to avoid splitting the figure and figure caption.
+
+You may use color figures.
+However, it is best for the
+figure captions and the paper body to make sense if the paper is printed
+either in black/white or in color.
+\begin{figure}[h]
+\begin{center}
+%\framebox[4.0in]{$\;$}
+\fbox{\rule[-.5cm]{0cm}{4cm} \rule[-.5cm]{4cm}{0cm}}
+\end{center}
+\caption{Sample figure caption.}
+\end{figure}
+
+\subsection{Tables}
+
+All tables must be centered, neat, clean and legible. Do not use hand-drawn
+tables. The table number and title always appear before the table. See
+Table~\ref{sample-table}.
+
+Place one line space before the table title, one line space after the table
+title, and one line space after the table. The table title must be lower case
+(except for first word and proper nouns); tables are numbered consecutively.
+
+\begin{table}[t]
+\caption{Sample table title}
+\label{sample-table}
+\begin{center}
+\begin{tabular}{ll}
+\multicolumn{1}{c}{\bf PART} &\multicolumn{1}{c}{\bf DESCRIPTION}
+\\ \hline \\
+Dendrite &Input terminal \\
+Axon &Output terminal \\
+Soma &Cell body (contains cell nucleus) \\
+\end{tabular}
+\end{center}
+\end{table}
+
+\section{Default Notation}
+
+In an attempt to encourage standardized notation, we have included the
+notation file from the textbook, \textit{Deep Learning}
+\cite{goodfellow2016deep} available at
+\url{https://github.com/goodfeli/dlbook_notation/}. Use of this style
+is not required and can be disabled by commenting out
+\texttt{math\_commands.tex}.
+
+
+\centerline{\bf Numbers and Arrays}
+\bgroup
+\def\arraystretch{1.5}
+\begin{tabular}{p{1in}p{3.25in}}
+$\displaystyle a$ & A scalar (integer or real)\\
+$\displaystyle \va$ & A vector\\
+$\displaystyle \mA$ & A matrix\\
+$\displaystyle \tA$ & A tensor\\
+$\displaystyle \mI_n$ & Identity matrix with $n$ rows and $n$ columns\\
+$\displaystyle \mI$ & Identity matrix with dimensionality implied by context\\
+$\displaystyle \ve^{(i)}$ & Standard basis vector $[0,\dots,0,1,0,\dots,0]$ with a 1 at position $i$\\
+$\displaystyle \text{diag}(\va)$ & A square, diagonal matrix with diagonal entries given by $\va$\\
+$\displaystyle \ra$ & A scalar random variable\\
+$\displaystyle \rva$ & A vector-valued random variable\\
+$\displaystyle \rmA$ & A matrix-valued random variable\\
+\end{tabular}
+\egroup
+\vspace{0.25cm}
+
+\centerline{\bf Sets and Graphs}
+\bgroup
+\def\arraystretch{1.5}
+
+\begin{tabular}{p{1.25in}p{3.25in}}
+$\displaystyle \sA$ & A set\\
+$\displaystyle \R$ & The set of real numbers \\
+$\displaystyle \{0, 1\}$ & The set containing 0 and 1 \\
+$\displaystyle \{0, 1, \dots, n \}$ & The set of all integers between $0$ and $n$\\
+$\displaystyle [a, b]$ & The real interval including $a$ and $b$\\
+$\displaystyle (a, b]$ & The real interval excluding $a$ but including $b$\\
+$\displaystyle \sA \backslash \sB$ & Set subtraction, i.e., the set containing the elements of $\sA$ that are not in $\sB$\\
+$\displaystyle \gG$ & A graph\\
+$\displaystyle \parents_\gG(\ervx_i)$ & The parents of $\ervx_i$ in $\gG$
+\end{tabular}
+\vspace{0.25cm}
+
+
+\centerline{\bf Indexing}
+\bgroup
+\def\arraystretch{1.5}
+
+\begin{tabular}{p{1.25in}p{3.25in}}
+$\displaystyle \eva_i$ & Element $i$ of vector $\va$, with indexing starting at 1 \\
+$\displaystyle \eva_{-i}$ & All elements of vector $\va$ except for element $i$ \\
+$\displaystyle \emA_{i,j}$ & Element $i, j$ of matrix $\mA$ \\
+$\displaystyle \mA_{i, :}$ & Row $i$ of matrix $\mA$ \\
+$\displaystyle \mA_{:, i}$ & Column $i$ of matrix $\mA$ \\
+$\displaystyle \etA_{i, j, k}$ & Element $(i, j, k)$ of a 3-D tensor $\tA$\\
+$\displaystyle \tA_{:, :, i}$ & 2-D slice of a 3-D tensor\\
+$\displaystyle \erva_i$ & Element $i$ of the random vector $\rva$ \\
+\end{tabular}
+\egroup
+\vspace{0.25cm}
+
+
+\centerline{\bf Calculus}
+\bgroup
+\def\arraystretch{1.5}
+\begin{tabular}{p{1.25in}p{3.25in}}
+% NOTE: the [2ex] on the next line adds extra height to that row of the table.
+% Without that command, the fraction on the first line is too tall and collides
+% with the fraction on the second line.
+$\displaystyle\frac{d y} {d x}$ & Derivative of $y$ with respect to $x$\\ [2ex]
+$\displaystyle \frac{\partial y} {\partial x} $ & Partial derivative of $y$ with respect to $x$ \\
+$\displaystyle \nabla_\vx y $ & Gradient of $y$ with respect to $\vx$ \\
+$\displaystyle \nabla_\mX y $ & Matrix derivatives of $y$ with respect to $\mX$ \\
+$\displaystyle \nabla_\tX y $ & Tensor containing derivatives of $y$ with respect to $\tX$ \\
+$\displaystyle \frac{\partial f}{\partial \vx} $ & Jacobian matrix $\mJ \in \R^{m\times n}$ of $f: \R^n \rightarrow \R^m$\\
+$\displaystyle \nabla_\vx^2 f(\vx)\text{ or }\mH( f)(\vx)$ & The Hessian matrix of $f$ at input point $\vx$\\
+$\displaystyle \int f(\vx) d\vx $ & Definite integral over the entire domain of $\vx$ \\
+$\displaystyle \int_\sS f(\vx) d\vx$ & Definite integral with respect to $\vx$ over the set $\sS$ \\
+\end{tabular}
+\egroup
+\vspace{0.25cm}
+
+\centerline{\bf Probability and Information Theory}
+\bgroup
+\def\arraystretch{1.5}
+\begin{tabular}{p{1.25in}p{3.25in}}
+$\displaystyle P(\ra)$ & A probability distribution over a discrete variable\\
+$\displaystyle p(\ra)$ & A probability distribution over a continuous variable, or over
+a variable whose type has not been specified\\
+$\displaystyle \ra \sim P$ & Random variable $\ra$ has distribution $P$\\% so thing on left of \sim should always be a random variable, with name beginning with \r
+$\displaystyle \E_{\rx\sim P} [ f(x) ]\text{ or } \E f(x)$ & Expectation of $f(x)$ with respect to $P(\rx)$ \\
+$\displaystyle \Var(f(x)) $ & Variance of $f(x)$ under $P(\rx)$ \\
+$\displaystyle \Cov(f(x),g(x)) $ & Covariance of $f(x)$ and $g(x)$ under $P(\rx)$\\
+$\displaystyle H(\rx) $ & Shannon entropy of the random variable $\rx$\\
+$\displaystyle \KL ( P \Vert Q ) $ & Kullback-Leibler divergence of P and Q \\
+$\displaystyle \mathcal{N} ( \vx ; \vmu , \mSigma)$ & Gaussian distribution %
+over $\vx$ with mean $\vmu$ and covariance $\mSigma$ \\
+\end{tabular}
+\egroup
+\vspace{0.25cm}
+
+\centerline{\bf Functions}
+\bgroup
+\def\arraystretch{1.5}
+\begin{tabular}{p{1.25in}p{3.25in}}
+$\displaystyle f: \sA \rightarrow \sB$ & The function $f$ with domain $\sA$ and range $\sB$\\
+$\displaystyle f \circ g $ & Composition of the functions $f$ and $g$ \\
+ $\displaystyle f(\vx ; \vtheta) $ & A function of $\vx$ parametrized by $\vtheta$.
+ (Sometimes we write $f(\vx)$ and omit the argument $\vtheta$ to lighten notation) \\
+$\displaystyle \log x$ & Natural logarithm of $x$ \\
+$\displaystyle \sigma(x)$ & Logistic sigmoid, $\displaystyle \frac{1} {1 + \exp(-x)}$ \\
+$\displaystyle \zeta(x)$ & Softplus, $\log(1 + \exp(x))$ \\
+$\displaystyle || \vx ||_p $ & $\normlp$ norm of $\vx$ \\
+$\displaystyle || \vx || $ & $\normltwo$ norm of $\vx$ \\
+$\displaystyle x^+$ & Positive part of $x$, i.e., $\max(0,x)$\\
+$\displaystyle \1_\mathrm{condition}$ & is 1 if the condition is true, 0 otherwise\\
+\end{tabular}
+\egroup
+\vspace{0.25cm}
+
+
+
+\section{Final instructions}
+Do not change any aspects of the formatting parameters in the style files.
+In particular, do not modify the width or length of the rectangle the text
+should fit into, and do not change font sizes (except perhaps in the
+\textsc{References} section; see below). Please note that pages should be
+numbered.
+
+\section{Preparing PostScript or PDF files}
+
+Please prepare PostScript or PDF files with paper size ``US Letter'', and
+not, for example, ``A4''. The -t
+letter option on dvips will produce US Letter files.
+
+Consider directly generating PDF files using \verb+pdflatex+
+(especially if you are a MiKTeX user).
+PDF figures must be substituted for EPS figures, however.
+
+Otherwise, please generate your PostScript and PDF files with the following commands:
+\begin{verbatim}
+dvips mypaper.dvi -t letter -Ppdf -G0 -o mypaper.ps
+ps2pdf mypaper.ps mypaper.pdf
+\end{verbatim}
+
+\subsection{Margins in LaTeX}
+
+Most of the margin problems come from figures positioned by hand using
+\verb+\special+ or other commands. We suggest using the command
+\verb+\includegraphics+
+from the graphicx package. Always specify the figure width as a multiple of
+the line width as in the example below using .eps graphics
+\begin{verbatim}
+ \usepackage[dvips]{graphicx} ...
+ \includegraphics[width=0.8\linewidth]{myfile.eps}
+\end{verbatim}
+or % Apr 2009 addition
+\begin{verbatim}
+ \usepackage[pdftex]{graphicx} ...
+ \includegraphics[width=0.8\linewidth]{myfile.pdf}
+\end{verbatim}
+for .pdf graphics.
+See section~4.4 in the graphics bundle documentation (\url{http://www.ctan.org/tex-archive/macros/latex/required/graphics/grfguide.ps})
+
+A number of width problems arise when LaTeX cannot properly hyphenate a
+line. Please give LaTeX hyphenation hints using the \verb+\-+ command.
+
+\subsubsection*{Author Contributions}
+If you'd like to, you may include a section for author contributions as is done
+in many journals. This is optional and at the discretion of the authors.
+
+\subsubsection*{Acknowledgments}
+Use unnumbered third level headings for the acknowledgments. All
+acknowledgments, including those to funding agencies, go at the end of the paper.
+
+
+\bibliography{iclr2026_conference}
+\bibliographystyle{iclr2026_conference}
+
+\appendix
+\section{Appendix}
+You may include other additional sections here.
+
+
+\end{document}
diff --git a/.agents/skills/ml-paper-writing/templates/iclr2026/math_commands.tex b/.agents/skills/ml-paper-writing/templates/iclr2026/math_commands.tex
new file mode 100644
index 0000000..0668f93
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/iclr2026/math_commands.tex
@@ -0,0 +1,508 @@
+%%%%% NEW MATH DEFINITIONS %%%%%
+
+\usepackage{amsmath,amsfonts,bm}
+
+% Mark sections of captions for referring to divisions of figures
+\newcommand{\figleft}{{\em (Left)}}
+\newcommand{\figcenter}{{\em (Center)}}
+\newcommand{\figright}{{\em (Right)}}
+\newcommand{\figtop}{{\em (Top)}}
+\newcommand{\figbottom}{{\em (Bottom)}}
+\newcommand{\captiona}{{\em (a)}}
+\newcommand{\captionb}{{\em (b)}}
+\newcommand{\captionc}{{\em (c)}}
+\newcommand{\captiond}{{\em (d)}}
+
+% Highlight a newly defined term
+\newcommand{\newterm}[1]{{\bf #1}}
+
+
+% Figure reference, lower-case.
+\def\figref#1{figure~\ref{#1}}
+% Figure reference, capital. For start of sentence
+\def\Figref#1{Figure~\ref{#1}}
+\def\twofigref#1#2{figures \ref{#1} and \ref{#2}}
+\def\quadfigref#1#2#3#4{figures \ref{#1}, \ref{#2}, \ref{#3} and \ref{#4}}
+% Section reference, lower-case.
+\def\secref#1{section~\ref{#1}}
+% Section reference, capital.
+\def\Secref#1{Section~\ref{#1}}
+% Reference to two sections.
+\def\twosecrefs#1#2{sections \ref{#1} and \ref{#2}}
+% Reference to three sections.
+\def\secrefs#1#2#3{sections \ref{#1}, \ref{#2} and \ref{#3}}
+% Reference to an equation, lower-case.
+\def\eqref#1{equation~\ref{#1}}
+% Reference to an equation, upper case
+\def\Eqref#1{Equation~\ref{#1}}
+% A raw reference to an equation---avoid using if possible
+\def\plaineqref#1{\ref{#1}}
+% Reference to a chapter, lower-case.
+\def\chapref#1{chapter~\ref{#1}}
+% Reference to an equation, upper case.
+\def\Chapref#1{Chapter~\ref{#1}}
+% Reference to a range of chapters
+\def\rangechapref#1#2{chapters\ref{#1}--\ref{#2}}
+% Reference to an algorithm, lower-case.
+\def\algref#1{algorithm~\ref{#1}}
+% Reference to an algorithm, upper case.
+\def\Algref#1{Algorithm~\ref{#1}}
+\def\twoalgref#1#2{algorithms \ref{#1} and \ref{#2}}
+\def\Twoalgref#1#2{Algorithms \ref{#1} and \ref{#2}}
+% Reference to a part, lower case
+\def\partref#1{part~\ref{#1}}
+% Reference to a part, upper case
+\def\Partref#1{Part~\ref{#1}}
+\def\twopartref#1#2{parts \ref{#1} and \ref{#2}}
+
+\def\ceil#1{\lceil #1 \rceil}
+\def\floor#1{\lfloor #1 \rfloor}
+\def\1{\bm{1}}
+\newcommand{\train}{\mathcal{D}}
+\newcommand{\valid}{\mathcal{D_{\mathrm{valid}}}}
+\newcommand{\test}{\mathcal{D_{\mathrm{test}}}}
+
+\def\eps{{\epsilon}}
+
+
+% Random variables
+\def\reta{{\textnormal{$\eta$}}}
+\def\ra{{\textnormal{a}}}
+\def\rb{{\textnormal{b}}}
+\def\rc{{\textnormal{c}}}
+\def\rd{{\textnormal{d}}}
+\def\re{{\textnormal{e}}}
+\def\rf{{\textnormal{f}}}
+\def\rg{{\textnormal{g}}}
+\def\rh{{\textnormal{h}}}
+\def\ri{{\textnormal{i}}}
+\def\rj{{\textnormal{j}}}
+\def\rk{{\textnormal{k}}}
+\def\rl{{\textnormal{l}}}
+% rm is already a command, just don't name any random variables m
+\def\rn{{\textnormal{n}}}
+\def\ro{{\textnormal{o}}}
+\def\rp{{\textnormal{p}}}
+\def\rq{{\textnormal{q}}}
+\def\rr{{\textnormal{r}}}
+\def\rs{{\textnormal{s}}}
+\def\rt{{\textnormal{t}}}
+\def\ru{{\textnormal{u}}}
+\def\rv{{\textnormal{v}}}
+\def\rw{{\textnormal{w}}}
+\def\rx{{\textnormal{x}}}
+\def\ry{{\textnormal{y}}}
+\def\rz{{\textnormal{z}}}
+
+% Random vectors
+\def\rvepsilon{{\mathbf{\epsilon}}}
+\def\rvtheta{{\mathbf{\theta}}}
+\def\rva{{\mathbf{a}}}
+\def\rvb{{\mathbf{b}}}
+\def\rvc{{\mathbf{c}}}
+\def\rvd{{\mathbf{d}}}
+\def\rve{{\mathbf{e}}}
+\def\rvf{{\mathbf{f}}}
+\def\rvg{{\mathbf{g}}}
+\def\rvh{{\mathbf{h}}}
+\def\rvu{{\mathbf{i}}}
+\def\rvj{{\mathbf{j}}}
+\def\rvk{{\mathbf{k}}}
+\def\rvl{{\mathbf{l}}}
+\def\rvm{{\mathbf{m}}}
+\def\rvn{{\mathbf{n}}}
+\def\rvo{{\mathbf{o}}}
+\def\rvp{{\mathbf{p}}}
+\def\rvq{{\mathbf{q}}}
+\def\rvr{{\mathbf{r}}}
+\def\rvs{{\mathbf{s}}}
+\def\rvt{{\mathbf{t}}}
+\def\rvu{{\mathbf{u}}}
+\def\rvv{{\mathbf{v}}}
+\def\rvw{{\mathbf{w}}}
+\def\rvx{{\mathbf{x}}}
+\def\rvy{{\mathbf{y}}}
+\def\rvz{{\mathbf{z}}}
+
+% Elements of random vectors
+\def\erva{{\textnormal{a}}}
+\def\ervb{{\textnormal{b}}}
+\def\ervc{{\textnormal{c}}}
+\def\ervd{{\textnormal{d}}}
+\def\erve{{\textnormal{e}}}
+\def\ervf{{\textnormal{f}}}
+\def\ervg{{\textnormal{g}}}
+\def\ervh{{\textnormal{h}}}
+\def\ervi{{\textnormal{i}}}
+\def\ervj{{\textnormal{j}}}
+\def\ervk{{\textnormal{k}}}
+\def\ervl{{\textnormal{l}}}
+\def\ervm{{\textnormal{m}}}
+\def\ervn{{\textnormal{n}}}
+\def\ervo{{\textnormal{o}}}
+\def\ervp{{\textnormal{p}}}
+\def\ervq{{\textnormal{q}}}
+\def\ervr{{\textnormal{r}}}
+\def\ervs{{\textnormal{s}}}
+\def\ervt{{\textnormal{t}}}
+\def\ervu{{\textnormal{u}}}
+\def\ervv{{\textnormal{v}}}
+\def\ervw{{\textnormal{w}}}
+\def\ervx{{\textnormal{x}}}
+\def\ervy{{\textnormal{y}}}
+\def\ervz{{\textnormal{z}}}
+
+% Random matrices
+\def\rmA{{\mathbf{A}}}
+\def\rmB{{\mathbf{B}}}
+\def\rmC{{\mathbf{C}}}
+\def\rmD{{\mathbf{D}}}
+\def\rmE{{\mathbf{E}}}
+\def\rmF{{\mathbf{F}}}
+\def\rmG{{\mathbf{G}}}
+\def\rmH{{\mathbf{H}}}
+\def\rmI{{\mathbf{I}}}
+\def\rmJ{{\mathbf{J}}}
+\def\rmK{{\mathbf{K}}}
+\def\rmL{{\mathbf{L}}}
+\def\rmM{{\mathbf{M}}}
+\def\rmN{{\mathbf{N}}}
+\def\rmO{{\mathbf{O}}}
+\def\rmP{{\mathbf{P}}}
+\def\rmQ{{\mathbf{Q}}}
+\def\rmR{{\mathbf{R}}}
+\def\rmS{{\mathbf{S}}}
+\def\rmT{{\mathbf{T}}}
+\def\rmU{{\mathbf{U}}}
+\def\rmV{{\mathbf{V}}}
+\def\rmW{{\mathbf{W}}}
+\def\rmX{{\mathbf{X}}}
+\def\rmY{{\mathbf{Y}}}
+\def\rmZ{{\mathbf{Z}}}
+
+% Elements of random matrices
+\def\ermA{{\textnormal{A}}}
+\def\ermB{{\textnormal{B}}}
+\def\ermC{{\textnormal{C}}}
+\def\ermD{{\textnormal{D}}}
+\def\ermE{{\textnormal{E}}}
+\def\ermF{{\textnormal{F}}}
+\def\ermG{{\textnormal{G}}}
+\def\ermH{{\textnormal{H}}}
+\def\ermI{{\textnormal{I}}}
+\def\ermJ{{\textnormal{J}}}
+\def\ermK{{\textnormal{K}}}
+\def\ermL{{\textnormal{L}}}
+\def\ermM{{\textnormal{M}}}
+\def\ermN{{\textnormal{N}}}
+\def\ermO{{\textnormal{O}}}
+\def\ermP{{\textnormal{P}}}
+\def\ermQ{{\textnormal{Q}}}
+\def\ermR{{\textnormal{R}}}
+\def\ermS{{\textnormal{S}}}
+\def\ermT{{\textnormal{T}}}
+\def\ermU{{\textnormal{U}}}
+\def\ermV{{\textnormal{V}}}
+\def\ermW{{\textnormal{W}}}
+\def\ermX{{\textnormal{X}}}
+\def\ermY{{\textnormal{Y}}}
+\def\ermZ{{\textnormal{Z}}}
+
+% Vectors
+\def\vzero{{\bm{0}}}
+\def\vone{{\bm{1}}}
+\def\vmu{{\bm{\mu}}}
+\def\vtheta{{\bm{\theta}}}
+\def\va{{\bm{a}}}
+\def\vb{{\bm{b}}}
+\def\vc{{\bm{c}}}
+\def\vd{{\bm{d}}}
+\def\ve{{\bm{e}}}
+\def\vf{{\bm{f}}}
+\def\vg{{\bm{g}}}
+\def\vh{{\bm{h}}}
+\def\vi{{\bm{i}}}
+\def\vj{{\bm{j}}}
+\def\vk{{\bm{k}}}
+\def\vl{{\bm{l}}}
+\def\vm{{\bm{m}}}
+\def\vn{{\bm{n}}}
+\def\vo{{\bm{o}}}
+\def\vp{{\bm{p}}}
+\def\vq{{\bm{q}}}
+\def\vr{{\bm{r}}}
+\def\vs{{\bm{s}}}
+\def\vt{{\bm{t}}}
+\def\vu{{\bm{u}}}
+\def\vv{{\bm{v}}}
+\def\vw{{\bm{w}}}
+\def\vx{{\bm{x}}}
+\def\vy{{\bm{y}}}
+\def\vz{{\bm{z}}}
+
+% Elements of vectors
+\def\evalpha{{\alpha}}
+\def\evbeta{{\beta}}
+\def\evepsilon{{\epsilon}}
+\def\evlambda{{\lambda}}
+\def\evomega{{\omega}}
+\def\evmu{{\mu}}
+\def\evpsi{{\psi}}
+\def\evsigma{{\sigma}}
+\def\evtheta{{\theta}}
+\def\eva{{a}}
+\def\evb{{b}}
+\def\evc{{c}}
+\def\evd{{d}}
+\def\eve{{e}}
+\def\evf{{f}}
+\def\evg{{g}}
+\def\evh{{h}}
+\def\evi{{i}}
+\def\evj{{j}}
+\def\evk{{k}}
+\def\evl{{l}}
+\def\evm{{m}}
+\def\evn{{n}}
+\def\evo{{o}}
+\def\evp{{p}}
+\def\evq{{q}}
+\def\evr{{r}}
+\def\evs{{s}}
+\def\evt{{t}}
+\def\evu{{u}}
+\def\evv{{v}}
+\def\evw{{w}}
+\def\evx{{x}}
+\def\evy{{y}}
+\def\evz{{z}}
+
+% Matrix
+\def\mA{{\bm{A}}}
+\def\mB{{\bm{B}}}
+\def\mC{{\bm{C}}}
+\def\mD{{\bm{D}}}
+\def\mE{{\bm{E}}}
+\def\mF{{\bm{F}}}
+\def\mG{{\bm{G}}}
+\def\mH{{\bm{H}}}
+\def\mI{{\bm{I}}}
+\def\mJ{{\bm{J}}}
+\def\mK{{\bm{K}}}
+\def\mL{{\bm{L}}}
+\def\mM{{\bm{M}}}
+\def\mN{{\bm{N}}}
+\def\mO{{\bm{O}}}
+\def\mP{{\bm{P}}}
+\def\mQ{{\bm{Q}}}
+\def\mR{{\bm{R}}}
+\def\mS{{\bm{S}}}
+\def\mT{{\bm{T}}}
+\def\mU{{\bm{U}}}
+\def\mV{{\bm{V}}}
+\def\mW{{\bm{W}}}
+\def\mX{{\bm{X}}}
+\def\mY{{\bm{Y}}}
+\def\mZ{{\bm{Z}}}
+\def\mBeta{{\bm{\beta}}}
+\def\mPhi{{\bm{\Phi}}}
+\def\mLambda{{\bm{\Lambda}}}
+\def\mSigma{{\bm{\Sigma}}}
+
+% Tensor
+\DeclareMathAlphabet{\mathsfit}{\encodingdefault}{\sfdefault}{m}{sl}
+\SetMathAlphabet{\mathsfit}{bold}{\encodingdefault}{\sfdefault}{bx}{n}
+\newcommand{\tens}[1]{\bm{\mathsfit{#1}}}
+\def\tA{{\tens{A}}}
+\def\tB{{\tens{B}}}
+\def\tC{{\tens{C}}}
+\def\tD{{\tens{D}}}
+\def\tE{{\tens{E}}}
+\def\tF{{\tens{F}}}
+\def\tG{{\tens{G}}}
+\def\tH{{\tens{H}}}
+\def\tI{{\tens{I}}}
+\def\tJ{{\tens{J}}}
+\def\tK{{\tens{K}}}
+\def\tL{{\tens{L}}}
+\def\tM{{\tens{M}}}
+\def\tN{{\tens{N}}}
+\def\tO{{\tens{O}}}
+\def\tP{{\tens{P}}}
+\def\tQ{{\tens{Q}}}
+\def\tR{{\tens{R}}}
+\def\tS{{\tens{S}}}
+\def\tT{{\tens{T}}}
+\def\tU{{\tens{U}}}
+\def\tV{{\tens{V}}}
+\def\tW{{\tens{W}}}
+\def\tX{{\tens{X}}}
+\def\tY{{\tens{Y}}}
+\def\tZ{{\tens{Z}}}
+
+
+% Graph
+\def\gA{{\mathcal{A}}}
+\def\gB{{\mathcal{B}}}
+\def\gC{{\mathcal{C}}}
+\def\gD{{\mathcal{D}}}
+\def\gE{{\mathcal{E}}}
+\def\gF{{\mathcal{F}}}
+\def\gG{{\mathcal{G}}}
+\def\gH{{\mathcal{H}}}
+\def\gI{{\mathcal{I}}}
+\def\gJ{{\mathcal{J}}}
+\def\gK{{\mathcal{K}}}
+\def\gL{{\mathcal{L}}}
+\def\gM{{\mathcal{M}}}
+\def\gN{{\mathcal{N}}}
+\def\gO{{\mathcal{O}}}
+\def\gP{{\mathcal{P}}}
+\def\gQ{{\mathcal{Q}}}
+\def\gR{{\mathcal{R}}}
+\def\gS{{\mathcal{S}}}
+\def\gT{{\mathcal{T}}}
+\def\gU{{\mathcal{U}}}
+\def\gV{{\mathcal{V}}}
+\def\gW{{\mathcal{W}}}
+\def\gX{{\mathcal{X}}}
+\def\gY{{\mathcal{Y}}}
+\def\gZ{{\mathcal{Z}}}
+
+% Sets
+\def\sA{{\mathbb{A}}}
+\def\sB{{\mathbb{B}}}
+\def\sC{{\mathbb{C}}}
+\def\sD{{\mathbb{D}}}
+% Don't use a set called E, because this would be the same as our symbol
+% for expectation.
+\def\sF{{\mathbb{F}}}
+\def\sG{{\mathbb{G}}}
+\def\sH{{\mathbb{H}}}
+\def\sI{{\mathbb{I}}}
+\def\sJ{{\mathbb{J}}}
+\def\sK{{\mathbb{K}}}
+\def\sL{{\mathbb{L}}}
+\def\sM{{\mathbb{M}}}
+\def\sN{{\mathbb{N}}}
+\def\sO{{\mathbb{O}}}
+\def\sP{{\mathbb{P}}}
+\def\sQ{{\mathbb{Q}}}
+\def\sR{{\mathbb{R}}}
+\def\sS{{\mathbb{S}}}
+\def\sT{{\mathbb{T}}}
+\def\sU{{\mathbb{U}}}
+\def\sV{{\mathbb{V}}}
+\def\sW{{\mathbb{W}}}
+\def\sX{{\mathbb{X}}}
+\def\sY{{\mathbb{Y}}}
+\def\sZ{{\mathbb{Z}}}
+
+% Entries of a matrix
+\def\emLambda{{\Lambda}}
+\def\emA{{A}}
+\def\emB{{B}}
+\def\emC{{C}}
+\def\emD{{D}}
+\def\emE{{E}}
+\def\emF{{F}}
+\def\emG{{G}}
+\def\emH{{H}}
+\def\emI{{I}}
+\def\emJ{{J}}
+\def\emK{{K}}
+\def\emL{{L}}
+\def\emM{{M}}
+\def\emN{{N}}
+\def\emO{{O}}
+\def\emP{{P}}
+\def\emQ{{Q}}
+\def\emR{{R}}
+\def\emS{{S}}
+\def\emT{{T}}
+\def\emU{{U}}
+\def\emV{{V}}
+\def\emW{{W}}
+\def\emX{{X}}
+\def\emY{{Y}}
+\def\emZ{{Z}}
+\def\emSigma{{\Sigma}}
+
+% entries of a tensor
+% Same font as tensor, without \bm wrapper
+\newcommand{\etens}[1]{\mathsfit{#1}}
+\def\etLambda{{\etens{\Lambda}}}
+\def\etA{{\etens{A}}}
+\def\etB{{\etens{B}}}
+\def\etC{{\etens{C}}}
+\def\etD{{\etens{D}}}
+\def\etE{{\etens{E}}}
+\def\etF{{\etens{F}}}
+\def\etG{{\etens{G}}}
+\def\etH{{\etens{H}}}
+\def\etI{{\etens{I}}}
+\def\etJ{{\etens{J}}}
+\def\etK{{\etens{K}}}
+\def\etL{{\etens{L}}}
+\def\etM{{\etens{M}}}
+\def\etN{{\etens{N}}}
+\def\etO{{\etens{O}}}
+\def\etP{{\etens{P}}}
+\def\etQ{{\etens{Q}}}
+\def\etR{{\etens{R}}}
+\def\etS{{\etens{S}}}
+\def\etT{{\etens{T}}}
+\def\etU{{\etens{U}}}
+\def\etV{{\etens{V}}}
+\def\etW{{\etens{W}}}
+\def\etX{{\etens{X}}}
+\def\etY{{\etens{Y}}}
+\def\etZ{{\etens{Z}}}
+
+% The true underlying data generating distribution
+\newcommand{\pdata}{p_{\rm{data}}}
+% The empirical distribution defined by the training set
+\newcommand{\ptrain}{\hat{p}_{\rm{data}}}
+\newcommand{\Ptrain}{\hat{P}_{\rm{data}}}
+% The model distribution
+\newcommand{\pmodel}{p_{\rm{model}}}
+\newcommand{\Pmodel}{P_{\rm{model}}}
+\newcommand{\ptildemodel}{\tilde{p}_{\rm{model}}}
+% Stochastic autoencoder distributions
+\newcommand{\pencode}{p_{\rm{encoder}}}
+\newcommand{\pdecode}{p_{\rm{decoder}}}
+\newcommand{\precons}{p_{\rm{reconstruct}}}
+
+\newcommand{\laplace}{\mathrm{Laplace}} % Laplace distribution
+
+\newcommand{\E}{\mathbb{E}}
+\newcommand{\Ls}{\mathcal{L}}
+\newcommand{\R}{\mathbb{R}}
+\newcommand{\emp}{\tilde{p}}
+\newcommand{\lr}{\alpha}
+\newcommand{\reg}{\lambda}
+\newcommand{\rect}{\mathrm{rectifier}}
+\newcommand{\softmax}{\mathrm{softmax}}
+\newcommand{\sigmoid}{\sigma}
+\newcommand{\softplus}{\zeta}
+\newcommand{\KL}{D_{\mathrm{KL}}}
+\newcommand{\Var}{\mathrm{Var}}
+\newcommand{\standarderror}{\mathrm{SE}}
+\newcommand{\Cov}{\mathrm{Cov}}
+% Wolfram Mathworld says $L^2$ is for function spaces and $\ell^2$ is for vectors
+% But then they seem to use $L^2$ for vectors throughout the site, and so does
+% wikipedia.
+\newcommand{\normlzero}{L^0}
+\newcommand{\normlone}{L^1}
+\newcommand{\normltwo}{L^2}
+\newcommand{\normlp}{L^p}
+\newcommand{\normmax}{L^\infty}
+
+\newcommand{\parents}{Pa} % See usage in notation.tex. Chosen to match Daphne's book.
+
+\DeclareMathOperator*{\argmax}{arg\,max}
+\DeclareMathOperator*{\argmin}{arg\,min}
+
+\DeclareMathOperator{\sign}{sign}
+\DeclareMathOperator{\Tr}{Tr}
+\let\ab\allowbreak
diff --git a/.agents/skills/ml-paper-writing/templates/iclr2026/natbib.sty b/.agents/skills/ml-paper-writing/templates/iclr2026/natbib.sty
new file mode 100644
index 0000000..ff0d0b9
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/iclr2026/natbib.sty
@@ -0,0 +1,1246 @@
+%%
+%% This is file `natbib.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% natbib.dtx (with options: `package,all')
+%% =============================================
+%% IMPORTANT NOTICE:
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or any later version.
+%%
+%% This is a generated file.
+%% It may not be distributed without the original source file natbib.dtx.
+%%
+%% Full documentation can be obtained by LaTeXing that original file.
+%% Only a few abbreviated comments remain here to describe the usage.
+%% =============================================
+%% Copyright 1993-2009 Patrick W Daly
+%% Max-Planck-Institut f\"ur Sonnensystemforschung
+%% Max-Planck-Str. 2
+%% D-37191 Katlenburg-Lindau
+%% Germany
+%% E-mail: daly@mps.mpg.de
+\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\ProvidesPackage{natbib}
+ [2009/07/16 8.31 (PWD, AO)]
+
+ % This package reimplements the LaTeX \cite command to be used for various
+ % citation styles, both author-year and numerical. It accepts BibTeX
+ % output intended for many other packages, and therefore acts as a
+ % general, all-purpose citation-style interface.
+ %
+ % With standard numerical .bst files, only numerical citations are
+ % possible. With an author-year .bst file, both numerical and
+ % author-year citations are possible.
+ %
+ % If author-year citations are selected, \bibitem must have one of the
+ % following forms:
+ % \bibitem[Jones et al.(1990)]{key}...
+ % \bibitem[Jones et al.(1990)Jones, Baker, and Williams]{key}...
+ % \bibitem[Jones et al., 1990]{key}...
+ % \bibitem[\protect\citeauthoryear{Jones, Baker, and Williams}{Jones
+ % et al.}{1990}]{key}...
+ % \bibitem[\protect\citeauthoryear{Jones et al.}{1990}]{key}...
+ % \bibitem[\protect\astroncite{Jones et al.}{1990}]{key}...
+ % \bibitem[\protect\citename{Jones et al., }1990]{key}...
+ % \harvarditem[Jones et al.]{Jones, Baker, and Williams}{1990}{key}...
+ %
+ % This is either to be made up manually, or to be generated by an
+ % appropriate .bst file with BibTeX.
+ % Author-year mode || Numerical mode
+ % Then, \citet{key} ==>> Jones et al. (1990) || Jones et al. [21]
+ % \citep{key} ==>> (Jones et al., 1990) || [21]
+ % Multiple citations as normal:
+ % \citep{key1,key2} ==>> (Jones et al., 1990; Smith, 1989) || [21,24]
+ % or (Jones et al., 1990, 1991) || [21,24]
+ % or (Jones et al., 1990a,b) || [21,24]
+ % \cite{key} is the equivalent of \citet{key} in author-year mode
+ % and of \citep{key} in numerical mode
+ % Full author lists may be forced with \citet* or \citep*, e.g.
+ % \citep*{key} ==>> (Jones, Baker, and Williams, 1990)
+ % Optional notes as:
+ % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
+ % \citep[e.g.,][]{key} ==>> (e.g., Jones et al., 1990)
+ % \citep[see][pg. 34]{key}==>> (see Jones et al., 1990, pg. 34)
+ % (Note: in standard LaTeX, only one note is allowed, after the ref.
+ % Here, one note is like the standard, two make pre- and post-notes.)
+ % \citealt{key} ==>> Jones et al. 1990
+ % \citealt*{key} ==>> Jones, Baker, and Williams 1990
+ % \citealp{key} ==>> Jones et al., 1990
+ % \citealp*{key} ==>> Jones, Baker, and Williams, 1990
+ % Additional citation possibilities (both author-year and numerical modes)
+ % \citeauthor{key} ==>> Jones et al.
+ % \citeauthor*{key} ==>> Jones, Baker, and Williams
+ % \citeyear{key} ==>> 1990
+ % \citeyearpar{key} ==>> (1990)
+ % \citetext{priv. comm.} ==>> (priv. comm.)
+ % \citenum{key} ==>> 11 [non-superscripted]
+ % Note: full author lists depends on whether the bib style supports them;
+ % if not, the abbreviated list is printed even when full requested.
+ %
+ % For names like della Robbia at the start of a sentence, use
+ % \Citet{dRob98} ==>> Della Robbia (1998)
+ % \Citep{dRob98} ==>> (Della Robbia, 1998)
+ % \Citeauthor{dRob98} ==>> Della Robbia
+ %
+ %
+ % Citation aliasing is achieved with
+ % \defcitealias{key}{text}
+ % \citetalias{key} ==>> text
+ % \citepalias{key} ==>> (text)
+ %
+ % Defining the citation mode and punctual (citation style)
+ % \setcitestyle{<comma-separated list of keywords, same
+ % as the package options>}
+ % Example: \setcitestyle{square,semicolon}
+ % Alternatively:
+ % Use \bibpunct with 6 mandatory arguments:
+ % 1. opening bracket for citation
+ % 2. closing bracket
+ % 3. citation separator (for multiple citations in one \cite)
+ % 4. the letter n for numerical styles, s for superscripts
+ % else anything for author-year
+ % 5. punctuation between authors and date
+ % 6. punctuation between years (or numbers) when common authors missing
+ % One optional argument is the character coming before post-notes. It
+ % appears in square braces before all other arguments. May be left off.
+ % Example (and default) \bibpunct[, ]{(}{)}{;}{a}{,}{,}
+ %
+ % To make this automatic for a given bib style, named newbib, say, make
+ % a local configuration file, natbib.cfg, with the definition
+ % \newcommand{\bibstyle@newbib}{\bibpunct...}
+ % Then the \bibliographystyle{newbib} will cause \bibstyle@newbib to
+ % be called on THE NEXT LATEX RUN (via the aux file).
+ %
+ % Such preprogrammed definitions may be invoked anywhere in the text
+ % by calling \citestyle{newbib}. This is only useful if the style specified
+ % differs from that in \bibliographystyle.
+ %
+ % With \citeindextrue and \citeindexfalse, one can control whether the
+ % \cite commands make an automatic entry of the citation in the .idx
+ % indexing file. For this, \makeindex must also be given in the preamble.
+ %
+ % Package Options: (for selecting punctuation)
+ % round - round parentheses are used (default)
+ % square - square brackets are used [option]
+ % curly - curly braces are used {option}
+ % angle - angle brackets are used <option>
+ % semicolon - multiple citations separated by semi-colon (default)
+ % colon - same as semicolon, an earlier confusion
+ % comma - separated by comma
+ % authoryear - selects author-year citations (default)
+ % numbers- selects numerical citations
+ % super - numerical citations as superscripts
+ % sort - sorts multiple citations according to order in ref. list
+ % sort&compress - like sort, but also compresses numerical citations
+ % compress - compresses without sorting
+ % longnamesfirst - makes first citation full author list
+ % sectionbib - puts bibliography in a \section* instead of \chapter*
+ % merge - allows the citation key to have a * prefix,
+ % signifying to merge its reference with that of the previous citation.
+ % elide - if references are merged, repeated portions of later ones may be removed.
+ % mcite - recognizes and ignores the * prefix for merging.
+ % Punctuation so selected dominates over any predefined ones.
+ % Package options are called as, e.g.
+ % \usepackage[square,comma]{natbib}
+ % LaTeX the source file natbib.dtx to obtain more details
+ % or the file natnotes.tex for a brief reference sheet.
+ %-----------------------------------------------------------
+\providecommand\@ifxundefined[1]{%
+ \ifx#1\@undefined\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}%
+\providecommand\@ifnum[1]{%
+ \ifnum#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}%
+\providecommand\@ifx[1]{%
+ \ifx#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}%
+\providecommand\appdef[2]{%
+ \toks@\expandafter{#1}\@temptokena{#2}%
+ \edef#1{\the\toks@\the\@temptokena}%
+}%
+\@ifclassloaded{agu2001}{\PackageError{natbib}
+ {The agu2001 class already includes natbib coding,\MessageBreak
+ so you should not add it explicitly}
+ {Type <Return> for now, but then later remove\MessageBreak
+ the command \protect\usepackage{natbib} from the document}
+ \endinput}{}
+\@ifclassloaded{agutex}{\PackageError{natbib}
+ {The AGUTeX class already includes natbib coding,\MessageBreak
+ so you should not add it explicitly}
+ {Type <Return> for now, but then later remove\MessageBreak
+ the command \protect\usepackage{natbib} from the document}
+ \endinput}{}
+\@ifclassloaded{aguplus}{\PackageError{natbib}
+ {The aguplus class already includes natbib coding,\MessageBreak
+ so you should not add it explicitly}
+ {Type <Return> for now, but then later remove\MessageBreak
+ the command \protect\usepackage{natbib} from the document}
+ \endinput}{}
+\@ifclassloaded{nlinproc}{\PackageError{natbib}
+ {The nlinproc class already includes natbib coding,\MessageBreak
+ so you should not add it explicitly}
+ {Type <Return> for now, but then later remove\MessageBreak
+ the command \protect\usepackage{natbib} from the document}
+ \endinput}{}
+\@ifclassloaded{egs}{\PackageError{natbib}
+ {The egs class already includes natbib coding,\MessageBreak
+ so you should not add it explicitly}
+ {Type <Return> for now, but then later remove\MessageBreak
+ the command \protect\usepackage{natbib} from the document}
+ \endinput}{}
+\@ifclassloaded{egu}{\PackageError{natbib}
+ {The egu class already includes natbib coding,\MessageBreak
+ so you should not add it explicitly}
+ {Type <Return> for now, but then later remove\MessageBreak
+ the command \protect\usepackage{natbib} from the document}
+ \endinput}{}
+ % Define citation punctuation for some author-year styles
+ % One may add and delete at this point
+ % Or put additions into local configuration file natbib.cfg
+\newcommand\bibstyle@chicago{\bibpunct{(}{)}{;}{a}{,}{,}}
+\newcommand\bibstyle@named{\bibpunct{[}{]}{;}{a}{,}{,}}
+\newcommand\bibstyle@agu{\bibpunct{[}{]}{;}{a}{,}{,~}}%Amer. Geophys. Union
+\newcommand\bibstyle@copernicus{\bibpunct{(}{)}{;}{a}{,}{,}}%Copernicus Publications
+\let\bibstyle@egu=\bibstyle@copernicus
+\let\bibstyle@egs=\bibstyle@copernicus
+\newcommand\bibstyle@agsm{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}}
+\newcommand\bibstyle@kluwer{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}}
+\newcommand\bibstyle@dcu{\bibpunct{(}{)}{;}{a}{;}{,}\gdef\harvardand{and}}
+\newcommand\bibstyle@aa{\bibpunct{(}{)}{;}{a}{}{,}} %Astronomy & Astrophysics
+\newcommand\bibstyle@pass{\bibpunct{(}{)}{;}{a}{,}{,}}%Planet. & Space Sci
+\newcommand\bibstyle@anngeo{\bibpunct{(}{)}{;}{a}{,}{,}}%Annales Geophysicae
+\newcommand\bibstyle@nlinproc{\bibpunct{(}{)}{;}{a}{,}{,}}%Nonlin.Proc.Geophys.
+ % Define citation punctuation for some numerical styles
+\newcommand\bibstyle@cospar{\bibpunct{/}{/}{,}{n}{}{}%
+ \gdef\bibnumfmt##1{##1.}}
+\newcommand\bibstyle@esa{\bibpunct{(Ref.~}{)}{,}{n}{}{}%
+ \gdef\bibnumfmt##1{##1.\hspace{1em}}}
+\newcommand\bibstyle@nature{\bibpunct{}{}{,}{s}{}{\textsuperscript{,}}%
+ \gdef\bibnumfmt##1{##1.}}
+ % The standard LaTeX styles
+\newcommand\bibstyle@plain{\bibpunct{[}{]}{,}{n}{}{,}}
+\let\bibstyle@alpha=\bibstyle@plain
+\let\bibstyle@abbrv=\bibstyle@plain
+\let\bibstyle@unsrt=\bibstyle@plain
+ % The author-year modifications of the standard styles
+\newcommand\bibstyle@plainnat{\bibpunct{[}{]}{,}{a}{,}{,}}
+\let\bibstyle@abbrvnat=\bibstyle@plainnat
+\let\bibstyle@unsrtnat=\bibstyle@plainnat
+\newif\ifNAT@numbers \NAT@numbersfalse
+\newif\ifNAT@super \NAT@superfalse
+\let\NAT@merge\z@
+\DeclareOption{numbers}{\NAT@numberstrue
+ \ExecuteOptions{square,comma,nobibstyle}}
+\DeclareOption{super}{\NAT@supertrue\NAT@numberstrue
+ \renewcommand\NAT@open{}\renewcommand\NAT@close{}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{authoryear}{\NAT@numbersfalse
+ \ExecuteOptions{round,semicolon,bibstyle}}
+\DeclareOption{round}{%
+ \renewcommand\NAT@open{(} \renewcommand\NAT@close{)}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{square}{%
+ \renewcommand\NAT@open{[} \renewcommand\NAT@close{]}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{angle}{%
+ \renewcommand\NAT@open{$<$} \renewcommand\NAT@close{$>$}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{curly}{%
+ \renewcommand\NAT@open{\{} \renewcommand\NAT@close{\}}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{comma}{\renewcommand\NAT@sep{,}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{semicolon}{\renewcommand\NAT@sep{;}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{colon}{\ExecuteOptions{semicolon}}
+\DeclareOption{nobibstyle}{\let\bibstyle=\@gobble}
+\DeclareOption{bibstyle}{\let\bibstyle=\@citestyle}
+\newif\ifNAT@openbib \NAT@openbibfalse
+\DeclareOption{openbib}{\NAT@openbibtrue}
+\DeclareOption{sectionbib}{\def\NAT@sectionbib{on}}
+\def\NAT@sort{\z@}
+\def\NAT@cmprs{\z@}
+\DeclareOption{sort}{\def\NAT@sort{\@ne}}
+\DeclareOption{compress}{\def\NAT@cmprs{\@ne}}
+\DeclareOption{sort&compress}{\def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}}
+\DeclareOption{mcite}{\let\NAT@merge\@ne}
+\DeclareOption{merge}{\@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}}
+\DeclareOption{elide}{\@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}}
+\@ifpackageloaded{cite}{\PackageWarningNoLine{natbib}
+ {The `cite' package should not be used\MessageBreak
+ with natbib. Use option `sort' instead}\ExecuteOptions{sort}}{}
+\@ifpackageloaded{mcite}{\PackageWarningNoLine{natbib}
+ {The `mcite' package should not be used\MessageBreak
+ with natbib. Use option `merge' instead}\ExecuteOptions{merge}}{}
+\@ifpackageloaded{citeref}{\PackageError{natbib}
+ {The `citeref' package must be loaded after natbib}%
+ {Move \protect\usepackage{citeref} to after \string\usepackage{natbib}}}{}
+\newif\ifNAT@longnames\NAT@longnamesfalse
+\DeclareOption{longnamesfirst}{\NAT@longnamestrue}
+\DeclareOption{nonamebreak}{\def\NAT@nmfmt#1{\mbox{\NAT@up#1}}}
+\def\NAT@nmfmt#1{{\NAT@up#1}}
+\renewcommand\bibstyle[1]{\csname bibstyle@#1\endcsname}
+\AtBeginDocument{\global\let\bibstyle=\@gobble}
+\let\@citestyle\bibstyle
+\newcommand\citestyle[1]{\@citestyle{#1}\let\bibstyle\@gobble}
+\newcommand\bibpunct[7][, ]%
+ {\gdef\NAT@open{#2}\gdef\NAT@close{#3}\gdef
+ \NAT@sep{#4}\global\NAT@numbersfalse
+ \ifx #5n\global\NAT@numberstrue\global\NAT@superfalse
+ \else
+ \ifx #5s\global\NAT@numberstrue\global\NAT@supertrue
+ \fi\fi
+ \gdef\NAT@aysep{#6}\gdef\NAT@yrsep{#7}%
+ \gdef\NAT@cmt{#1}%
+ \NAT@@setcites
+ }
+\newcommand\setcitestyle[1]{
+ \@for\@tempa:=#1\do
+ {\def\@tempb{round}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
+ \def\@tempb{square}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
+ \def\@tempb{angle}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
+ \def\@tempb{curly}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
+ \def\@tempb{semicolon}\ifx\@tempa\@tempb
+ \renewcommand\NAT@sep{;}\fi
+ \def\@tempb{colon}\ifx\@tempa\@tempb
+ \renewcommand\NAT@sep{;}\fi
+ \def\@tempb{comma}\ifx\@tempa\@tempb
+ \renewcommand\NAT@sep{,}\fi
+ \def\@tempb{authoryear}\ifx\@tempa\@tempb
+ \NAT@numbersfalse\fi
+ \def\@tempb{numbers}\ifx\@tempa\@tempb
+ \NAT@numberstrue\NAT@superfalse\fi
+ \def\@tempb{super}\ifx\@tempa\@tempb
+ \NAT@numberstrue\NAT@supertrue\fi
+ \expandafter\NAT@find@eq\@tempa=\relax\@nil
+ \if\@tempc\relax\else
+ \expandafter\NAT@rem@eq\@tempc
+ \def\@tempb{open}\ifx\@tempa\@tempb
+ \xdef\NAT@open{\@tempc}\fi
+ \def\@tempb{close}\ifx\@tempa\@tempb
+ \xdef\NAT@close{\@tempc}\fi
+ \def\@tempb{aysep}\ifx\@tempa\@tempb
+ \xdef\NAT@aysep{\@tempc}\fi
+ \def\@tempb{yysep}\ifx\@tempa\@tempb
+ \xdef\NAT@yrsep{\@tempc}\fi
+ \def\@tempb{notesep}\ifx\@tempa\@tempb
+ \xdef\NAT@cmt{\@tempc}\fi
+ \def\@tempb{citesep}\ifx\@tempa\@tempb
+ \xdef\NAT@sep{\@tempc}\fi
+ \fi
+ }%
+ \NAT@@setcites
+}
+ \def\NAT@find@eq#1=#2\@nil{\def\@tempa{#1}\def\@tempc{#2}}
+ \def\NAT@rem@eq#1={\def\@tempc{#1}}
+ \def\NAT@@setcites{\global\let\bibstyle\@gobble}
+\AtBeginDocument{\let\NAT@@setcites\NAT@set@cites}
+\newcommand\NAT@open{(} \newcommand\NAT@close{)}
+\newcommand\NAT@sep{;}
+\ProcessOptions
+\newcommand\NAT@aysep{,} \newcommand\NAT@yrsep{,}
+\newcommand\NAT@cmt{, }
+\newcommand\NAT@cite%
+ [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi
+ #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup}
+\newcommand\NAT@citenum%
+ [3]{\ifNAT@swa\NAT@@open\if*#2*\else#2\NAT@spacechar\fi
+ #1\if*#3*\else\NAT@cmt#3\fi\NAT@@close\else#1\fi\endgroup}
+\newcommand\NAT@citesuper[3]{\ifNAT@swa
+\if*#2*\else#2\NAT@spacechar\fi
+\unskip\kern\p@\textsuperscript{\NAT@@open#1\NAT@@close}%
+ \if*#3*\else\NAT@spacechar#3\fi\else #1\fi\endgroup}
+\providecommand\textsuperscript[1]{\mbox{$^{\mbox{\scriptsize#1}}$}}
+\begingroup \catcode`\_=8
+\gdef\NAT@ifcat@num#1{%
+ \ifcat_\ifnum\z@<0#1_\else A\fi
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}%
+\endgroup
+\providecommand\@firstofone[1]{#1}
+\newcommand\NAT@citexnum{}
+\def\NAT@citexnum[#1][#2]#3{%
+ \NAT@reset@parser
+ \NAT@sort@cites{#3}%
+ \NAT@reset@citea
+ \@cite{\def\NAT@num{-1}\let\NAT@last@yr\relax\let\NAT@nm\@empty
+ \@for\@citeb:=\NAT@cite@list\do
+ {\@safe@activestrue
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \@safe@activesfalse
+ \@ifundefined{b@\@citeb\@extra@b@citeb}{%
+ {\reset@font\bfseries?}
+ \NAT@citeundefined\PackageWarning{natbib}%
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+ {\let\NAT@last@num\NAT@num\let\NAT@last@nm\NAT@nm
+ \NAT@parse{\@citeb}%
+ \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{%
+ \let\NAT@name=\NAT@all@names
+ \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}%
+ \fi
+ \ifNAT@full\let\NAT@nm\NAT@all@names\else
+ \let\NAT@nm\NAT@name\fi
+ \ifNAT@swa
+ \@ifnum{\NAT@ctype>\@ne}{%
+ \@citea
+ \NAT@hyper@{\@ifnum{\NAT@ctype=\tw@}{\NAT@test{\NAT@ctype}}{\NAT@alias}}%
+ }{%
+ \@ifnum{\NAT@cmprs>\z@}{%
+ \NAT@ifcat@num\NAT@num
+ {\let\NAT@nm=\NAT@num}%
+ {\def\NAT@nm{-2}}%
+ \NAT@ifcat@num\NAT@last@num
+ {\@tempcnta=\NAT@last@num\relax}%
+ {\@tempcnta\m@ne}%
+ \@ifnum{\NAT@nm=\@tempcnta}{%
+ \@ifnum{\NAT@merge>\@ne}{}{\NAT@last@yr@mbox}%
+ }{%
+ \advance\@tempcnta by\@ne
+ \@ifnum{\NAT@nm=\@tempcnta}{%
+ \ifx\NAT@last@yr\relax
+ \def@NAT@last@yr{\@citea}%
+ \else
+ \def@NAT@last@yr{--\NAT@penalty}%
+ \fi
+ }{%
+ \NAT@last@yr@mbox
+ }%
+ }%
+ }{%
+ \@tempswatrue
+ \@ifnum{\NAT@merge>\@ne}{\@ifnum{\NAT@last@num=\NAT@num\relax}{\@tempswafalse}{}}{}%
+ \if@tempswa\NAT@citea@mbox\fi
+ }%
+ }%
+ \NAT@def@citea
+ \else
+ \ifcase\NAT@ctype
+ \ifx\NAT@last@nm\NAT@nm \NAT@yrsep\NAT@penalty\NAT@space\else
+ \@citea \NAT@test{\@ne}\NAT@spacechar\NAT@mbox{\NAT@super@kern\NAT@@open}%
+ \fi
+ \if*#1*\else#1\NAT@spacechar\fi
+ \NAT@mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}%
+ \NAT@def@citea@box
+ \or
+ \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}%
+ \or
+ \NAT@hyper@citea@space{\NAT@test{\NAT@ctype}}%
+ \or
+ \NAT@hyper@citea@space\NAT@alias
+ \fi
+ \fi
+ }%
+ }%
+ \@ifnum{\NAT@cmprs>\z@}{\NAT@last@yr}{}%
+ \ifNAT@swa\else
+ \@ifnum{\NAT@ctype=\z@}{%
+ \if*#2*\else\NAT@cmt#2\fi
+ }{}%
+ \NAT@mbox{\NAT@@close}%
+ \fi
+ }{#1}{#2}%
+}%
+\def\NAT@citea@mbox{%
+ \@citea\mbox{\NAT@hyper@{{\citenumfont{\NAT@num}}}}%
+}%
+\def\NAT@hyper@#1{%
+ \hyper@natlinkstart{\@citeb\@extra@b@citeb}#1\hyper@natlinkend
+}%
+\def\NAT@hyper@citea#1{%
+ \@citea
+ \NAT@hyper@{#1}%
+ \NAT@def@citea
+}%
+\def\NAT@hyper@citea@space#1{%
+ \@citea
+ \NAT@hyper@{#1}%
+ \NAT@def@citea@space
+}%
+\def\def@NAT@last@yr#1{%
+ \protected@edef\NAT@last@yr{%
+ #1%
+ \noexpand\mbox{%
+ \noexpand\hyper@natlinkstart{\@citeb\@extra@b@citeb}%
+ {\noexpand\citenumfont{\NAT@num}}%
+ \noexpand\hyper@natlinkend
+ }%
+ }%
+}%
+\def\NAT@last@yr@mbox{%
+ \NAT@last@yr\let\NAT@last@yr\relax
+ \NAT@citea@mbox
+}%
+\newcommand\NAT@test[1]{%
+ \@ifnum{#1=\@ne}{%
+ \ifx\NAT@nm\NAT@noname
+ \begingroup\reset@font\bfseries(author?)\endgroup
+ \PackageWarning{natbib}{%
+ Author undefined for citation`\@citeb' \MessageBreak on page \thepage%
+ }%
+ \else \NAT@nm
+ \fi
+ }{%
+ \if\relax\NAT@date\relax
+ \begingroup\reset@font\bfseries(year?)\endgroup
+ \PackageWarning{natbib}{%
+ Year undefined for citation`\@citeb' \MessageBreak on page \thepage%
+ }%
+ \else \NAT@date
+ \fi
+ }%
+}%
+\let\citenumfont=\@empty
+\newcommand\NAT@citex{}
+\def\NAT@citex%
+ [#1][#2]#3{%
+ \NAT@reset@parser
+ \NAT@sort@cites{#3}%
+ \NAT@reset@citea
+ \@cite{\let\NAT@nm\@empty\let\NAT@year\@empty
+ \@for\@citeb:=\NAT@cite@list\do
+ {\@safe@activestrue
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \@safe@activesfalse
+ \@ifundefined{b@\@citeb\@extra@b@citeb}{\@citea%
+ {\reset@font\bfseries ?}\NAT@citeundefined
+ \PackageWarning{natbib}%
+ {Citation `\@citeb' on page \thepage \space undefined}\def\NAT@date{}}%
+ {\let\NAT@last@nm=\NAT@nm\let\NAT@last@yr=\NAT@year
+ \NAT@parse{\@citeb}%
+ \ifNAT@longnames\@ifundefined{bv@\@citeb\@extra@b@citeb}{%
+ \let\NAT@name=\NAT@all@names
+ \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}{}%
+ \fi
+ \ifNAT@full\let\NAT@nm\NAT@all@names\else
+ \let\NAT@nm\NAT@name\fi
+ \ifNAT@swa\ifcase\NAT@ctype
+ \if\relax\NAT@date\relax
+ \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}\NAT@date}%
+ \else
+ \ifx\NAT@last@nm\NAT@nm\NAT@yrsep
+ \ifx\NAT@last@yr\NAT@year
+ \def\NAT@temp{{?}}%
+ \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}%
+ {Multiple citation on page \thepage: same authors and
+ year\MessageBreak without distinguishing extra
+ letter,\MessageBreak appears as question mark}\fi
+ \NAT@hyper@{\NAT@exlab}%
+ \else\unskip\NAT@spacechar
+ \NAT@hyper@{\NAT@date}%
+ \fi
+ \else
+ \@citea\NAT@hyper@{%
+ \NAT@nmfmt{\NAT@nm}%
+ \hyper@natlinkbreak{%
+ \NAT@aysep\NAT@spacechar}{\@citeb\@extra@b@citeb
+ }%
+ \NAT@date
+ }%
+ \fi
+ \fi
+ \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
+ \or\@citea\NAT@hyper@{\NAT@date}%
+ \or\@citea\NAT@hyper@{\NAT@alias}%
+ \fi \NAT@def@citea
+ \else
+ \ifcase\NAT@ctype
+ \if\relax\NAT@date\relax
+ \@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
+ \else
+ \ifx\NAT@last@nm\NAT@nm\NAT@yrsep
+ \ifx\NAT@last@yr\NAT@year
+ \def\NAT@temp{{?}}%
+ \ifx\NAT@temp\NAT@exlab\PackageWarningNoLine{natbib}%
+ {Multiple citation on page \thepage: same authors and
+ year\MessageBreak without distinguishing extra
+ letter,\MessageBreak appears as question mark}\fi
+ \NAT@hyper@{\NAT@exlab}%
+ \else
+ \unskip\NAT@spacechar
+ \NAT@hyper@{\NAT@date}%
+ \fi
+ \else
+ \@citea\NAT@hyper@{%
+ \NAT@nmfmt{\NAT@nm}%
+ \hyper@natlinkbreak{\NAT@spacechar\NAT@@open\if*#1*\else#1\NAT@spacechar\fi}%
+ {\@citeb\@extra@b@citeb}%
+ \NAT@date
+ }%
+ \fi
+ \fi
+ \or\@citea\NAT@hyper@{\NAT@nmfmt{\NAT@nm}}%
+ \or\@citea\NAT@hyper@{\NAT@date}%
+ \or\@citea\NAT@hyper@{\NAT@alias}%
+ \fi
+ \if\relax\NAT@date\relax
+ \NAT@def@citea
+ \else
+ \NAT@def@citea@close
+ \fi
+ \fi
+ }}\ifNAT@swa\else\if*#2*\else\NAT@cmt#2\fi
+ \if\relax\NAT@date\relax\else\NAT@@close\fi\fi}{#1}{#2}}
+\def\NAT@spacechar{\ }%
+\def\NAT@separator{\NAT@sep\NAT@penalty}%
+\def\NAT@reset@citea{\c@NAT@ctr\@ne\let\@citea\@empty}%
+\def\NAT@def@citea{\def\@citea{\NAT@separator\NAT@space}}%
+\def\NAT@def@citea@space{\def\@citea{\NAT@separator\NAT@spacechar}}%
+\def\NAT@def@citea@close{\def\@citea{\NAT@@close\NAT@separator\NAT@space}}%
+\def\NAT@def@citea@box{\def\@citea{\NAT@mbox{\NAT@@close}\NAT@separator\NAT@spacechar}}%
+\newif\ifNAT@par \NAT@partrue
+\newcommand\NAT@@open{\ifNAT@par\NAT@open\fi}
+\newcommand\NAT@@close{\ifNAT@par\NAT@close\fi}
+\newcommand\NAT@alias{\@ifundefined{al@\@citeb\@extra@b@citeb}{%
+ {\reset@font\bfseries(alias?)}\PackageWarning{natbib}
+ {Alias undefined for citation `\@citeb'
+ \MessageBreak on page \thepage}}{\@nameuse{al@\@citeb\@extra@b@citeb}}}
+\let\NAT@up\relax
+\newcommand\NAT@Up[1]{{\let\protect\@unexpandable@protect\let~\relax
+ \expandafter\NAT@deftemp#1}\expandafter\NAT@UP\NAT@temp}
+\newcommand\NAT@deftemp[1]{\xdef\NAT@temp{#1}}
+\newcommand\NAT@UP[1]{\let\@tempa\NAT@UP\ifcat a#1\MakeUppercase{#1}%
+ \let\@tempa\relax\else#1\fi\@tempa}
+\newcommand\shortcites[1]{%
+ \@bsphack\@for\@citeb:=#1\do
+ {\@safe@activestrue
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \@safe@activesfalse
+ \global\@namedef{bv@\@citeb\@extra@b@citeb}{}}\@esphack}
+\newcommand\NAT@biblabel[1]{\hfill}
+\newcommand\NAT@biblabelnum[1]{\bibnumfmt{#1}}
+\let\bibnumfmt\@empty
+\providecommand\@biblabel[1]{[#1]}
+\AtBeginDocument{\ifx\bibnumfmt\@empty\let\bibnumfmt\@biblabel\fi}
+\newcommand\NAT@bibsetnum[1]{\settowidth\labelwidth{\@biblabel{#1}}%
+ \setlength{\leftmargin}{\labelwidth}\addtolength{\leftmargin}{\labelsep}%
+ \setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@}%
+ \ifNAT@openbib
+ \addtolength{\leftmargin}{\bibindent}%
+ \setlength{\itemindent}{-\bibindent}%
+ \setlength{\listparindent}{\itemindent}%
+ \setlength{\parsep}{0pt}%
+ \fi
+}
+\newlength{\bibhang}
+\setlength{\bibhang}{1em}
+\newlength{\bibsep}
+ {\@listi \global\bibsep\itemsep \global\advance\bibsep by\parsep}
+
+\newcommand\NAT@bibsetup%
+ [1]{\setlength{\leftmargin}{\bibhang}\setlength{\itemindent}{-\leftmargin}%
+ \setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@}}
+\newcommand\NAT@set@cites{%
+ \ifNAT@numbers
+ \ifNAT@super \let\@cite\NAT@citesuper
+ \def\NAT@mbox##1{\unskip\nobreak\textsuperscript{##1}}%
+ \let\citeyearpar=\citeyear
+ \let\NAT@space\relax
+ \def\NAT@super@kern{\kern\p@}%
+ \else
+ \let\NAT@mbox=\mbox
+ \let\@cite\NAT@citenum
+ \let\NAT@space\NAT@spacechar
+ \let\NAT@super@kern\relax
+ \fi
+ \let\@citex\NAT@citexnum
+ \let\@biblabel\NAT@biblabelnum
+ \let\@bibsetup\NAT@bibsetnum
+ \renewcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@num\NAT@close}%
+ \def\natexlab##1{}%
+ \def\NAT@penalty{\penalty\@m}%
+ \else
+ \let\@cite\NAT@cite
+ \let\@citex\NAT@citex
+ \let\@biblabel\NAT@biblabel
+ \let\@bibsetup\NAT@bibsetup
+ \let\NAT@space\NAT@spacechar
+ \let\NAT@penalty\@empty
+ \renewcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@date\NAT@close}%
+ \def\natexlab##1{##1}%
+ \fi}
+\AtBeginDocument{\NAT@set@cites}
+\AtBeginDocument{\ifx\SK@def\@undefined\else
+\ifx\SK@cite\@empty\else
+ \SK@def\@citex[#1][#2]#3{\SK@\SK@@ref{#3}\SK@@citex[#1][#2]{#3}}\fi
+\ifx\SK@citeauthor\@undefined\def\HAR@checkdef{}\else
+ \let\citeauthor\SK@citeauthor
+ \let\citefullauthor\SK@citefullauthor
+ \let\citeyear\SK@citeyear\fi
+\fi}
+\newif\ifNAT@full\NAT@fullfalse
+\newif\ifNAT@swa
+\DeclareRobustCommand\citet
+ {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@partrue
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\newcommand\NAT@citetp{\@ifnextchar[{\NAT@@citetp}{\NAT@@citetp[]}}
+\newcommand\NAT@@citetp{}
+\def\NAT@@citetp[#1]{\@ifnextchar[{\@citex[#1]}{\@citex[][#1]}}
+\DeclareRobustCommand\citep
+ {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@partrue
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\cite
+ {\begingroup\let\NAT@ctype\z@\NAT@partrue\NAT@swatrue
+ \@ifstar{\NAT@fulltrue\NAT@cites}{\NAT@fullfalse\NAT@cites}}
+\newcommand\NAT@cites{\@ifnextchar [{\NAT@@citetp}{%
+ \ifNAT@numbers\else
+ \NAT@swafalse
+ \fi
+ \NAT@@citetp[]}}
+\DeclareRobustCommand\citealt
+ {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@parfalse
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\citealp
+ {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\citenum
+ {\begingroup
+ \NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse\let\textsuperscript\NAT@spacechar
+ \NAT@citexnum[][]}
+\DeclareRobustCommand\citeauthor
+ {\begingroup\NAT@swafalse\let\NAT@ctype\@ne\NAT@parfalse
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citet
+ {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@partrue
+ \let\NAT@up\NAT@Up
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citep
+ {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@partrue
+ \let\NAT@up\NAT@Up
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citealt
+ {\begingroup\NAT@swafalse\let\NAT@ctype\z@\NAT@parfalse
+ \let\NAT@up\NAT@Up
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citealp
+ {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@parfalse
+ \let\NAT@up\NAT@Up
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\Citeauthor
+ {\begingroup\NAT@swafalse\let\NAT@ctype\@ne\NAT@parfalse
+ \let\NAT@up\NAT@Up
+ \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}
+\DeclareRobustCommand\citeyear
+ {\begingroup\NAT@swafalse\let\NAT@ctype\tw@\NAT@parfalse\NAT@citetp}
+\DeclareRobustCommand\citeyearpar
+ {\begingroup\NAT@swatrue\let\NAT@ctype\tw@\NAT@partrue\NAT@citetp}
+\newcommand\citetext[1]{\NAT@open#1\NAT@close}
+\DeclareRobustCommand\citefullauthor
+ {\citeauthor*}
+\newcommand\defcitealias[2]{%
+ \@ifundefined{al@#1\@extra@b@citeb}{}
+ {\PackageWarning{natbib}{Overwriting existing alias for citation #1}}
+ \@namedef{al@#1\@extra@b@citeb}{#2}}
+\DeclareRobustCommand\citetalias{\begingroup
+ \NAT@swafalse\let\NAT@ctype\thr@@\NAT@parfalse\NAT@citetp}
+\DeclareRobustCommand\citepalias{\begingroup
+ \NAT@swatrue\let\NAT@ctype\thr@@\NAT@partrue\NAT@citetp}
+\renewcommand\nocite[1]{\@bsphack
+ \@for\@citeb:=#1\do{%
+ \@safe@activestrue
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \@safe@activesfalse
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
+ \if*\@citeb\else
+ \@ifundefined{b@\@citeb\@extra@b@citeb}{%
+ \NAT@citeundefined \PackageWarning{natbib}%
+ {Citation `\@citeb' undefined}}{}\fi}%
+ \@esphack}
+\newcommand\NAT@parse[1]{%
+ \begingroup
+ \let\protect=\@unexpandable@protect
+ \let~\relax
+ \let\active@prefix=\@gobble
+ \edef\NAT@temp{\csname b@#1\@extra@b@citeb\endcsname}%
+ \aftergroup\NAT@split
+ \expandafter
+ \endgroup
+ \NAT@temp{}{}{}{}{}@@%
+ \expandafter\NAT@parse@date\NAT@date??????@@%
+ \ifciteindex\NAT@index\fi
+}%
+\def\NAT@split#1#2#3#4#5@@{%
+ \gdef\NAT@num{#1}\gdef\NAT@name{#3}\gdef\NAT@date{#2}%
+ \gdef\NAT@all@names{#4}%
+ \ifx\NAT@num\@empty\gdef\NAT@num{0}\fi
+ \ifx\NAT@noname\NAT@all@names \gdef\NAT@all@names{#3}\fi
+}%
+\def\NAT@reset@parser{%
+ \global\let\NAT@num\@empty
+ \global\let\NAT@name\@empty
+ \global\let\NAT@date\@empty
+ \global\let\NAT@all@names\@empty
+}%
+\newcommand\NAT@parse@date{}
+\def\NAT@parse@date#1#2#3#4#5#6@@{%
+ \ifnum\the\catcode`#1=11\def\NAT@year{}\def\NAT@exlab{#1}\else
+ \ifnum\the\catcode`#2=11\def\NAT@year{#1}\def\NAT@exlab{#2}\else
+ \ifnum\the\catcode`#3=11\def\NAT@year{#1#2}\def\NAT@exlab{#3}\else
+ \ifnum\the\catcode`#4=11\def\NAT@year{#1#2#3}\def\NAT@exlab{#4}\else
+ \def\NAT@year{#1#2#3#4}\def\NAT@exlab{{#5}}\fi\fi\fi\fi}
+\newcommand\NAT@index{}
+\let\NAT@makeindex=\makeindex
+\renewcommand\makeindex{\NAT@makeindex
+ \renewcommand\NAT@index{\@bsphack\begingroup
+ \def~{\string~}\@wrindex{\NAT@idxtxt}}}
+\newcommand\NAT@idxtxt{\NAT@name\NAT@spacechar\NAT@open\NAT@date\NAT@close}
+\@ifxundefined\@indexfile{}{\let\NAT@makeindex\relax\makeindex}
+\newif\ifciteindex \citeindexfalse
+\newcommand\citeindextype{default}
+\newcommand\NAT@index@alt{{\let\protect=\noexpand\let~\relax
+ \xdef\NAT@temp{\NAT@idxtxt}}\expandafter\NAT@exp\NAT@temp\@nil}
+\newcommand\NAT@exp{}
+\def\NAT@exp#1\@nil{\index[\citeindextype]{#1}}
+
+\AtBeginDocument{%
+\@ifpackageloaded{index}{\let\NAT@index=\NAT@index@alt}{}}
+\newcommand\NAT@ifcmd{\futurelet\NAT@temp\NAT@ifxcmd}
+\newcommand\NAT@ifxcmd{\ifx\NAT@temp\relax\else\expandafter\NAT@bare\fi}
+\def\NAT@bare#1(#2)#3(@)#4\@nil#5{%
+ \if @#2
+ \expandafter\NAT@apalk#1, , \@nil{#5}%
+ \else
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{#3}{#5}%
+\fi
+}
+\newcommand\NAT@wrout[5]{%
+\if@filesw
+ {\let\protect\noexpand\let~\relax
+ \immediate
+ \write\@auxout{\string\bibcite{#5}{{#1}{#2}{{#3}}{{#4}}}}}\fi
+\ignorespaces}
+\def\NAT@noname{{}}
+\renewcommand\bibitem{\@ifnextchar[{\@lbibitem}{\@lbibitem[]}}%
+\let\NAT@bibitem@first@sw\@secondoftwo
+\def\@lbibitem[#1]#2{%
+ \if\relax\@extra@b@citeb\relax\else
+ \@ifundefined{br@#2\@extra@b@citeb}{}{%
+ \@namedef{br@#2}{\@nameuse{br@#2\@extra@b@citeb}}%
+ }%
+ \fi
+ \@ifundefined{b@#2\@extra@b@citeb}{%
+ \def\NAT@num{}%
+ }{%
+ \NAT@parse{#2}%
+ }%
+ \def\NAT@tmp{#1}%
+ \expandafter\let\expandafter\bibitemOpen\csname NAT@b@open@#2\endcsname
+ \expandafter\let\expandafter\bibitemShut\csname NAT@b@shut@#2\endcsname
+ \@ifnum{\NAT@merge>\@ne}{%
+ \NAT@bibitem@first@sw{%
+ \@firstoftwo
+ }{%
+ \@ifundefined{NAT@b*@#2}{%
+ \@firstoftwo
+ }{%
+ \expandafter\def\expandafter\NAT@num\expandafter{\the\c@NAT@ctr}%
+ \@secondoftwo
+ }%
+ }%
+ }{%
+ \@firstoftwo
+ }%
+ {%
+ \global\advance\c@NAT@ctr\@ne
+ \@ifx{\NAT@tmp\@empty}{\@firstoftwo}{%
+ \@secondoftwo
+ }%
+ {%
+ \expandafter\def\expandafter\NAT@num\expandafter{\the\c@NAT@ctr}%
+ \global\NAT@stdbsttrue
+ }{}%
+ \bibitem@fin
+ \item[\hfil\NAT@anchor{#2}{\NAT@num}]%
+ \global\let\NAT@bibitem@first@sw\@secondoftwo
+ \NAT@bibitem@init
+ }%
+ {%
+ \NAT@anchor{#2}{}%
+ \NAT@bibitem@cont
+ \bibitem@fin
+ }%
+ \@ifx{\NAT@tmp\@empty}{%
+ \NAT@wrout{\the\c@NAT@ctr}{}{}{}{#2}%
+ }{%
+ \expandafter\NAT@ifcmd\NAT@tmp(@)(@)\@nil{#2}%
+ }%
+}%
+\def\bibitem@fin{%
+ \@ifxundefined\@bibstop{}{\csname bibitem@\@bibstop\endcsname}%
+}%
+\def\NAT@bibitem@init{%
+ \let\@bibstop\@undefined
+}%
+\def\NAT@bibitem@cont{%
+ \let\bibitem@Stop\bibitemStop
+ \let\bibitem@NoStop\bibitemContinue
+}%
+\def\BibitemOpen{%
+ \bibitemOpen
+}%
+\def\BibitemShut#1{%
+ \bibitemShut
+ \def\@bibstop{#1}%
+ \let\bibitem@Stop\bibitemStop
+ \let\bibitem@NoStop\bibitemNoStop
+}%
+\def\bibitemStop{}%
+\def\bibitemNoStop{.\spacefactor\@mmm\space}%
+\def\bibitemContinue{\spacefactor\@mmm\space}%
+\mathchardef\@mmm=3000 %
+\providecommand{\bibAnnote}[3]{%
+ \BibitemShut{#1}%
+ \def\@tempa{#3}\@ifx{\@tempa\@empty}{}{%
+ \begin{quotation}\noindent
+ \textsc{Key:}\ #2\\\textsc{Annotation:}\ \@tempa
+ \end{quotation}%
+ }%
+}%
+\providecommand{\bibAnnoteFile}[2]{%
+ \IfFileExists{#2}{%
+ \bibAnnote{#1}{#2}{\input{#2}}%
+ }{%
+ \bibAnnote{#1}{#2}{}%
+ }%
+}%
+\let\bibitemOpen\relax
+\let\bibitemShut\relax
+\def\bibfield{\@ifnum{\NAT@merge>\tw@}{\@bibfield}{\@secondoftwo}}%
+\def\@bibfield#1#2{%
+ \begingroup
+ \let\Doi\@gobble
+ \let\bibinfo\relax
+ \let\restore@protect\@empty
+ \protected@edef\@tempa{#2}%
+ \aftergroup\def\aftergroup\@tempa
+ \expandafter\endgroup\expandafter{\@tempa}%
+ \expandafter\@ifx\expandafter{\csname @bib#1\endcsname\@tempa}{%
+ \expandafter\let\expandafter\@tempa\csname @bib@X#1\endcsname
+ }{%
+ \expandafter\let\csname @bib#1\endcsname\@tempa
+ \expandafter\let\expandafter\@tempa\csname @bib@Y#1\endcsname
+ }%
+ \@ifx{\@tempa\relax}{\let\@tempa\@firstofone}{}%
+ \@tempa{#2}%
+}%
+\def\bibinfo#1{%
+ \expandafter\let\expandafter\@tempa\csname bibinfo@X@#1\endcsname
+ \@ifx{\@tempa\relax}{\@firstofone}{\@tempa}%
+}%
+\def\@bib@Xauthor#1{\let\@bib@Xjournal\@gobble}%
+\def\@bib@Xjournal#1{\begingroup\let\bibinfo@X@journal\@bib@Z@journal#1\endgroup}%
+\def\@bibibid@#1{\textit{ibid}.}%
+\appdef\NAT@bibitem@init{%
+ \let\@bibauthor \@empty
+ \let\@bibjournal \@empty
+ \let\@bib@Z@journal\@bibibid@
+}%
+\ifx\SK@lbibitem\@undefined\else
+ \let\SK@lbibitem\@lbibitem
+ \def\@lbibitem[#1]#2{%
+ \SK@lbibitem[#1]{#2}\SK@\SK@@label{#2}\ignorespaces}\fi
+\newif\ifNAT@stdbst \NAT@stdbstfalse
+
+\AtEndDocument{%
+ \ifNAT@stdbst\if@filesw
+ \immediate\write\@auxout{%
+ \string\providecommand\string\NAT@force@numbers{}%
+ \string\NAT@force@numbers
+ }%
+ \fi\fi
+ }
+\newcommand\NAT@force@numbers{%
+ \ifNAT@numbers\else
+ \PackageError{natbib}{Bibliography not compatible with author-year
+ citations.\MessageBreak
+ Press <return> to continue in numerical citation style}
+ {Check the bibliography entries for non-compliant syntax,\MessageBreak
+ or select author-year BibTeX style, e.g. plainnat}%
+ \global\NAT@numberstrue\fi}
+
+\providecommand\bibcite{}
+\renewcommand\bibcite[2]{%
+ \@ifundefined{b@#1\@extra@binfo}{\relax}{%
+ \NAT@citemultiple
+ \PackageWarningNoLine{natbib}{Citation `#1' multiply defined}%
+ }%
+ \global\@namedef{b@#1\@extra@binfo}{#2}%
+}%
+\AtEndDocument{\NAT@swatrue\let\bibcite\NAT@testdef}
+\newcommand\NAT@testdef[2]{%
+ \def\NAT@temp{#2}%
+ \expandafter \ifx \csname b@#1\@extra@binfo\endcsname\NAT@temp
+ \else
+ \ifNAT@swa \NAT@swafalse
+ \PackageWarningNoLine{natbib}{%
+ Citation(s) may have changed.\MessageBreak
+ Rerun to get citations correct%
+ }%
+ \fi
+ \fi
+}%
+\newcommand\NAT@apalk{}
+\def\NAT@apalk#1, #2, #3\@nil#4{%
+ \if\relax#2\relax
+ \global\NAT@stdbsttrue
+ \NAT@wrout{#1}{}{}{}{#4}%
+ \else
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#4}%
+ \fi
+}%
+\newcommand\citeauthoryear{}
+\def\citeauthoryear#1#2#3(@)(@)\@nil#4{%
+ \if\relax#3\relax
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#4}%
+ \else
+ \NAT@wrout{\the\c@NAT@ctr}{#3}{#2}{#1}{#4}%
+ \fi
+}%
+\newcommand\citestarts{\NAT@open}%
+\newcommand\citeends{\NAT@close}%
+\newcommand\betweenauthors{and}%
+\newcommand\astroncite{}
+\def\astroncite#1#2(@)(@)\@nil#3{%
+ \NAT@wrout{\the\c@NAT@ctr}{#2}{#1}{}{#3}%
+}%
+\newcommand\citename{}
+\def\citename#1#2(@)(@)\@nil#3{\expandafter\NAT@apalk#1#2, \@nil{#3}}
+\newcommand\harvarditem[4][]{%
+ \if\relax#1\relax
+ \bibitem[#2(#3)]{#4}%
+ \else
+ \bibitem[#1(#3)#2]{#4}%
+ \fi
+}%
+\newcommand\harvardleft{\NAT@open}
+\newcommand\harvardright{\NAT@close}
+\newcommand\harvardyearleft{\NAT@open}
+\newcommand\harvardyearright{\NAT@close}
+\AtBeginDocument{\providecommand{\harvardand}{and}}
+\newcommand\harvardurl[1]{\textbf{URL:} \textit{#1}}
+\providecommand\bibsection{}
+\@ifundefined{chapter}{%
+ \renewcommand\bibsection{%
+ \section*{\refname\@mkboth{\MakeUppercase{\refname}}{\MakeUppercase{\refname}}}%
+ }%
+}{%
+ \@ifxundefined\NAT@sectionbib{%
+ \renewcommand\bibsection{%
+ \chapter*{\bibname\@mkboth{\MakeUppercase{\bibname}}{\MakeUppercase{\bibname}}}%
+ }%
+ }{%
+ \renewcommand\bibsection{%
+ \section*{\bibname\ifx\@mkboth\@gobbletwo\else\markright{\MakeUppercase{\bibname}}\fi}%
+ }%
+ }%
+}%
+\@ifclassloaded{amsart}{\renewcommand\bibsection{\section*{\refname}}}{}%
+\@ifclassloaded{amsbook}{\renewcommand\bibsection{\chapter*{\bibname}}}{}%
+\@ifxundefined\bib@heading{}{\let\bibsection\bib@heading}%
+\newcounter{NAT@ctr}
+\renewenvironment{thebibliography}[1]{%
+ \bibsection
+ \parindent\z@
+ \bibpreamble
+ \bibfont
+ \list{\@biblabel{\the\c@NAT@ctr}}{\@bibsetup{#1}\global\c@NAT@ctr\z@}%
+ \ifNAT@openbib
+ \renewcommand\newblock{\par}%
+ \else
+ \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
+ \fi
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.\@m
+ \let\NAT@bibitem@first@sw\@firstoftwo
+ \let\citeN\cite \let\shortcite\cite
+ \let\citeasnoun\cite
+}{%
+ \bibitem@fin
+ \bibpostamble
+ \def\@noitemerr{%
+ \PackageWarning{natbib}{Empty `thebibliography' environment}%
+ }%
+ \endlist
+ \bibcleanup
+}%
+\let\bibfont\@empty
+\let\bibpreamble\@empty
+\let\bibpostamble\@empty
+\def\bibcleanup{\vskip-\lastskip}%
+\providecommand\reset@font{\relax}
+\providecommand\bibname{Bibliography}
+\providecommand\refname{References}
+\newcommand\NAT@citeundefined{\gdef \NAT@undefined {%
+ \PackageWarningNoLine{natbib}{There were undefined citations}}}
+\let \NAT@undefined \relax
+\newcommand\NAT@citemultiple{\gdef \NAT@multiple {%
+ \PackageWarningNoLine{natbib}{There were multiply defined citations}}}
+\let \NAT@multiple \relax
+\AtEndDocument{\NAT@undefined\NAT@multiple}
+\providecommand\@mkboth[2]{}
+\providecommand\MakeUppercase{\uppercase}
+\providecommand{\@extra@b@citeb}{}
+\gdef\@extra@binfo{}
+\def\NAT@anchor#1#2{%
+ \hyper@natanchorstart{#1\@extra@b@citeb}%
+ \def\@tempa{#2}\@ifx{\@tempa\@empty}{}{\@biblabel{#2}}%
+ \hyper@natanchorend
+}%
+\providecommand\hyper@natanchorstart[1]{}%
+\providecommand\hyper@natanchorend{}%
+\providecommand\hyper@natlinkstart[1]{}%
+\providecommand\hyper@natlinkend{}%
+\providecommand\hyper@natlinkbreak[2]{#1}%
+\AtBeginDocument{%
+ \@ifpackageloaded{babel}{%
+ \let\org@@citex\@citex}{}}
+\providecommand\@safe@activestrue{}%
+\providecommand\@safe@activesfalse{}%
+
+\newcommand\NAT@sort@cites[1]{%
+ \let\NAT@cite@list\@empty
+ \@for\@citeb:=#1\do{\expandafter\NAT@star@cite\@citeb\@@}%
+ \if@filesw
+ \expandafter\immediate\expandafter\write\expandafter\@auxout
+ \expandafter{\expandafter\string\expandafter\citation\expandafter{\NAT@cite@list}}%
+ \fi
+ \@ifnum{\NAT@sort>\z@}{%
+ \expandafter\NAT@sort@cites@\expandafter{\NAT@cite@list}%
+ }{}%
+}%
+\def\NAT@star@cite{%
+ \let\NAT@star@sw\@secondoftwo
+ \@ifnum{\NAT@merge>\z@}{%
+ \@ifnextchar*{%
+ \let\NAT@star@sw\@firstoftwo
+ \NAT@star@cite@star
+ }{%
+ \NAT@star@cite@nostar
+ }%
+ }{%
+ \NAT@star@cite@noextension
+ }%
+}%
+\def\NAT@star@cite@star*{%
+ \NAT@star@cite@nostar
+}%
+\def\NAT@star@cite@nostar{%
+ \let\nat@keyopt@open\@empty
+ \let\nat@keyopt@shut\@empty
+ \@ifnextchar[{\NAT@star@cite@pre}{\NAT@star@cite@pre[]}%
+}%
+\def\NAT@star@cite@pre[#1]{%
+ \def\nat@keyopt@open{#1}%
+ \@ifnextchar[{\NAT@star@cite@post}{\NAT@star@cite@post[]}%
+}%
+\def\NAT@star@cite@post[#1]#2\@@{%
+ \def\nat@keyopt@shut{#1}%
+ \NAT@star@sw{\expandafter\global\expandafter\let\csname NAT@b*@#2\endcsname\@empty}{}%
+ \NAT@cite@list@append{#2}%
+}%
+\def\NAT@star@cite@noextension#1\@@{%
+ \let\nat@keyopt@open\@empty
+ \let\nat@keyopt@shut\@empty
+ \NAT@cite@list@append{#1}%
+}%
+\def\NAT@cite@list@append#1{%
+ \edef\@citeb{\@firstofone#1\@empty}%
+ \if@filesw\@ifxundefined\@cprwrite{}{\expandafter\@cprwrite\@citeb=}\fi
+ \if\relax\nat@keyopt@open\relax\else
+ \global\expandafter\let\csname NAT@b@open@\@citeb\endcsname\nat@keyopt@open
+ \fi
+ \if\relax\nat@keyopt@shut\relax\else
+ \global\expandafter\let\csname NAT@b@shut@\@citeb\endcsname\nat@keyopt@shut
+ \fi
+ \toks@\expandafter{\NAT@cite@list}%
+ \ifx\NAT@cite@list\@empty
+ \@temptokena\expandafter{\@citeb}%
+ \else
+ \@temptokena\expandafter{\expandafter,\@citeb}%
+ \fi
+ \edef\NAT@cite@list{\the\toks@\the\@temptokena}%
+}%
+\newcommand\NAT@sort@cites@[1]{%
+ \count@\z@
+ \@tempcntb\m@ne
+ \let\@celt\delimiter
+ \def\NAT@num@list{}%
+ \let\NAT@cite@list\@empty
+ \let\NAT@nonsort@list\@empty
+ \@for \@citeb:=#1\do{\NAT@make@cite@list}%
+ \ifx\NAT@nonsort@list\@empty\else
+ \protected@edef\NAT@cite@list{\NAT@cite@list\NAT@nonsort@list}%
+ \fi
+ \ifx\NAT@cite@list\@empty\else
+ \protected@edef\NAT@cite@list{\expandafter\NAT@xcom\NAT@cite@list @@}%
+ \fi
+}%
+\def\NAT@make@cite@list{%
+ \advance\count@\@ne
+ \@safe@activestrue
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \@safe@activesfalse
+ \@ifundefined{b@\@citeb\@extra@b@citeb}%
+ {\def\NAT@num{A}}%
+ {\NAT@parse{\@citeb}}%
+ \NAT@ifcat@num\NAT@num
+ {\@tempcnta\NAT@num \relax
+ \@ifnum{\@tempcnta<\@tempcntb}{%
+ \let\NAT@@cite@list=\NAT@cite@list
+ \let\NAT@cite@list\@empty
+ \begingroup\let\@celt=\NAT@celt\NAT@num@list\endgroup
+ \protected@edef\NAT@num@list{%
+ \expandafter\NAT@num@celt \NAT@num@list \@gobble @%
+ }%
+ }{%
+ \protected@edef\NAT@num@list{\NAT@num@list \@celt{\NAT@num}}%
+ \protected@edef\NAT@cite@list{\NAT@cite@list\@citeb,}%
+ \@tempcntb\@tempcnta
+ }%
+ }%
+ {\protected@edef\NAT@nonsort@list{\NAT@nonsort@list\@citeb,}}%
+}%
+\def\NAT@celt#1{%
+ \@ifnum{#1>\@tempcnta}{%
+ \xdef\NAT@cite@list{\NAT@cite@list\@citeb,\NAT@@cite@list}%
+ \let\@celt\@gobble
+ }{%
+ \expandafter\def@NAT@cite@lists\NAT@@cite@list\@@
+ }%
+}%
+\def\NAT@num@celt#1#2{%
+ \ifx#1\@celt
+ \@ifnum{#2>\@tempcnta}{%
+ \@celt{\number\@tempcnta}%
+ \@celt{#2}%
+ }{%
+ \@celt{#2}%
+ \expandafter\NAT@num@celt
+ }%
+ \fi
+}%
+\def\def@NAT@cite@lists#1,#2\@@{%
+ \xdef\NAT@cite@list{\NAT@cite@list#1,}%
+ \xdef\NAT@@cite@list{#2}%
+}%
+\def\NAT@nextc#1,#2@@{#1,}
+\def\NAT@restc#1,#2{#2}
+\def\NAT@xcom#1,@@{#1}
+\InputIfFileExists{natbib.cfg}
+ {\typeout{Local config file natbib.cfg used}}{}
+%%
+%% <<<<< End of generated file <<<<<<
+%%
+%% End of file `natbib.sty'.
diff --git a/.agents/skills/ml-paper-writing/templates/icml2026/algorithm.sty b/.agents/skills/ml-paper-writing/templates/icml2026/algorithm.sty
new file mode 100644
index 0000000..843e3d5
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/icml2026/algorithm.sty
@@ -0,0 +1,79 @@
+% ALGORITHM STYLE -- Released 8 April 1996
+% for LaTeX-2e
+% Copyright -- 1994 Peter Williams
+% E-mail Peter.Williams@dsto.defence.gov.au
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{algorithm}
+\typeout{Document Style `algorithm' - floating environment}
+
+\RequirePackage{float}
+\RequirePackage{ifthen}
+\newcommand{\ALG@within}{nothing}
+\newboolean{ALG@within}
+\setboolean{ALG@within}{false}
+\newcommand{\ALG@floatstyle}{ruled}
+\newcommand{\ALG@name}{Algorithm}
+\newcommand{\listalgorithmname}{List of \ALG@name s}
+
+% Declare Options
+% first appearance
+\DeclareOption{plain}{
+ \renewcommand{\ALG@floatstyle}{plain}
+}
+\DeclareOption{ruled}{
+ \renewcommand{\ALG@floatstyle}{ruled}
+}
+\DeclareOption{boxed}{
+ \renewcommand{\ALG@floatstyle}{boxed}
+}
+% then numbering convention
+\DeclareOption{part}{
+ \renewcommand{\ALG@within}{part}
+ \setboolean{ALG@within}{true}
+}
+\DeclareOption{chapter}{
+ \renewcommand{\ALG@within}{chapter}
+ \setboolean{ALG@within}{true}
+}
+\DeclareOption{section}{
+ \renewcommand{\ALG@within}{section}
+ \setboolean{ALG@within}{true}
+}
+\DeclareOption{subsection}{
+ \renewcommand{\ALG@within}{subsection}
+ \setboolean{ALG@within}{true}
+}
+\DeclareOption{subsubsection}{
+ \renewcommand{\ALG@within}{subsubsection}
+ \setboolean{ALG@within}{true}
+}
+\DeclareOption{nothing}{
+ \renewcommand{\ALG@within}{nothing}
+ \setboolean{ALG@within}{true}
+}
+\DeclareOption*{\edef\ALG@name{\CurrentOption}}
+
+% ALGORITHM
+%
+\ProcessOptions
+\floatstyle{\ALG@floatstyle}
+\ifthenelse{\boolean{ALG@within}}{
+ \ifthenelse{\equal{\ALG@within}{part}}
+ {\newfloat{algorithm}{htbp}{loa}[part]}{}
+ \ifthenelse{\equal{\ALG@within}{chapter}}
+ {\newfloat{algorithm}{htbp}{loa}[chapter]}{}
+ \ifthenelse{\equal{\ALG@within}{section}}
+ {\newfloat{algorithm}{htbp}{loa}[section]}{}
+ \ifthenelse{\equal{\ALG@within}{subsection}}
+ {\newfloat{algorithm}{htbp}{loa}[subsection]}{}
+ \ifthenelse{\equal{\ALG@within}{subsubsection}}
+ {\newfloat{algorithm}{htbp}{loa}[subsubsection]}{}
+ \ifthenelse{\equal{\ALG@within}{nothing}}
+ {\newfloat{algorithm}{htbp}{loa}}{}
+}{
+ \newfloat{algorithm}{htbp}{loa}
+}
+\floatname{algorithm}{\ALG@name}
+
+\newcommand{\listofalgorithms}{\listof{algorithm}{\listalgorithmname}}
+
diff --git a/.agents/skills/ml-paper-writing/templates/icml2026/algorithmic.sty b/.agents/skills/ml-paper-writing/templates/icml2026/algorithmic.sty
new file mode 100644
index 0000000..ad61478
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/icml2026/algorithmic.sty
@@ -0,0 +1,201 @@
+% ALGORITHMIC STYLE -- Released 8 APRIL 1996
+% for LaTeX version 2e
+% Copyright -- 1994 Peter Williams
+% E-mail PeterWilliams@dsto.defence.gov.au
+%
+% Modified by Alex Smola (08/2000)
+% E-mail Alex.Smola@anu.edu.au
+%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{algorithmic}
+\typeout{Document Style `algorithmic' - environment}
+%
+\RequirePackage{ifthen}
+\RequirePackage{calc}
+\newboolean{ALC@noend}
+\setboolean{ALC@noend}{false}
+\newcounter{ALC@line}
+\newcounter{ALC@rem}
+\newlength{\ALC@tlm}
+%
+\DeclareOption{noend}{\setboolean{ALC@noend}{true}}
+%
+\ProcessOptions
+%
+% ALGORITHMIC
+\newcommand{\algorithmicrequire}{\textbf{Require:}}
+\newcommand{\algorithmicensure}{\textbf{Ensure:}}
+\newcommand{\algorithmiccomment}[1]{\{#1\}}
+\newcommand{\algorithmicend}{\textbf{end}}
+\newcommand{\algorithmicif}{\textbf{if}}
+\newcommand{\algorithmicthen}{\textbf{then}}
+\newcommand{\algorithmicelse}{\textbf{else}}
+\newcommand{\algorithmicelsif}{\algorithmicelse\ \algorithmicif}
+\newcommand{\algorithmicendif}{\algorithmicend\ \algorithmicif}
+\newcommand{\algorithmicfor}{\textbf{for}}
+\newcommand{\algorithmicforall}{\textbf{for all}}
+\newcommand{\algorithmicdo}{\textbf{do}}
+\newcommand{\algorithmicendfor}{\algorithmicend\ \algorithmicfor}
+\newcommand{\algorithmicwhile}{\textbf{while}}
+\newcommand{\algorithmicendwhile}{\algorithmicend\ \algorithmicwhile}
+\newcommand{\algorithmicloop}{\textbf{loop}}
+\newcommand{\algorithmicendloop}{\algorithmicend\ \algorithmicloop}
+\newcommand{\algorithmicrepeat}{\textbf{repeat}}
+\newcommand{\algorithmicuntil}{\textbf{until}}
+
+%changed by alex smola
+\newcommand{\algorithmicinput}{\textbf{input}}
+\newcommand{\algorithmicoutput}{\textbf{output}}
+\newcommand{\algorithmicset}{\textbf{set}}
+\newcommand{\algorithmictrue}{\textbf{true}}
+\newcommand{\algorithmicfalse}{\textbf{false}}
+\newcommand{\algorithmicand}{\textbf{and\ }}
+\newcommand{\algorithmicor}{\textbf{or\ }}
+\newcommand{\algorithmicfunction}{\textbf{function}}
+\newcommand{\algorithmicendfunction}{\algorithmicend\ \algorithmicfunction}
+\newcommand{\algorithmicmain}{\textbf{main}}
+\newcommand{\algorithmicendmain}{\algorithmicend\ \algorithmicmain}
+%end changed by alex smola
+
+\def\ALC@item[#1]{%
+\if@noparitem \@donoparitem
+ \else \if@inlabel \indent \par \fi
+ \ifhmode \unskip\unskip \par \fi
+ \if@newlist \if@nobreak \@nbitem \else
+ \addpenalty\@beginparpenalty
+ \addvspace\@topsep \addvspace{-\parskip}\fi
+ \else \addpenalty\@itempenalty \addvspace\itemsep
+ \fi
+ \global\@inlabeltrue
+\fi
+\everypar{\global\@minipagefalse\global\@newlistfalse
+ \if@inlabel\global\@inlabelfalse \hskip -\parindent \box\@labels
+ \penalty\z@ \fi
+ \everypar{}}\global\@nobreakfalse
+\if@noitemarg \@noitemargfalse \if@nmbrlist \refstepcounter{\@listctr}\fi \fi
+\sbox\@tempboxa{\makelabel{#1}}%
+\global\setbox\@labels
+ \hbox{\unhbox\@labels \hskip \itemindent
+ \hskip -\labelwidth \hskip -\ALC@tlm
+ \ifdim \wd\@tempboxa >\labelwidth
+ \box\@tempboxa
+ \else \hbox to\labelwidth {\unhbox\@tempboxa}\fi
+ \hskip \ALC@tlm}\ignorespaces}
+%
+\newenvironment{algorithmic}[1][0]{
+\let\@item\ALC@item
+ \newcommand{\ALC@lno}{%
+\ifthenelse{\equal{\arabic{ALC@rem}}{0}}
+{{\footnotesize \arabic{ALC@line}:}}{}%
+}
+\let\@listii\@listi
+\let\@listiii\@listi
+\let\@listiv\@listi
+\let\@listv\@listi
+\let\@listvi\@listi
+\let\@listvii\@listi
+ \newenvironment{ALC@g}{
+ \begin{list}{\ALC@lno}{ \itemsep\z@ \itemindent\z@
+ \listparindent\z@ \rightmargin\z@
+ \topsep\z@ \partopsep\z@ \parskip\z@\parsep\z@
+ \leftmargin 1em
+ \addtolength{\ALC@tlm}{\leftmargin}
+ }
+ }
+ {\end{list}}
+ \newcommand{\ALC@it}{\addtocounter{ALC@line}{1}\addtocounter{ALC@rem}{1}\ifthenelse{\equal{\arabic{ALC@rem}}{#1}}{\setcounter{ALC@rem}{0}}{}\item}
+ \newcommand{\ALC@com}[1]{\ifthenelse{\equal{##1}{default}}%
+{}{\ \algorithmiccomment{##1}}}
+ \newcommand{\REQUIRE}{\item[\algorithmicrequire]}
+ \newcommand{\ENSURE}{\item[\algorithmicensure]}
+ \newcommand{\STATE}{\ALC@it}
+ \newcommand{\COMMENT}[1]{\algorithmiccomment{##1}}
+%changes by alex smola
+ \newcommand{\INPUT}{\item[\algorithmicinput]}
+ \newcommand{\OUTPUT}{\item[\algorithmicoutput]}
+ \newcommand{\SET}{\item[\algorithmicset]}
+% \newcommand{\TRUE}{\algorithmictrue}
+% \newcommand{\FALSE}{\algorithmicfalse}
+ \newcommand{\AND}{\algorithmicand}
+ \newcommand{\OR}{\algorithmicor}
+ \newenvironment{ALC@func}{\begin{ALC@g}}{\end{ALC@g}}
+ \newenvironment{ALC@main}{\begin{ALC@g}}{\end{ALC@g}}
+%end changes by alex smola
+ \newenvironment{ALC@if}{\begin{ALC@g}}{\end{ALC@g}}
+ \newenvironment{ALC@for}{\begin{ALC@g}}{\end{ALC@g}}
+ \newenvironment{ALC@whl}{\begin{ALC@g}}{\end{ALC@g}}
+ \newenvironment{ALC@loop}{\begin{ALC@g}}{\end{ALC@g}}
+ \newenvironment{ALC@rpt}{\begin{ALC@g}}{\end{ALC@g}}
+ \renewcommand{\\}{\@centercr}
+ \newcommand{\IF}[2][default]{\ALC@it\algorithmicif\ ##2\ \algorithmicthen%
+\ALC@com{##1}\begin{ALC@if}}
+ \newcommand{\SHORTIF}[2]{\ALC@it\algorithmicif\ ##1\
+ \algorithmicthen\ {##2}}
+ \newcommand{\ELSE}[1][default]{\end{ALC@if}\ALC@it\algorithmicelse%
+\ALC@com{##1}\begin{ALC@if}}
+ \newcommand{\ELSIF}[2][default]%
+{\end{ALC@if}\ALC@it\algorithmicelsif\ ##2\ \algorithmicthen%
+\ALC@com{##1}\begin{ALC@if}}
+ \newcommand{\FOR}[2][default]{\ALC@it\algorithmicfor\ ##2\ \algorithmicdo%
+\ALC@com{##1}\begin{ALC@for}}
+ \newcommand{\FORALL}[2][default]{\ALC@it\algorithmicforall\ ##2\ %
+\algorithmicdo%
+\ALC@com{##1}\begin{ALC@for}}
+ \newcommand{\SHORTFORALL}[2]{\ALC@it\algorithmicforall\ ##1\ %
+ \algorithmicdo\ {##2}}
+ \newcommand{\WHILE}[2][default]{\ALC@it\algorithmicwhile\ ##2\ %
+\algorithmicdo%
+\ALC@com{##1}\begin{ALC@whl}}
+ \newcommand{\LOOP}[1][default]{\ALC@it\algorithmicloop%
+\ALC@com{##1}\begin{ALC@loop}}
+%changed by alex smola
+ \newcommand{\FUNCTION}[2][default]{\ALC@it\algorithmicfunction\ ##2\ %
+ \ALC@com{##1}\begin{ALC@func}}
+ \newcommand{\MAIN}[2][default]{\ALC@it\algorithmicmain\ ##2\ %
+ \ALC@com{##1}\begin{ALC@main}}
+%end changed by alex smola
+ \newcommand{\REPEAT}[1][default]{\ALC@it\algorithmicrepeat%
+ \ALC@com{##1}\begin{ALC@rpt}}
+ \newcommand{\UNTIL}[1]{\end{ALC@rpt}\ALC@it\algorithmicuntil\ ##1}
+ \ifthenelse{\boolean{ALC@noend}}{
+ \newcommand{\ENDIF}{\end{ALC@if}}
+ \newcommand{\ENDFOR}{\end{ALC@for}}
+ \newcommand{\ENDWHILE}{\end{ALC@whl}}
+ \newcommand{\ENDLOOP}{\end{ALC@loop}}
+ \newcommand{\ENDFUNCTION}{\end{ALC@func}}
+ \newcommand{\ENDMAIN}{\end{ALC@main}}
+ }{
+ \newcommand{\ENDIF}{\end{ALC@if}\ALC@it\algorithmicendif}
+ \newcommand{\ENDFOR}{\end{ALC@for}\ALC@it\algorithmicendfor}
+ \newcommand{\ENDWHILE}{\end{ALC@whl}\ALC@it\algorithmicendwhile}
+ \newcommand{\ENDLOOP}{\end{ALC@loop}\ALC@it\algorithmicendloop}
+ \newcommand{\ENDFUNCTION}{\end{ALC@func}\ALC@it\algorithmicendfunction}
+ \newcommand{\ENDMAIN}{\end{ALC@main}\ALC@it\algorithmicendmain}
+ }
+ \renewcommand{\@toodeep}{}
+ \begin{list}{\ALC@lno}{\setcounter{ALC@line}{0}\setcounter{ALC@rem}{0}%
+ \itemsep\z@ \itemindent\z@ \listparindent\z@%
+ \partopsep\z@ \parskip\z@ \parsep\z@%
+ \labelsep 0.5em \topsep 0.2em%
+ \ifthenelse{\equal{#1}{0}}
+ {\labelwidth 0.5em }
+ {\labelwidth 1.2em }
+ \leftmargin\labelwidth \addtolength{\leftmargin}{\labelsep}
+ \ALC@tlm\labelsep
+ }
+ }
+ {\end{list}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.agents/skills/ml-paper-writing/templates/icml2026/example_paper.bib b/.agents/skills/ml-paper-writing/templates/icml2026/example_paper.bib
new file mode 100644
index 0000000..ac29a99
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/icml2026/example_paper.bib
@@ -0,0 +1,75 @@
+@inproceedings{langley00,
+ author = {P. Langley},
+ title = {Crafting Papers on Machine Learning},
+ year = {2000},
+ pages = {1207--1216},
+ editor = {Pat Langley},
+ booktitle = {Proceedings of the 17th International Conference
+ on Machine Learning (ICML 2000)},
+ address = {Stanford, CA},
+ publisher = {Morgan Kaufmann}
+}
+
+@TechReport{mitchell80,
+ author = "T. M. Mitchell",
+ title = "The Need for Biases in Learning Generalizations",
+ institution = "Computer Science Department, Rutgers University",
+ year = "1980",
+ address = "New Brunswick, MA",
+}
+
+@phdthesis{kearns89,
+ author = {M. J. Kearns},
+ title = {Computational Complexity of Machine Learning},
+ school = {Department of Computer Science, Harvard University},
+ year = {1989}
+}
+
+@Book{MachineLearningI,
+ editor = "R. S. Michalski and J. G. Carbonell and T.
+ M. Mitchell",
+ title = "Machine Learning: An Artificial Intelligence
+ Approach, Vol. I",
+ publisher = "Tioga",
+ year = "1983",
+ address = "Palo Alto, CA"
+}
+
+@Book{DudaHart2nd,
+ author = "R. O. Duda and P. E. Hart and D. G. Stork",
+ title = "Pattern Classification",
+ publisher = "John Wiley and Sons",
+ edition = "2nd",
+ year = "2000"
+}
+
+@misc{anonymous,
+ title= {Suppressed for Anonymity},
+ author= {Author, N. N.},
+ year= {2021}
+}
+
+@InCollection{Newell81,
+ author = "A. Newell and P. S. Rosenbloom",
+ title = "Mechanisms of Skill Acquisition and the Law of
+ Practice",
+ booktitle = "Cognitive Skills and Their Acquisition",
+ pages = "1--51",
+ publisher = "Lawrence Erlbaum Associates, Inc.",
+ year = "1981",
+ editor = "J. R. Anderson",
+ chapter = "1",
+ address = "Hillsdale, NJ"
+}
+
+
+@Article{Samuel59,
+ author = "A. L. Samuel",
+ title = "Some Studies in Machine Learning Using the Game of
+ Checkers",
+ journal = "IBM Journal of Research and Development",
+ year = "1959",
+ volume = "3",
+ number = "3",
+ pages = "211--229"
+}
diff --git a/.agents/skills/ml-paper-writing/templates/icml2026/example_paper.pdf b/.agents/skills/ml-paper-writing/templates/icml2026/example_paper.pdf
new file mode 100644
index 0000000..26dc1b8
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/icml2026/example_paper.pdf
Binary files differ
diff --git a/.agents/skills/ml-paper-writing/templates/icml2026/example_paper.tex b/.agents/skills/ml-paper-writing/templates/icml2026/example_paper.tex
new file mode 100644
index 0000000..2d3e831
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/icml2026/example_paper.tex
@@ -0,0 +1,662 @@
+%%%%%%%% ICML 2026 EXAMPLE LATEX SUBMISSION FILE %%%%%%%%%%%%%%%%%
+
+\documentclass{article}
+
+% Recommended, but optional, packages for figures and better typesetting:
+\usepackage{microtype}
+\usepackage{graphicx}
+\usepackage{subcaption}
+\usepackage{booktabs} % for professional tables
+
+% hyperref makes hyperlinks in the resulting PDF.
+% If your build breaks (sometimes temporarily if a hyperlink spans a page)
+% please comment out the following usepackage line and replace
+% \usepackage{icml2026} with \usepackage[nohyperref]{icml2026} above.
+\usepackage{hyperref}
+
+
+% Attempt to make hyperref and algorithmic work together better:
+\newcommand{\theHalgorithm}{\arabic{algorithm}}
+
+% Use the following line for the initial blind version submitted for review:
+\usepackage{icml2026}
+
+% For preprint, use
+% \usepackage[preprint]{icml2026}
+
+% If accepted, instead use the following line for the camera-ready submission:
+% \usepackage[accepted]{icml2026}
+
+\usepackage{amsmath}
+\usepackage{amssymb}
+\usepackage{mathtools}
+\usepackage{amsthm}
+
+
+% if you use cleveref..
+\usepackage[capitalize,noabbrev]{cleveref}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% THEOREMS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\theoremstyle{plain}
+\newtheorem{theorem}{Theorem}[section]
+\newtheorem{proposition}[theorem]{Proposition}
+\newtheorem{lemma}[theorem]{Lemma}
+\newtheorem{corollary}[theorem]{Corollary}
+\theoremstyle{definition}
+\newtheorem{definition}[theorem]{Definition}
+\newtheorem{assumption}[theorem]{Assumption}
+\theoremstyle{remark}
+\newtheorem{remark}[theorem]{Remark}
+
+% Todonotes is useful during development; simply uncomment the next line
+% and comment out the line below the next line to turn off comments
+%\usepackage[disable,textsize=tiny]{todonotes}
+\usepackage[textsize=tiny]{todonotes}
+
+% The \icmltitle you define below is probably too long as a header.
+% Therefore, a short form for the running title is supplied here:
+\icmltitlerunning{Submission and Formatting Instructions for ICML 2026}
+
+\begin{document}
+
+\twocolumn[
+ \icmltitle{Submission and Formatting Instructions for \\
+ International Conference on Machine Learning (ICML 2026)}
+
+ % It is OKAY to include author information, even for blind submissions: the
+ % style file will automatically remove it for you unless you've provided
+ % the [accepted] option to the icml2026 package.
+
+ % List of affiliations: The first argument should be a (short) identifier you
+ % will use later to specify author affiliations Academic affiliations
+ % should list Department, University, City, Region, Country Industry
+ % affiliations should list Company, City, Region, Country
+
+ % You can specify symbols, otherwise they are numbered in order. Ideally, you
+ % should not use this facility. Affiliations will be numbered in order of
+ % appearance and this is the preferred way.
+ \icmlsetsymbol{equal}{*}
+
+ \begin{icmlauthorlist}
+ \icmlauthor{Firstname1 Lastname1}{equal,yyy}
+ \icmlauthor{Firstname2 Lastname2}{equal,yyy,comp}
+ \icmlauthor{Firstname3 Lastname3}{comp}
+ \icmlauthor{Firstname4 Lastname4}{sch}
+ \icmlauthor{Firstname5 Lastname5}{yyy}
+ \icmlauthor{Firstname6 Lastname6}{sch,yyy,comp}
+ \icmlauthor{Firstname7 Lastname7}{comp}
+ %\icmlauthor{}{sch}
+ \icmlauthor{Firstname8 Lastname8}{sch}
+ \icmlauthor{Firstname8 Lastname8}{yyy,comp}
+ %\icmlauthor{}{sch}
+ %\icmlauthor{}{sch}
+ \end{icmlauthorlist}
+
+ \icmlaffiliation{yyy}{Department of XXX, University of YYY, Location, Country}
+ \icmlaffiliation{comp}{Company Name, Location, Country}
+ \icmlaffiliation{sch}{School of ZZZ, Institute of WWW, Location, Country}
+
+ \icmlcorrespondingauthor{Firstname1 Lastname1}{first1.last1@xxx.edu}
+ \icmlcorrespondingauthor{Firstname2 Lastname2}{first2.last2@www.uk}
+
+ % You may provide any keywords that you find helpful for describing your
+ % paper; these are used to populate the "keywords" metadata in the PDF but
+ % will not be shown in the document
+ \icmlkeywords{Machine Learning, ICML}
+
+ \vskip 0.3in
+]
+
+% this must go after the closing bracket ] following \twocolumn[ ...
+
+% This command actually creates the footnote in the first column listing the
+% affiliations and the copyright notice. The command takes one argument, which
+% is text to display at the start of the footnote. The \icmlEqualContribution
+% command is standard text for equal contribution. Remove it (just {}) if you
+% do not need this facility.
+
+% Use ONE of the following lines. DO NOT remove the command.
+% If you have no special notice, KEEP empty braces:
+\printAffiliationsAndNotice{} % no special notice (required even if empty)
+% Or, if applicable, use the standard equal contribution text:
+% \printAffiliationsAndNotice{\icmlEqualContribution}
+
+\begin{abstract}
+ This document provides a basic paper template and submission guidelines.
+ Abstracts must be a single paragraph, ideally between 4--6 sentences long.
+ Gross violations will trigger corrections at the camera-ready phase.
+\end{abstract}
+
+\section{Electronic Submission}
+
+Submission to ICML 2026 will be entirely electronic, via a web site
+(not email). Information about the submission process and \LaTeX\ templates
+are available on the conference web site at:
+\begin{center}
+ \texttt{http://icml.cc/}
+\end{center}
+
+The guidelines below will be enforced for initial submissions and
+camera-ready copies. Here is a brief summary:
+\begin{itemize}
+ \item Submissions must be in PDF\@.
+ \item If your paper has appendices, submit the appendix together with the
+ main body and the references \textbf{as a single file}. Reviewers will not
+ look for appendices as a separate PDF file. So if you submit such an extra
+ file, reviewers will very likely miss it.
+ \item Page limit: The main body of the paper has to be fitted to 8 pages,
+ excluding references and appendices; the space for the latter two is not
+ limited in pages, but the total file size may not exceed 10MB. For the
+ final version of the paper, authors can add one extra page to the main
+ body.
+ \item \textbf{Do not include author information or acknowledgements} in your
+ initial submission.
+ \item Your paper should be in \textbf{10 point Times font}.
+ \item Make sure your PDF file only uses Type-1 fonts.
+ \item Place figure captions \emph{under} the figure (and omit titles from
+ inside the graphic file itself). Place table captions \emph{over} the
+ table.
+ \item References must include page numbers whenever possible and be as
+ complete as possible. Place multiple citations in chronological order.
+ \item Do not alter the style template; in particular, do not compress the
+ paper format by reducing the vertical spaces.
+ \item Keep your abstract brief and self-contained, one paragraph and roughly
+ 4--6 sentences. Gross violations will require correction at the
+ camera-ready phase. The title should have content words capitalized.
+\end{itemize}
+
+\subsection{Submitting Papers}
+
+\textbf{Anonymous Submission:} ICML uses double-blind review: no identifying
+author information may appear on the title page or in the paper
+itself. \cref{author info} gives further details.
+
+\medskip
+
+Authors must provide their manuscripts in \textbf{PDF} format.
+Furthermore, please make sure that files contain only embedded Type-1 fonts
+(e.g.,~using the program \texttt{pdffonts} in linux or using
+File/DocumentProperties/Fonts in Acrobat). Other fonts (like Type-3)
+might come from graphics files imported into the document.
+
+Authors using \textbf{Word} must convert their document to PDF\@. Most
+of the latest versions of Word have the facility to do this
+automatically. Submissions will not be accepted in Word format or any
+format other than PDF\@. Really. We're not joking. Don't send Word.
+
+Those who use \textbf{\LaTeX} should avoid including Type-3 fonts.
+Those using \texttt{latex} and \texttt{dvips} may need the following
+two commands:
+
+{\footnotesize
+\begin{verbatim}
+dvips -Ppdf -tletter -G0 -o paper.ps paper.dvi
+ps2pdf paper.ps
+\end{verbatim}}
+It is a zero following the ``-G'', which tells dvips to use
+the config.pdf file. Newer \TeX\ distributions don't always need this
+option.
+
+Using \texttt{pdflatex} rather than \texttt{latex}, often gives better
+results. This program avoids the Type-3 font problem, and supports more
+advanced features in the \texttt{microtype} package.
+
+\textbf{Graphics files} should be a reasonable size, and included from
+an appropriate format. Use vector formats (.eps/.pdf) for plots,
+lossless bitmap formats (.png) for raster graphics with sharp lines, and
+jpeg for photo-like images.
+
+The style file uses the \texttt{hyperref} package to make clickable
+links in documents. If this causes problems for you, add
+\texttt{nohyperref} as one of the options to the \texttt{icml2026}
+usepackage statement.
+
+\subsection{Submitting Final Camera-Ready Copy}
+
+The final versions of papers accepted for publication should follow the
+same format and naming convention as initial submissions, except that
+author information (names and affiliations) should be given. See
+\cref{final author} for formatting instructions.
+
+The footnote, ``Preliminary work. Under review by the International
+Conference on Machine Learning (ICML). Do not distribute.'' must be
+modified to ``\textit{Proceedings of the
+ $\mathit{43}^{rd}$ International Conference on Machine Learning},
+Seoul, South Korea, PMLR 306, 2026.
+Copyright 2026 by the author(s).''
+
+For those using the \textbf{\LaTeX} style file, this change (and others) is
+handled automatically by simply changing
+$\mathtt{\backslash usepackage\{icml2026\}}$ to
+$$\mathtt{\backslash usepackage[accepted]\{icml2026\}}$$
+Authors using \textbf{Word} must edit the
+footnote on the first page of the document themselves.
+
+Camera-ready copies should have the title of the paper as running head
+on each page except the first one. The running title consists of a
+single line centered above a horizontal rule which is $1$~point thick.
+The running head should be centered, bold and in $9$~point type. The
+rule should be $10$~points above the main text. For those using the
+\textbf{\LaTeX} style file, the original title is automatically set as running
+head using the \texttt{fancyhdr} package which is included in the ICML
+2026 style file package. In case that the original title exceeds the
+size restrictions, a shorter form can be supplied by using
+
+\verb|\icmltitlerunning{...}|
+
+just before $\mathtt{\backslash begin\{document\}}$.
+Authors using \textbf{Word} must edit the header of the document themselves.
+
+\section{Format of the Paper}
+
+All submissions must follow the specified format.
+
+\subsection{Dimensions}
+
+The text of the paper should be formatted in two columns, with an
+overall width of 6.75~inches, height of 9.0~inches, and 0.25~inches
+between the columns. The left margin should be 0.75~inches and the top
+margin 1.0~inch (2.54~cm). The right and bottom margins will depend on
+whether you print on US letter or A4 paper, but all final versions
+must be produced for US letter size.
+Do not write anything on the margins.
+
+The paper body should be set in 10~point type with a vertical spacing
+of 11~points. Please use Times typeface throughout the text.
+
+\subsection{Title}
+
+The paper title should be set in 14~point bold type and centered
+between two horizontal rules that are 1~point thick, with 1.0~inch
+between the top rule and the top edge of the page. Capitalize the
+first letter of content words and put the rest of the title in lower
+case.
+You can use TeX math in the title (we suggest sparingly),
+but no custom macros, images, or other TeX commands.
+Please make sure that accents, special characters, etc., are entered using
+TeX commands and not using non-English characters.
+
+\subsection{Author Information for Submission}
+\label{author info}
+
+ICML uses double-blind review, so author information must not appear. If
+you are using \LaTeX\/ and the \texttt{icml2026.sty} file, use
+\verb+\icmlauthor{...}+ to specify authors and \verb+\icmlaffiliation{...}+
+to specify affiliations. (Read the TeX code used to produce this document for
+an example usage.) The author information will not be printed unless
+\texttt{accepted} is passed as an argument to the style file. Submissions that
+include the author information will not be reviewed.
+
+\subsubsection{Self-Citations}
+
+If you are citing published papers for which you are an author, refer
+to yourself in the third person. In particular, do not use phrases
+that reveal your identity (e.g., ``in previous work \cite{langley00}, we
+have shown \ldots'').
+
+Do not anonymize citations in the reference section. The only exception are manuscripts that are
+not yet published (e.g., under submission). If you choose to refer to
+such unpublished manuscripts \cite{anonymous}, anonymized copies have
+to be submitted
+as Supplementary Material via OpenReview\@. However, keep in mind that an ICML
+paper should be self contained and should contain sufficient detail
+for the reviewers to evaluate the work. In particular, reviewers are
+not required to look at the Supplementary Material when writing their
+review (they are not required to look at more than the first $8$ pages of the submitted document).
+
+\subsubsection{Camera-Ready Author Information}
+\label{final author}
+
+If a paper is accepted, a final camera-ready copy must be prepared.
+%
+For camera-ready papers, author information should start 0.3~inches below the
+bottom rule surrounding the title. The authors' names should appear in 10~point
+bold type, in a row, separated by white space, and centered. Author names should
+not be broken across lines. Unbolded superscripted numbers, starting 1, should
+be used to refer to affiliations.
+
+Affiliations should be numbered in the order of appearance. A single footnote
+block of text should be used to list all the affiliations. (Academic
+affiliations should list Department, University, City, State/Region, Country.
+Similarly for industrial affiliations.)
+
+Each distinct affiliations should be listed once. If an author has multiple
+affiliations, multiple superscripts should be placed after the name, separated
+by thin spaces. If the authors would like to highlight equal contribution by
+multiple first authors, those authors should have an asterisk placed after their
+name in superscript, and the term ``\textsuperscript{*}Equal contribution"
+should be placed in the footnote block ahead of the list of affiliations. A
+list of corresponding authors and their emails (in the format Full Name
+\textless{}email@domain.com\textgreater{}) can follow the list of affiliations.
+Ideally only one or two names should be listed.
+
+A sample file with author names is included in the ICML2026 style file
+package. Turn on the \texttt{[accepted]} option to the stylefile to
+see the names rendered. All of the guidelines above are implemented
+by the \LaTeX\ style file.
+
+\subsection{Abstract}
+
+The paper abstract should begin in the left column, 0.4~inches below the final
+address. The heading `Abstract' should be centered, bold, and in 11~point type.
+The abstract body should use 10~point type, with a vertical spacing of
+11~points, and should be indented 0.25~inches more than normal on left-hand and
+right-hand margins. Insert 0.4~inches of blank space after the body. Keep your
+abstract brief and self-contained, limiting it to one paragraph and roughly 4--6
+sentences. Gross violations will require correction at the camera-ready phase.
+
+\subsection{Partitioning the Text}
+
+You should organize your paper into sections and paragraphs to help readers
+place a structure on the material and understand its contributions.
+
+\subsubsection{Sections and Subsections}
+
+Section headings should be numbered, flush left, and set in 11~pt bold type
+with the content words capitalized. Leave 0.25~inches of space before the
+heading and 0.15~inches after the heading.
+
+Similarly, subsection headings should be numbered, flush left, and set in 10~pt
+bold type with the content words capitalized. Leave
+0.2~inches of space before the heading and 0.13~inches afterward.
+
+Finally, subsubsection headings should be numbered, flush left, and set in
+10~pt small caps with the content words capitalized. Leave
+0.18~inches of space before the heading and 0.1~inches after the heading.
+
+Please use no more than three levels of headings.
+
+\subsubsection{Paragraphs and Footnotes}
+
+Within each section or subsection, you should further partition the paper into
+paragraphs. Do not indent the first line of a given paragraph, but insert a
+blank line between succeeding ones.
+
+You can use footnotes\footnote{Footnotes should be complete sentences.}
+to provide readers with additional information about a topic without
+interrupting the flow of the paper. Indicate footnotes with a number in the
+text where the point is most relevant. Place the footnote in 9~point type at
+the bottom of the column in which it appears. Precede the first footnote in a
+column with a horizontal rule of 0.8~inches.\footnote{Multiple footnotes can
+ appear in each column, in the same order as they appear in the text,
+ but spread them across columns and pages if possible.}
+
+\begin{figure}[ht]
+ \vskip 0.2in
+ \begin{center}
+ \centerline{\includegraphics[width=\columnwidth]{icml_numpapers}}
+ \caption{
+ Historical locations and number of accepted papers for International
+ Machine Learning Conferences (ICML 1993 -- ICML 2008) and International
+ Workshops on Machine Learning (ML 1988 -- ML 1992). At the time this
+ figure was produced, the number of accepted papers for ICML 2008 was
+ unknown and instead estimated.
+ }
+ \label{icml-historical}
+ \end{center}
+\end{figure}
+
+\subsection{Figures}
+
+You may want to include figures in the paper to illustrate your approach and
+results. Such artwork should be centered, legible, and separated from the text.
+Lines should be dark and at least 0.5~points thick for purposes of
+reproduction, and text should not appear on a gray background.
+
+Label all distinct components of each figure. If the figure takes the form of a
+graph, then give a name for each axis and include a legend that briefly
+describes each curve. Do not include a title inside the figure; instead, the
+caption should serve this function.
+
+Number figures sequentially, placing the figure number and caption \emph{after}
+the graphics, with at least 0.1~inches of space before the caption and
+0.1~inches after it, as in \cref{icml-historical}. The figure caption should be
+set in 9~point type and centered unless it runs two or more lines, in which
+case it should be flush left. You may float figures to the top or bottom of a
+column, and you may set wide figures across both columns (use the environment
+\texttt{figure*} in \LaTeX). Always place two-column figures at the top or
+bottom of the page.
+
+\subsection{Algorithms}
+
+If you are using \LaTeX, please use the ``algorithm'' and ``algorithmic''
+environments to format pseudocode. These require the corresponding stylefiles,
+algorithm.sty and algorithmic.sty, which are supplied with this package.
+\cref{alg:example} shows an example.
+
+\begin{algorithm}[tb]
+ \caption{Bubble Sort}
+ \label{alg:example}
+ \begin{algorithmic}
+ \STATE {\bfseries Input:} data $x_i$, size $m$
+ \REPEAT
+ \STATE Initialize $noChange = true$.
+ \FOR{$i=1$ {\bfseries to} $m-1$}
+ \IF{$x_i > x_{i+1}$}
+ \STATE Swap $x_i$ and $x_{i+1}$
+ \STATE $noChange = false$
+ \ENDIF
+ \ENDFOR
+ \UNTIL{$noChange$ is $true$}
+ \end{algorithmic}
+\end{algorithm}
+
+
+\subsection{Tables}
+
+You may also want to include tables that summarize material. Like figures,
+these should be centered, legible, and numbered consecutively. However, place
+the title \emph{above} the table with at least 0.1~inches of space before the
+title and the same after it, as in \cref{sample-table}. The table title should
+be set in 9~point type and centered unless it runs two or more lines, in which
+case it should be flush left.
+
+% Note use of \abovespace and \belowspace to get reasonable spacing
+% above and below tabular lines.
+
+\begin{table}[t]
+ \caption{Classification accuracies for naive Bayes and flexible
+ Bayes on various data sets.}
+ \label{sample-table}
+ \begin{center}
+ \begin{small}
+ \begin{sc}
+ \begin{tabular}{lcccr}
+ \toprule
+ Data set & Naive & Flexible & Better? \\
+ \midrule
+ Breast & 95.9$\pm$ 0.2 & 96.7$\pm$ 0.2 & $\surd$ \\
+ Cleveland & 83.3$\pm$ 0.6 & 80.0$\pm$ 0.6 & $\times$ \\
+ Glass2 & 61.9$\pm$ 1.4 & 83.8$\pm$ 0.7 & $\surd$ \\
+ Credit & 74.8$\pm$ 0.5 & 78.3$\pm$ 0.6 & \\
+ Horse & 73.3$\pm$ 0.9 & 69.7$\pm$ 1.0 & $\times$ \\
+ Meta & 67.1$\pm$ 0.6 & 76.5$\pm$ 0.5 & $\surd$ \\
+ Pima & 75.1$\pm$ 0.6 & 73.9$\pm$ 0.5 & \\
+ Vehicle & 44.9$\pm$ 0.6 & 61.5$\pm$ 0.4 & $\surd$ \\
+ \bottomrule
+ \end{tabular}
+ \end{sc}
+ \end{small}
+ \end{center}
+ \vskip -0.1in
+\end{table}
+
+Tables contain textual material, whereas figures contain graphical material.
+Specify the contents of each row and column in the table's topmost row. Again,
+you may float tables to a column's top or bottom, and set wide tables across
+both columns. Place two-column tables at the top or bottom of the page.
+
+\subsection{Theorems and Such}
+The preferred way is to number definitions, propositions, lemmas, etc.
+consecutively, within sections, as shown below.
+\begin{definition}
+ \label{def:inj}
+ A function $f:X \to Y$ is injective if for any $x,y\in X$ different, $f(x)\ne
+ f(y)$.
+\end{definition}
+Using \cref{def:inj} we immediate get the following result:
+\begin{proposition}
+ If $f$ is injective mapping a set $X$ to another set $Y$,
+ the cardinality of $Y$ is at least as large as that of $X$
+\end{proposition}
+\begin{proof}
+ Left as an exercise to the reader.
+\end{proof}
+\cref{lem:usefullemma} stated next will prove to be useful.
+\begin{lemma}
+ \label{lem:usefullemma}
+ For any $f:X \to Y$ and $g:Y\to Z$ injective functions, $f \circ g$ is
+ injective.
+\end{lemma}
+\begin{theorem}
+ \label{thm:bigtheorem}
+ If $f:X\to Y$ is bijective, the cardinality of $X$ and $Y$ are the same.
+\end{theorem}
+An easy corollary of \cref{thm:bigtheorem} is the following:
+\begin{corollary}
+ If $f:X\to Y$ is bijective,
+ the cardinality of $X$ is at least as large as that of $Y$.
+\end{corollary}
+\begin{assumption}
+ The set $X$ is finite.
+ \label{ass:xfinite}
+\end{assumption}
+\begin{remark}
+ According to some, it is only the finite case (cf. \cref{ass:xfinite}) that
+ is interesting.
+\end{remark}
+%restatable
+
+\subsection{Citations and References}
+
+Please use APA reference format regardless of your formatter or word processor.
+If you rely on the \LaTeX\/ bibliographic facility, use \texttt{natbib.sty} and
+\texttt{icml2026.bst} included in the style-file package to obtain this format.
+
+Citations within the text should include the authors' last names and year. If
+the authors' names are included in the sentence, place only the year in
+parentheses, for example when referencing Arthur Samuel's pioneering work
+\yrcite{Samuel59}. Otherwise place the entire reference in parentheses with the
+authors and year separated by a comma \cite{Samuel59}. List multiple references
+separated by semicolons \cite{kearns89,Samuel59,mitchell80}. Use the `et~al.'
+construct only for citations with three or more authors or after listing all
+authors to a publication in an earlier reference \cite{MachineLearningI}.
+
+Authors should cite their own work in the third person in the initial version
+of their paper submitted for blind review. Please refer to \cref{author info}
+for detailed instructions on how to cite your own papers.
+
+Use an unnumbered first-level section heading for the references, and use a
+hanging indent style, with the first line of the reference flush against the
+left margin and subsequent lines indented by 10 points. The references at the
+end of this document give examples for journal articles \cite{Samuel59},
+conference publications \cite{langley00}, book chapters \cite{Newell81}, books
+\cite{DudaHart2nd}, edited volumes \cite{MachineLearningI}, technical reports
+\cite{mitchell80}, and dissertations \cite{kearns89}.
+
+Alphabetize references by the surnames of the first authors, with single author
+entries preceding multiple author entries. Order references for the same
+authors by year of publication, with the earliest first. Make sure that each
+reference includes all relevant information (e.g., page numbers).
+
+Please put some effort into making references complete, presentable, and
+consistent, e.g. use the actual current name of authors. If using bibtex,
+please protect capital letters of names and abbreviations in titles, for
+example, use \{B\}ayesian or \{L\}ipschitz in your .bib file.
+
+\section*{Accessibility}
+
+Authors are kindly asked to make their submissions as accessible as possible
+for everyone including people with disabilities and sensory or neurological
+differences. Tips of how to achieve this and what to pay attention to will be
+provided on the conference website \url{http://icml.cc/}.
+
+\section*{Software and Data}
+
+If a paper is accepted, we strongly encourage the publication of software and
+data with the camera-ready version of the paper whenever appropriate. This can
+be done by including a URL in the camera-ready copy. However, \textbf{do not}
+include URLs that reveal your institution or identity in your submission for
+review. Instead, provide an anonymous URL or upload the material as
+``Supplementary Material'' into the OpenReview reviewing system. Note that
+reviewers are not required to look at this material when writing their review.
+
+% Acknowledgements should only appear in the accepted version.
+\section*{Acknowledgements}
+
+\textbf{Do not} include acknowledgements in the initial version of the paper
+submitted for blind review.
+
+If a paper is accepted, the final camera-ready version can (and usually should)
+include acknowledgements. Such acknowledgements should be placed at the end of
+the section, in an unnumbered section that does not count towards the paper
+page limit. Typically, this will include thanks to reviewers who gave useful
+comments, to colleagues who contributed to the ideas, and to funding agencies
+and corporate sponsors that provided financial support.
+
+\section*{Impact Statement}
+
+Authors are \textbf{required} to include a statement of the potential broader
+impact of their work, including its ethical aspects and future societal
+consequences. This statement should be in an unnumbered section at the end of
+the paper (co-located with Acknowledgements -- the two may appear in either
+order, but both must be before References), and does not count toward the paper
+page limit. In many cases, where the ethical impacts and expected societal
+implications are those that are well established when advancing the field of
+Machine Learning, substantial discussion is not required, and a simple
+statement such as the following will suffice:
+
+``This paper presents work whose goal is to advance the field of Machine
+Learning. There are many potential societal consequences of our work, none
+which we feel must be specifically highlighted here.''
+
+The above statement can be used verbatim in such cases, but we encourage
+authors to think about whether there is content which does warrant further
+discussion, as this statement will be apparent if the paper is later flagged
+for ethics review.
+
+% In the unusual situation where you want a paper to appear in the
+% references without citing it in the main text, use \nocite
+\nocite{langley00}
+
+\bibliography{example_paper}
+\bibliographystyle{icml2026}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% APPENDIX
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpage
+\appendix
+\onecolumn
+\section{You \emph{can} have an appendix here.}
+
+You can have as much text here as you want. The main body must be at most $8$
+pages long. For the final version, one more page can be added. If you want, you
+can use an appendix like this one.
+
+The $\mathtt{\backslash onecolumn}$ command above can be kept in place if you
+prefer a one-column appendix, or can be removed if you prefer a two-column
+appendix. Apart from this possible change, the style (font size, spacing,
+margins, page numbering, etc.) should be kept the same as the main body.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\end{document}
+
+% This document was modified from the file originally made available by
+% Pat Langley and Andrea Danyluk for ICML-2K. This version was created
+% by Iain Murray in 2018, and modified by Alexandre Bouchard in
+% 2019 and 2021 and by Csaba Szepesvari, Gang Niu and Sivan Sabato in 2022.
+% Modified again in 2023 and 2024 by Sivan Sabato and Jonathan Scarlett.
+% Previous contributors include Dan Roy, Lise Getoor and Tobias
+% Scheffer, which was slightly modified from the 2010 version by
+% Thorsten Joachims & Johannes Fuernkranz, slightly modified from the
+% 2009 version by Kiri Wagstaff and Sam Roweis's 2008 version, which is
+% slightly modified from Prasad Tadepalli's 2007 version which is a
+% lightly changed version of the previous year's version by Andrew
+% Moore, which was in turn edited from those of Kristian Kersting and
+% Codrina Lauth. Alex Smola contributed to the algorithmic style files.
diff --git a/.agents/skills/ml-paper-writing/templates/icml2026/fancyhdr.sty b/.agents/skills/ml-paper-writing/templates/icml2026/fancyhdr.sty
new file mode 100644
index 0000000..b3d811f
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/icml2026/fancyhdr.sty
@@ -0,0 +1,864 @@
+%%
+%% This is file `fancyhdr.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% fancyhdr.dtx (with options: `fancyhdr')
+%%
+%% This is a generated file.
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3 of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}[2018-04-01]
+\ProvidesPackage{fancyhdr}%
+ [2025/02/07 v5.2
+ Extensive control of page headers and footers]%
+% Copyright (C) 1994-2025 by Pieter van Oostrum <pieter@vanoostrum.org>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifdefined\NewDocumentCommand\else\RequirePackage{xparse}\fi
+\newif\iff@nch@check
+\f@nch@checktrue
+\DeclareOption{nocheck}{%
+ \f@nch@checkfalse
+}
+\let\f@nch@gbl\relax
+\newif\iff@nch@compatViii
+\DeclareOption{compatV3}{%
+ \PackageWarningNoLine{fancyhdr}{The `compatV3' option is deprecated.\MessageBreak
+ It will disappear in one of the following releases.\MessageBreak
+ Please change your document to work\MessageBreak
+ without this option}
+ \let\f@nch@gbl\global
+ \f@nch@compatViiitrue
+}
+\newif\iff@nch@twoside
+\f@nch@twosidefalse
+\DeclareOption{twoside}{%
+ \if@twoside\else\f@nch@twosidetrue\fi
+}
+\newcommand\f@nch@def[2]{%
+ \def\temp@a{#2}\ifx\temp@a\@empty\f@nch@gbl\def#1{}%
+ \else\f@nch@gbl\def#1{#2\strut}\fi}
+\DeclareOption{myheadings}{%
+ \@ifundefined{chapter}{%
+ \def\ps@myheadings{\ps@f@nch@fancyproto \let\@mkboth\@gobbletwo
+ \fancyhf{}
+ \fancyhead[LE,RO]{\thepage}%
+ \fancyhead[RE]{\slshape\leftmark}%
+ \fancyhead[LO]{\slshape\rightmark}%
+ \let\sectionmark\@gobble
+ \let\subsectionmark\@gobble
+ }%
+ }%
+ {\def\ps@myheadings{\ps@f@nch@fancyproto \let\@mkboth\@gobbletwo
+ \fancyhf{}
+ \fancyhead[LE,RO]{\thepage}%
+ \fancyhead[RE]{\slshape\leftmark}%
+ \fancyhead[LO]{\slshape\rightmark}%
+ \let\chaptermark\@gobble
+ \let\sectionmark\@gobble
+ }%
+ }%
+}
+\DeclareOption{headings}{%
+ \@ifundefined{chapter}{%
+ \if@twoside
+ \def\ps@headings{\ps@f@nch@fancyproto \def\@mkboth{\protect\markboth}
+ \fancyhf{}
+ \fancyhead[LE,RO]{\thepage}%
+ \fancyhead[RE]{\slshape\leftmark}%
+ \fancyhead[LO]{\slshape\rightmark}%
+ \def\sectionmark##1{%
+ \markboth{\MakeUppercase{%
+ \ifnum \c@secnumdepth >\z@ \thesection\quad \fi##1}}{}}%
+ \def\subsectionmark##1{%
+ \markright{%
+ \ifnum \c@secnumdepth >\@ne \thesubsection\quad \fi##1}}%
+ }%
+ \else
+ \def\ps@headings{\ps@f@nch@fancyproto \def\@mkboth{\protect\markboth}
+ \fancyhf{}
+ \fancyhead[LE,RO]{\thepage}%
+ \fancyhead[RE]{\slshape\leftmark}%
+ \fancyhead[LO]{\slshape\rightmark}%
+ \def\sectionmark##1{%
+ \markright {\MakeUppercase{%
+ \ifnum \c@secnumdepth >\z@ \thesection\quad \fi##1}}}%
+ \let\subsectionmark\@gobble % Not needed but inserted for safety
+ }%
+ \fi
+ }{\if@twoside
+ \def\ps@headings{\ps@f@nch@fancyproto \def\@mkboth{\protect\markboth}
+ \fancyhf{}
+ \fancyhead[LE,RO]{\thepage}%
+ \fancyhead[RE]{\slshape\leftmark}%
+ \fancyhead[LO]{\slshape\rightmark}%
+ \def\chaptermark##1{%
+ \markboth{\MakeUppercase{%
+ \ifnum \c@secnumdepth >\m@ne \if@mainmatter
+ \@chapapp\ \thechapter. \ \fi\fi##1}}{}}%
+ \def\sectionmark##1{%
+ \markright {\MakeUppercase{%
+ \ifnum \c@secnumdepth >\z@ \thesection. \ \fi##1}}}%
+ }%
+ \else
+ \def\ps@headings{\ps@f@nch@fancyproto \def\@mkboth{\protect\markboth}
+ \fancyhf{}
+ \fancyhead[LE,RO]{\thepage}%
+ \fancyhead[RE]{\slshape\leftmark}%
+ \fancyhead[LO]{\slshape\rightmark}%
+ \def\chaptermark##1{%
+ \markright{\MakeUppercase{%
+ \ifnum \c@secnumdepth >\m@ne \if@mainmatter
+ \@chapapp\ \thechapter. \ \fi\fi##1}}}%
+ \let\sectionmark\@gobble % Not needed but inserted for safety
+ }%
+ \fi
+ }%
+}
+\ProcessOptions*
+\newcommand{\f@nch@forc}[3]{\expandafter\f@nchf@rc\expandafter#1\expandafter{#2}{#3}}
+\newcommand{\f@nchf@rc}[3]{\def\temp@ty{#2}\ifx\@empty\temp@ty\else
+ \f@nch@rc#1#2\f@nch@rc{#3}\fi}
+\long\def\f@nch@rc#1#2#3\f@nch@rc#4{\def#1{#2}#4\f@nchf@rc#1{#3}{#4}}
+\newcommand{\f@nch@for}[3]{\edef\@fortmp{#2}%
+ \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}}
+\newcommand\f@nch@default[3]{%
+ \edef\temp@a{\lowercase{\edef\noexpand\temp@a{#3}}}\temp@a \def#1{}%
+ \f@nch@forc\tmpf@ra{#2}%
+ {\expandafter\f@nch@ifin\tmpf@ra\temp@a{\edef#1{#1\tmpf@ra}}{}}%
+ \ifx\@empty#1\def#1{#2}\fi}
+\newcommand{\f@nch@ifin}[4]{%
+ \edef\temp@a{#2}\def\temp@b##1#1##2\temp@b{\def\temp@b{##1}}%
+ \expandafter\temp@b#2#1\temp@b\ifx\temp@a\temp@b #4\else #3\fi}
+\newcommand{\fancyhead}[2][]{\f@nch@fancyhf\fancyhead h[#1]{#2}}%
+\newcommand{\fancyfoot}[2][]{\f@nch@fancyhf\fancyfoot f[#1]{#2}}%
+\newcommand{\fancyhf}[2][]{\f@nch@fancyhf\fancyhf {}[#1]{#2}}%
+\newcommand{\fancyheadoffset}[2][]{\f@nch@fancyhfoffs\fancyheadoffset h[#1]{#2}}%
+\newcommand{\fancyfootoffset}[2][]{\f@nch@fancyhfoffs\fancyfootoffset f[#1]{#2}}%
+\newcommand{\fancyhfoffset}[2][]{\f@nch@fancyhfoffs\fancyhfoffset {}[#1]{#2}}%
+\def\f@nch@fancyhf@Echeck#1{%
+ \if@twoside\else
+ \iff@nch@twoside\else
+ \if\f@nch@@eo e%
+ \PackageWarning{fancyhdr} {\string#1's `E' option without twoside option is useless.\MessageBreak
+ Please consider using the `twoside' option}%
+ \fi\fi\fi
+}
+\long\def\f@nch@fancyhf#1#2[#3]#4{%
+ \def\temp@c{}%
+ \f@nch@forc\tmpf@ra{#3}%
+ {\expandafter\f@nch@ifin\tmpf@ra{eolcrhf,EOLCRHF}%
+ {}{\edef\temp@c{\temp@c\tmpf@ra}}}%
+ \ifx\@empty\temp@c\else \PackageError{fancyhdr}{Illegal char `\temp@c' in
+ \string#1 argument: [#3]}{}%
+ \fi \f@nch@for\temp@c{#3}%
+ {\f@nch@default\f@nch@@eo{eo}\temp@c
+ \f@nch@fancyhf@Echeck{#1}%
+ \f@nch@default\f@nch@@lcr{lcr}\temp@c
+ \f@nch@default\f@nch@@hf{hf}{#2\temp@c}%
+ \f@nch@forc\f@nch@eo\f@nch@@eo
+ {\f@nch@forc\f@nch@lcr\f@nch@@lcr
+ {\f@nch@forc\f@nch@hf\f@nch@@hf
+ {\expandafter\f@nch@def\csname
+ f@nch@\f@nch@eo\f@nch@lcr\f@nch@hf\endcsname {#4}}}}}}
+\def\f@nch@fancyhfoffs#1#2[#3]#4{%
+ \def\temp@c{}%
+ \f@nch@forc\tmpf@ra{#3}%
+ {\expandafter\f@nch@ifin\tmpf@ra{eolrhf,EOLRHF}%
+ {}{\edef\temp@c{\temp@c\tmpf@ra}}}%
+ \ifx\@empty\temp@c\else \PackageError{fancyhdr}{Illegal char `\temp@c' in
+ \string#1 argument: [#3]}{}%
+ \fi \f@nch@for\temp@c{#3}%
+ {\f@nch@default\f@nch@@eo{eo}\temp@c
+ \f@nch@fancyhf@Echeck{#1}%
+ \f@nch@default\f@nch@@lcr{lr}\temp@c
+ \f@nch@default\f@nch@@hf{hf}{#2\temp@c}%
+ \f@nch@forc\f@nch@eo\f@nch@@eo
+ {\f@nch@forc\f@nch@lcr\f@nch@@lcr
+ {\f@nch@forc\f@nch@hf\f@nch@@hf
+ {\expandafter\setlength\csname
+ f@nch@offset@\f@nch@eo\f@nch@lcr\f@nch@hf\endcsname {#4}}}}}%
+ \f@nch@setoffs}
+\NewDocumentCommand {\fancyheadwidth}{ s O{} O{} m }
+ {\f@nch@fancyhfwidth{#1}\fancyheadwidth h[#2][#3]{#4}}%
+\NewDocumentCommand {\fancyfootwidth}{ s O{} O{} m }
+ {\f@nch@fancyhfwidth{#1}\fancyfootwidth f[#2][#3]{#4}}%
+\NewDocumentCommand {\fancyhfwidth} { s O{} O{} m }
+ {\f@nch@fancyhfwidth{#1}\fancyhfwidth {}[#2][#3]{#4}}%
+\def\f@nch@fancyhfwidth#1#2#3[#4][#5]#6{%
+ \setlength\@tempdima{#6}%
+ \def\temp@c{}%
+ \f@nch@forc\tmpf@ra{#4}%
+ {\expandafter\f@nch@ifin\tmpf@ra{eolcrhf,EOLCRHF}%
+ {}{\edef\temp@c{\temp@c\tmpf@ra}}}%
+ \ifx\@empty\temp@c\else \PackageError{fancyhdr}{Illegal char `\temp@c' in
+ \string#2 argument: [#4]}{}%
+ \fi
+ \f@nch@for\temp@c{#4}%
+ {\f@nch@default\f@nch@@eo{eo}\temp@c
+ \f@nch@fancyhf@Echeck{#2}%
+ \f@nch@default\f@nch@@lcr{lcr}\temp@c
+ \f@nch@default\f@nch@@hf{hf}{#3\temp@c}%
+ \f@nch@forc\f@nch@eo\f@nch@@eo
+ {\f@nch@forc\f@nch@lcr\f@nch@@lcr
+ {\f@nch@forc\f@nch@hf\f@nch@@hf
+ {%
+ \IfBooleanTF{#1}{%
+ \expandafter\edef\csname
+ f@nch@width@\f@nch@eo\f@nch@lcr\f@nch@hf\endcsname{\the\@tempdima}%
+ }%
+ {%
+ \expandafter\def\csname
+ f@nch@width@\f@nch@eo\f@nch@lcr\f@nch@hf\endcsname{#6}%
+ }%
+ \csname f@nchdrwdt@align@v@\f@nch@hf\endcsname
+ \edef\f@nch@align@@h{\f@nch@lcr}%
+ \def\temp@a{#5}%
+ \ifx\temp@a\@empty \else \f@nchdrwdt@align#5\@nil{#2}\fi
+ \expandafter\edef\csname
+ f@nch@align@\f@nch@eo\f@nch@lcr\f@nch@hf\endcsname
+ {\f@nch@align@@v\f@nch@align@@h}}}}}}
+\def\f@nch@width@elh{\headwidth}
+\def\f@nch@width@ech{\headwidth}
+\def\f@nch@width@erh{\headwidth}
+\def\f@nch@width@olh{\headwidth}
+\def\f@nch@width@och{\headwidth}
+\def\f@nch@width@orh{\headwidth}
+\def\f@nch@width@elf{\headwidth}
+\def\f@nch@width@ecf{\headwidth}
+\def\f@nch@width@erf{\headwidth}
+\def\f@nch@width@olf{\headwidth}
+\def\f@nch@width@ocf{\headwidth}
+\def\f@nch@width@orf{\headwidth}
+\def\f@nch@align@elh{bl}
+\def\f@nch@align@ech{bc}
+\def\f@nch@align@erh{br}
+\def\f@nch@align@olh{bl}
+\def\f@nch@align@och{bc}
+\def\f@nch@align@orh{br}
+\def\f@nch@align@elf{tl}
+\def\f@nch@align@ecf{tc}
+\def\f@nch@align@erf{tr}
+\def\f@nch@align@olf{tl}
+\def\f@nch@align@ocf{tc}
+\def\f@nch@align@orf{tr}
+\def\f@nchdrwdt@align@v@h{\def\f@nch@align@@v{b}}%
+\def\f@nchdrwdt@align@v@f{\def\f@nch@align@@v{t}}%
+\long\def\f@nchdrwdt@align#1#2\@nil#3{%
+ \f@nch@ifin{#1}{TtcbB-}{%
+ \f@nch@ifin{#1}{-}{}{\def\f@nch@align@@v{#1}}%
+ \def\@tempa{#2}%
+ \ifx\@tempa\@empty \else \def\f@nch@align@@h{#2}\fi
+ }%
+ {\def\f@nch@align@@h{#1}}%
+ \expandafter\f@nch@ifin\expandafter{\f@nch@align@@h}{lcrj}{}%
+ {\PackageError{fancyhdr}
+ {\string#3: Illegal char `\f@nch@align@@h'\MessageBreak
+ in alignment argument}{}}%
+}
+\newcommand{\lhead}[2][\f@nch@olh]%
+ {\f@nch@def\f@nch@olh{#2}\f@nch@def\f@nch@elh{#1}}
+\newcommand{\chead}[2][\f@nch@och]%
+ {\f@nch@def\f@nch@och{#2}\f@nch@def\f@nch@ech{#1}}
+\newcommand{\rhead}[2][\f@nch@orh]%
+ {\f@nch@def\f@nch@orh{#2}\f@nch@def\f@nch@erh{#1}}
+\newcommand{\lfoot}[2][\f@nch@olf]%
+ {\f@nch@def\f@nch@olf{#2}\f@nch@def\f@nch@elf{#1}}
+\newcommand{\cfoot}[2][\f@nch@ocf]%
+ {\f@nch@def\f@nch@ocf{#2}\f@nch@def\f@nch@ecf{#1}}
+\newcommand{\rfoot}[2][\f@nch@orf]%
+ {\f@nch@def\f@nch@orf{#2}\f@nch@def\f@nch@erf{#1}}
+\newlength{\f@nch@headwidth} \let\headwidth\f@nch@headwidth
+\newlength{\f@nch@offset@elh}
+\newlength{\f@nch@offset@erh}
+\newlength{\f@nch@offset@olh}
+\newlength{\f@nch@offset@orh}
+\newlength{\f@nch@offset@elf}
+\newlength{\f@nch@offset@erf}
+\newlength{\f@nch@offset@olf}
+\newlength{\f@nch@offset@orf}
+\newcommand{\headrulewidth}{0.4pt}
+\newcommand{\footrulewidth}{0pt}
+\@ifundefined{headruleskip}%
+ {\newcommand{\headruleskip}{0pt}}{}
+\@ifundefined{footruleskip}%
+ {\newcommand{\footruleskip}{.3\normalbaselineskip}}{}
+\newcommand{\plainheadrulewidth}{0pt}
+\newcommand{\plainfootrulewidth}{0pt}
+\newif\if@fancyplain \@fancyplainfalse
+\def\fancyplain#1#2{\if@fancyplain#1\else#2\fi}
+\headwidth=-123456789sp
+\let\f@nch@raggedleft\raggedleft
+\let\f@nch@raggedright\raggedright
+\let\f@nch@centering\centering
+\let\f@nch@everypar\everypar
+\ifdefined\ExplSyntaxOn
+ \ExplSyntaxOn
+ \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
+ \IfFormatAtLeastTF{2021-06-01}{
+ \def\f@nch@saveclr@parhook #1{
+ \expandafter\let\csname f@nch@__hook~#1\expandafter\endcsname
+ \csname __hook~#1\endcsname
+ \expandafter\let\csname f@nch@__hook_toplevel~#1\expandafter\endcsname
+ \csname __hook_toplevel~#1\endcsname
+ \expandafter\let\csname f@nch@__hook_next~#1\expandafter\endcsname
+ \csname __hook_next~#1\endcsname
+ \expandafter\let\csname f@nch@g__hook_#1_code_prop\expandafter\endcsname
+ \csname g__hook_#1_code_prop\endcsname
+ \RemoveFromHook{#1}[*]
+ \ClearHookNext{#1}
+ }
+ \def\f@nch@restore@parhook #1{
+ \global\expandafter\let\csname __hook~#1\expandafter\endcsname
+ \csname f@nch@__hook~#1\endcsname
+ \global\expandafter\let\csname __hook_toplevel~#1\expandafter\endcsname
+ \csname f@nch@__hook_toplevel~#1\endcsname
+ \global\expandafter\let\csname __hook_next~#1\expandafter\endcsname
+ \csname f@nch@__hook_next~#1\endcsname
+ \global\expandafter\let\csname g__hook_#1_code_prop\expandafter\endcsname
+ \csname f@nch@g__hook_#1_code_prop\endcsname
+ }
+ \def\f@nch@resetpar{
+ \f@nch@everypar{}
+ \f@nch@saveclr@parhook{para/before}
+ \f@nch@saveclr@parhook{para/begin}
+ \f@nch@saveclr@parhook{para/end}
+ \f@nch@saveclr@parhook{para/after}
+ }
+ \def\f@nch@restorepar{
+ \f@nch@restore@parhook{para/before}
+ \f@nch@restore@parhook{para/begin}
+ \f@nch@restore@parhook{para/end}
+ \f@nch@restore@parhook{para/after}
+ }
+ }{
+ \def\f@nch@resetpar{
+ \f@nch@everypar{}
+ }
+ \def\f@nch@restorepar{}
+ }
+ \ExplSyntaxOff
+\else
+ \def\f@nch@resetpar{%
+ \f@nch@everypar{}%
+ }
+ \def\f@nch@restorepar{}
+\fi
+\newcommand\f@nch@noUppercase[2][]{#2}
+\def\f@nch@reset{\f@nch@resetpar\restorecr\endlinechar=13
+ \catcode`\\=0\catcode`\{=1\catcode`\}=2\catcode`\$=3\catcode`\&=4
+ \catcode`\#=6\catcode`\^=7\catcode`\_=8\catcode`\ =10\catcode`\@=11
+ \catcode`\:=11\catcode`\~=13\catcode`\%=14
+ \catcode0=15 %NULL
+ \catcode9=10 %TAB
+ \let\\\@normalcr \let\raggedleft\f@nch@raggedleft
+ \let\raggedright\f@nch@raggedright \let\centering\f@nch@centering
+ \def\baselinestretch{1}%
+ \hsize=\headwidth
+ \def\nouppercase##1{{%
+ \let\uppercase\relax\let\MakeUppercase\f@nch@noUppercase
+ \expandafter\let\csname MakeUppercase \endcsname\relax
+ \expandafter\def\csname MakeUppercase\space\space\space\endcsname
+ [####1]####2{####2}%
+ ##1}}%
+ \@ifundefined{@normalsize} {\normalsize} % for ucthesis.cls
+ {\@normalsize}%
+ }
+\newcommand*{\fancycenter}[1][1em]{%
+ \@ifnextchar[{\f@nch@center{#1}}{\f@nch@center{#1}[3]}%
+}
+\def\f@nch@center#1[#2]#3#4#5{%
+ \def\@tempa{#4}\ifx\@tempa\@empty
+ \hbox to\linewidth{\color@begingroup{#3}\hfil {#5}\color@endgroup}%
+ \else
+ \setlength\@tempdima{#1}%
+ \setlength{\@tempdimb}{#2\@tempdima}%
+ \@tempdimc \@tempdimb \advance\@tempdimc -\@tempdima
+ \setlength\@tempskipa{\@tempdimb \@plus 1fil \@minus \@tempdimc}%
+ \@tempskipb\@tempskipa
+ \def\@tempa{#3}\ifx\@tempa\@empty
+ \addtolength\@tempskipa{\z@ \@minus \@tempdima}%
+ \fi
+ \def\@tempa{#5}\ifx\@tempa\@empty % empty right
+ \addtolength\@tempskipb{\z@ \@minus \@tempdima}%
+ \fi
+ \settowidth{\@tempdimb}{#3}%
+ \settowidth{\@tempdimc}{#5}%
+ \ifdim\@tempdimb>\@tempdimc
+ \advance\@tempdimb -\@tempdimc
+ \addtolength\@tempskipb{\@tempdimb \@minus \@tempdimb}%
+ \else
+ \advance\@tempdimc -\@tempdimb
+ \addtolength\@tempskipa{\@tempdimc \@minus \@tempdimc}%
+ \fi
+ \hbox to\linewidth{\color@begingroup{#3}\hskip \@tempskipa
+ {#4}\hskip \@tempskipb {#5}\color@endgroup}%
+ \fi
+}
+\newcommand{\f@nch@headinit}{}
+\newcommand{\fancyheadinit}[1]{%
+ \def\f@nch@headinit{#1}%
+}
+\newcommand{\f@nch@footinit}{}
+\newcommand{\fancyfootinit}[1]{%
+ \def\f@nch@footinit{#1}%
+}
+\newcommand{\fancyhfinit}[1]{%
+ \def\f@nch@headinit{#1}%
+ \def\f@nch@footinit{#1}%
+}
+\ifdefined\NewMirroredHookPair
+ \NewMirroredHookPair{fancyhdr/before}{fancyhdr/after}
+ \NewMirroredHookPair{fancyhdr/head/begin}{fancyhdr/head/end}
+ \NewMirroredHookPair{fancyhdr/foot/begin}{fancyhdr/foot/end}
+\fi
+\newlength\f@nch@height
+\newlength\f@nch@footalignment
+\newif\iff@nch@footalign\f@nch@footalignfalse
+\newcommand{\fancyfootalign}[1]{%
+ \def\temp@a{#1}%
+ \ifx\temp@a\@empty
+ \f@nch@footalignfalse
+ \else
+ \f@nch@footaligntrue
+ \setlength\f@nch@footalignment{#1}%
+ \fi
+}
+\newcommand\fancyhdrsettoheight[2]{%
+ \expandafter\ifx\csname f@nch@#2\endcsname\fancyhdrsettoheight
+ \else\PackageError{fancyhdr}{Unknown parameter #2 in \string\fancyhdrsettoheight}{}\fi
+ \setbox\@tempboxa\hbox{{\f@nch@checkfalse\csname @#2\endcsname}}%
+ \setlength{#1}\f@nch@height
+ \setbox\@tempboxa\box\voidb@x
+}
+\let\f@nch@oddhead\fancyhdrsettoheight
+\let\f@nch@evenhead\fancyhdrsettoheight
+\let\f@nch@oddfoot\fancyhdrsettoheight
+\let\f@nch@evenfoot\fancyhdrsettoheight
+\newcommand\f@nch@vbox[2]{%
+ \setbox0\vbox{#2}%
+ \global\f@nch@height=\ht0
+ \ifdim\ht0>#1\relax
+ \iff@nch@check
+ \dimen0=#1\advance\dimen0-\ht0
+ \PackageWarning{fancyhdr}{%
+ \string#1 is too small (\the#1): \MessageBreak
+ Make it at least \the\ht0, for example:\MessageBreak
+ \string\setlength{\string#1}{\the\ht0}%
+ \iff@nch@compatViii .\MessageBreak
+ We now make it that large for the rest of the document.\MessageBreak
+ This may cause the page layout to be inconsistent, however
+ \fi
+ \ifx#1\headheight .\MessageBreak
+ You might also make \topmargin smaller:\MessageBreak
+ \string\addtolength{\string\topmargin}{\the\dimen0}%
+ \fi
+ \@gobble
+ }%
+ \iff@nch@compatViii
+ \dimen0=#1\relax
+ \global#1=\ht0\relax
+ \ht0=\dimen0 %
+ \else
+ \ht0=#1\relax
+ \fi
+ \else
+ \ht0=#1\relax
+ \fi
+ \fi
+ \box0}
+\newcommand\f@nch@head[6]{%
+ \f@nch@reset
+ \ifdefined\UseHook\UseHook{fancyhdr/before}\UseHook{fancyhdr/head/begin}\fi
+ \f@nch@headinit\relax
+ #1%
+ \hbox to\headwidth{%
+ \f@nch@vbox\headheight{%
+ \f@nch@hfbox{#2}{#3}{#4}{#6}{h}%
+ \vskip\headruleskip\relax
+ \headrule
+ }%
+ }%
+ #5%
+ \ifdefined\UseHook\UseHook{fancyhdr/head/end}\UseHook{fancyhdr/after}\fi
+ \f@nch@restorepar
+}
+\newcommand\f@nch@foot[6]{%
+ \f@nch@reset
+ \ifdefined\UseHook\UseHook{fancyhdr/before}\UseHook{fancyhdr/foot/begin}\fi
+ \f@nch@footinit\relax
+ #1%
+ \hbox to\headwidth{%
+ \f@nch@vbox\footskip{%
+ \setbox0=\vbox{\footrule}\unvbox0
+ \vskip\footruleskip
+ \f@nch@hfbox{#2}{#3}{#4}{#6}{f}%
+ \iff@nch@footalign \vskip\f@nch@footalignment \fi
+ }%
+ }%
+ #5%
+ \ifdefined\UseHook\UseHook{fancyhdr/foot/end}\UseHook{fancyhdr/after}\fi
+ \f@nch@restorepar
+}
+\newlength\f@nch@widthL
+\newlength\f@nch@widthC
+\newlength\f@nch@widthR
+\newcommand\f@nch@hfbox[5]{%
+ \setlength\f@nch@widthL{\csname f@nch@width@#4l#5\endcsname}%
+ \setlength\f@nch@widthC{\csname f@nch@width@#4c#5\endcsname}%
+ \setlength\f@nch@widthR{\csname f@nch@width@#4r#5\endcsname}%
+ \let\@tempa\f@nch@hfbox@center
+ \ifdim \dimexpr \f@nch@widthL+\f@nch@widthC+\f@nch@widthR>\headwidth
+ \else
+ \ifdim \dimexpr \f@nch@widthL+0.5\f@nch@widthC>0.5\headwidth
+ \let \@tempa\f@nch@hfbox@fit
+ \fi
+ \ifdim \dimexpr \f@nch@widthR+0.5\f@nch@widthC>0.5\headwidth
+ \let \@tempa\f@nch@hfbox@fit
+ \fi
+ \fi
+ \@tempa{#1}{#2}{#3}#4#5%
+}
+\newcommand\f@nch@hfbox@center[5]{%
+ \hbox to \headwidth{%
+ \rlap{\f@nch@parbox{#1}\f@nch@widthL{#4}l{#5}}%
+ \hfill
+ \f@nch@parbox{#2}\f@nch@widthC{#4}c{#5}%
+ \hfill
+ \llap{\f@nch@parbox{#3}\f@nch@widthR{#4}r{#5}}%
+ }%
+}
+\newcommand\f@nch@hfbox@fit[5]{%
+ \hbox to \headwidth{%
+ \f@nch@parbox{#1}\f@nch@widthL{#4}l{#5}%
+ \hfill
+ \f@nch@parbox{#2}\f@nch@widthC{#4}c{#5}%
+ \hfill
+ \f@nch@parbox{#3}\f@nch@widthR{#4}r{#5}%
+ }%
+}%
+\newcommand\f@nch@parbox[5]{%
+ \expandafter\expandafter\expandafter\f@nch@parbox@align
+ \csname f@nch@align@#3#4#5\endcsname
+ \parbox[\f@nch@align@@v]{#2}%
+ {%
+ \f@nch@align@@pre
+ \f@nch@align@@h\leavevmode\ignorespaces#1%
+ \f@nch@align@@post
+ }%
+}
+\newcommand\f@nch@parbox@align[2]{%
+ \def\f@nch@align@@pre{}%
+ \def\f@nch@align@@post{}%
+ \csname f@nch@parbox@align@v#1\endcsname
+ \csname f@nch@parbox@align@h#2\endcsname
+}
+\def\f@nch@parbox@align@vT{\def\f@nch@align@@v{t}\def\f@nch@align@@pre{\vspace{0pt}}}
+\def\f@nch@parbox@align@vt{\def\f@nch@align@@v{t}}
+\def\f@nch@parbox@align@vc{\def\f@nch@align@@v{c}}
+\def\f@nch@parbox@align@vb{\def\f@nch@align@@v{b}}
+\def\f@nch@parbox@align@vB{\def\f@nch@align@@v{b}\def\f@nch@align@@post{\vspace{0pt}}}
+\def\f@nch@parbox@align@hl{\def\f@nch@align@@h{\raggedright}}
+\def\f@nch@parbox@align@hc{\def\f@nch@align@@h{\centering}}
+\def\f@nch@parbox@align@hr{\def\f@nch@align@@h{\raggedleft}}
+\def\f@nch@parbox@align@hj{\def\f@nch@align@@h{}}
+\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%
+\def\f@nch@initialise{%
+ \@ifundefined{chapter}%
+ {\def\sectionmark##1{\markboth{\MakeUppercase{\ifnum \c@secnumdepth>\z@
+ \thesection\hskip 1em\relax
+ \fi ##1}}{}}%
+ \def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne
+ \thesubsection\hskip 1em\relax \fi ##1}}}%
+ {\def\chaptermark##1{\markboth {\MakeUppercase{\ifnum
+ \c@secnumdepth>\m@ne \@chapapp\ \thechapter. \ \fi ##1}}{}}%
+ \def\sectionmark##1{\markright{\MakeUppercase{\ifnum \c@secnumdepth >\z@
+ \thesection. \ \fi ##1}}}%
+ }%
+ \def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi
+ \hrule\@height\headrulewidth\@width\headwidth
+ \vskip-\headrulewidth}}%
+ \def\footrule{{\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi
+ \hrule\@width\headwidth\@height\footrulewidth}}%
+ \def\headrulewidth{0.4pt}%
+ \def\footrulewidth{0pt}%
+ \def\headruleskip{0pt}%
+ \def\footruleskip{0.3\normalbaselineskip}%
+ \fancyhf{}%
+ \if@twoside
+ \fancyhead[el,or]{\fancyplain{}{\slshape\rightmark}}%
+ \fancyhead[er,ol]{\fancyplain{}{\slshape\leftmark}}%
+ \else
+ \fancyhead[l]{\fancyplain{}{\slshape\rightmark}}%
+ \fancyhead[r]{\fancyplain{}{\slshape\leftmark}}%
+ \fi
+ \fancyfoot[c]{\rmfamily\thepage}% page number
+}
+\f@nch@initialise
+\def\ps@f@nch@fancyproto{%
+ \ifdim\headwidth<0sp
+ \global\advance\headwidth123456789sp\global\advance\headwidth\textwidth
+ \fi
+ \gdef\ps@f@nch@fancyproto{\@fancyplainfalse\ps@f@nch@fancycore}%
+ \@fancyplainfalse\ps@f@nch@fancycore
+}%
+\@namedef{f@nch@ps@f@nch@fancyproto-is-fancyhdr}{}
+\def\ps@fancy{\ps@f@nch@fancyproto}
+\@namedef{f@nch@ps@fancy-is-fancyhdr}{}
+\def\ps@fancyplain{\ps@f@nch@fancyproto \let\ps@plain\ps@plain@fancy}
+\def\ps@plain@fancy{\@fancyplaintrue\ps@f@nch@fancycore}
+\let\f@nch@ps@empty\ps@empty
+\def\ps@f@nch@fancycore{%
+ \f@nch@ps@empty
+ \def\@mkboth{\protect\markboth}%
+ \def\f@nch@oddhead{\f@nch@head\f@nch@Oolh\f@nch@olh\f@nch@och\f@nch@orh\f@nch@Oorh{o}}%
+ \def\@oddhead{%
+ \iff@nch@twoside
+ \ifodd\c@page
+ \f@nch@oddhead
+ \else
+ \@evenhead
+ \fi
+ \else
+ \f@nch@oddhead
+ \fi
+ }
+ \def\f@nch@oddfoot{\f@nch@foot\f@nch@Oolf\f@nch@olf\f@nch@ocf\f@nch@orf\f@nch@Oorf{o}}%
+ \def\@oddfoot{%
+ \iff@nch@twoside
+ \ifodd\c@page
+ \f@nch@oddfoot
+ \else
+ \@evenfoot
+ \fi
+ \else
+ \f@nch@oddfoot
+ \fi
+ }
+ \def\@evenhead{\f@nch@head\f@nch@Oelh\f@nch@elh\f@nch@ech\f@nch@erh\f@nch@Oerh{e}}%
+ \def\@evenfoot{\f@nch@foot\f@nch@Oelf\f@nch@elf\f@nch@ecf\f@nch@erf\f@nch@Oerf{e}}%
+}
+\def\f@nch@Oolh{\if@reversemargin\hss\else\relax\fi}
+\def\f@nch@Oorh{\if@reversemargin\relax\else\hss\fi}
+\let\f@nch@Oelh\f@nch@Oorh
+\let\f@nch@Oerh\f@nch@Oolh
+\let\f@nch@Oolf\f@nch@Oolh
+\let\f@nch@Oorf\f@nch@Oorh
+\let\f@nch@Oelf\f@nch@Oelh
+\let\f@nch@Oerf\f@nch@Oerh
+\def\f@nch@offsolh{\headwidth=\textwidth\advance\headwidth\f@nch@offset@olh
+ \advance\headwidth\f@nch@offset@orh\hskip-\f@nch@offset@olh}
+\def\f@nch@offselh{\headwidth=\textwidth\advance\headwidth\f@nch@offset@elh
+ \advance\headwidth\f@nch@offset@erh\hskip-\f@nch@offset@elh}
+\def\f@nch@offsolf{\headwidth=\textwidth\advance\headwidth\f@nch@offset@olf
+ \advance\headwidth\f@nch@offset@orf\hskip-\f@nch@offset@olf}
+\def\f@nch@offself{\headwidth=\textwidth\advance\headwidth\f@nch@offset@elf
+ \advance\headwidth\f@nch@offset@erf\hskip-\f@nch@offset@elf}
+\def\f@nch@setoffs{%
+ \f@nch@gbl\let\headwidth\f@nch@headwidth
+ \f@nch@gbl\def\f@nch@Oolh{\f@nch@offsolh}%
+ \f@nch@gbl\def\f@nch@Oelh{\f@nch@offselh}%
+ \f@nch@gbl\def\f@nch@Oorh{\hss}%
+ \f@nch@gbl\def\f@nch@Oerh{\hss}%
+ \f@nch@gbl\def\f@nch@Oolf{\f@nch@offsolf}%
+ \f@nch@gbl\def\f@nch@Oelf{\f@nch@offself}%
+ \f@nch@gbl\def\f@nch@Oorf{\hss}%
+ \f@nch@gbl\def\f@nch@Oerf{\hss}%
+}
+\newif\iff@nch@footnote
+\AtBeginDocument{%
+ \let\latex@makecol\@makecol
+ \def\@makecol{\ifvoid\footins\f@nch@footnotefalse\else\f@nch@footnotetrue\fi
+ \let\f@nch@topfloat\@toplist\let\f@nch@botfloat\@botlist\latex@makecol}%
+}
+\newcommand\iftopfloat[2]{\ifx\f@nch@topfloat\@empty #2\else #1\fi}%
+\newcommand\ifbotfloat[2]{\ifx\f@nch@botfloat\@empty #2\else #1\fi}%
+\newcommand\iffloatpage[2]{\if@fcolmade #1\else #2\fi}%
+\newcommand\iffootnote[2]{\iff@nch@footnote #1\else #2\fi}%
+\ifx\@temptokenb\undefined \csname newtoks\endcsname\@temptokenb\fi
+\newif\iff@nch@pagestyle@star
+\newcommand\fancypagestyle{%
+ \@ifstar{\f@nch@pagestyle@startrue\f@nch@pagestyle}%
+ {\f@nch@pagestyle@starfalse\f@nch@pagestyle}%
+}
+\newcommand\f@nch@pagestyle[1]{%
+ \@ifnextchar[{\f@nch@@pagestyle{#1}}{\f@nch@@pagestyle{#1}[f@nch@fancyproto]}%
+}
+\long\def\f@nch@@pagestyle#1[#2]#3{%
+ \@ifundefined{ps@#2}{%
+ \PackageError{fancyhdr}{\string\fancypagestyle: Unknown base page style `#2'}{}%
+ }{%
+ \@ifundefined{f@nch@ps@#2-is-fancyhdr}{%
+ \PackageError{fancyhdr}{\string\fancypagestyle: Base page style `#2' is not fancyhdr-based}{}%
+ }%
+ {%
+ \f@nch@pagestyle@setup
+ \def\temp@b{\@namedef{ps@#1}}%
+ \expandafter\temp@b\expandafter{\the\@temptokenb
+ \let\f@nch@gbl\relax\@nameuse{ps@#2}#3\relax}%
+ \@namedef{f@nch@ps@#1-is-fancyhdr}{}%
+ }%
+ }%
+}
+\newcommand\f@nch@pagestyle@setup{%
+ \iff@nch@pagestyle@star
+ \iff@nch@check\@temptokenb={\f@nch@checktrue}\else\@temptokenb={\f@nch@checkfalse}\fi
+ \@tfor\temp@a:=
+ \f@nch@olh\f@nch@och\f@nch@orh\f@nch@elh\f@nch@ech\f@nch@erh
+ \f@nch@olf\f@nch@ocf\f@nch@orf\f@nch@elf\f@nch@ecf\f@nch@erf
+ \f@nch@width@elh\f@nch@width@ech\f@nch@width@erh\f@nch@width@olh
+ \f@nch@width@och\f@nch@width@orh\f@nch@width@elf\f@nch@width@ecf
+ \f@nch@width@erf\f@nch@width@olf\f@nch@width@ocf\f@nch@width@orf
+ \f@nch@align@elh\f@nch@align@ech\f@nch@align@erh\f@nch@align@olh
+ \f@nch@align@och\f@nch@align@orh\f@nch@align@elf\f@nch@align@ecf
+ \f@nch@align@erf\f@nch@align@olf\f@nch@align@ocf\f@nch@align@orf
+ \f@nch@Oolh\f@nch@Oorh\f@nch@Oelh\f@nch@Oerh
+ \f@nch@Oolf\f@nch@Oorf\f@nch@Oelf\f@nch@Oerf
+ \f@nch@headinit\f@nch@footinit
+ \headrule\headrulewidth\footrule\footrulewidth
+ \do {%
+ \toks@=\expandafter\expandafter\expandafter{\temp@a}%
+ \toks@=\expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\temp@a\expandafter{\the\toks@}}%
+ \edef\temp@b{\@temptokenb={\the\@temptokenb\the\toks@}}%
+ \temp@b
+ }%
+ \@tfor\temp@a:=
+ \f@nch@offset@olh\f@nch@offset@orh\f@nch@offset@elh\f@nch@offset@erh
+ \f@nch@offset@olf\f@nch@offset@orf\f@nch@offset@elf\f@nch@offset@erf
+ \do {%
+ \toks@=\expandafter\expandafter\expandafter{\expandafter\the\temp@a}%
+ \toks@=\expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter\setlength
+ \expandafter\expandafter\temp@a\expandafter{\the\toks@}}%
+ \edef\temp@b{\@temptokenb={\the\@temptokenb\the\toks@}}%
+ \temp@b
+ }%
+ \else
+ \@temptokenb={}%
+ \fi
+}
+\newcommand\fancypagestyleassign[2]{%
+ \@ifundefined{ps@#2}{%
+ \PackageError{fancyhdr}{\string\fancypagestyleassign: Unknown page style `#2'}{}%
+ }{%
+ \expandafter\let
+ \csname ps@#1\expandafter\endcsname
+ \csname ps@#2\endcsname
+ \@ifundefined{f@nch@ps@#2-is-fancyhdr}{%
+ \expandafter\let\csname f@nch@ps@#1-is-fancyhdr\endcsname\@undefined
+ }{%
+ \@namedef{f@nch@ps@#1-is-fancyhdr}{}%
+ }%
+ }%
+}
+\fancypagestyle*{fancydefault}{\f@nch@initialise}
+\def\f@nchdrbox@topstrut{\vrule height\ht\strutbox width\z@}
+\def\f@nchdrbox@botstrut{\vrule depth\dp\strutbox width\z@}
+\def\f@nchdrbox@nostrut{\noalign{\vspace{0pt}}\let\f@nchdrbox@@crstrut\f@nchdrbox@botstrut}
+\NewDocumentCommand{\fancyhdrbox}{ O{cl} o m }{%
+\begingroup
+ \let\f@nchdrbox@@pre\f@nchdrbox@topstrut
+ \let\f@nchdrbox@@postx\f@nchdrbox@botstrut
+ \let\f@nchdrbox@@posty\relax
+ \let\f@nchdrbox@@crstrut\strut
+ \IfNoValueTF{#2}%
+ {\let\f@nchdrbox@@halignto\@empty}%
+ {\setlength\@tempdima{#2}%
+ \def\f@nchdrbox@@halignto{to\@tempdima}}%
+ \def\@tempa{#1}%
+ \ifx\@tempa\@empty
+ \f@nchdrbox@align cl\@nil{#3}%
+ \else
+ \f@nchdrbox@align #1\@nil{#3}%
+ \fi
+\endgroup
+}
+\protected\def\f@nchdrbox@cr{%
+ {\ifnum0=`}\fi\@ifstar\@f@nchdrbox@xcr\@f@nchdrbox@xcr}
+
+\def\@f@nchdrbox@xcr{%
+ \unskip\f@nchdrbox@@crstrut
+ \@ifnextchar[\@f@nchdrbox@argc{\ifnum0=`{\fi}\cr}%
+}
+
+\def\@f@nchdrbox@argc[#1]{%
+ \ifnum0=`{\fi}%
+ \ifdim #1>\z@
+ \unskip\@f@nchdrbox@xargc{#1}%
+ \else
+ \@f@nchdrbox@yargc{#1}%
+ \fi}
+
+\def\@f@nchdrbox@xargc#1{\@tempdima #1\advance\@tempdima \dp \strutbox
+ \vrule \@height\z@ \@depth\@tempdima \@width\z@ \cr}
+
+\def\@f@nchdrbox@yargc#1{\cr\noalign{\setlength\@tempdima{#1}\vskip\@tempdima}}
+\def\f@nchdrbox@T{\let\f@nchdrbox@@pre\f@nchdrbox@nostrut
+ \f@nchdrbox@t}
+\def\f@nchdrbox@t{\def\f@nchdrbox@@v{t}\def\f@nchdrbox@@h{l}}
+\def\f@nchdrbox@c{\def\f@nchdrbox@@v{c}\def\f@nchdrbox@@h{c}}
+\def\f@nchdrbox@b{\def\f@nchdrbox@@v{b}\def\f@nchdrbox@@h{l}}
+\def\f@nchdrbox@B{\let\f@nchdrbox@@postx\relax
+ \def\f@nchdrbox@@posty{\vspace{0pt}}%
+ \f@nchdrbox@b}
+\long\def\f@nchdrbox@align#1#2\@nil#3{%
+ \f@nch@ifin{#1}{TtcbB}{%
+ \@nameuse{f@nchdrbox@#1}%
+ \def\@tempa{#2}%
+ \ifx\@tempa\@empty\else \def\f@nchdrbox@@h{#2}\fi
+ }%
+ {\def\f@nchdrbox@@v{c}\def\f@nchdrbox@@h{#1}}%
+ \expandafter\f@nch@ifin\expandafter{\f@nchdrbox@@h}{lcr}{}%
+ {\PackageError{fancyhdr}{\string\fancyhdrbox: Illegal char `\f@nchdrbox@@h'\MessageBreak
+ in alignment argument}{}}%
+ \let\\\f@nchdrbox@cr
+ \setbox0=\if \f@nchdrbox@@v t\vtop
+ \else \vbox
+ \fi
+ {%
+ \ialign \f@nchdrbox@@halignto
+ \bgroup \relax
+ {\if \f@nchdrbox@@h l\hskip 1sp\else \hfil \fi
+ \ignorespaces ##\unskip
+ \if\f@nchdrbox@@h r\else \hfil \fi
+ }%
+ \tabskip\z@skip \cr
+ \f@nchdrbox@@pre
+ #3\unskip \f@nchdrbox@@postx
+ \crcr
+ \egroup
+ \f@nchdrbox@@posty
+ }%
+ \if\f@nchdrbox@@v c\@tempdima=\ht0\advance\@tempdima\dp0%
+ \ht0=0.5\@tempdima\dp0=0.5\@tempdima\fi
+ \leavevmode \box0
+}
+\@ifclassloaded{newlfm}
+{
+ \let\ps@@empty\f@nch@ps@empty
+ \AtBeginDocument{%
+ \renewcommand{\@zfancyhead}[5]{\relax\hbox to\headwidth{\f@nch@reset
+ \@zfancyvbox\headheight{\hbox
+ {\rlap{\parbox[b]{\headwidth}{\raggedright\f@nch@olh}}\hfill
+ \parbox[b]{\headwidth}{\centering\f@nch@olh}\hfill
+ \llap{\parbox[b]{\headwidth}{\raggedleft\f@nch@orh}}}%
+ \zheadrule}}\relax}%
+ }
+}
+{}
+\endinput
+%%
+%% End of file `fancyhdr.sty'.
diff --git a/.agents/skills/ml-paper-writing/templates/icml2026/icml2026.bst b/.agents/skills/ml-paper-writing/templates/icml2026/icml2026.bst
new file mode 100644
index 0000000..f1a50e8
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/icml2026/icml2026.bst
@@ -0,0 +1,1443 @@
+%% File: `icml2025.bst'
+%% A modification of `plainnl.bst' for use with natbib package
+%%
+%% Copyright 2010 Hal Daum\'e III
+%% Modified by J. Fürnkranz
+%% - Changed labels from (X and Y, 2000) to (X & Y, 2000)
+%% - Changed References to last name first and abbreviated first names.
+%% Modified by Iain Murray 2018 (who suggests adopting a standard .bst in future...)
+%% - Made it actually use abbreviated first names
+%%
+%% Copyright 1993-2007 Patrick W Daly
+%% Max-Planck-Institut f\"ur Sonnensystemforschung
+%% Max-Planck-Str. 2
+%% D-37191 Katlenburg-Lindau
+%% Germany
+%% E-mail: daly@mps.mpg.de
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or any later version.
+%%
+ % Version and source file information:
+ % \ProvidesFile{icml2010.mbs}[2007/11/26 1.93 (PWD)]
+ %
+ % BibTeX `plainnat' family
+ % version 0.99b for BibTeX versions 0.99a or later,
+ % for LaTeX versions 2.09 and 2e.
+ %
+ % For use with the `natbib.sty' package; emulates the corresponding
+ % member of the `plain' family, but with author-year citations.
+ %
+ % With version 6.0 of `natbib.sty', it may also be used for numerical
+ % citations, while retaining the commands \citeauthor, \citefullauthor,
+ % and \citeyear to print the corresponding information.
+ %
+ % For version 7.0 of `natbib.sty', the KEY field replaces missing
+ % authors/editors, and the date is left blank in \bibitem.
+ %
+ % Includes field EID for the sequence/citation number of electronic journals
+ % which is used instead of page numbers.
+ %
+ % Includes fields ISBN and ISSN.
+ %
+ % Includes field URL for Internet addresses.
+ %
+ % Includes field DOI for Digital Object Idenfifiers.
+ %
+ % Works best with the url.sty package of Donald Arseneau.
+ %
+ % Works with identical authors and year are further sorted by
+ % citation key, to preserve any natural sequence.
+ %
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ doi
+ eid
+ edition
+ editor
+ howpublished
+ institution
+ isbn
+ issn
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ url
+ volume
+ year
+ }
+ {}
+ { label extra.label sort.label short.list }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+ 'skip$
+ { output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {new.sentence.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't :=
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { author format.names }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { editor format.names
+ editor num.names$ #1 >
+ { " (eds.)" * }
+ { " (ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.isbn}
+{ isbn empty$
+ { "" }
+ { new.block "ISBN " isbn * }
+ if$
+}
+
+FUNCTION {format.issn}
+{ issn empty$
+ { "" }
+ { new.block "ISSN " issn * }
+ if$
+}
+
+FUNCTION {format.url}
+{ url empty$
+ { "" }
+ { new.block "URL \url{" url * "}" * }
+ if$
+}
+
+FUNCTION {format.doi}
+{ doi empty$
+ { "" }
+ { new.block "\doi{" doi * "}" * }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title "t" change.case$ }
+ if$
+}
+
+FUNCTION {format.full.names}
+{'s :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.full}
+{ author empty$
+ { editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.full}
+{ author empty$
+ { "" }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.full}
+{ editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.full
+ { type$ "proceedings" =
+ 'editor.full
+ 'author.full
+ if$
+ }
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem[" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION {format.date}
+{ year duplicate$ empty$
+ { "empty year in " cite$ * warning$
+ pop$ "" }
+ 'skip$
+ if$
+ month empty$
+ 'skip$
+ { month
+ " " * swap$ *
+ }
+ if$
+ extra.label *
+}
+
+FUNCTION {format.btitle}
+{ title emphasize
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { "volume" volume tie.or.space.connect
+ series empty$
+ 'skip$
+ { " of " * series emphasize * }
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { output.state mid.sentence =
+ { "number" }
+ { "Number" }
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { output.state mid.sentence =
+ { edition "l" change.case$ " edition" * }
+ { edition "t" change.case$ " edition" * }
+ if$
+ }
+ if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+ { "" }
+ { pages multi.page.check
+ { "pp.\ " pages n.dashify tie.or.space.connect }
+ { "pp.\ " pages tie.or.space.connect }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.eid}
+{ eid empty$
+ { "" }
+ { "art." eid tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ number empty$
+ 'skip$
+ { "\penalty0 (" number * ")" * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ":\penalty0 " * pages n.dashify * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.vol.num.eid}
+{ volume field.or.null
+ number empty$
+ 'skip$
+ { "\penalty0 (" number * ")" * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ eid empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.eid }
+ { ":\penalty0 " * eid * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { "chapter" }
+ { type "l" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { "In " booktitle emphasize * }
+ { "In " format.editors * ", " * booktitle emphasize * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$
+ and and and and and
+ key empty$ not and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type "t" change.case$
+ }
+ if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+ { "Technical Report" }
+ 'type
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+ { journal empty$
+ { "need key or journal for " cite$ * " to crossref " * crossref *
+ warning$
+ ""
+ }
+ { "In \emph{" journal * "}" * }
+ if$
+ }
+ { "In " }
+ if$
+ " \citet{" * crossref * "}" *
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Volume" volume tie.or.space.connect
+ " of " *
+ }
+ if$
+ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { series empty$
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "\emph{" * series * "}" * }
+ if$
+ }
+ 'skip$
+ if$
+ }
+ 'skip$
+ if$
+ " \citet{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { booktitle empty$
+ { "need editor, key, or booktitle for " cite$ * " to crossref " *
+ crossref * warning$
+ ""
+ }
+ { "In \emph{" booktitle * "}" * }
+ if$
+ }
+ { "In " }
+ if$
+ }
+ { "In " }
+ if$
+ " \citet{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { journal emphasize "journal" output.check
+ eid empty$
+ { format.vol.num.pages output }
+ { format.vol.num.eid output }
+ if$
+ format.date "year" output.check
+ }
+ { format.article.crossref output.nonnull
+ eid empty$
+ { format.pages output }
+ { format.eid output }
+ if$
+ }
+ if$
+ format.issn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ new.block
+ format.title "title" output.check
+ howpublished address new.block.checkb
+ howpublished output
+ address output
+ format.date output
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.chapter.pages output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ format.edition output
+ format.date "year" output.check
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages output
+ address empty$
+ { organization publisher new.sentence.checkb
+ organization output
+ publisher output
+ format.date "year" output.check
+ }
+ { address output.nonnull
+ format.date "year" output.check
+ new.sentence
+ organization output
+ publisher output
+ }
+ if$
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ new.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ organization output
+ address output
+ format.edition output
+ format.date output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ "Master's thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ title howpublished new.block.checkb
+ format.title output
+ howpublished new.block.checka
+ howpublished output
+ format.date output
+ format.issn output
+ format.url output
+ new.block
+ note output
+ fin.entry
+ empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.btitle "title" output.check
+ new.block
+ "PhD thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.editors output
+ editor format.key output
+ new.block
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+ address output
+ format.date "year" output.check
+ new.sentence
+ organization output
+ publisher output
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ format.tr.number output.nonnull
+ institution "institution" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ note "note" output.check
+ format.date output
+ format.url output
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+
+MACRO {jan} {"January"}
+
+MACRO {feb} {"February"}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"October"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+
+MACRO {tods} {"ACM Transactions on Database Systems"}
+
+MACRO {tog} {"ACM Transactions on Graphics"}
+
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ " et~al." * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al." * }
+ { " \& " * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+ 'short.list :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+ short.list
+ "("
+ *
+ year duplicate$ empty$
+ short.list key field.or.null = or
+ { pop$ "" }
+ 'skip$
+ if$
+ *
+ 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ {
+ s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "zzzzz" * }
+ { numnames #2 > nameptr #2 = and
+ { "zz" * year field.or.null * " " * }
+ 'skip$
+ if$
+ t sortify *
+ }
+ if$
+ }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+
+FUNCTION {presort}
+{ calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ cite$
+ *
+ #1 entry.max$ substring$
+ 'sort.label :=
+ sort.label *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { longest.label last.label next.extra }
+
+INTEGERS { longest.label.width last.extra.num number.label }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {forward.pass}
+{ last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION {bib.sort.order}
+{ sort.label 'sort.key$ :=
+}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+ "\providecommand{\url}[1]{\texttt{#1}}"
+ write$ newline$
+ "\expandafter\ifx\csname urlstyle\endcsname\relax"
+ write$ newline$
+ " \providecommand{\doi}[1]{doi: #1}\else"
+ write$ newline$
+ " \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
+ write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
diff --git a/.agents/skills/ml-paper-writing/templates/icml2026/icml2026.sty b/.agents/skills/ml-paper-writing/templates/icml2026/icml2026.sty
new file mode 100644
index 0000000..47f1fae
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/icml2026/icml2026.sty
@@ -0,0 +1,767 @@
+% File: icml2026.sty (LaTeX style file for ICML-2026, version of 2025-10-29)
+
+% This file contains the LaTeX formatting parameters for a two-column
+% conference proceedings that is 8.5 inches wide by 11 inches high.
+%
+% Modified by Hanze Dong, Alberto Bietti, and Felix Berkenkamp, 2025
+% - Revert to times for better compatibility
+% - Updated years, volume, location
+% - Added preprint version
+% - Based on the suggestion from Johan Larsson:
+% 1. Added an end-of-document safety check to ensure the affiliations or notice footnote is printed:
+% (1) Introduces a flag \newif\ificml@noticeprinted and sets it false by default.
+% (2) At end of document, emits a package warning if \printAffiliationsAndNotice{...} was never called.
+% 2. \printAffiliationsAndNotice now sets the flag when called: Begins with \global\icml@noticeprintedtrue.
+% - Migrated to more recent version of fancyhdr for running title in header
+%
+% Modified by Johan Larsson, 2025
+% - Use newtx instead of times, aligning serif, sans-serif, typerwriter,
+% and math fonts.
+% - Use caption package to setup captions instead of manually defining themanually defining them.
+% - Formatted icml2026.sty and example_paper.tex
+% - Use title case for section title to 2.9
+% - Replace subfigure package with subcaption in example, since it is
+% designed to work together with the caption package (which is now required).
+% - Remove unused label in example
+%
+% Modified by Tegan Maharaj and Felix Berkenkamp 2025: changed years, volume, location
+%
+% Modified by Jonathan Scarlett 2024: changed years, volume, location
+%
+% Modified by Sivan Sabato 2023: changed years and volume number.
+% Modified by Jonathan Scarlett 2023: added page numbers to every page
+%
+% Modified by Csaba Szepesvari 2022: changed years, PMLR ref. Turned off checking marginparwidth
+% as marginparwidth only controls the space available for margin notes and margin notes
+% will NEVER be used anyways in submitted versions, so there is no reason one should
+% check whether marginparwidth has been tampered with.
+% Also removed pdfview=FitH from hypersetup as it did not do its job; the default choice is a bit better
+% but of course the double-column format is not supported by this hyperlink preview functionality
+% in a completely satisfactory fashion.
+% Modified by Gang Niu 2022: Changed color to xcolor
+%
+% Modified by Iain Murray 2018: changed years, location. Remove affiliation notes when anonymous.
+% Move times dependency from .tex to .sty so fewer people delete it.
+%
+% Modified by Daniel Roy 2017: changed byline to use footnotes for affiliations, and removed emails
+%
+% Modified by Percy Liang 12/2/2013: changed the year, location from the previous template for ICML 2014
+
+% Modified by Fei Sha 9/2/2013: changed the year, location form the previous template for ICML 2013
+%
+% Modified by Fei Sha 4/24/2013: (1) remove the extra whitespace after the
+% first author's email address (in %the camera-ready version) (2) change the
+% Proceeding ... of ICML 2010 to 2014 so PDF's metadata will show up %
+% correctly
+%
+% Modified by Sanjoy Dasgupta, 2013: changed years, location
+%
+% Modified by Francesco Figari, 2012: changed years, location
+%
+% Modified by Christoph Sawade and Tobias Scheffer, 2011: added line
+% numbers, changed years
+%
+% Modified by Hal Daume III, 2010: changed years, added hyperlinks
+%
+% Modified by Kiri Wagstaff, 2009: changed years
+%
+% Modified by Sam Roweis, 2008: changed years
+%
+% Modified by Ricardo Silva, 2007: update of the ifpdf verification
+%
+% Modified by Prasad Tadepalli and Andrew Moore, merely changing years.
+%
+% Modified by Kristian Kersting, 2005, based on Jennifer Dy's 2004 version
+% - running title. If the original title is to long or is breaking a line,
+% use \icmltitlerunning{...} in the preamble to supply a shorter form.
+% Added fancyhdr package to get a running head.
+% - Updated to store the page size because pdflatex does compile the
+% page size into the pdf.
+%
+% Hacked by Terran Lane, 2003:
+% - Updated to use LaTeX2e style file conventions (ProvidesPackage,
+% etc.)
+% - Added an ``appearing in'' block at the base of the first column
+% (thus keeping the ``appearing in'' note out of the bottom margin
+% where the printer should strip in the page numbers).
+% - Added a package option [accepted] that selects between the ``Under
+% review'' notice (default, when no option is specified) and the
+% ``Appearing in'' notice (for use when the paper has been accepted
+% and will appear).
+%
+% Originally created as: ml2k.sty (LaTeX style file for ICML-2000)
+% by P. Langley (12/23/99)
+
+%%%%%%%%%%%%%%%%%%%%
+%% This version of the style file supports both a ``review'' version
+%% and a ``final/accepted'' version. The difference is only in the
+%% text that appears in the note at the bottom of the first column of
+%% the first page. The default behavior is to print a note to the
+%% effect that the paper is under review and don't distribute it. The
+%% final/accepted version prints an ``Appearing in'' note. To get the
+%% latter behavior, in the calling file change the ``usepackage'' line
+%% from:
+%% \usepackage{icml2025}
+%% to
+%% \usepackage[accepted]{icml2025}
+%%%%%%%%%%%%%%%%%%%%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{icml2026}[2025/10/29 v2.0 ICML Conference Style File]
+
+% Before 2018, \usepackage{times} was in the example TeX, but inevitably
+% not everybody did it.
+% \RequirePackage[amsthm]{newtx}
+% 2025.11.6 revert to times for better compatibility
+\RequirePackage{times}
+
+% Use fancyhdr package
+\RequirePackage{fancyhdr}
+\RequirePackage{xcolor} % changed from color to xcolor (2021/11/24)
+\RequirePackage{algorithm}
+\RequirePackage{algorithmic}
+\RequirePackage{natbib}
+\RequirePackage{eso-pic} % used by \AddToShipoutPicture
+\RequirePackage{forloop}
+\RequirePackage{url}
+\RequirePackage{caption}
+
+%%%%%%%% Options
+\DeclareOption{accepted}{%
+ \renewcommand{\Notice@String}{\ICML@appearing}
+ \gdef\isaccepted{1}
+}
+
+% === Preprint option ===
+\DeclareOption{preprint}{%%
+ \renewcommand{\Notice@String}{\ICML@preprint}%%
+ \gdef\ispreprint{1}%%
+}
+
+% Distinct preprint footer text
+\newcommand{\ICML@preprint}{%
+ \textit{Preprint. \today.}%
+}
+
+\DeclareOption{nohyperref}{%
+ \gdef\nohyperref{1}
+}
+
+% Helper flag: show real authors for accepted or preprint
+\newif\ificmlshowauthors
+\icmlshowauthorsfalse
+
+%%%%%%%%%%%%%%%%%%%%
+% This string is printed at the bottom of the page for the
+% final/accepted version of the ``appearing in'' note. Modify it to
+% change that text.
+%%%%%%%%%%%%%%%%%%%%
+\newcommand{\ICML@appearing}{\textit{Proceedings of the
+$\mathit{43}^{rd}$ International Conference on Machine Learning},
+Seoul, South Korea. PMLR 306, 2026.
+Copyright 2026 by the author(s).}
+
+%%%%%%%%%%%%%%%%%%%%
+% This string is printed at the bottom of the page for the draft/under
+% review version of the ``appearing in'' note. Modify it to change
+% that text.
+%%%%%%%%%%%%%%%%%%%%
+\newcommand{\Notice@String}{Preliminary work. Under review by the
+International Conference on Machine Learning (ICML)\@. Do not distribute.}
+
+% Cause the declared options to actually be parsed and activated
+\ProcessOptions\relax
+
+% After options are processed, decide if authors should be visible
+\ifdefined\isaccepted \icmlshowauthorstrue \fi
+\ifdefined\ispreprint \icmlshowauthorstrue \fi
+
+\ifdefined\isaccepted\else\ifdefined\ispreprint\else\ifdefined\hypersetup
+ \hypersetup{pdfauthor={Anonymous Authors}}
+\fi\fi\fi
+
+\ifdefined\nohyperref\else\ifdefined\hypersetup
+ \definecolor{mydarkblue}{rgb}{0,0.08,0.45}
+ \hypersetup{ %
+ pdftitle={},
+ pdfsubject={Proceedings of the International Conference on Machine Learning 2026},
+ pdfkeywords={},
+ pdfborder=0 0 0,
+ pdfpagemode=UseNone,
+ colorlinks=true,
+ linkcolor=mydarkblue,
+ citecolor=mydarkblue,
+ filecolor=mydarkblue,
+ urlcolor=mydarkblue,
+ }
+ \fi
+\fi
+
+
+
+% Uncomment the following for debugging. It will cause LaTeX to dump
+% the version of the ``appearing in'' string that will actually appear
+% in the document.
+%\typeout{>> Notice string='\Notice@String'}
+
+% Change citation commands to be more like old ICML styles
+\newcommand{\yrcite}[1]{\citeyearpar{#1}}
+\renewcommand{\cite}[1]{\citep{#1}}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% to ensure the letter format is used. pdflatex does compile the
+% page size into the pdf. This is done using \pdfpagewidth and
+% \pdfpageheight. As Latex does not know this directives, we first
+% check whether pdflatex or latex is used.
+%
+% Kristian Kersting 2005
+%
+% in order to account for the more recent use of pdfetex as the default
+% compiler, I have changed the pdf verification.
+%
+% Ricardo Silva 2007
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\paperwidth=8.5in
+\paperheight=11in
+
+% old PDFLaTex verification, circa 2005
+%
+%\newif\ifpdf\ifx\pdfoutput\undefined
+% \pdffalse % we are not running PDFLaTeX
+%\else
+% \pdfoutput=1 % we are running PDFLaTeX
+% \pdftrue
+%\fi
+
+\newif\ifpdf %adapted from ifpdf.sty
+\ifx\pdfoutput\undefined
+\else
+ \ifx\pdfoutput\relax
+ \else
+ \ifcase\pdfoutput
+ \else
+ \pdftrue
+ \fi
+ \fi
+\fi
+
+\ifpdf
+% \pdfpagewidth=\paperwidth
+% \pdfpageheight=\paperheight
+ \setlength{\pdfpagewidth}{8.5in}
+ \setlength{\pdfpageheight}{11in}
+\fi
+
+% Physical page layout
+
+\evensidemargin -0.23in
+\oddsidemargin -0.23in
+\setlength\textheight{9.0in}
+\setlength\textwidth{6.75in}
+\setlength\columnsep{0.25in}
+\setlength\headheight{10pt}
+\setlength\headsep{10pt}
+\addtolength{\topmargin}{-20pt}
+\addtolength{\topmargin}{-0.29in}
+
+% Historically many authors tried to include packages like geometry or fullpage,
+% which change the page layout. It either makes the proceedings inconsistent, or
+% wastes organizers' time chasing authors. So let's nip these problems in the
+% bud here. -- Iain Murray 2018.
+%\RequirePackage{printlen}
+\AtBeginDocument{%
+\newif\ifmarginsmessedwith
+\marginsmessedwithfalse
+\ifdim\oddsidemargin=-16.62178pt \else oddsidemargin has been altered.\\ \marginsmessedwithtrue\fi
+\ifdim\headheight=10.0pt \else headheight has been altered.\\ \marginsmessedwithtrue\fi
+\ifdim\textheight=650.43pt \else textheight has been altered.\\ \marginsmessedwithtrue\fi
+\ifdim\marginparsep=11.0pt \else marginparsep has been altered.\\ \marginsmessedwithtrue\fi
+\ifdim\footskip=25.0pt \else footskip has been altered.\\ \marginsmessedwithtrue\fi
+\ifdim\hoffset=0.0pt \else hoffset has been altered.\\ \marginsmessedwithtrue\fi
+\ifdim\paperwidth=614.295pt \else paperwidth has been altered.\\ \marginsmessedwithtrue\fi
+\ifdim\topmargin=-24.95781pt \else topmargin has been altered.\\ \marginsmessedwithtrue\fi
+\ifdim\headsep=10.0pt \else headsep has been altered.\\ \marginsmessedwithtrue\fi
+\ifdim\textwidth=487.8225pt \else textwidth has been altered.\\ \marginsmessedwithtrue\fi
+\ifdim\marginparpush=5.0pt \else marginparpush has been altered.\\ \marginsmessedwithtrue\fi
+\ifdim\voffset=0.0pt \else voffset has been altered.\\ \marginsmessedwithtrue\fi
+\ifdim\paperheight=794.96999pt \else paperheight has been altered.\\ \marginsmessedwithtrue\fi
+\ifmarginsmessedwith
+
+\textbf{\large \em The page layout violates the ICML style.}
+
+Please do not change the page layout, or include packages like geometry,
+savetrees, or fullpage, which change it for you.
+
+We're not able to reliably undo arbitrary changes to the style. Please remove
+the offending package(s), or layout-changing commands and try again.
+
+\fi}
+
+
+%% The following is adapted from code in the acmconf.sty conference
+%% style file. The constants in it are somewhat magical, and appear
+%% to work well with the two-column format on US letter paper that
+%% ICML uses, but will break if you change that layout, or if you use
+%% a longer block of text for the copyright notice string. Fiddle with
+%% them if necessary to get the block to fit/look right.
+%%
+%% -- Terran Lane, 2003
+%%
+%% The following comments are included verbatim from acmconf.sty:
+%%
+%%% This section (written by KBT) handles the 1" box in the lower left
+%%% corner of the left column of the first page by creating a picture,
+%%% and inserting the predefined string at the bottom (with a negative
+%%% displacement to offset the space allocated for a non-existent
+%%% caption).
+%%%
+\def\ftype@copyrightbox{8}
+\def\@copyrightspace{
+\@float{copyrightbox}[b]
+\begin{center}
+\setlength{\unitlength}{1pc}
+\begin{picture}(20,1.5)
+\put(0,2.5){\line(1,0){4.818}}
+\put(0,0){\parbox[b]{19.75pc}{\small \Notice@String}}
+\end{picture}
+\end{center}
+\end@float}
+
+\setlength\footskip{25.0pt}
+\flushbottom \twocolumn
+\sloppy
+
+% Clear out the addcontentsline command
+\def\addcontentsline#1#2#3{}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% commands for formatting paper title, author names, and addresses.
+
+% box to check the size of the running head
+\newbox\titrun
+
+% general page style
+\pagestyle{fancy}
+\fancyhf{}
+\fancyfoot[C]{\thepage}
+% set the width of the head rule to 1 point
+\renewcommand{\headrulewidth}{1pt}
+
+% definition to set the head as running head in the preamble
+\def\icmltitlerunning#1{\gdef\@icmltitlerunning{#1}}
+
+% main definition adapting \icmltitle from 2004
+\long\def\icmltitle#1{%
+
+ %check whether @icmltitlerunning exists
+ % if not \icmltitle is used as running head
+ \ifx\undefined\@icmltitlerunning%
+ \gdef\@icmltitlerunning{#1}
+ \fi
+
+ %add it to pdf information
+ \ifdefined\nohyperref\else\ifdefined\hypersetup
+ \hypersetup{pdftitle={#1}}
+ \fi\fi
+
+ %get the dimension of the running title
+ \global\setbox\titrun=\vbox{\small\bf\@icmltitlerunning}
+
+ % error flag
+ \gdef\@runningtitleerror{0}
+
+ % running title too long
+ \ifdim\wd\titrun>\textwidth%
+ \gdef\@runningtitleerror{1}%
+ % running title breaks a line
+ \else \ifdim\ht\titrun>6.25pt
+ \gdef\@runningtitleerror{2}%
+ \fi
+ \fi
+
+ % if there is somthing wrong with the running title
+ \ifnum\@runningtitleerror>0
+ \typeout{}%
+ \typeout{}%
+ \typeout{*******************************************************}%
+ \typeout{Title exceeds size limitations for running head.}%
+ \typeout{Please supply a shorter form for the running head}
+ \typeout{with \string\icmltitlerunning{...}\space prior to \string\begin{document}}%
+ \typeout{*******************************************************}%
+ \typeout{}%
+ \typeout{}%
+ % set default running title
+ \gdef\@icmltitlerunning{Title Suppressed Due to Excessive Size}
+ \fi
+
+ % no running title on the first page of the paper
+ \thispagestyle{plain}
+
+ {\center\baselineskip 18pt
+ \toptitlebar{\Large\bf #1}\bottomtitlebar}
+}
+
+% set running title header
+\fancyhead[C]{\small\bf\@icmltitlerunning}
+
+\gdef\icmlfullauthorlist{}
+\newcommand\addstringtofullauthorlist{\g@addto@macro\icmlfullauthorlist}
+\newcommand\addtofullauthorlist[1]{%
+ \ifdefined\icmlanyauthors%
+ \addstringtofullauthorlist{, #1}%
+ \else%
+ \addstringtofullauthorlist{#1}%
+ \gdef\icmlanyauthors{1}%
+ \fi%
+ \ifdefined\hypersetup%
+ \hypersetup{pdfauthor=\icmlfullauthorlist}%
+ \fi
+}
+
+\def\toptitlebar{\hrule height1pt \vskip .25in}
+\def\bottomtitlebar{\vskip .22in \hrule height1pt \vskip .3in}
+
+\newenvironment{icmlauthorlist}{%
+ \setlength\topsep{0pt}
+ \setlength\parskip{0pt}
+ \begin{center}
+ }{%
+ \end{center}
+}
+
+\newcounter{@affiliationcounter}
+\newcommand{\@pa}[1]{%
+ \ifcsname the@affil#1\endcsname
+ % do nothing
+ \else
+ \ifcsname @icmlsymbol#1\endcsname
+ % nothing
+ \else
+ \stepcounter{@affiliationcounter}%
+ \newcounter{@affil#1}%
+ \setcounter{@affil#1}{\value{@affiliationcounter}}%
+ \fi
+ \fi%
+ \ifcsname @icmlsymbol#1\endcsname
+ \textsuperscript{\csname @icmlsymbol#1\endcsname\,}%
+ \else
+ \textsuperscript{\arabic{@affil#1}\,}%
+ \fi
+}
+
+\newcommand{\icmlauthor}[2]{%
+ \ificmlshowauthors
+ \mbox{\bf #1}\,\@for\theaffil:=#2\do{\@pa{\theaffil}} \addtofullauthorlist{#1}%
+ \else
+ \ifdefined\@icmlfirsttime\else
+ \gdef\@icmlfirsttime{1}
+ \mbox{\bf Anonymous Authors}\@pa{@anon} \addtofullauthorlist{Anonymous Authors}
+ \fi
+ \fi
+}
+
+\newcommand{\icmlsetsymbol}[2]{%
+ \expandafter\gdef\csname @icmlsymbol#1\endcsname{#2}
+}
+
+\newcommand{\icmlaffiliation}[2]{%
+ \ificmlshowauthors
+ \ifcsname the@affil#1\endcsname
+ \expandafter\gdef\csname @affilname\csname the@affil#1\endcsname\endcsname{#2}%
+ \else
+ {\bf AUTHORERR: Error in use of \textbackslash{}icmlaffiliation command. Label ``#1'' not mentioned in some \textbackslash{}icmlauthor\{author name\}\{labels here\} command beforehand. }
+ \typeout{}%
+ \typeout{}%
+ \typeout{*******************************************************}%
+ \typeout{Affiliation label undefined. }%
+ \typeout{Make sure \string\icmlaffiliation\space follows }%
+ \typeout{all of \string\icmlauthor\space commands}%
+ \typeout{*******************************************************}%
+ \typeout{}%
+ \typeout{}%
+ \fi
+ \else
+ \expandafter\gdef\csname @affilname1\endcsname{Anonymous Institution, Anonymous City, Anonymous Region, Anonymous Country}
+ \fi
+}
+
+\newcommand{\icmlcorrespondingauthor}[2]{%
+ \ificmlshowauthors
+ \ifdefined\icmlcorrespondingauthor@text
+ \g@addto@macro\icmlcorrespondingauthor@text{, #1 \textless{}#2\textgreater{}}
+ \else
+ \gdef\icmlcorrespondingauthor@text{#1 \textless{}#2\textgreater{}}
+ \fi
+ \else
+ \gdef\icmlcorrespondingauthor@text{Anonymous Author \textless{}anon.email@domain.com\textgreater{}}
+ \fi
+}
+
+\newcommand{\icmlEqualContribution}{\textsuperscript{*}Equal contribution }
+
+
+% --- ICML 2026: ensure authors do not omit the affiliations/notice footnote ---
+\newif\ificml@noticeprinted
+\icml@noticeprintedfalse
+\AtEndDocument{%
+ \ificml@noticeprinted\relax\else
+ \PackageWarningNoLine{icml2026}{%
+ You did not call \string\printAffiliationsAndNotice{}. If you have no notice,%
+ call \string\printAffiliationsAndNotice\string{} (empty braces).%
+ }%
+ \fi
+}
+
+
+\newcounter{@affilnum}
+\newcommand{\printAffiliationsAndNotice}[1]{\global\icml@noticeprintedtrue%
+ \stepcounter{@affiliationcounter}%
+ {\let\thefootnote\relax\footnotetext{\hspace*{-\footnotesep}\ificmlshowauthors #1\fi%
+ \forloop{@affilnum}{1}{\value{@affilnum} < \value{@affiliationcounter}}{
+ \textsuperscript{\arabic{@affilnum}}\ifcsname @affilname\the@affilnum\endcsname%
+ \csname @affilname\the@affilnum\endcsname%
+ \else
+ {\bf AUTHORERR: Missing \textbackslash{}icmlaffiliation.}
+ \fi
+ }.%
+ \ifdefined\icmlcorrespondingauthor@text
+ { }Correspondence to: \icmlcorrespondingauthor@text.
+ \else
+ {\bf AUTHORERR: Missing \textbackslash{}icmlcorrespondingauthor.}
+ \fi
+
+ \ \\
+ \Notice@String
+ }
+ }
+}
+
+\long\def\icmladdress#1{%
+ {\bf The \textbackslash{}icmladdress command is no longer used. See the example\_paper PDF .tex for usage of \textbackslash{}icmlauther and \textbackslash{}icmlaffiliation.}
+}
+
+%% keywords as first class citizens
+\def\icmlkeywords#1{%
+ \ifdefined\nohyperref\else\ifdefined\hypersetup
+ \hypersetup{pdfkeywords={#1}}
+ \fi\fi
+}
+
+% modification to natbib citations
+\setcitestyle{authoryear,round,citesep={;},aysep={,},yysep={;}}
+
+% Redefinition of the abstract environment.
+\renewenvironment{abstract}
+{%
+ \centerline{\large\bf Abstract}
+ \vspace{-0.12in}\begin{quote}}
+ {\par\end{quote}\vskip 0.12in}
+
+% numbered section headings with different treatment of numbers
+
+\def\@startsection#1#2#3#4#5#6{\if@noskipsec \leavevmode \fi
+ \par \@tempskipa #4\relax
+ \@afterindenttrue
+ \ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \fi
+ \if@nobreak \everypar{}\else
+ \addpenalty{\@secpenalty}\addvspace{\@tempskipa}\fi \@ifstar
+ {\@ssect{#3}{#4}{#5}{#6}}{\@dblarg{\@sict{#1}{#2}{#3}{#4}{#5}{#6}}}}
+
+\def\@sict#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
+ \def\@svsec{}\else
+ \refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname}\fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup #6\relax
+ \@hangfrom{\hskip #3\relax\@svsec.~}{\interlinepenalty \@M #8\par}
+ \endgroup
+ \csname #1mark\endcsname{#7}\addcontentsline
+ {toc}{#1}{\ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}\fi
+ #7}\else
+ \def\@svsechd{#6\hskip #3\@svsec #8\csname #1mark\endcsname
+ {#7}\addcontentsline
+ {toc}{#1}{\ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}\fi
+ #7}}\fi
+ \@xsect{#5}}
+
+\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
+ \def\@svsec{}\else
+ \refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname\hskip 0.4em }\fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup #6\relax
+ \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}
+ \endgroup
+ \csname #1mark\endcsname{#7}\addcontentsline
+ {toc}{#1}{\ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}\fi
+ #7}\else
+ \def\@svsechd{#6\hskip #3\@svsec #8\csname #1mark\endcsname
+ {#7}\addcontentsline
+ {toc}{#1}{\ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}\fi
+ #7}}\fi
+ \@xsect{#5}}
+
+% section headings with less space above and below them
+\def\thesection {\arabic{section}}
+\def\thesubsection {\thesection.\arabic{subsection}}
+\def\section{\@startsection{section}{1}{\z@}{-0.12in}{0.02in}
+ {\large\bf\raggedright}}
+\def\subsection{\@startsection{subsection}{2}{\z@}{-0.10in}{0.01in}
+ {\normalsize\bf\raggedright}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-0.08in}{0.01in}
+ {\normalsize\sc\raggedright}}
+\def\paragraph{\@startsection{paragraph}{4}{\z@}{1.5ex plus
+ 0.5ex minus .2ex}{-1em}{\normalsize\bf}}
+\def\subparagraph{\@startsection{subparagraph}{5}{\z@}{1.5ex plus
+ 0.5ex minus .2ex}{-1em}{\normalsize\bf}}
+
+% Footnotes
+\footnotesep 6.65pt %
+\skip\footins 9pt
+\def\footnoterule{\kern-3pt \hrule width 0.8in \kern 2.6pt }
+\setcounter{footnote}{0}
+
+% Lists and paragraphs
+\parindent 0pt
+\topsep 4pt plus 1pt minus 2pt
+\partopsep 1pt plus 0.5pt minus 0.5pt
+\itemsep 2pt plus 1pt minus 0.5pt
+\parsep 2pt plus 1pt minus 0.5pt
+\parskip 6pt
+
+\leftmargin 2em \leftmargini\leftmargin \leftmarginii 2em
+\leftmarginiii 1.5em \leftmarginiv 1.0em \leftmarginv .5em
+\leftmarginvi .5em
+\labelwidth\leftmargini\advance\labelwidth-\labelsep \labelsep 5pt
+
+\def\@listi{\leftmargin\leftmargini}
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+ \topsep 2pt plus 1pt minus 0.5pt
+ \parsep 1pt plus 0.5pt minus 0.5pt
+ \itemsep \parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+ \topsep 1pt plus 0.5pt minus 0.5pt
+ \parsep \z@ \partopsep 0.5pt plus 0pt minus 0.5pt
+ \itemsep \topsep}
+\def\@listiv{\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
+\def\@listv{\leftmargin\leftmarginv
+ \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
+\def\@listvi{\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
+
+\abovedisplayskip 7pt plus2pt minus5pt%
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip 0pt plus3pt%
+\belowdisplayshortskip 4pt plus3pt minus3pt%
+
+% Less leading in most fonts (due to the narrow columns)
+% The choices were between 1-pt and 1.5-pt leading
+\def\@normalsize{\@setsize\normalsize{11pt}\xpt\@xpt}
+\def\small{\@setsize\small{10pt}\ixpt\@ixpt}
+\def\footnotesize{\@setsize\footnotesize{10pt}\ixpt\@ixpt}
+\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
+\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
+\def\large{\@setsize\large{14pt}\xiipt\@xiipt}
+\def\Large{\@setsize\Large{16pt}\xivpt\@xivpt}
+\def\LARGE{\@setsize\LARGE{20pt}\xviipt\@xviipt}
+\def\huge{\@setsize\huge{23pt}\xxpt\@xxpt}
+\def\Huge{\@setsize\Huge{28pt}\xxvpt\@xxvpt}
+
+% Revised formatting for figure captions and table titles.
+\captionsetup{
+ skip=0.1in,
+ font=small,
+ labelfont={it,small},
+ labelsep=period
+}
+\captionsetup[table]{position=above}
+\captionsetup[figure]{position=below}
+
+\def\fnum@figure{Figure \thefigure}
+\def\fnum@table{Table \thetable}
+
+% Strut macros for skipping spaces above and below text in tables.
+\def\abovestrut#1{\rule[0in]{0in}{#1}\ignorespaces}
+\def\belowstrut#1{\rule[-#1]{0in}{#1}\ignorespaces}
+
+\def\abovespace{\abovestrut{0.20in}}
+\def\aroundspace{\abovestrut{0.20in}\belowstrut{0.10in}}
+\def\belowspace{\belowstrut{0.10in}}
+
+% Various personal itemization commands.
+\def\texitem#1{\par\noindent\hangindent 12pt
+ \hbox to 12pt {\hss #1 ~}\ignorespaces}
+\def\icmlitem{\texitem{$\bullet$}}
+
+% To comment out multiple lines of text.
+\long\def\comment#1{}
+
+%% Line counter (not in final version). Adapted from NIPS style file by Christoph Sawade
+
+% Vertical Ruler
+% This code is, largely, from the CVPR 2010 conference style file
+% ----- define vruler
+\makeatletter
+\newbox\icmlrulerbox
+\newcount\icmlrulercount
+\newdimen\icmlruleroffset
+\newdimen\cv@lineheight
+\newdimen\cv@boxheight
+\newbox\cv@tmpbox
+\newcount\cv@refno
+\newcount\cv@tot
+% NUMBER with left flushed zeros \fillzeros[<WIDTH>]<NUMBER>
+\newcount\cv@tmpc@ \newcount\cv@tmpc
+\def\fillzeros[#1]#2{\cv@tmpc@=#2\relax\ifnum\cv@tmpc@<0\cv@tmpc@=-\cv@tmpc@\fi
+ \cv@tmpc=1 %
+ \loop\ifnum\cv@tmpc@<10 \else \divide\cv@tmpc@ by 10 \advance\cv@tmpc by 1 \fi
+ \ifnum\cv@tmpc@=10\relax\cv@tmpc@=11\relax\fi \ifnum\cv@tmpc@>10 \repeat
+ \ifnum#2<0\advance\cv@tmpc1\relax-\fi
+ \loop\ifnum\cv@tmpc<#1\relax0\advance\cv@tmpc1\relax\fi \ifnum\cv@tmpc<#1 \repeat
+ \cv@tmpc@=#2\relax\ifnum\cv@tmpc@<0\cv@tmpc@=-\cv@tmpc@\fi \relax\the\cv@tmpc@}%
+% \makevruler[<SCALE>][<INITIAL_COUNT>][<STEP>][<DIGITS>][<HEIGHT>]
+\def\makevruler[#1][#2][#3][#4][#5]{
+ \begingroup\offinterlineskip
+ \textheight=#5\vbadness=10000\vfuzz=120ex\overfullrule=0pt%
+ \global\setbox\icmlrulerbox=\vbox to \textheight{%
+ {
+ \parskip=0pt\hfuzz=150em\cv@boxheight=\textheight
+ \cv@lineheight=#1\global\icmlrulercount=#2%
+ \cv@tot\cv@boxheight\divide\cv@tot\cv@lineheight\advance\cv@tot2%
+ \cv@refno1\vskip-\cv@lineheight\vskip1ex%
+ \loop\setbox\cv@tmpbox=\hbox to0cm{\hfil {\hfil\fillzeros[#4]\icmlrulercount}}%
+ \ht\cv@tmpbox\cv@lineheight\dp\cv@tmpbox0pt\box\cv@tmpbox\break
+ \advance\cv@refno1\global\advance\icmlrulercount#3\relax
+ \ifnum\cv@refno<\cv@tot\repeat
+ }
+ }
+ \endgroup
+}%
+\makeatother
+% ----- end of vruler
+
+% \makevruler[<SCALE>][<INITIAL_COUNT>][<STEP>][<DIGITS>][<HEIGHT>]
+\def\icmlruler#1{\makevruler[12pt][#1][1][3][\textheight]\usebox{\icmlrulerbox}}
+\AddToShipoutPicture{%
+ \icmlruleroffset=\textheight
+ \advance\icmlruleroffset by 5.2pt % top margin
+ \color[rgb]{.7,.7,.7}
+ \ificmlshowauthors\else
+ \AtTextUpperLeft{%
+ \put(\LenToUnit{-35pt},\LenToUnit{-\icmlruleroffset}){%left ruler
+ \icmlruler{\icmlrulercount}}
+ %\put(\LenToUnit{1.04\textwidth},\LenToUnit{-\icmlruleroffset}){%right ruler
+ % \icmlruler{\icmlrulercount}}
+ }
+ \fi
+}
+\endinput
diff --git a/.agents/skills/ml-paper-writing/templates/icml2026/icml_numpapers.pdf b/.agents/skills/ml-paper-writing/templates/icml2026/icml_numpapers.pdf
new file mode 100644
index 0000000..98d2167
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/icml2026/icml_numpapers.pdf
Binary files differ
diff --git a/.agents/skills/ml-paper-writing/templates/neurips2025/Makefile b/.agents/skills/ml-paper-writing/templates/neurips2025/Makefile
new file mode 100644
index 0000000..9baab4a
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/neurips2025/Makefile
@@ -0,0 +1,36 @@
+FIGURES_FOLDER := figures
+PDFS := \
+$(filter-out $(wildcard $(FIGURES_FOLDER)/*-crop.pdf),$(wildcard $(FIGURES_FOLDER)/*.pdf)) \
+$(filter-out $(wildcard $(FIGURES_FOLDER)/**/*-crop.pdf),$(wildcard $(FIGURES_FOLDER)/**/*.pdf))
+CROPPED_PDFS := $(PDFS:.pdf=-crop.pdf)
+
+all: main.pdf
+
+%.pdf: %.tex Makefile $(CROPPED_PDFS)
+ pdflatex -synctex=1 -interaction=nonstopmode $<
+ -bibtex $*.aux
+ pdflatex -synctex=1 -interaction=nonstopmode $<
+ pdflatex -synctex=1 -interaction=nonstopmode $<
+
+.PHONY: figures
+figures: $(CROPPED_PDFS)
+
+.PRECIOUS: $(CROPPED_PDFS)
+%-crop.pdf: %.pdf Makefile
+ pdfcrop $<
+
+.PHONY: clean upgrade
+clean:
+ find . -maxdepth 1 \
+ \( -name "*.aux" -o -name "*.bbl" -o -name "*.blg" -o \
+ -name "*.log" -o -name "*.out" -o -name "*.pdf" -o \
+ -name "*.synctex.gz" \) | xargs $(RM)
+ find $(FIGURES_FOLDER) -name "*-crop.pdf" | xargs $(RM)
+
+YEAR := 2025
+
+upgrade:
+ curl -O https://media.neurips.cc/Conferences/NeurIPS$(YEAR)/Styles.zip
+ unzip -u Styles.zip
+ mv Styles/neurips_${YEAR}.sty neurips.sty
+ $(RM) -r Styles.zip Styles
diff --git a/.agents/skills/ml-paper-writing/templates/neurips2025/extra_pkgs.tex b/.agents/skills/ml-paper-writing/templates/neurips2025/extra_pkgs.tex
new file mode 100644
index 0000000..7b8b2e8
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/neurips2025/extra_pkgs.tex
@@ -0,0 +1,53 @@
+\usepackage[export]{adjustbox}
+\usepackage[ruled]{algorithm2e}
+\usepackage[inline, shortlabels]{enumitem}
+\usepackage[T1]{fontenc}
+\usepackage{hyperref}
+\usepackage{microtype}
+\usepackage{pifont}
+\usepackage{xcolor}
+\usepackage{xurl}
+% Figures and Tables
+\usepackage{graphicx}
+\usepackage{booktabs}
+\usepackage{tabularray}
+% Monospaced Code Blocks
+\usepackage{listings}
+% Math Packages
+\usepackage{amsmath, amsfonts}
+\usepackage{nicefrac}
+
+\UseTblrLibrary{booktabs}
+
+\lstset{
+ backgroundcolor=\color{white}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}; should come as last argument
+ basicstyle=\ttfamily, % the size of the fonts that are used for the code
+ breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
+ breaklines=true, % sets automatic line breaking
+ captionpos=b, % sets the caption-position to bottom
+ columns=fullflexible, % reduce the column spacing
+ commentstyle=\color{gray}, % comment style
+ deletekeywords={}, % if you want to delete keywords from the given language
+ escapeinside={\%*}{*)}, % if you want to add LaTeX within your code
+ extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8
+ frame=none, % adds no frame around the code
+ keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
+ keywordstyle=\color{blue}, % keyword style
+ language=C++, % the language of the code
+ morekeywords={}, % if you want to add more keywords to the set
+ numbers=none, % where to put the line-numbers; possible values are (none, left, right)
+ numbersep=5pt, % how far the line-numbers are from the code
+ numberstyle=\color{black}, % the style that is used for the line-numbers
+ rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
+ showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
+ showstringspaces=false, % underline spaces within strings only
+ showtabs=false, % show tabs within strings adding particular underscores
+ stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered
+ stringstyle=\color{red}, % string literal style
+ tabsize=4, % sets default tabsize to 4 spaces
+}
+
+\makeatletter
+\newcommand{\ssymbol}[1]{\@fnsymbol{#1}}
+\newcommand{\romanNumeral}[1]{\expandafter\@slowromancap\romannumeral #1@}
+\makeatother
diff --git a/.agents/skills/ml-paper-writing/templates/neurips2025/main.tex b/.agents/skills/ml-paper-writing/templates/neurips2025/main.tex
new file mode 100644
index 0000000..65ece27
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/neurips2025/main.tex
@@ -0,0 +1,38 @@
+\documentclass{article}
+
+\usepackage[nonatbib, final]{neurips}
+\usepackage[numbers]{natbib}
+
+\makeatletter
+\renewcommand{\@noticestring}{
+ \centering
+
+}
+\makeatother
+
+\input{extra_pkgs}
+
+\usepackage{physics}
+\usepackage{mathtools}
+\DeclarePairedDelimiter\p{(}{)}
+\DeclarePairedDelimiter\n{|}{|}
+\DeclarePairedDelimiter\B{[}{]}
+
+\title{}
+
+\author{
+ Bojian Zheng \\
+ University of Toronto \\
+ \href{mailto:bojian@cs.toronto.edu}{bojian@cs.toronto.edu}
+}
+
+\begin{document}
+
+\maketitle
+
+
+
+% \bibliographystyle{plainnat}
+% \bibliography{bibliography}
+
+\end{document}
diff --git a/.agents/skills/ml-paper-writing/templates/neurips2025/neurips.sty b/.agents/skills/ml-paper-writing/templates/neurips2025/neurips.sty
new file mode 100644
index 0000000..d5297aa
--- /dev/null
+++ b/.agents/skills/ml-paper-writing/templates/neurips2025/neurips.sty
@@ -0,0 +1,382 @@
+% partial rewrite of the LaTeX2e package for submissions to the
+% Conference on Neural Information Processing Systems (NeurIPS):
+%
+% - uses more LaTeX conventions
+% - line numbers at submission time replaced with aligned numbers from
+% lineno package
+% - \nipsfinalcopy replaced with [final] package option
+% - automatically loads times package for authors
+% - loads natbib automatically; this can be suppressed with the
+% [nonatbib] package option
+% - adds foot line to first page identifying the conference
+% - adds preprint option for submission to e.g. arXiv
+% - conference acronym modified
+%
+% Roman Garnett (garnett@wustl.edu) and the many authors of
+% nips15submit_e.sty, including MK and drstrip@sandia
+%
+% last revision: April 2025
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{neurips_2025}[2025/04/02 NeurIPS 2025 submission/camera-ready style file]
+
+% declare final option, which creates camera-ready copy
+\newif\if@neuripsfinal\@neuripsfinalfalse
+\DeclareOption{final}{
+ \@neuripsfinaltrue
+}
+
+% declare nonatbib option, which does not load natbib in case of
+% package clash (users can pass options to natbib via
+% \PassOptionsToPackage)
+\newif\if@natbib\@natbibtrue
+\DeclareOption{nonatbib}{
+ \@natbibfalse
+}
+
+% declare preprint option, which creates a preprint version ready for
+% upload to, e.g., arXiv
+\newif\if@preprint\@preprintfalse
+\DeclareOption{preprint}{
+ \@preprinttrue
+}
+
+\ProcessOptions\relax
+
+% determine whether this is an anonymized submission
+\newif\if@submission\@submissiontrue
+\if@neuripsfinal\@submissionfalse\fi
+\if@preprint\@submissionfalse\fi
+
+% fonts
+\renewcommand{\rmdefault}{ptm}
+\renewcommand{\sfdefault}{phv}
+
+% change this every year for notice string at bottom
+\newcommand{\@neuripsordinal}{39th}
+\newcommand{\@neuripsyear}{2025}
+\newcommand{\@neuripslocation}{San Diego}
+
+% acknowledgments
+\usepackage{environ}
+\newcommand{\acksection}{\section*{Acknowledgments and Disclosure of Funding}}
+\NewEnviron{ack}{%
+ \acksection
+ \BODY
+}
+
+
+% load natbib unless told otherwise
+\if@natbib
+ \RequirePackage{natbib}
+\fi
+
+% set page geometry
+\usepackage[verbose=true,letterpaper]{geometry}
+\AtBeginDocument{
+ \newgeometry{
+ textheight=9in,
+ textwidth=5.5in,
+ top=1in,
+ headheight=12pt,
+ headsep=25pt,
+ footskip=30pt
+ }
+ \@ifpackageloaded{fullpage}
+ {\PackageWarning{neurips_2025}{fullpage package not allowed! Overwriting formatting.}}
+ {}
+}
+
+\widowpenalty=10000
+\clubpenalty=10000
+\flushbottom
+\sloppy
+
+
+% font sizes with reduced leading
+\renewcommand{\normalsize}{%
+ \@setfontsize\normalsize\@xpt\@xipt
+ \abovedisplayskip 7\p@ \@plus 2\p@ \@minus 5\p@
+ \abovedisplayshortskip \z@ \@plus 3\p@
+ \belowdisplayskip \abovedisplayskip
+ \belowdisplayshortskip 4\p@ \@plus 3\p@ \@minus 3\p@
+}
+\normalsize
+\renewcommand{\small}{%
+ \@setfontsize\small\@ixpt\@xpt
+ \abovedisplayskip 6\p@ \@plus 1.5\p@ \@minus 4\p@
+ \abovedisplayshortskip \z@ \@plus 2\p@
+ \belowdisplayskip \abovedisplayskip
+ \belowdisplayshortskip 3\p@ \@plus 2\p@ \@minus 2\p@
+}
+\renewcommand{\footnotesize}{\@setfontsize\footnotesize\@ixpt\@xpt}
+\renewcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt\@viiipt}
+\renewcommand{\tiny}{\@setfontsize\tiny\@vipt\@viipt}
+\renewcommand{\large}{\@setfontsize\large\@xiipt{14}}
+\renewcommand{\Large}{\@setfontsize\Large\@xivpt{16}}
+\renewcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{20}}
+\renewcommand{\huge}{\@setfontsize\huge\@xxpt{23}}
+\renewcommand{\Huge}{\@setfontsize\Huge\@xxvpt{28}}
+
+% sections with less space
+\providecommand{\section}{}
+\renewcommand{\section}{%
+ \@startsection{section}{1}{\z@}%
+ {-2.0ex \@plus -0.5ex \@minus -0.2ex}%
+ { 1.5ex \@plus 0.3ex \@minus 0.2ex}%
+ {\large\bf\raggedright}%
+}
+\providecommand{\subsection}{}
+\renewcommand{\subsection}{%
+ \@startsection{subsection}{2}{\z@}%
+ {-1.8ex \@plus -0.5ex \@minus -0.2ex}%
+ { 0.8ex \@plus 0.2ex}%
+ {\normalsize\bf\raggedright}%
+}
+\providecommand{\subsubsection}{}
+\renewcommand{\subsubsection}{%
+ \@startsection{subsubsection}{3}{\z@}%
+ {-1.5ex \@plus -0.5ex \@minus -0.2ex}%
+ { 0.5ex \@plus 0.2ex}%
+ {\normalsize\bf\raggedright}%
+}
+\providecommand{\paragraph}{}
+\renewcommand{\paragraph}{%
+ \@startsection{paragraph}{4}{\z@}%
+ {1.5ex \@plus 0.5ex \@minus 0.2ex}%
+ {-1em}%
+ {\normalsize\bf}%
+}
+\providecommand{\subparagraph}{}
+\renewcommand{\subparagraph}{%
+ \@startsection{subparagraph}{5}{\z@}%
+ {1.5ex \@plus 0.5ex \@minus 0.2ex}%
+ {-1em}%
+ {\normalsize\bf}%
+}
+\providecommand{\subsubsubsection}{}
+\renewcommand{\subsubsubsection}{%
+ \vskip5pt{\noindent\normalsize\rm\raggedright}%
+}
+
+% float placement
+\renewcommand{\topfraction }{0.85}
+\renewcommand{\bottomfraction }{0.4}
+\renewcommand{\textfraction }{0.1}
+\renewcommand{\floatpagefraction}{0.7}
+
+\newlength{\@neuripsabovecaptionskip}\setlength{\@neuripsabovecaptionskip}{7\p@}
+\newlength{\@neuripsbelowcaptionskip}\setlength{\@neuripsbelowcaptionskip}{\z@}
+
+\setlength{\abovecaptionskip}{\@neuripsabovecaptionskip}
+\setlength{\belowcaptionskip}{\@neuripsbelowcaptionskip}
+
+% swap above/belowcaptionskip lengths for tables
+\renewenvironment{table}
+ {\setlength{\abovecaptionskip}{\@neuripsbelowcaptionskip}%
+ \setlength{\belowcaptionskip}{\@neuripsabovecaptionskip}%
+ \@float{table}}
+ {\end@float}
+
+% footnote formatting
+\setlength{\footnotesep }{6.65\p@}
+\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@}
+\renewcommand{\footnoterule}{\kern-3\p@ \hrule width 12pc \kern 2.6\p@}
+\setcounter{footnote}{0}
+
+% paragraph formatting
+\setlength{\parindent}{\z@}
+\setlength{\parskip }{5.5\p@}
+
+% list formatting
+\setlength{\topsep }{4\p@ \@plus 1\p@ \@minus 2\p@}
+\setlength{\partopsep }{1\p@ \@plus 0.5\p@ \@minus 0.5\p@}
+\setlength{\itemsep }{2\p@ \@plus 1\p@ \@minus 0.5\p@}
+\setlength{\parsep }{2\p@ \@plus 1\p@ \@minus 0.5\p@}
+\setlength{\leftmargin }{3pc}
+\setlength{\leftmargini }{\leftmargin}
+\setlength{\leftmarginii }{2em}
+\setlength{\leftmarginiii}{1.5em}
+\setlength{\leftmarginiv }{1.0em}
+\setlength{\leftmarginv }{0.5em}
+\def\@listi {\leftmargin\leftmargini}
+\def\@listii {\leftmargin\leftmarginii
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+ \topsep 2\p@ \@plus 1\p@ \@minus 0.5\p@
+ \parsep 1\p@ \@plus 0.5\p@ \@minus 0.5\p@
+ \itemsep \parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii
+ \advance\labelwidth-\labelsep
+ \topsep 1\p@ \@plus 0.5\p@ \@minus 0.5\p@
+ \parsep \z@
+ \partopsep 0.5\p@ \@plus 0\p@ \@minus 0.5\p@
+ \itemsep \topsep}
+\def\@listiv {\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv
+ \advance\labelwidth-\labelsep}
+\def\@listv {\leftmargin\leftmarginv
+ \labelwidth\leftmarginv
+ \advance\labelwidth-\labelsep}
+\def\@listvi {\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi
+ \advance\labelwidth-\labelsep}
+
+% create title
+\providecommand{\maketitle}{}
+\renewcommand{\maketitle}{%
+ \par
+ \begingroup
+ \renewcommand{\thefootnote}{\fnsymbol{footnote}}
+ % for perfect author name centering
+ \renewcommand{\@makefnmark}{\hbox to \z@{$^{\@thefnmark}$\hss}}
+ % The footnote-mark was overlapping the footnote-text,
+ % added the following to fix this problem (MK)
+ \long\def\@makefntext##1{%
+ \parindent 1em\noindent
+ \hbox to 1.8em{\hss $\m@th ^{\@thefnmark}$}##1
+ }
+ \thispagestyle{empty}
+ \@maketitle
+ \@thanks
+ \@notice
+ \endgroup
+ \let\maketitle\relax
+ \let\thanks\relax
+}
+
+% rules for title box at top of first page
+\newcommand{\@toptitlebar}{
+ \hrule height 4\p@
+ \vskip 0.25in
+ \vskip -\parskip%
+}
+\newcommand{\@bottomtitlebar}{
+ \vskip 0.29in
+ \vskip -\parskip
+ \hrule height 1\p@
+ \vskip 0.09in%
+}
+
+% create title (includes both anonymized and non-anonymized versions)
+\providecommand{\@maketitle}{}
+\renewcommand{\@maketitle}{%
+ \vbox{%
+ \hsize\textwidth
+ \linewidth\hsize
+ \vskip 0.1in
+ \@toptitlebar
+ \centering
+ {\LARGE\bf \@title\par}
+ \@bottomtitlebar
+ \if@submission
+ \begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}
+ Anonymous Author(s) \\
+ Affiliation \\
+ Address \\
+ \texttt{email} \\
+ \end{tabular}%
+ \else
+ \def\And{%
+ \end{tabular}\hfil\linebreak[0]\hfil%
+ \begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\ignorespaces%
+ }
+ \def\AND{%
+ \end{tabular}\hfil\linebreak[4]\hfil%
+ \begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\ignorespaces%
+ }
+ \begin{tabular}[t]{c}\bf\rule{\z@}{24\p@}\@author\end{tabular}%
+ \fi
+ \vskip 0.3in \@minus 0.1in
+ }
+}
+
+% add conference notice to bottom of first page
+\newcommand{\ftype@noticebox}{8}
+\newcommand{\@notice}{%
+ % give a bit of extra room back to authors on first page
+ \enlargethispage{2\baselineskip}%
+ \@float{noticebox}[b]%
+ \footnotesize\@noticestring%
+ \end@float%
+}
+
+% abstract styling
+\renewenvironment{abstract}%
+{%
+ \vskip 0.075in%
+ \centerline%
+ {\large\bf Abstract}%
+ \vspace{0.5ex}%
+ \begin{quote}%
+}
+{
+ \par%
+ \end{quote}%
+ \vskip 1ex%
+}
+
+% For the paper checklist
+\newcommand{\answerYes}[1][]{\textcolor{blue}{[Yes] #1}}
+\newcommand{\answerNo}[1][]{\textcolor{orange}{[No] #1}}
+\newcommand{\answerNA}[1][]{\textcolor{gray}{[NA] #1}}
+\newcommand{\answerTODO}[1][]{\textcolor{red}{\bf [TODO]}}
+\newcommand{\justificationTODO}[1][]{\textcolor{red}{\bf [TODO]}}
+
+% handle tweaks for camera-ready copy vs. submission copy
+\if@preprint
+ \newcommand{\@noticestring}{%
+ Preprint. Under review.%
+ }
+\else
+ \if@neuripsfinal
+ \newcommand{\@noticestring}{%
+ \@neuripsordinal\/ Conference on Neural Information Processing Systems
+ (NeurIPS \@neuripsyear).%, \@neuripslocation.%
+ }
+ \else
+ \newcommand{\@noticestring}{%
+ Submitted to \@neuripsordinal\/ Conference on Neural Information
+ Processing Systems (NeurIPS \@neuripsyear). Do not distribute.%
+ }
+
+ % hide the acknowledgements
+ \NewEnviron{hide}{}
+ \let\ack\hide
+ \let\endack\endhide
+
+ % line numbers for submission
+ \RequirePackage{lineno}
+ \linenumbers
+
+ % fix incompatibilities between lineno and amsmath, if required, by
+ % transparently wrapping linenomath environments around amsmath
+ % environments
+ \AtBeginDocument{%
+ \@ifpackageloaded{amsmath}{%
+ \newcommand*\patchAmsMathEnvironmentForLineno[1]{%
+ \expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname
+ \expandafter\let\csname oldend#1\expandafter\endcsname\csname end#1\endcsname
+ \renewenvironment{#1}%
+ {\linenomath\csname old#1\endcsname}%
+ {\csname oldend#1\endcsname\endlinenomath}%
+ }%
+ \newcommand*\patchBothAmsMathEnvironmentsForLineno[1]{%
+ \patchAmsMathEnvironmentForLineno{#1}%
+ \patchAmsMathEnvironmentForLineno{#1*}%
+ }%
+ \patchBothAmsMathEnvironmentsForLineno{equation}%
+ \patchBothAmsMathEnvironmentsForLineno{align}%
+ \patchBothAmsMathEnvironmentsForLineno{flalign}%
+ \patchBothAmsMathEnvironmentsForLineno{alignat}%
+ \patchBothAmsMathEnvironmentsForLineno{gather}%
+ \patchBothAmsMathEnvironmentsForLineno{multline}%
+ }
+ {}
+ }
+ \fi
+\fi
+
+
+\endinput