所有模块都使用 MDX(Markdown + JSX)编写,并由 @mdx-js/mdx 编译。 指南通过 KaTeX 支持 ,并使用了一些自定义 MDX 组件。如有疑问或希望添加功能,请联系 Nathan Wang。
快速开始
USACO Guide 拥有公开的 GitHub 仓库。
- 添加或修改模块,请查看
content/目录。 - 添加或修改题解,请查看
solutions/目录。 - 图片、视频等静态文件位于
public/,因为 Next.js 只能从该目录提供静态文件。- 在
content/和solutions/中请使用绝对路径引用。
- 几乎所有其他文件和目录都与前端代码有关。
如有贡献方面的问题,可以提交 Issue 或 Pull Request,团队成员会提供 帮助。也可以加入 Discord 服务器。
使用编辑器(推荐)
编辑内容最简单的方式是使用在线编辑器。
在本地运行网站
也可以在本地运行网站以预览修改。需要使用 /editor 不支持的 Tailwind CSS
类时,这种方式尤其有用。
- 配置开发环境。
- 安装 Node.js
npm install -g yarn
- 克隆仓库。
- 使用命令行:
git clone https://github.com/cpinitiative/usaco-guide.git - 或使用 GitHub Desktop
- 安装依赖:
yarn install
- 启动开发服务器:
yarn dev- 编辑内容时请改用
yarn dev:watch。普通的yarn dev使用内容缓存,修改 后必须重启才能显示。
更多信息参见前端文档。
Next.js 要求 Node.js 20.9 或更高版本,建议使用仍处于活跃或维护阶段的 长期支持版本。
贡献方式
例如:
课程内容
- 将资源列表转换为表格(铂金组/进阶)。
- 补充章节、模块或资源缺失的说明;所有资源都应有说明。
- 改进样例题讲解;若星标资源或官方题解已经讲得很好,则无需重复。
- 改进代码实现:确保能够编译、移除过多宏、为模板添加代码片段标记,并保持 不同语言之间的一致性。
- 添加新模块。
- 若为模块增加大量正文,请把名字加入 frontmatter 的作者列表。
- 若新增或显著改进代码实现,或补充简短说明,请把名字加入贡献者列表。
题目
- 将题目列表转换为表格(铂金组/进阶)。
- 修正题目难度和标签。
- 添加能很好体现模块主题的题目,并移除不合适的题目。
- 添加官方题解链接。
- 在没有题解或现有题解可改进时添加题解,也可补充其他语言的解题代码。
Markdown 资源
Markdown 编辑器:
- 推荐使用我们的在线编辑器。
- Sublime Text
.md的语法高亮也适用于.mdx。- 打开
.mdx文件后,可以通过View -> Syntax -> Open all with current extension as ... -> Markdown -> Markdown.
- StackEdit
- 自动编译 ,无需安装。
- Obsidian
- 自动编译 ,无需安装。