Introduction to XCPC statement generator -- A Web-Based XCPC-style Contest Statement Generator

Revision en5, by chumeng, 2026-02-19 19:22:20

Introduction

XCPC Statement Generator is an open-source, browser-based application designed specifically for creating XCPC-style contest statements. Built with React, TypeScript, and powered by Typst (a modern typesetting system), this tool allows contest organizers to edit problem statements from various formats(Markdown, LaTeX and Typst) and export them as formatted PDFs that closely mirror the style of major competitive programming competitions in China (or competitions that use olymp.sty to create contest statements).

screenshot

You can try XCPC Statement Generator on This Website, or get the source code on GitHub

Features

  • Pure Browser-Based Operation: It runs entirely in your browser, simply open the web application.
  • Support Polygon Packages: The tool supports importing Polygon contest packages. Contest organizers who use the Polygon system for problem management can directly import their exported ZIP files, automatically parsing problem statements, examples, and metadata.
  • Multi-Format Support: XCPC Statement Generator supports three popular problem statement formats: Markdown, LaTeX and Typst.
  • Real-Time Preview: Thanks to Typst, as you write or edit problem statements, you can instantly see how they will appear in the final PDF, ensuring what you see is what you get.

Updates

[0.2.2] — 2026-02-19

Added

  • Cloud Sync – Support for syncing contest data to the cloud (Alibaba Cloud OSS, Tencent Cloud COS, AWS S3).
  • GitHub Directory Support – Option to select specific GitHub repository directories during cloud sync.
  • Tab/Shift+Tab Support – Keyboard navigation for the CodeMirror editor.
  • Custom Template Editor – Edit custom Typst templates directly within the settings.
  • Preview Zoom – Canvas-rendered previews now support zooming.

Fixed

  • Error prompt when saving a version without selecting a branch.

[0.2.1] — 2026-02-18

Added

  • PDF Export for Single Problems – Available via the sidebar context menu and editor toolbar.
  • Responsive Mobile Layout – Includes a new bottom tab navigation for mobile devices.
  • Version Control System – Support for viewing and rolling back contest edit history.

Fixed

  • Removed main container margins and improved bottom navigation bar styling.
  • Fixed an issue where non-input content was selectable.

[0.2.0] — 2026-02-18

Added

  • Sidebar and problem management functionality.
  • Context menu (right-click) for problem items.
  • Drag-and-drop sorting support.
  • Problem reordering options in settings.
  • Independent language settings for cover pages and problems.
  • Navigation/page jumping between problems.

Changed

  • Replaced Monaco Editor with CodeMirror 6 and implemented a tab-based editor.
  • Migrated UI framework from Ant Design to daisyUI + Tailwind CSS.
  • Reorganized the contest editor architecture.

Fixed

  • Editor switching leaks and single-problem preview issues.
  • Race conditions causing image loading failures on initial import or refresh.
  • Key generation issues for drag-and-drop sorting states.

[0.1.5] — 2025-12-11

Added

  • Collapsible problem cards.
  • Support for drag-and-drop reordering.

[0.1.4] — 2025-12-10

Added

  • Internationalization (i18n) support.
  • Independent language configuration for cover and content.

[0.1.3] — 2025-12-08

Added

  • Multi-language support.
  • Image upload functionality.

Fixed

  • Support for bold styling in SimSun (SimSun-Bold) fonts.

[0.1.2] — 2025-12-08

Added

  • Monaco Editor integration.
  • Enhanced formatting support.

[0.1.1] — 2025-12-04

Added

  • Polygon package import functionality.
  • GitHub Pages deployment workflow.

[0.1.0] — 2025-11-27

Added

  • Initial release.
  • Typst compiler integration.
  • Core contest editor features.
Tags icpc, contest, polygon

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en5 English chumeng 2026-02-19 19:22:20 2738
en4 English chumeng 2025-12-17 18:30:06 31
en3 English chumeng 2025-12-08 17:12:22 0 (published)
en2 English chumeng 2025-12-08 17:08:00 960
en1 English chumeng 2025-12-08 16:57:15 713 Initial revision (saved to drafts)