# Arxiv Translator

> Automatically downloads LaTeX source from arXiv, translates it to a target language (default Chinese), and compiles it to PDF using xelatex. Uses modern xeCJK for multilingual support. Trigger when the user provides an arXiv URL, paper ID, or natural language query about an arXiv paper and wants it translated/compiled.

- Skill: `dull-bird/arxiv-translator` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add dull-bird/arxiv-translator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dull-bird/arxiv-translator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: dull-bird (https://skillmd.com/u/dull-bird)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/dull-bird/arxiv-translator

---


# arXiv LaTeX Translator & Compiler (Modern Solution)

This skill handles the end-to-end workflow of converting an arXiv paper's LaTeX source into a translated PDF on Windows, macOS, and Linux using modern `xeCJK` and `fontspec`.

## Workflow

### 0. Pre-flight Dependency Check
Before starting, verify that all required system tools are installed.
- **Windows (PowerShell):** `Get-Command curl, tar, xelatex, bibtex -ErrorAction SilentlyContinue`
- **macOS / Linux (Bash):** `for cmd in curl tar xelatex bibtex; do command -v $cmd >/dev/null 2>&1 || echo "Missing: $cmd"; done`

### 1. Identify & Download
- Extract the ID (e.g., `2508.11825v2`) from the URL or find it via search.
- Create a target directory and download/extract the source and the paper pdf (for final check) using native tools (`curl`, `tar`).
  - Abstract: `https://arxiv.org/abs/xxxx.xxxxx`
  - Source: `https://arxiv.org/src/xxxx.xxxxx`
  - PDF: `https://arxiv.org/pdf/xxxx.xxxxx.pdf`

### 2. Analyze & Modularize (For Large Papers)
- Read the original `.pdf` file to build a mental map.
- **Modularization Strategy (Crucial for Reliability):**
    - **DO NOT use the `replace` tool for content translation.** It is prone to whitespace/encoding mismatches.
    - Instead, **YOU MUST** execute the standardized script located at `scripts/split_tex.py` (relative to this SKILL directory) to safely split the monolithic `.tex` file into sub-files by `\section`. Do not attempt to write a custom splitting script.
      - **Command to run:** Locate the skill directory and run `python3 <path_to_skill_dir>/scripts/split_tex.py <main_file.tex>`
    - For small files, you may still use `replace` or directly overwrite the file with `write_file`.
- **Terminology Glossary:** Create a local mental glossary of 5-10 core technical terms to ensure consistency.

### 3. Atomic Translation (Write-File Overwrite)
- **Work on Chunks:** Translate one sub-file (or one section) at a time.
- **Overwrite Mode:** Use the `write_file` tool to write the fully translated content into the sub-files. This avoids the "string not found" errors common with the `replace` tool.
- **Content Preservation:** Rigorously preserve LaTeX commands, math environments, citations, and references.
- **Modern Chinese Support (xeCJK)**:
    - Inject `\usepackage{xeCJK}` and `\setCJKmainfont{Microsoft YaHei}` (or platform equivalent) into the main preamble.

### 4. Compile & Auto-Fix
- Use `xelatex -interaction=nonstopmode`.
- **Standard compilation loop:** `xelatex` -> `bibtex` -> `xelatex` x2.
- **Error Auto-Fixing:** If compilation fails, read the `.log` file, identify the error line, and fix the corresponding sub-file using `write_file` or `replace`.

### 5. Integrity Verification & Review
- **Completeness Check:** Verify all sub-files in `sections/` are translated.
- **Visual Check:** Compare the translated PDF with the original.
- Clean up intermediate files and move the final `_CN.pdf` to the root.

## Guidelines
- **Prefer `write_file` over `replace` for Translation**: Overwriting a small, dedicated section file is 100% reliable compared to searching for a literal string in a 20,000-line file.
- **Font Selection**:
    - Windows: `Microsoft YaHei` or `SimSun`.
    - macOS: `PingFang SC`.
    - Linux: `Noto Sans CJK SC`.
- **Preserve Template**: Use `xeCJK` to minimize style interference.
- **Heredocs**: Use single-quoted heredocs in shells to handle backslashes correctly.

