Skip to content

TinySnow/Typeseter

Repository files navigation

Typeseter

一个面向中文写作的小型排版工具,当前为纯静态版本(无 Umi、无 Ant、无 React)。

在线地址

当前技术栈

  • TypeScript
  • Vite
  • 原生 DOM
  • 正则驱动排版规则

目录结构

  • src/main.ts:前端入口(仅启动)
  • src/core:平台无关的排版核心逻辑(可复用到 Web / Bot / CLI)
  • src/web:浏览器 UI 与本地存储逻辑
  • src/bin:可执行文件侧的适配入口(与 Web 解耦)
  • src/bot:Telegram 对接接口层(不绑定 grammy,便于单独演进)

Telegram 对接建议

  • 业务入口用 src/bot/service.tstypesetForTelegramcreateTelegramHandler
  • 会话状态建议用 src/bot/store.ts 的 LRU+TTL 存储,避免 chat 状态无限增长。
  • 长消息建议启用 src/bot/text.ts 的自动分片,规避 Telegram 4096 字符限制。

本地开发

仓库已内置 npm 镜像(.npmrc):https://registry.npmmirror.com/

npm install
npm run dev

构建

npm run build

构建产物目录为 dist/,可直接部署到 GitHub Pages。

GitHub 部署

仓库内置 GitHub Actions:推送到 master 后自动构建并发布 dist/ 到 Pages。

兼容性说明

  • 已加入高级正则能力探测。
  • 不支持高级正则的浏览器会自动走兼容回退路径(避免语法级报错)。

已实现

纯文本模式

  • 删除空行
  • 段首缩进
  • 中英文间加空格
  • 删除中文与中文标点间空格
  • 多项标点修正(逗号、句点、冒号、问号、叹号、分号、括号、书名号、破折号等)
  • 段落间隔设置(含自定义分隔符)

Markdown 模式(实验)

  • 在纯文本规则基础上进行 Markdown 安全排版
  • 跳过并保护以下范围:
    • 代码块(fenced code,支持反引号或波浪线)
    • 行内代码(...
    • URL 与自动链接
    • 表格分隔线
    • HTML 注释块
  • 支持“保护范围预览”开关,便于观察跳过区域

回归样例(请保留)

  • tests/case/test-text-plain-regression.txt(纯文本回归样例)
  • tests/case/test-text-markdown-regression.md(Markdown 回归样例)

待完善

  • Markdown 规则继续细化(列表、引用、任务列表等)
  • 更细粒度规则开关(按规则组启停)
  • 更多可配置规则(如引号、间隔号、简繁转换)

License

MIT

About

This repo is aim to help people usually writing articles in Chinese to tidy the typeset./此仓库用于帮助经常用中文写文章的人整理文章排版。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors