[{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"这篇文章展示了基本的 Markdown 语法和格式。","date":"2026-05-17","objectID":"/markdown-basics/","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"这篇文章提供了可以在 Hugo 的文章中使用的基本 Markdown 语法示例。 注意 这篇文章借鉴了一篇很棒的 来自 Grav 的文章。 如果你想了解 FixIt 主题的扩展 Markdown 语法，请阅读 扩展 Markdown 语法页面。 事实上，编写 Web 内容很麻烦。WYSIWYG所见即所得 编辑器帮助减轻了这一任务。但通常会导致代码太糟，或更糟糕的是，网页也会很丑。 没有通常伴随的所有复杂和丑陋的问题，Markdown 是一种更好的生成 HTML 内容的方式。 一些主要好处是： Markdown 简单易学，几乎没有多余的字符，因此编写内容也更快。 用 Markdown 书写时出错的机会更少。 可以产生有效的 XHTML 输出。 将内容和视觉显示保持分开，这样就不会打乱网站的外观。 可以在你喜欢的任何文本编辑器或 Markdown 应用程序中编写内容。 Markdown 使用起来很有趣！ John Gruber, Markdown 的作者如是说： Markdown 格式的首要设计目标是更具可读性。 最初的想法是 Markdown 格式的文档应当以纯文本形式发布， 而不会看起来像被标签或格式说明所标记。 虽然 Markdown 的语法受到几种现有的文本到 HTML 转换工具的影响， 但 Markdown 语法的最大灵感来源是纯文本电子邮件的格式。 \u0026ndash; John Gruber 话不多说，我们来回顾一下 Markdown 的主要语法以及生成的 HTML 样式！ 技巧 \u0026nbsp;将此页保存为书签，以备将来参考！ ","date":"2026-05-17","objectID":"/markdown-basics/:0:0","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"标题 从 h2 到 h6 的标题在每个级别上都加上一个 ＃: ## h2 标题 ### h3 标题 #### h4 标题 ##### h5 标题 ###### h6 标题 输出的 HTML 看起来像这样： \u0026lt;h2\u0026gt;h2 标题\u0026lt;/h2\u0026gt; \u0026lt;h3\u0026gt;h3 标题\u0026lt;/h3\u0026gt; \u0026lt;h4\u0026gt;h4 标题\u0026lt;/h4\u0026gt; \u0026lt;h5\u0026gt;h5 标题\u0026lt;/h5\u0026gt; \u0026lt;h6\u0026gt;h6 标题\u0026lt;/h6\u0026gt; 标题 ID 要添加自定义标题 ID, 请在与标题相同的行中将自定义 ID 放在花括号中： ### 一个很棒的标题 {#custom-id} 输出的 HTML 看起来像这样： \u0026lt;h3 id=\u0026#34;custom-id\u0026#34;\u0026gt;一个很棒的标题\u0026lt;/h3\u0026gt; ","date":"2026-05-17","objectID":"/markdown-basics/:1:0","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#标题"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"注释 注释是和 HTML 兼容的： \u0026lt;!-- 这是一段注释 --\u0026gt; 不能看到以下的注释： ","date":"2026-05-17","objectID":"/markdown-basics/:2:0","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#注释"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"水平线 HTML 中的 \u0026lt;hr\u0026gt; 标签是用来在段落元素之间创建一个 \u0026ldquo;专题间隔\u0026rdquo; 的。 使用 Markdown, 你可以用以下方式创建一个 \u0026lt;hr\u0026gt; 标签： ___: 三个连续的下划线 ---: 三个连续的破折号 ***: 三个连续的星号 呈现的输出效果如下： ","date":"2026-05-17","objectID":"/markdown-basics/:3:0","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#水平线"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"段落 按照纯文本的方式书写段落，纯文本在呈现的 HTML 中将用 \u0026lt;p\u0026gt;/\u0026lt;/p\u0026gt; 标签包裹。 如下段落： Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad. 输出的 HTML 看起来像这样： \u0026lt;p\u0026gt;Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.\u0026lt;/p\u0026gt; 可以使用一个空白行进行换行。 ","date":"2026-05-17","objectID":"/markdown-basics/:4:0","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#段落"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"内联 HTML 元素 如果你需要某个 HTML 标签（带有一个类）, 则可以简单地像这样使用： Markdown 格式的段落。 \u0026lt;div class=\u0026#34;class\u0026#34;\u0026gt; 这是 \u0026lt;b\u0026gt;HTML\u0026lt;/b\u0026gt; \u0026lt;/div\u0026gt; Markdown 格式的段落。 ","date":"2026-05-17","objectID":"/markdown-basics/:5:0","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#内联-html-元素"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"强调 ","date":"2026-05-17","objectID":"/markdown-basics/:6:0","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#强调"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"加粗 用于强调带有较粗字体的文本片段。 以下文本片段会被 渲染为粗体。 **渲染为粗体** __渲染为粗体__ 输出的 HTML 看起来像这样： \u0026lt;strong\u0026gt;渲染为粗体\u0026lt;/strong\u0026gt; ","date":"2026-05-17","objectID":"/markdown-basics/:6:1","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#加粗"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"斜体 用于强调带有斜体的文本片段。 以下文本片段被 渲染为斜体。 *渲染为斜体* _渲染为斜体_ 输出的 HTML 看起来像这样： \u0026lt;em\u0026gt;渲染为斜体\u0026lt;/em\u0026gt; ","date":"2026-05-17","objectID":"/markdown-basics/:6:2","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#斜体"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"删除线 按照 GFMGitHub flavored Markdown 你可以使用删除线。 ~~这段文本带有删除线。~~ 呈现的输出效果如下： 这段文本带有删除线。 输出的 HTML 看起来像这样： \u0026lt;del\u0026gt;这段文本带有删除线。\u0026lt;/del\u0026gt; ","date":"2026-05-17","objectID":"/markdown-basics/:6:3","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#删除线"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"组合 加粗，斜体，和删除线可以组合使用。 _**加粗和斜体**_ ~~**删除线和加粗**~~ ~~_删除线和斜体_~~ ~~_**加粗，斜体和删除线**_~~ 呈现的输出效果如下： 加粗和斜体 删除线和加粗 删除线和斜体 加粗，斜体和删除线 输出的 HTML 看起来像这样： \u0026lt;em\u0026gt;\u0026lt;strong\u0026gt;加粗和斜体\u0026lt;/strong\u0026gt;\u0026lt;/em\u0026gt; \u0026lt;del\u0026gt;\u0026lt;strong\u0026gt;删除线和加粗\u0026lt;/strong\u0026gt;\u0026lt;/del\u0026gt; \u0026lt;del\u0026gt;\u0026lt;em\u0026gt;删除线和斜体\u0026lt;/em\u0026gt;\u0026lt;/del\u0026gt; \u0026lt;del\u0026gt;\u0026lt;em\u0026gt;\u0026lt;strong\u0026gt;加粗，斜体和删除线\u0026lt;/strong\u0026gt;\u0026lt;/em\u0026gt;\u0026lt;/del\u0026gt; ","date":"2026-05-17","objectID":"/markdown-basics/:6:4","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#组合"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"引用 用于在文档中引用其他来源的内容块。 在要引用的任何文本之前添加 \u0026gt;: \u0026gt; **Fusion Drive** combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined. 呈现的输出效果如下： Fusion Drive combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined. 输出的 HTML 看起来像这样： \u0026lt;blockquote\u0026gt; \u0026lt;p\u0026gt; \u0026lt;strong\u0026gt;Fusion Drive\u0026lt;/strong\u0026gt; combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined. \u0026lt;/p\u0026gt; \u0026lt;/blockquote\u0026gt; 引用也可以嵌套： \u0026gt; Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue. Nunc augue augue, aliquam non hendrerit ac, commodo vel nisi. \u0026gt;\u0026gt; Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor odio non est accumsan facilisis. Aliquam id turpis in dolor tincidunt mollis ac eu diam. 呈现的输出效果如下： Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue. Nunc augue augue, aliquam non hendrerit ac, commodo vel nisi. Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor odio non est accumsan facilisis. Aliquam id turpis in dolor tincidunt mollis ac eu diam. ","date":"2026-05-17","objectID":"/markdown-basics/:7:0","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#引用"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"列表 ","date":"2026-05-17","objectID":"/markdown-basics/:8:0","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#列表"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"无序列表 一系列项的列表，其中项的顺序没有明显关系。 你可以使用以下任何符号来表示无序列表中的项： * 一项内容 - 一项内容 + 一项内容 例如： * Lorem ipsum dolor sit amet * Consectetur adipiscing elit * Integer molestie lorem at massa * Facilisis in pretium nisl aliquet * Nulla volutpat aliquam velit * Phasellus iaculis neque * Purus sodales ultricies * Vestibulum laoreet porttitor sem * Ac tristique libero volutpat at * Faucibus porta lacus fringilla vel * Aenean sit amet erat nunc * Eget porttitor lorem 呈现的输出效果如下： Lorem ipsum dolor sit amet Consectetur adipiscing elit Integer molestie lorem at massa Facilisis in pretium nisl aliquet Nulla volutpat aliquam velit Phasellus iaculis neque Purus sodales ultricies Vestibulum laoreet porttitor sem Ac tristique libero volutpat at Faucibus porta lacus fringilla vel Aenean sit amet erat nunc Eget porttitor lorem 输出的 HTML 看起来像这样： \u0026lt;ul\u0026gt; \u0026lt;li\u0026gt;Lorem ipsum dolor sit amet\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Consectetur adipiscing elit\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Integer molestie lorem at massa\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Facilisis in pretium nisl aliquet\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Nulla volutpat aliquam velit \u0026lt;ul\u0026gt; \u0026lt;li\u0026gt;Phasellus iaculis neque\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Purus sodales ultricies\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Vestibulum laoreet porttitor sem\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Ac tristique libero volutpat at\u0026lt;/li\u0026gt; \u0026lt;/ul\u0026gt; \u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Faucibus porta lacus fringilla vel\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Aenean sit amet erat nunc\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Eget porttitor lorem\u0026lt;/li\u0026gt; \u0026lt;/ul\u0026gt; ","date":"2026-05-17","objectID":"/markdown-basics/:8:1","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#无序列表"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"有序列表 一系列项的列表，其中项的顺序确实很重要。 1. Lorem ipsum dolor sit amet 2. Consectetur adipiscing elit 3. Integer molestie lorem at massa 4. Facilisis in pretium nisl aliquet 5. Nulla volutpat aliquam velit 6. Faucibus porta lacus fringilla vel 7. Aenean sit amet erat nunc 8. Eget porttitor lorem 呈现的输出效果如下： Lorem ipsum dolor sit amet Consectetur adipiscing elit Integer molestie lorem at massa Facilisis in pretium nisl aliquet Nulla volutpat aliquam velit Faucibus porta lacus fringilla vel Aenean sit amet erat nunc Eget porttitor lorem 输出的 HTML 看起来像这样： \u0026lt;ol\u0026gt; \u0026lt;li\u0026gt;Lorem ipsum dolor sit amet\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Consectetur adipiscing elit\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Integer molestie lorem at massa\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Facilisis in pretium nisl aliquet\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Nulla volutpat aliquam velit\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Faucibus porta lacus fringilla vel\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Aenean sit amet erat nunc\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Eget porttitor lorem\u0026lt;/li\u0026gt; \u0026lt;/ol\u0026gt; 技巧 如果你对每一项使用 1., Markdown 将自动为每一项编号。例如： 1. Lorem ipsum dolor sit amet 1. Consectetur adipiscing elit 1. Integer molestie lorem at massa 1. Facilisis in pretium nisl aliquet 1. Nulla volutpat aliquam velit 1. Faucibus porta lacus fringilla vel 1. Aenean sit amet erat nunc 1. Eget porttitor lorem 呈现的输出效果如下： Lorem ipsum dolor sit amet Consectetur adipiscing elit Integer molestie lorem at massa Facilisis in pretium nisl aliquet Nulla volutpat aliquam velit Faucibus porta lacus fringilla vel Aenean sit amet erat nunc Eget porttitor lorem ","date":"2026-05-17","objectID":"/markdown-basics/:8:2","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#有序列表"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"代码 ","date":"2026-05-17","objectID":"/markdown-basics/:9:0","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#代码"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"行内代码 用 ` 包装行内代码段。 在这个例子中，`\u0026lt;section\u0026gt;\u0026lt;/section\u0026gt;` 会被包裹成 **代码**。 呈现的输出效果如下： 在这个例子中，\u0026lt;section\u0026gt;\u0026lt;/section\u0026gt; 会被包裹成 代码。 输出的 HTML 看起来像这样： \u0026lt;p\u0026gt; 在这个例子中，\u0026lt;code\u0026gt;\u0026amp;lt;section\u0026amp;gt;\u0026amp;lt;/section\u0026amp;gt;\u0026lt;/code\u0026gt; 会被包裹成 \u0026lt;strong\u0026gt;代码\u0026lt;/strong\u0026gt;。 \u0026lt;/p\u0026gt; ","date":"2026-05-17","objectID":"/markdown-basics/:9:1","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#行内代码"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"缩进代码 ❌ 不推荐使用。 将几行代码缩进至少四个空格，例如： // Some comments line 1 of code line 2 of code line 3 of code 呈现的输出效果如下： // Some comments line 1 of code line 2 of code line 3 of code 输出的 HTML 看起来像这样： \u0026lt;pre\u0026gt; \u0026lt;code\u0026gt; // Some comments line 1 of code line 2 of code line 3 of code \u0026lt;/code\u0026gt; \u0026lt;/pre\u0026gt; ","date":"2026-05-17","objectID":"/markdown-basics/:9:2","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#缩进代码"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"围栏代码块 ✅ 推荐使用。 使用 \u0026ldquo;围栏\u0026rdquo; ``` 来生成一段带有语言属性的代码块。 ```markdown Sample text here... ``` 输出的 HTML 看起来像这样： \u0026lt;pre language-html\u0026gt; \u0026lt;code\u0026gt;Sample text here...\u0026lt;/code\u0026gt; \u0026lt;/pre\u0026gt; ","date":"2026-05-17","objectID":"/markdown-basics/:9:3","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#围栏代码块"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"语法高亮 Chroma 语言高亮列表 - Hugo Chroma 支持语言 - Chroma GFMGitHub Flavored Markdown 也支持语法高亮。 要激活它，只需在第一个代码 \u0026ldquo;围栏\u0026rdquo; 之后直接添加你要使用的语言的文件扩展名， ```js, 语法高亮显示将自动应用于渲染的 HTML 中。 例如，在以下 JavaScript 代码中应用语法高亮： ```js grunt.initConfig({ assemble: { options: { assets: \u0026#39;docs/assets\u0026#39;, data: \u0026#39;src/data/*.{json,yml}\u0026#39;, helpers: \u0026#39;src/custom-helpers.js\u0026#39;, partials: [\u0026#39;src/partials/**/*.{hbs,md}\u0026#39;] }, pages: { options: { layout: \u0026#39;default.hbs\u0026#39; }, files: { \u0026#39;./\u0026#39;: [\u0026#39;src/templates/pages/index.hbs\u0026#39;] } } } }; ``` 呈现的输出效果如下： grunt.initConfig({ assemble: { options: { assets: \u0026#39;docs/assets\u0026#39;, data: \u0026#39;src/data/*.{json,yml}\u0026#39;, helpers: \u0026#39;src/custom-helpers.js\u0026#39;, partials: [\u0026#39;src/partials/**/*.{hbs,md}\u0026#39;] }, pages: { options: { layout: \u0026#39;default.hbs\u0026#39; }, files: { \u0026#39;./\u0026#39;: [\u0026#39;src/templates/pages/index.hbs\u0026#39;] } } } }) 注意 Hugo 文档中的 语法高亮页面 介绍了有关语法高亮的更多信息， 包括语法高亮的 shortcode。 ","date":"2026-05-17","objectID":"/markdown-basics/:9:4","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#语法高亮"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"表格 通过在每个单元格之间添加竖线作为分隔线，并在标题下添加一行破折号（也由竖线分隔）来创建表格。 | Option | Description | | ------ | ------------------------------------------------------------------------- | | data | path to data files to supply the data that will be passed into templates. | | engine | engine to be used for processing templates. Handlebars is the default. | | ext | extension to be used for dest files. | 呈现的输出效果如下： Option Description data path to data files to supply the data that will be passed into templates. engine engine to be used for processing templates. Handlebars is the default. ext extension to be used for dest files. 输出的 HTML 看起来像这样： \u0026lt;table\u0026gt; \u0026lt;thead\u0026gt; \u0026lt;tr\u0026gt; \u0026lt;th\u0026gt;Option\u0026lt;/th\u0026gt; \u0026lt;th\u0026gt;Description\u0026lt;/th\u0026gt; \u0026lt;/tr\u0026gt; \u0026lt;/thead\u0026gt; \u0026lt;tbody\u0026gt; \u0026lt;tr\u0026gt; \u0026lt;td\u0026gt;data\u0026lt;/td\u0026gt; \u0026lt;td\u0026gt;path to data files to supply the data that will be passed into templates.\u0026lt;/td\u0026gt; \u0026lt;/tr\u0026gt; \u0026lt;tr\u0026gt; \u0026lt;td\u0026gt;engine\u0026lt;/td\u0026gt; \u0026lt;td\u0026gt;engine to be used for processing templates. Handlebars is the default.\u0026lt;/td\u0026gt; \u0026lt;/tr\u0026gt; \u0026lt;tr\u0026gt; \u0026lt;td\u0026gt;ext\u0026lt;/td\u0026gt; \u0026lt;td\u0026gt;extension to be used for dest files.\u0026lt;/td\u0026gt; \u0026lt;/tr\u0026gt; \u0026lt;/tbody\u0026gt; \u0026lt;/table\u0026gt; Markdown 表格对齐规则 在分隔线左侧加 : 左对齐，右侧加 : 右对齐，两侧都加或不加则居中。 | 姓名 | 年龄 | 城市 | | :--- | ---: | :--: | | 张三 | 28 | 北京 | | 李四 | 34 | 上海 | 呈现的输出效果如下： 姓名 年龄 城市 张三 28 北京 李四 34 上海 ","date":"2026-05-17","objectID":"/markdown-basics/:10:0","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#表格"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"链接 ","date":"2026-05-17","objectID":"/markdown-basics/:11:0","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#链接"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"基本链接 \u0026lt;https://assemble.io\u0026gt; \u0026lt;contact@revolunet.com\u0026gt; [Assemble](https://assemble.io) 呈现的输出效果如下（将鼠标悬停在链接上，没有提示）: https://assemble.io contact@revolunet.com Assemble 输出的 HTML 看起来像这样： \u0026lt;a href=\u0026#34;https://assemble.io\u0026#34;\u0026gt;https://assemble.io\u0026lt;/a\u0026gt; \u0026lt;a href=\u0026#34;mailto:contact@revolunet.com\u0026#34;\u0026gt;contact@revolunet.com\u0026lt;/a\u0026gt; \u0026lt;a href=\u0026#34;https://assemble.io\u0026#34;\u0026gt;Assemble\u0026lt;/a\u0026gt; ","date":"2026-05-17","objectID":"/markdown-basics/:11:1","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#基本链接"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"添加一个标题 [Upstage](https://github.com/upstage/ \u0026#34;Visit Upstage!\u0026#34;) 呈现的输出效果如下（将鼠标悬停在链接上，会有一行提示）: Upstage 输出的 HTML 看起来像这样： \u0026lt;a href=\u0026#34;https://github.com/upstage/\u0026#34; title=\u0026#34;Visit Upstage!\u0026#34;\u0026gt;Upstage\u0026lt;/a\u0026gt; ","date":"2026-05-17","objectID":"/markdown-basics/:11:2","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#添加一个标题"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"引用式链接 引用式链接是一种特殊的链接，它使 URL 在 Markdown 中更易于显示和阅读。 引用式链接分为两部分：与文本保持内联的部分以及存储在文件中其他位置的部分，以使文本易于阅读。 [text][id] ⋮ [id]: http://example.org/ \u0026#34;title\u0026#34; 例如： [FixIt][fixit-repo] [fixit-repo]: https://github.com/hugo-fixit/FixIt \u0026#34;A clean, elegant but advanced blog theme for Hugo\u0026#34; 呈现的输出效果如下： FixIt ","date":"2026-05-17","objectID":"/markdown-basics/:11:3","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#引用式链接"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"定位标记 定位标记使你可以跳至同一页面上的指定锚点。例如，每个章节： ## Table of Contents * [Chapter 1](#chapter-1) * [Chapter 2](#chapter-2) * [Chapter 3](#chapter-3) 将跳转到这些部分： ## Chapter 1 \u0026lt;a id=\u0026#34;chapter-1\u0026#34;\u0026gt;\u0026lt;/a\u0026gt; Content for chapter one. ## Chapter 2 \u0026lt;a id=\u0026#34;chapter-2\u0026#34;\u0026gt;\u0026lt;/a\u0026gt; Content for chapter one. ## Chapter 3 \u0026lt;a id=\u0026#34;chapter-3\u0026#34;\u0026gt;\u0026lt;/a\u0026gt; Content for chapter one. 注意 定位标记的位置几乎是任意的。因为它们并不引人注目，所以它们通常被放在同一行了。 ","date":"2026-05-17","objectID":"/markdown-basics/:11:4","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#定位标记"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"脚注 脚注使你可以添加注释和参考，而不会使文档正文混乱。 当你创建脚注时，会在添加脚注引用的位置出现带有链接的上标编号。 读者可以单击链接以跳至页面底部的脚注内容。 要创建脚注引用，请在方括号中添加插入符号和标识符 ([^1])。 标识符可以是数字或单词，但不能包含空格或制表符。 标识符仅将脚注引用与脚注本身相关联 - 在脚注输出中，脚注按顺序编号。 在中括号内使用插入符号和数字以及用冒号和文本来添加脚注内容 ([^1]：这是一段脚注)。 你不一定要在文档末尾添加脚注。可以将它们放在除列表，引用和表格等元素之外的任何位置。 这是一个数字脚注 [^1] 这是一个带标签的脚注 [^label] [^1]: 这是一个数字脚注 [^label]: 这是一个带标签的脚注 这是一个数字脚注 1 这是一个带标签的脚注 2 ","date":"2026-05-17","objectID":"/markdown-basics/:12:0","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#脚注"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"图片 图片的语法与链接相似，但包含一个在前面的感叹号。 ![Droidtocat](https://octodex.github.com/images/droidtocat.png) 或者： ![Alt text](https://octodex.github.com/images/spidertocat.png \u0026#34;The Spidertocat\u0026#34;) The Spidertocat 像链接一样，图片也具有引用式的语法： ![Alt text][id] The IronCat 稍后在文档中提供参考内容，用来定义 URL 的位置： [id]: https://octodex.github.com/images/ironcat.jpg \u0026#34;The IronCat\u0026#34; 技巧 FixIt 主题提供了一个包含更多功能的图片 shortcode。 这是一个数字脚注\u0026#160;\u0026#x21a9;\u0026#xfe0e; 这是一个带标签的脚注\u0026#160;\u0026#x21a9;\u0026#xfe0e; ","date":"2026-05-17","objectID":"/markdown-basics/:13:0","tags":["Markdown","Hugo"],"title":"Markdown 基本语法","uri":"/markdown-basics/#图片"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"本文展示了 FixIt Flavored Markdown 扩展语法。","date":"2026-05-17","objectID":"/markdown-extended/","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"本文展示了 FixIt 风格的 MarkdownFixIt Flavored Markdown 扩展语法。 ","date":"2026-05-17","objectID":"/markdown-extended/:0:0","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"警示 警示（Alert）也被称为 Callout 或 Admonition，是用于强调关键信息的引用块。 ","date":"2026-05-17","objectID":"/markdown-extended/:1:0","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#警示"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"基本语法 使用基本的 Markdown 语法，每个警示的第一行是一个警示指示符，由一个感叹号和警示类型组成，用中括号括起来。 Alert 基本语法与 GitHub、Obsidian 和 Typora 兼容。 以下是所有五种类型的示例： \u0026gt; [!NOTE] \u0026gt; 突出显示用户应考虑的信息，即使只是浏览也应考虑。 \u0026gt; [!TIP] \u0026gt; 可选信息，可帮助用户取得更大的成功。 \u0026gt; [!IMPORTANT] \u0026gt; 用户成功所需的关键信息。 \u0026gt; [!WARNING] \u0026gt; 由于存在潜在风险，需要用户立即关注的关键内容。 \u0026gt; [!CAUTION] \u0026gt; 操作的潜在负面后果。 呈现的输出效果如下： 注意 突出显示用户应考虑的信息，即使只是浏览也应考虑。 提示 可选信息，可帮助用户取得更大的成功。 重要 用户成功所需的关键信息。 警告 由于存在潜在风险，需要用户立即关注的关键内容。 小心 操作的潜在负面后果。 ","date":"2026-05-17","objectID":"/markdown-extended/:1:1","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#基本语法"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"扩展语法 使用扩展 Markdown 语法，你可以选择包含警示符号或警示标题。警示符号是 + 或 - 之一。通常用于指示警示是否可以图形折叠。 Alert 扩展语法与 Obsidian 和 Fixit admonition shortcode 兼容。 警告 扩展语法与 GitHub 或 Typora 不兼容。如果包含警示符号或警示标题，这些应用程序会将 Markdown 渲染为引用块。 更改标题 默认警示标题是其类型标识符的标题大小写。你可以通过在类型标识符后添加文本来更改它： \u0026gt; [!NOTE] FixIt \u0026gt; 一个简洁、优雅且高效的 Hugo 主题。 FixIt 一个简洁、优雅且高效的 Hugo 主题。 你甚至可以省略正文来创建仅标题的警示： \u0026gt; [!TIP] 仅标题的警示 仅标题的警示 可折叠警示 你可以通过在类型标识符后直接添加加号（+）或减号（-）来使警示可折叠。 \u0026gt; [!WARNING]+ 辐射危害 \u0026gt; 请勿在没有防护装备的情况下接近或操作。 \u0026gt; [!QUESTION]- 警示可以折叠吗？ \u0026gt; 是的！在可折叠警示中，内容在折叠时被隐藏。 辐射危害 请勿在没有防护装备的情况下接近或操作。 警示可以折叠吗？ 是的！在可折叠警示中，内容在折叠时被隐藏。 嵌套警示 你可以在多个级别中嵌套警示。 \u0026gt; [!question] 警示可以嵌套吗？ \u0026gt; \u0026gt; [!todo] 可以！它们可以。 \u0026gt; \u0026gt; \u0026gt; [!example] 你甚至可以使用多层嵌套。 警示可以嵌套吗？ 可以！它们可以。 你甚至可以使用多层嵌套。 仅内容警示 你可以通过在类型标识符后直接添加波浪号（~）来创建仅内容警示。 这是 FixIt 独有的扩展语法，与 Obsidian 或其他 Markdown 应用不兼容。 \u0026gt; [!TIP]~ \u0026gt; 这是一个没有标题的仅内容警示。 这是一个没有标题的仅内容警示。 支持的类型 Alert 扩展语法支持 13 种类型的警示横幅，除非你自定义 Admonition，否则任何不支持的类型都会默认为 note 类型。类型标识不区分大小写。 类型 别名 note — abstract summary, tldr info — todo — tip hint, important success check, done question help, faq warning caution, attention failure fail, missing danger error bug — example — quote cite ","date":"2026-05-17","objectID":"/markdown-extended/:1:2","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#扩展语法"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"扩展语法 使用扩展 Markdown 语法，你可以选择包含警示符号或警示标题。警示符号是 + 或 - 之一。通常用于指示警示是否可以图形折叠。 Alert 扩展语法与 Obsidian 和 Fixit admonition shortcode 兼容。 警告 扩展语法与 GitHub 或 Typora 不兼容。如果包含警示符号或警示标题，这些应用程序会将 Markdown 渲染为引用块。 更改标题 默认警示标题是其类型标识符的标题大小写。你可以通过在类型标识符后添加文本来更改它： \u0026gt; [!NOTE] FixIt \u0026gt; 一个简洁、优雅且高效的 Hugo 主题。 FixIt 一个简洁、优雅且高效的 Hugo 主题。 你甚至可以省略正文来创建仅标题的警示： \u0026gt; [!TIP] 仅标题的警示 仅标题的警示 可折叠警示 你可以通过在类型标识符后直接添加加号（+）或减号（-）来使警示可折叠。 \u0026gt; [!WARNING]+ 辐射危害 \u0026gt; 请勿在没有防护装备的情况下接近或操作。 \u0026gt; [!QUESTION]- 警示可以折叠吗？ \u0026gt; 是的！在可折叠警示中，内容在折叠时被隐藏。 辐射危害 请勿在没有防护装备的情况下接近或操作。 警示可以折叠吗？ 是的！在可折叠警示中，内容在折叠时被隐藏。 嵌套警示 你可以在多个级别中嵌套警示。 \u0026gt; [!question] 警示可以嵌套吗？ \u0026gt; \u0026gt; [!todo] 可以！它们可以。 \u0026gt; \u0026gt; \u0026gt; [!example] 你甚至可以使用多层嵌套。 警示可以嵌套吗？ 可以！它们可以。 你甚至可以使用多层嵌套。 仅内容警示 你可以通过在类型标识符后直接添加波浪号（~）来创建仅内容警示。 这是 FixIt 独有的扩展语法，与 Obsidian 或其他 Markdown 应用不兼容。 \u0026gt; [!TIP]~ \u0026gt; 这是一个没有标题的仅内容警示。 这是一个没有标题的仅内容警示。 支持的类型 Alert 扩展语法支持 13 种类型的警示横幅，除非你自定义 Admonition，否则任何不支持的类型都会默认为 note 类型。类型标识不区分大小写。 类型 别名 note — abstract summary, tldr info — todo — tip hint, important success check, done question help, faq warning caution, attention failure fail, missing danger error bug — example — quote cite ","date":"2026-05-17","objectID":"/markdown-extended/:1:2","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#更改标题"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"扩展语法 使用扩展 Markdown 语法，你可以选择包含警示符号或警示标题。警示符号是 + 或 - 之一。通常用于指示警示是否可以图形折叠。 Alert 扩展语法与 Obsidian 和 Fixit admonition shortcode 兼容。 警告 扩展语法与 GitHub 或 Typora 不兼容。如果包含警示符号或警示标题，这些应用程序会将 Markdown 渲染为引用块。 更改标题 默认警示标题是其类型标识符的标题大小写。你可以通过在类型标识符后添加文本来更改它： \u0026gt; [!NOTE] FixIt \u0026gt; 一个简洁、优雅且高效的 Hugo 主题。 FixIt 一个简洁、优雅且高效的 Hugo 主题。 你甚至可以省略正文来创建仅标题的警示： \u0026gt; [!TIP] 仅标题的警示 仅标题的警示 可折叠警示 你可以通过在类型标识符后直接添加加号（+）或减号（-）来使警示可折叠。 \u0026gt; [!WARNING]+ 辐射危害 \u0026gt; 请勿在没有防护装备的情况下接近或操作。 \u0026gt; [!QUESTION]- 警示可以折叠吗？ \u0026gt; 是的！在可折叠警示中，内容在折叠时被隐藏。 辐射危害 请勿在没有防护装备的情况下接近或操作。 警示可以折叠吗？ 是的！在可折叠警示中，内容在折叠时被隐藏。 嵌套警示 你可以在多个级别中嵌套警示。 \u0026gt; [!question] 警示可以嵌套吗？ \u0026gt; \u0026gt; [!todo] 可以！它们可以。 \u0026gt; \u0026gt; \u0026gt; [!example] 你甚至可以使用多层嵌套。 警示可以嵌套吗？ 可以！它们可以。 你甚至可以使用多层嵌套。 仅内容警示 你可以通过在类型标识符后直接添加波浪号（~）来创建仅内容警示。 这是 FixIt 独有的扩展语法，与 Obsidian 或其他 Markdown 应用不兼容。 \u0026gt; [!TIP]~ \u0026gt; 这是一个没有标题的仅内容警示。 这是一个没有标题的仅内容警示。 支持的类型 Alert 扩展语法支持 13 种类型的警示横幅，除非你自定义 Admonition，否则任何不支持的类型都会默认为 note 类型。类型标识不区分大小写。 类型 别名 note — abstract summary, tldr info — todo — tip hint, important success check, done question help, faq warning caution, attention failure fail, missing danger error bug — example — quote cite ","date":"2026-05-17","objectID":"/markdown-extended/:1:2","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#可折叠警示"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"扩展语法 使用扩展 Markdown 语法，你可以选择包含警示符号或警示标题。警示符号是 + 或 - 之一。通常用于指示警示是否可以图形折叠。 Alert 扩展语法与 Obsidian 和 Fixit admonition shortcode 兼容。 警告 扩展语法与 GitHub 或 Typora 不兼容。如果包含警示符号或警示标题，这些应用程序会将 Markdown 渲染为引用块。 更改标题 默认警示标题是其类型标识符的标题大小写。你可以通过在类型标识符后添加文本来更改它： \u0026gt; [!NOTE] FixIt \u0026gt; 一个简洁、优雅且高效的 Hugo 主题。 FixIt 一个简洁、优雅且高效的 Hugo 主题。 你甚至可以省略正文来创建仅标题的警示： \u0026gt; [!TIP] 仅标题的警示 仅标题的警示 可折叠警示 你可以通过在类型标识符后直接添加加号（+）或减号（-）来使警示可折叠。 \u0026gt; [!WARNING]+ 辐射危害 \u0026gt; 请勿在没有防护装备的情况下接近或操作。 \u0026gt; [!QUESTION]- 警示可以折叠吗？ \u0026gt; 是的！在可折叠警示中，内容在折叠时被隐藏。 辐射危害 请勿在没有防护装备的情况下接近或操作。 警示可以折叠吗？ 是的！在可折叠警示中，内容在折叠时被隐藏。 嵌套警示 你可以在多个级别中嵌套警示。 \u0026gt; [!question] 警示可以嵌套吗？ \u0026gt; \u0026gt; [!todo] 可以！它们可以。 \u0026gt; \u0026gt; \u0026gt; [!example] 你甚至可以使用多层嵌套。 警示可以嵌套吗？ 可以！它们可以。 你甚至可以使用多层嵌套。 仅内容警示 你可以通过在类型标识符后直接添加波浪号（~）来创建仅内容警示。 这是 FixIt 独有的扩展语法，与 Obsidian 或其他 Markdown 应用不兼容。 \u0026gt; [!TIP]~ \u0026gt; 这是一个没有标题的仅内容警示。 这是一个没有标题的仅内容警示。 支持的类型 Alert 扩展语法支持 13 种类型的警示横幅，除非你自定义 Admonition，否则任何不支持的类型都会默认为 note 类型。类型标识不区分大小写。 类型 别名 note — abstract summary, tldr info — todo — tip hint, important success check, done question help, faq warning caution, attention failure fail, missing danger error bug — example — quote cite ","date":"2026-05-17","objectID":"/markdown-extended/:1:2","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#嵌套警示"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"扩展语法 使用扩展 Markdown 语法，你可以选择包含警示符号或警示标题。警示符号是 + 或 - 之一。通常用于指示警示是否可以图形折叠。 Alert 扩展语法与 Obsidian 和 Fixit admonition shortcode 兼容。 警告 扩展语法与 GitHub 或 Typora 不兼容。如果包含警示符号或警示标题，这些应用程序会将 Markdown 渲染为引用块。 更改标题 默认警示标题是其类型标识符的标题大小写。你可以通过在类型标识符后添加文本来更改它： \u0026gt; [!NOTE] FixIt \u0026gt; 一个简洁、优雅且高效的 Hugo 主题。 FixIt 一个简洁、优雅且高效的 Hugo 主题。 你甚至可以省略正文来创建仅标题的警示： \u0026gt; [!TIP] 仅标题的警示 仅标题的警示 可折叠警示 你可以通过在类型标识符后直接添加加号（+）或减号（-）来使警示可折叠。 \u0026gt; [!WARNING]+ 辐射危害 \u0026gt; 请勿在没有防护装备的情况下接近或操作。 \u0026gt; [!QUESTION]- 警示可以折叠吗？ \u0026gt; 是的！在可折叠警示中，内容在折叠时被隐藏。 辐射危害 请勿在没有防护装备的情况下接近或操作。 警示可以折叠吗？ 是的！在可折叠警示中，内容在折叠时被隐藏。 嵌套警示 你可以在多个级别中嵌套警示。 \u0026gt; [!question] 警示可以嵌套吗？ \u0026gt; \u0026gt; [!todo] 可以！它们可以。 \u0026gt; \u0026gt; \u0026gt; [!example] 你甚至可以使用多层嵌套。 警示可以嵌套吗？ 可以！它们可以。 你甚至可以使用多层嵌套。 仅内容警示 你可以通过在类型标识符后直接添加波浪号（~）来创建仅内容警示。 这是 FixIt 独有的扩展语法，与 Obsidian 或其他 Markdown 应用不兼容。 \u0026gt; [!TIP]~ \u0026gt; 这是一个没有标题的仅内容警示。 这是一个没有标题的仅内容警示。 支持的类型 Alert 扩展语法支持 13 种类型的警示横幅，除非你自定义 Admonition，否则任何不支持的类型都会默认为 note 类型。类型标识不区分大小写。 类型 别名 note — abstract summary, tldr info — todo — tip hint, important success check, done question help, faq warning caution, attention failure fail, missing danger error bug — example — quote cite ","date":"2026-05-17","objectID":"/markdown-extended/:1:2","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#仅内容警示"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"扩展语法 使用扩展 Markdown 语法，你可以选择包含警示符号或警示标题。警示符号是 + 或 - 之一。通常用于指示警示是否可以图形折叠。 Alert 扩展语法与 Obsidian 和 Fixit admonition shortcode 兼容。 警告 扩展语法与 GitHub 或 Typora 不兼容。如果包含警示符号或警示标题，这些应用程序会将 Markdown 渲染为引用块。 更改标题 默认警示标题是其类型标识符的标题大小写。你可以通过在类型标识符后添加文本来更改它： \u0026gt; [!NOTE] FixIt \u0026gt; 一个简洁、优雅且高效的 Hugo 主题。 FixIt 一个简洁、优雅且高效的 Hugo 主题。 你甚至可以省略正文来创建仅标题的警示： \u0026gt; [!TIP] 仅标题的警示 仅标题的警示 可折叠警示 你可以通过在类型标识符后直接添加加号（+）或减号（-）来使警示可折叠。 \u0026gt; [!WARNING]+ 辐射危害 \u0026gt; 请勿在没有防护装备的情况下接近或操作。 \u0026gt; [!QUESTION]- 警示可以折叠吗？ \u0026gt; 是的！在可折叠警示中，内容在折叠时被隐藏。 辐射危害 请勿在没有防护装备的情况下接近或操作。 警示可以折叠吗？ 是的！在可折叠警示中，内容在折叠时被隐藏。 嵌套警示 你可以在多个级别中嵌套警示。 \u0026gt; [!question] 警示可以嵌套吗？ \u0026gt; \u0026gt; [!todo] 可以！它们可以。 \u0026gt; \u0026gt; \u0026gt; [!example] 你甚至可以使用多层嵌套。 警示可以嵌套吗？ 可以！它们可以。 你甚至可以使用多层嵌套。 仅内容警示 你可以通过在类型标识符后直接添加波浪号（~）来创建仅内容警示。 这是 FixIt 独有的扩展语法，与 Obsidian 或其他 Markdown 应用不兼容。 \u0026gt; [!TIP]~ \u0026gt; 这是一个没有标题的仅内容警示。 这是一个没有标题的仅内容警示。 支持的类型 Alert 扩展语法支持 13 种类型的警示横幅，除非你自定义 Admonition，否则任何不支持的类型都会默认为 note 类型。类型标识不区分大小写。 类型 别名 note — abstract summary, tldr info — todo — tip hint, important success check, done question help, faq warning caution, attention failure fail, missing danger error bug — example — quote cite ","date":"2026-05-17","objectID":"/markdown-extended/:1:2","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#支持的类型"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"颜色预览 在文章内容中，可以使用反引号在句子中标注颜色。反引号内支持的颜色模型将显示颜色的可视化效果。 对于 `Light` 模式，背景色为`#ffffff`，对于 `Dark` 模式，背景颜色为`#000000`。 对于 Light 模式，背景色为#ffffff，对于 Dark 模式，背景颜色为#000000。 下面是当前支持的颜色模型。 Color 语法 示例 输出 HEX `#RRGGBB` `#0969DA` #0969DA RGB `rgb(R,G,B)` `rgb(9, 105, 218)` rgb(9, 105, 218) HSL `hsl(H,S,L)` `hsl(212, 92%, 45%)` hsl(212, 92%, 45%) 注意 支持的颜色模型在反引号内不能有任何前导或尾随空格。 颜色的可视化效果兼容 GitHub 支持的颜色模型。 ","date":"2026-05-17","objectID":"/markdown-extended/:2:0","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#颜色预览"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"任务列表 要创建任务列表，请在每个列表项前添加一个短横线和空格，然后跟上 [ ]。 - [x] 这是一个已完成的任务。 - [ ] 这是一个未完成的任务。 呈现的输出效果如下： 这是一个已完成的任务。 这是一个未完成的任务。 你可以在括号内使用任何字符来标记任务为已完成或其他状态。 - [ ] 未完成 - [x] 已完成 - [/] 进行中 - [-] 已取消 - [\u0026lt;] 已计划 - [\u0026gt;] 已重新计划 - [!] 重要 - [?] 问题 呈现的输出效果如下： 未完成 已完成 进行中 已取消 已计划 已重新计划 重要 问题 提示 如果你想要更多类型的任务列表，请查看进阶篇 - 自定义任务列表章节。 ","date":"2026-05-17","objectID":"/markdown-extended/:3:0","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#任务列表"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"下划线 如何开启 Hugo 扩展语法 下划线、标记文本、下标和上标语法默认关闭，需更新 Hugo 版本到 0.128.0 以上且开启以下的配置： [markup] [markup.goldmark] [markup.goldmark.extensions] strikethrough = false [markup.goldmark.extensions.extras] [markup.goldmark.extensions.extras.delete] enable = true [markup.goldmark.extensions.extras.insert] enable = true [markup.goldmark.extensions.extras.mark] enable = true [markup.goldmark.extensions.extras.subscript] enable = true [markup.goldmark.extensions.extras.superscript] enable = true Hugo 支持一种 下划线 Markdown 扩展语法： FixIt 主题的作者是 ++Lruihao++。 呈现的输出效果如下： FixIt 主题的作者是 Lruihao。 ","date":"2026-05-17","objectID":"/markdown-extended/:4:0","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#下划线"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"标记文本 Hugo 支持一种 标记文本 Markdown 扩展语法： ==FixIt== 是一个很棒的 Hugo 主题！ 呈现的输出效果如下： FixIt 是一个很棒的 Hugo 主题！ 扩展的标记文本语法支持 6 种类型的标记文本。 ==Primary==[primary] ==Secondary==[secondary] ==Success==[success] ==Info==[info] ==Warning==[warning] ==Danger==[danger] 呈现的输出效果如下： Primary Secondary Success Info Warning Danger 除非你自定义标记文本，否则任何不支持的类型都会默认为 default 类型。 ==这是一个带有粉色的自定义类型。==[pink] 在你的项目目录 assets/css/_custom.scss 中添加以下 CSS 来自定义： .mark-pink { --fi-mark-background-color: pink; } 呈现的输出效果如下： 这是一个带有粉色的自定义类型。 输出的 HTML 看起来像这样： \u0026lt;mark class=\u0026#34;mark-pink\u0026#34;\u0026gt;这是一个带有粉色的自定义类型。\u0026lt;/mark\u0026gt; ","date":"2026-05-17","objectID":"/markdown-extended/:5:0","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#标记文本"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"下标 Hugo 支持一种 下标 Markdown 扩展语法： 水的化学式是 H~2~O。 呈现的输出效果如下： 水的化学式是 H2O。 ","date":"2026-05-17","objectID":"/markdown-extended/:6:0","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#下标"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"上标 Hugo 支持一种 上标 Markdown 扩展语法： 2^10^ 等于 1024。 呈现的输出效果如下： 210 等于 1024。 ","date":"2026-05-17","objectID":"/markdown-extended/:7:0","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#上标"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"Emoji 支持 这部分内容在 Emoji 支持页面中介绍。 ","date":"2026-05-17","objectID":"/markdown-extended/:8:0","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#emoji-支持"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"数学公式 FixIt 基于 KaTeX 或 MathJax 提供数学公式的支持，默认引擎为 KaTeX。 你可以在主题配置中修改数学公式自动渲染的相关配置： [markup] [markup.goldmark] [markup.goldmark.extensions] [markup.goldmark.extensions.passthrough] enable = true [markup.goldmark.extensions.passthrough.delimiters] block = [ [\u0026#39;\\\\[\u0026#39;, \u0026#39;\\\\]\u0026#39;], [\u0026#39;$$\u0026#39;, \u0026#39;$$\u0026#39;] ] inline = [ [\u0026#39;\\\\(\u0026#39;, \u0026#39;\\\\)\u0026#39;], [\u0026#39;$\u0026#39;, \u0026#39;$\u0026#39;] ] [params] [params.page] [params.page.math] enable = true type = \u0026#34;katex\u0026#34; [params.page.math.katex] copyTex = true throwOnError = false errorColor = \u0026#34;#ff4949\u0026#34; ","date":"2026-05-17","objectID":"/markdown-extended/:9:0","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#数学公式"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"KaTeX KaTeX 通过 Hugo 的 transform.ToMath 函数在 服务器端渲染，所以客户端加载速度更快。 提示 有一份 KaTeX 中支持的 TeX 函数清单。 行内公式 默认的行内公式分割符有： $ ... $ 例如： $c = \\pm\\sqrt{a^2 + b^2}$ 和 $f(x)=\\int_{-\\infty}^{\\infty} \\hat{f}(\\xi) e^{2 \\pi i \\xi x} d \\xi$ 呈现的输出效果如下： c=±a2+b2c = \\pm\\sqrt{a^2 + b^2}c=±a2+b2​ 和 f(x)=∫−∞∞f^(ξ)e2πiξxdξf(x)=\\int_{-\\infty}^{\\infty} \\hat{f}(\\xi) e^{2 \\pi i \\xi x} d \\xif(x)=∫−∞∞​f^​(ξ)e2πiξxdξ 公式块 默认的公式块分割符有： $$ ... $$ 例如： $$ c = \\pm\\sqrt{a^2 + b^2} $$ $$ \\begin{equation*} \\rho \\frac{\\mathrm{D} \\mathbf{v}}{\\mathrm{D} t}=\\nabla \\cdot \\mathbb{P}+\\rho \\mathbf{f} \\end{equation*} $$ $$ \\begin{equation} \\mathbf{E}=\\sum_{i} \\mathbf{E}\\_{i}=\\mathbf{E}\\_{1}+\\mathbf{E}\\_{2}+\\mathbf{E}_{3}+\\cdots \\end{equation} $$ $$ \\begin{align} a\u0026amp;=b+c \\\\ d+e\u0026amp;=f \\end{align} $$ $$ \\begin{alignat}{2} 10\u0026amp;x+\u0026amp;3\u0026amp;y = 2 \\\\ 3\u0026amp;x+\u0026amp;13\u0026amp;y = 4 \\end{alignat} $$ $$ \\begin{gather} a=b \\\\ e=b+c \\end{gather} $$ $$ \\begin{CD} A @\u0026gt;a\u0026gt;\u0026gt; B \\\\ @VbVV @AAcA \\\\ C @= D \\end{CD} $$ 呈现的输出效果如下： c=±a2+b2 c = \\pm\\sqrt{a^2 + b^2} c=±a2+b2​ρDvDt=∇⋅P+ρf \\begin{equation*} \\rho \\frac{\\mathrm{D} \\mathbf{v}}{\\mathrm{D} t}=\\nabla \\cdot \\mathbb{P}+\\rho \\mathbf{f} \\end{equation*} ρDtDv​=∇⋅P+ρf​E=∑iE_i=E_1+E_2+E3+⋯ \\begin{equation} \\mathbf{E}=\\sum_{i} \\mathbf{E}\\_{i}=\\mathbf{E}\\_{1}+\\mathbf{E}\\_{2}+\\mathbf{E}_{3}+\\cdots \\end{equation} E=i∑​E_i=E_1+E_2+E3​+⋯​​a=b+cd+e=f \\begin{align} a\u0026amp;=b+c \\\\ d+e\u0026amp;=f \\end{align} ad+e​=b+c=f​​10x+3y=23x+13y=4 \\begin{alignat}{2} 10\u0026amp;x+\u0026amp;3\u0026amp;y = 2 \\\\ 3\u0026amp;x+\u0026amp;13\u0026amp;y = 4 \\end{alignat} 103​x+x+​313​y=2y=4​​a=be=b+c \\begin{gather} a=b \\\\ e=b+c \\end{gather} a=be=b+c​​A→aBb↓↑cC=D \\begin{CD} A @\u0026gt;a\u0026gt;\u0026gt; B \\\\ @VbVV @AAcA \\\\ C @= D \\end{CD} Ab↓⏐​C​a​​B⏐↑​cD​复制公式 Copy-tex 是一个 KaTeX 的插件。通过这个扩展，在选择并复制 KaTeX 渲染的公式时，会将其 LaTeX 源代码复制到剪贴板。 在主题配置中的 [params.page.math.katex] 下面设置属性 copyTex = true 来启用 Copy-tex。 化学方程式 mhchem 是一个 KaTeX 的插件，提供了 \\ce 和 \\pu 函数。通过这个扩展，你可以在文章中轻松编写漂亮的化学方程式。 $$ \\ce{CO2 + C -\u0026gt; 2 CO} $$ $$ \\ce{Hg^2+ -\u0026gt;[I-] HgI2 -\u0026gt;[I-] [Hg^{II}I4]^2-} $$ $$C_p[\\ce{H2O(l)}] = \\pu{75.3 J // mol K}$$ 呈现的输出效果如下： COX2+C→2 CO \\ce{CO2 + C -\u0026gt; 2 CO} COX2​+C​2COHgX2+→IX−HgIX2→IX−[HgXIIIX4]X2− \\ce{Hg^2+ -\u0026gt;[I-] HgI2 -\u0026gt;[I-] [Hg^{II}I4]^2-} HgX2+IX−​HgIX2​IX−​[HgXIIIX4​]X2−Cp[HX2O(l)]=75.3 Jmol KC_p[\\ce{H2O(l)}] = \\pu{75.3 J // mol K}Cp​[HX2​O(l)]=75.3 molKJ​自定义宏 你可以在主题配置中的 [params.page.math.katex.macros] 下面添加自定义宏。 例如： [params.page.math.katex.macros] \u0026#34;\\\\f\u0026#34; = \u0026#34;#1f(#2)\u0026#34; # usage: $\\f{a}{b}$ 然后在文章中使用： $$ \\f\\relax{x} = \\int_{-\\infty}^\\infty \\f\\hat\\xi\\,e^{2 \\pi i \\xi x} \\,d\\xi $$ 呈现的输出效果如下： \\fx=∫−∞∞\\fξ^ e2πiξx dξ \\f\\relax{x} = \\int_{-\\infty}^\\infty \\f\\hat\\xi\\,e^{2 \\pi i \\xi x} \\,d\\xi \\fx=∫−∞∞​\\fξ^​e2πiξxdξ错误信息 如果在渲染公式时遇到错误，KaTeX 会在页面上显示错误信息。 例如： $c = \\pm\\sqrt{a\\^2 + b^2}$ 呈现的输出效果如下，鼠标悬停在错误信息上可以查看详细的错误信息： c = \\pm\\sqrt{a\\^2 + b^2} 小心 如果你设置 params.page.math.katex.throwOnError 为 true，则会抛出错误并停止渲染。 ","date":"2026-05-17","objectID":"/markdown-extended/:9:1","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#katex"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"KaTeX KaTeX 通过 Hugo 的 transform.ToMath 函数在 服务器端渲染，所以客户端加载速度更快。 提示 有一份 KaTeX 中支持的 TeX 函数清单。 行内公式 默认的行内公式分割符有： $ ... $ 例如： $c = \\pm\\sqrt{a^2 + b^2}$ 和 $f(x)=\\int_{-\\infty}^{\\infty} \\hat{f}(\\xi) e^{2 \\pi i \\xi x} d \\xi$ 呈现的输出效果如下： c=±a2+b2c = \\pm\\sqrt{a^2 + b^2}c=±a2+b2​ 和 f(x)=∫−∞∞f^(ξ)e2πiξxdξf(x)=\\int_{-\\infty}^{\\infty} \\hat{f}(\\xi) e^{2 \\pi i \\xi x} d \\xif(x)=∫−∞∞​f^​(ξ)e2πiξxdξ 公式块 默认的公式块分割符有： $$ ... $$ 例如： $$ c = \\pm\\sqrt{a^2 + b^2} $$ $$ \\begin{equation*} \\rho \\frac{\\mathrm{D} \\mathbf{v}}{\\mathrm{D} t}=\\nabla \\cdot \\mathbb{P}+\\rho \\mathbf{f} \\end{equation*} $$ $$ \\begin{equation} \\mathbf{E}=\\sum_{i} \\mathbf{E}\\_{i}=\\mathbf{E}\\_{1}+\\mathbf{E}\\_{2}+\\mathbf{E}_{3}+\\cdots \\end{equation} $$ $$ \\begin{align} a\u0026amp;=b+c \\\\ d+e\u0026amp;=f \\end{align} $$ $$ \\begin{alignat}{2} 10\u0026amp;x+\u0026amp;3\u0026amp;y = 2 \\\\ 3\u0026amp;x+\u0026amp;13\u0026amp;y = 4 \\end{alignat} $$ $$ \\begin{gather} a=b \\\\ e=b+c \\end{gather} $$ $$ \\begin{CD} A @\u0026gt;a\u0026gt;\u0026gt; B \\\\ @VbVV @AAcA \\\\ C @= D \\end{CD} $$ 呈现的输出效果如下： c=±a2+b2 c = \\pm\\sqrt{a^2 + b^2} c=±a2+b2​ρDvDt=∇⋅P+ρf \\begin{equation*} \\rho \\frac{\\mathrm{D} \\mathbf{v}}{\\mathrm{D} t}=\\nabla \\cdot \\mathbb{P}+\\rho \\mathbf{f} \\end{equation*} ρDtDv​=∇⋅P+ρf​E=∑iE_i=E_1+E_2+E3+⋯ \\begin{equation} \\mathbf{E}=\\sum_{i} \\mathbf{E}\\_{i}=\\mathbf{E}\\_{1}+\\mathbf{E}\\_{2}+\\mathbf{E}_{3}+\\cdots \\end{equation} E=i∑​E_i=E_1+E_2+E3​+⋯​​a=b+cd+e=f \\begin{align} a\u0026amp;=b+c \\\\ d+e\u0026amp;=f \\end{align} ad+e​=b+c=f​​10x+3y=23x+13y=4 \\begin{alignat}{2} 10\u0026amp;x+\u0026amp;3\u0026amp;y = 2 \\\\ 3\u0026amp;x+\u0026amp;13\u0026amp;y = 4 \\end{alignat} 103​x+x+​313​y=2y=4​​a=be=b+c \\begin{gather} a=b \\\\ e=b+c \\end{gather} a=be=b+c​​A→aBb↓↑cC=D \\begin{CD} A @\u0026gt;a\u0026gt;\u0026gt; B \\\\ @VbVV @AAcA \\\\ C @= D \\end{CD} Ab↓⏐​C​a​​B⏐↑​cD​复制公式 Copy-tex 是一个 KaTeX 的插件。通过这个扩展，在选择并复制 KaTeX 渲染的公式时，会将其 LaTeX 源代码复制到剪贴板。 在主题配置中的 [params.page.math.katex] 下面设置属性 copyTex = true 来启用 Copy-tex。 化学方程式 mhchem 是一个 KaTeX 的插件，提供了 \\ce 和 \\pu 函数。通过这个扩展，你可以在文章中轻松编写漂亮的化学方程式。 $$ \\ce{CO2 + C -\u0026gt; 2 CO} $$ $$ \\ce{Hg^2+ -\u0026gt;[I-] HgI2 -\u0026gt;[I-] [Hg^{II}I4]^2-} $$ $$C_p[\\ce{H2O(l)}] = \\pu{75.3 J // mol K}$$ 呈现的输出效果如下： COX2+C→2 CO \\ce{CO2 + C -\u0026gt; 2 CO} COX2​+C​2COHgX2+→IX−HgIX2→IX−[HgXIIIX4]X2− \\ce{Hg^2+ -\u0026gt;[I-] HgI2 -\u0026gt;[I-] [Hg^{II}I4]^2-} HgX2+IX−​HgIX2​IX−​[HgXIIIX4​]X2−Cp[HX2O(l)]=75.3 Jmol KC_p[\\ce{H2O(l)}] = \\pu{75.3 J // mol K}Cp​[HX2​O(l)]=75.3 molKJ​自定义宏 你可以在主题配置中的 [params.page.math.katex.macros] 下面添加自定义宏。 例如： [params.page.math.katex.macros] \u0026#34;\\\\f\u0026#34; = \u0026#34;#1f(#2)\u0026#34; # usage: $\\f{a}{b}$ 然后在文章中使用： $$ \\f\\relax{x} = \\int_{-\\infty}^\\infty \\f\\hat\\xi\\,e^{2 \\pi i \\xi x} \\,d\\xi $$ 呈现的输出效果如下： \\fx=∫−∞∞\\fξ^ e2πiξx dξ \\f\\relax{x} = \\int_{-\\infty}^\\infty \\f\\hat\\xi\\,e^{2 \\pi i \\xi x} \\,d\\xi \\fx=∫−∞∞​\\fξ^​e2πiξxdξ错误信息 如果在渲染公式时遇到错误，KaTeX 会在页面上显示错误信息。 例如： $c = \\pm\\sqrt{a\\^2 + b^2}$ 呈现的输出效果如下，鼠标悬停在错误信息上可以查看详细的错误信息： c = \\pm\\sqrt{a\\^2 + b^2} 小心 如果你设置 params.page.math.katex.throwOnError 为 true，则会抛出错误并停止渲染。 ","date":"2026-05-17","objectID":"/markdown-extended/:9:1","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#行内公式"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"KaTeX KaTeX 通过 Hugo 的 transform.ToMath 函数在 服务器端渲染，所以客户端加载速度更快。 提示 有一份 KaTeX 中支持的 TeX 函数清单。 行内公式 默认的行内公式分割符有： $ ... $ 例如： $c = \\pm\\sqrt{a^2 + b^2}$ 和 $f(x)=\\int_{-\\infty}^{\\infty} \\hat{f}(\\xi) e^{2 \\pi i \\xi x} d \\xi$ 呈现的输出效果如下： c=±a2+b2c = \\pm\\sqrt{a^2 + b^2}c=±a2+b2​ 和 f(x)=∫−∞∞f^(ξ)e2πiξxdξf(x)=\\int_{-\\infty}^{\\infty} \\hat{f}(\\xi) e^{2 \\pi i \\xi x} d \\xif(x)=∫−∞∞​f^​(ξ)e2πiξxdξ 公式块 默认的公式块分割符有： $$ ... $$ 例如： $$ c = \\pm\\sqrt{a^2 + b^2} $$ $$ \\begin{equation*} \\rho \\frac{\\mathrm{D} \\mathbf{v}}{\\mathrm{D} t}=\\nabla \\cdot \\mathbb{P}+\\rho \\mathbf{f} \\end{equation*} $$ $$ \\begin{equation} \\mathbf{E}=\\sum_{i} \\mathbf{E}\\_{i}=\\mathbf{E}\\_{1}+\\mathbf{E}\\_{2}+\\mathbf{E}_{3}+\\cdots \\end{equation} $$ $$ \\begin{align} a\u0026amp;=b+c \\\\ d+e\u0026amp;=f \\end{align} $$ $$ \\begin{alignat}{2} 10\u0026amp;x+\u0026amp;3\u0026amp;y = 2 \\\\ 3\u0026amp;x+\u0026amp;13\u0026amp;y = 4 \\end{alignat} $$ $$ \\begin{gather} a=b \\\\ e=b+c \\end{gather} $$ $$ \\begin{CD} A @\u0026gt;a\u0026gt;\u0026gt; B \\\\ @VbVV @AAcA \\\\ C @= D \\end{CD} $$ 呈现的输出效果如下： c=±a2+b2 c = \\pm\\sqrt{a^2 + b^2} c=±a2+b2​ρDvDt=∇⋅P+ρf \\begin{equation*} \\rho \\frac{\\mathrm{D} \\mathbf{v}}{\\mathrm{D} t}=\\nabla \\cdot \\mathbb{P}+\\rho \\mathbf{f} \\end{equation*} ρDtDv​=∇⋅P+ρf​E=∑iE_i=E_1+E_2+E3+⋯ \\begin{equation} \\mathbf{E}=\\sum_{i} \\mathbf{E}\\_{i}=\\mathbf{E}\\_{1}+\\mathbf{E}\\_{2}+\\mathbf{E}_{3}+\\cdots \\end{equation} E=i∑​E_i=E_1+E_2+E3​+⋯​​a=b+cd+e=f \\begin{align} a\u0026amp;=b+c \\\\ d+e\u0026amp;=f \\end{align} ad+e​=b+c=f​​10x+3y=23x+13y=4 \\begin{alignat}{2} 10\u0026amp;x+\u0026amp;3\u0026amp;y = 2 \\\\ 3\u0026amp;x+\u0026amp;13\u0026amp;y = 4 \\end{alignat} 103​x+x+​313​y=2y=4​​a=be=b+c \\begin{gather} a=b \\\\ e=b+c \\end{gather} a=be=b+c​​A→aBb↓↑cC=D \\begin{CD} A @\u0026gt;a\u0026gt;\u0026gt; B \\\\ @VbVV @AAcA \\\\ C @= D \\end{CD} Ab↓⏐​C​a​​B⏐↑​cD​复制公式 Copy-tex 是一个 KaTeX 的插件。通过这个扩展，在选择并复制 KaTeX 渲染的公式时，会将其 LaTeX 源代码复制到剪贴板。 在主题配置中的 [params.page.math.katex] 下面设置属性 copyTex = true 来启用 Copy-tex。 化学方程式 mhchem 是一个 KaTeX 的插件，提供了 \\ce 和 \\pu 函数。通过这个扩展，你可以在文章中轻松编写漂亮的化学方程式。 $$ \\ce{CO2 + C -\u0026gt; 2 CO} $$ $$ \\ce{Hg^2+ -\u0026gt;[I-] HgI2 -\u0026gt;[I-] [Hg^{II}I4]^2-} $$ $$C_p[\\ce{H2O(l)}] = \\pu{75.3 J // mol K}$$ 呈现的输出效果如下： COX2+C→2 CO \\ce{CO2 + C -\u0026gt; 2 CO} COX2​+C​2COHgX2+→IX−HgIX2→IX−[HgXIIIX4]X2− \\ce{Hg^2+ -\u0026gt;[I-] HgI2 -\u0026gt;[I-] [Hg^{II}I4]^2-} HgX2+IX−​HgIX2​IX−​[HgXIIIX4​]X2−Cp[HX2O(l)]=75.3 Jmol KC_p[\\ce{H2O(l)}] = \\pu{75.3 J // mol K}Cp​[HX2​O(l)]=75.3 molKJ​自定义宏 你可以在主题配置中的 [params.page.math.katex.macros] 下面添加自定义宏。 例如： [params.page.math.katex.macros] \u0026#34;\\\\f\u0026#34; = \u0026#34;#1f(#2)\u0026#34; # usage: $\\f{a}{b}$ 然后在文章中使用： $$ \\f\\relax{x} = \\int_{-\\infty}^\\infty \\f\\hat\\xi\\,e^{2 \\pi i \\xi x} \\,d\\xi $$ 呈现的输出效果如下： \\fx=∫−∞∞\\fξ^ e2πiξx dξ \\f\\relax{x} = \\int_{-\\infty}^\\infty \\f\\hat\\xi\\,e^{2 \\pi i \\xi x} \\,d\\xi \\fx=∫−∞∞​\\fξ^​e2πiξxdξ错误信息 如果在渲染公式时遇到错误，KaTeX 会在页面上显示错误信息。 例如： $c = \\pm\\sqrt{a\\^2 + b^2}$ 呈现的输出效果如下，鼠标悬停在错误信息上可以查看详细的错误信息： c = \\pm\\sqrt{a\\^2 + b^2} 小心 如果你设置 params.page.math.katex.throwOnError 为 true，则会抛出错误并停止渲染。 ","date":"2026-05-17","objectID":"/markdown-extended/:9:1","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#公式块"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"KaTeX KaTeX 通过 Hugo 的 transform.ToMath 函数在 服务器端渲染，所以客户端加载速度更快。 提示 有一份 KaTeX 中支持的 TeX 函数清单。 行内公式 默认的行内公式分割符有： $ ... $ 例如： $c = \\pm\\sqrt{a^2 + b^2}$ 和 $f(x)=\\int_{-\\infty}^{\\infty} \\hat{f}(\\xi) e^{2 \\pi i \\xi x} d \\xi$ 呈现的输出效果如下： c=±a2+b2c = \\pm\\sqrt{a^2 + b^2}c=±a2+b2​ 和 f(x)=∫−∞∞f^(ξ)e2πiξxdξf(x)=\\int_{-\\infty}^{\\infty} \\hat{f}(\\xi) e^{2 \\pi i \\xi x} d \\xif(x)=∫−∞∞​f^​(ξ)e2πiξxdξ 公式块 默认的公式块分割符有： $$ ... $$ 例如： $$ c = \\pm\\sqrt{a^2 + b^2} $$ $$ \\begin{equation*} \\rho \\frac{\\mathrm{D} \\mathbf{v}}{\\mathrm{D} t}=\\nabla \\cdot \\mathbb{P}+\\rho \\mathbf{f} \\end{equation*} $$ $$ \\begin{equation} \\mathbf{E}=\\sum_{i} \\mathbf{E}\\_{i}=\\mathbf{E}\\_{1}+\\mathbf{E}\\_{2}+\\mathbf{E}_{3}+\\cdots \\end{equation} $$ $$ \\begin{align} a\u0026amp;=b+c \\\\ d+e\u0026amp;=f \\end{align} $$ $$ \\begin{alignat}{2} 10\u0026amp;x+\u0026amp;3\u0026amp;y = 2 \\\\ 3\u0026amp;x+\u0026amp;13\u0026amp;y = 4 \\end{alignat} $$ $$ \\begin{gather} a=b \\\\ e=b+c \\end{gather} $$ $$ \\begin{CD} A @\u0026gt;a\u0026gt;\u0026gt; B \\\\ @VbVV @AAcA \\\\ C @= D \\end{CD} $$ 呈现的输出效果如下： c=±a2+b2 c = \\pm\\sqrt{a^2 + b^2} c=±a2+b2​ρDvDt=∇⋅P+ρf \\begin{equation*} \\rho \\frac{\\mathrm{D} \\mathbf{v}}{\\mathrm{D} t}=\\nabla \\cdot \\mathbb{P}+\\rho \\mathbf{f} \\end{equation*} ρDtDv​=∇⋅P+ρf​E=∑iE_i=E_1+E_2+E3+⋯ \\begin{equation} \\mathbf{E}=\\sum_{i} \\mathbf{E}\\_{i}=\\mathbf{E}\\_{1}+\\mathbf{E}\\_{2}+\\mathbf{E}_{3}+\\cdots \\end{equation} E=i∑​E_i=E_1+E_2+E3​+⋯​​a=b+cd+e=f \\begin{align} a\u0026amp;=b+c \\\\ d+e\u0026amp;=f \\end{align} ad+e​=b+c=f​​10x+3y=23x+13y=4 \\begin{alignat}{2} 10\u0026amp;x+\u0026amp;3\u0026amp;y = 2 \\\\ 3\u0026amp;x+\u0026amp;13\u0026amp;y = 4 \\end{alignat} 103​x+x+​313​y=2y=4​​a=be=b+c \\begin{gather} a=b \\\\ e=b+c \\end{gather} a=be=b+c​​A→aBb↓↑cC=D \\begin{CD} A @\u0026gt;a\u0026gt;\u0026gt; B \\\\ @VbVV @AAcA \\\\ C @= D \\end{CD} Ab↓⏐​C​a​​B⏐↑​cD​复制公式 Copy-tex 是一个 KaTeX 的插件。通过这个扩展，在选择并复制 KaTeX 渲染的公式时，会将其 LaTeX 源代码复制到剪贴板。 在主题配置中的 [params.page.math.katex] 下面设置属性 copyTex = true 来启用 Copy-tex。 化学方程式 mhchem 是一个 KaTeX 的插件，提供了 \\ce 和 \\pu 函数。通过这个扩展，你可以在文章中轻松编写漂亮的化学方程式。 $$ \\ce{CO2 + C -\u0026gt; 2 CO} $$ $$ \\ce{Hg^2+ -\u0026gt;[I-] HgI2 -\u0026gt;[I-] [Hg^{II}I4]^2-} $$ $$C_p[\\ce{H2O(l)}] = \\pu{75.3 J // mol K}$$ 呈现的输出效果如下： COX2+C→2 CO \\ce{CO2 + C -\u0026gt; 2 CO} COX2​+C​2COHgX2+→IX−HgIX2→IX−[HgXIIIX4]X2− \\ce{Hg^2+ -\u0026gt;[I-] HgI2 -\u0026gt;[I-] [Hg^{II}I4]^2-} HgX2+IX−​HgIX2​IX−​[HgXIIIX4​]X2−Cp[HX2O(l)]=75.3 Jmol KC_p[\\ce{H2O(l)}] = \\pu{75.3 J // mol K}Cp​[HX2​O(l)]=75.3 molKJ​自定义宏 你可以在主题配置中的 [params.page.math.katex.macros] 下面添加自定义宏。 例如： [params.page.math.katex.macros] \u0026#34;\\\\f\u0026#34; = \u0026#34;#1f(#2)\u0026#34; # usage: $\\f{a}{b}$ 然后在文章中使用： $$ \\f\\relax{x} = \\int_{-\\infty}^\\infty \\f\\hat\\xi\\,e^{2 \\pi i \\xi x} \\,d\\xi $$ 呈现的输出效果如下： \\fx=∫−∞∞\\fξ^ e2πiξx dξ \\f\\relax{x} = \\int_{-\\infty}^\\infty \\f\\hat\\xi\\,e^{2 \\pi i \\xi x} \\,d\\xi \\fx=∫−∞∞​\\fξ^​e2πiξxdξ错误信息 如果在渲染公式时遇到错误，KaTeX 会在页面上显示错误信息。 例如： $c = \\pm\\sqrt{a\\^2 + b^2}$ 呈现的输出效果如下，鼠标悬停在错误信息上可以查看详细的错误信息： c = \\pm\\sqrt{a\\^2 + b^2} 小心 如果你设置 params.page.math.katex.throwOnError 为 true，则会抛出错误并停止渲染。 ","date":"2026-05-17","objectID":"/markdown-extended/:9:1","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#复制公式"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"KaTeX KaTeX 通过 Hugo 的 transform.ToMath 函数在 服务器端渲染，所以客户端加载速度更快。 提示 有一份 KaTeX 中支持的 TeX 函数清单。 行内公式 默认的行内公式分割符有： $ ... $ 例如： $c = \\pm\\sqrt{a^2 + b^2}$ 和 $f(x)=\\int_{-\\infty}^{\\infty} \\hat{f}(\\xi) e^{2 \\pi i \\xi x} d \\xi$ 呈现的输出效果如下： c=±a2+b2c = \\pm\\sqrt{a^2 + b^2}c=±a2+b2​ 和 f(x)=∫−∞∞f^(ξ)e2πiξxdξf(x)=\\int_{-\\infty}^{\\infty} \\hat{f}(\\xi) e^{2 \\pi i \\xi x} d \\xif(x)=∫−∞∞​f^​(ξ)e2πiξxdξ 公式块 默认的公式块分割符有： $$ ... $$ 例如： $$ c = \\pm\\sqrt{a^2 + b^2} $$ $$ \\begin{equation*} \\rho \\frac{\\mathrm{D} \\mathbf{v}}{\\mathrm{D} t}=\\nabla \\cdot \\mathbb{P}+\\rho \\mathbf{f} \\end{equation*} $$ $$ \\begin{equation} \\mathbf{E}=\\sum_{i} \\mathbf{E}\\_{i}=\\mathbf{E}\\_{1}+\\mathbf{E}\\_{2}+\\mathbf{E}_{3}+\\cdots \\end{equation} $$ $$ \\begin{align} a\u0026amp;=b+c \\\\ d+e\u0026amp;=f \\end{align} $$ $$ \\begin{alignat}{2} 10\u0026amp;x+\u0026amp;3\u0026amp;y = 2 \\\\ 3\u0026amp;x+\u0026amp;13\u0026amp;y = 4 \\end{alignat} $$ $$ \\begin{gather} a=b \\\\ e=b+c \\end{gather} $$ $$ \\begin{CD} A @\u0026gt;a\u0026gt;\u0026gt; B \\\\ @VbVV @AAcA \\\\ C @= D \\end{CD} $$ 呈现的输出效果如下： c=±a2+b2 c = \\pm\\sqrt{a^2 + b^2} c=±a2+b2​ρDvDt=∇⋅P+ρf \\begin{equation*} \\rho \\frac{\\mathrm{D} \\mathbf{v}}{\\mathrm{D} t}=\\nabla \\cdot \\mathbb{P}+\\rho \\mathbf{f} \\end{equation*} ρDtDv​=∇⋅P+ρf​E=∑iE_i=E_1+E_2+E3+⋯ \\begin{equation} \\mathbf{E}=\\sum_{i} \\mathbf{E}\\_{i}=\\mathbf{E}\\_{1}+\\mathbf{E}\\_{2}+\\mathbf{E}_{3}+\\cdots \\end{equation} E=i∑​E_i=E_1+E_2+E3​+⋯​​a=b+cd+e=f \\begin{align} a\u0026amp;=b+c \\\\ d+e\u0026amp;=f \\end{align} ad+e​=b+c=f​​10x+3y=23x+13y=4 \\begin{alignat}{2} 10\u0026amp;x+\u0026amp;3\u0026amp;y = 2 \\\\ 3\u0026amp;x+\u0026amp;13\u0026amp;y = 4 \\end{alignat} 103​x+x+​313​y=2y=4​​a=be=b+c \\begin{gather} a=b \\\\ e=b+c \\end{gather} a=be=b+c​​A→aBb↓↑cC=D \\begin{CD} A @\u0026gt;a\u0026gt;\u0026gt; B \\\\ @VbVV @AAcA \\\\ C @= D \\end{CD} Ab↓⏐​C​a​​B⏐↑​cD​复制公式 Copy-tex 是一个 KaTeX 的插件。通过这个扩展，在选择并复制 KaTeX 渲染的公式时，会将其 LaTeX 源代码复制到剪贴板。 在主题配置中的 [params.page.math.katex] 下面设置属性 copyTex = true 来启用 Copy-tex。 化学方程式 mhchem 是一个 KaTeX 的插件，提供了 \\ce 和 \\pu 函数。通过这个扩展，你可以在文章中轻松编写漂亮的化学方程式。 $$ \\ce{CO2 + C -\u0026gt; 2 CO} $$ $$ \\ce{Hg^2+ -\u0026gt;[I-] HgI2 -\u0026gt;[I-] [Hg^{II}I4]^2-} $$ $$C_p[\\ce{H2O(l)}] = \\pu{75.3 J // mol K}$$ 呈现的输出效果如下： COX2+C→2 CO \\ce{CO2 + C -\u0026gt; 2 CO} COX2​+C​2COHgX2+→IX−HgIX2→IX−[HgXIIIX4]X2− \\ce{Hg^2+ -\u0026gt;[I-] HgI2 -\u0026gt;[I-] [Hg^{II}I4]^2-} HgX2+IX−​HgIX2​IX−​[HgXIIIX4​]X2−Cp[HX2O(l)]=75.3 Jmol KC_p[\\ce{H2O(l)}] = \\pu{75.3 J // mol K}Cp​[HX2​O(l)]=75.3 molKJ​自定义宏 你可以在主题配置中的 [params.page.math.katex.macros] 下面添加自定义宏。 例如： [params.page.math.katex.macros] \u0026#34;\\\\f\u0026#34; = \u0026#34;#1f(#2)\u0026#34; # usage: $\\f{a}{b}$ 然后在文章中使用： $$ \\f\\relax{x} = \\int_{-\\infty}^\\infty \\f\\hat\\xi\\,e^{2 \\pi i \\xi x} \\,d\\xi $$ 呈现的输出效果如下： \\fx=∫−∞∞\\fξ^ e2πiξx dξ \\f\\relax{x} = \\int_{-\\infty}^\\infty \\f\\hat\\xi\\,e^{2 \\pi i \\xi x} \\,d\\xi \\fx=∫−∞∞​\\fξ^​e2πiξxdξ错误信息 如果在渲染公式时遇到错误，KaTeX 会在页面上显示错误信息。 例如： $c = \\pm\\sqrt{a\\^2 + b^2}$ 呈现的输出效果如下，鼠标悬停在错误信息上可以查看详细的错误信息： c = \\pm\\sqrt{a\\^2 + b^2} 小心 如果你设置 params.page.math.katex.throwOnError 为 true，则会抛出错误并停止渲染。 ","date":"2026-05-17","objectID":"/markdown-extended/:9:1","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#化学方程式"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"KaTeX KaTeX 通过 Hugo 的 transform.ToMath 函数在 服务器端渲染，所以客户端加载速度更快。 提示 有一份 KaTeX 中支持的 TeX 函数清单。 行内公式 默认的行内公式分割符有： $ ... $ 例如： $c = \\pm\\sqrt{a^2 + b^2}$ 和 $f(x)=\\int_{-\\infty}^{\\infty} \\hat{f}(\\xi) e^{2 \\pi i \\xi x} d \\xi$ 呈现的输出效果如下： c=±a2+b2c = \\pm\\sqrt{a^2 + b^2}c=±a2+b2​ 和 f(x)=∫−∞∞f^(ξ)e2πiξxdξf(x)=\\int_{-\\infty}^{\\infty} \\hat{f}(\\xi) e^{2 \\pi i \\xi x} d \\xif(x)=∫−∞∞​f^​(ξ)e2πiξxdξ 公式块 默认的公式块分割符有： $$ ... $$ 例如： $$ c = \\pm\\sqrt{a^2 + b^2} $$ $$ \\begin{equation*} \\rho \\frac{\\mathrm{D} \\mathbf{v}}{\\mathrm{D} t}=\\nabla \\cdot \\mathbb{P}+\\rho \\mathbf{f} \\end{equation*} $$ $$ \\begin{equation} \\mathbf{E}=\\sum_{i} \\mathbf{E}\\_{i}=\\mathbf{E}\\_{1}+\\mathbf{E}\\_{2}+\\mathbf{E}_{3}+\\cdots \\end{equation} $$ $$ \\begin{align} a\u0026amp;=b+c \\\\ d+e\u0026amp;=f \\end{align} $$ $$ \\begin{alignat}{2} 10\u0026amp;x+\u0026amp;3\u0026amp;y = 2 \\\\ 3\u0026amp;x+\u0026amp;13\u0026amp;y = 4 \\end{alignat} $$ $$ \\begin{gather} a=b \\\\ e=b+c \\end{gather} $$ $$ \\begin{CD} A @\u0026gt;a\u0026gt;\u0026gt; B \\\\ @VbVV @AAcA \\\\ C @= D \\end{CD} $$ 呈现的输出效果如下： c=±a2+b2 c = \\pm\\sqrt{a^2 + b^2} c=±a2+b2​ρDvDt=∇⋅P+ρf \\begin{equation*} \\rho \\frac{\\mathrm{D} \\mathbf{v}}{\\mathrm{D} t}=\\nabla \\cdot \\mathbb{P}+\\rho \\mathbf{f} \\end{equation*} ρDtDv​=∇⋅P+ρf​E=∑iE_i=E_1+E_2+E3+⋯ \\begin{equation} \\mathbf{E}=\\sum_{i} \\mathbf{E}\\_{i}=\\mathbf{E}\\_{1}+\\mathbf{E}\\_{2}+\\mathbf{E}_{3}+\\cdots \\end{equation} E=i∑​E_i=E_1+E_2+E3​+⋯​​a=b+cd+e=f \\begin{align} a\u0026amp;=b+c \\\\ d+e\u0026amp;=f \\end{align} ad+e​=b+c=f​​10x+3y=23x+13y=4 \\begin{alignat}{2} 10\u0026amp;x+\u0026amp;3\u0026amp;y = 2 \\\\ 3\u0026amp;x+\u0026amp;13\u0026amp;y = 4 \\end{alignat} 103​x+x+​313​y=2y=4​​a=be=b+c \\begin{gather} a=b \\\\ e=b+c \\end{gather} a=be=b+c​​A→aBb↓↑cC=D \\begin{CD} A @\u0026gt;a\u0026gt;\u0026gt; B \\\\ @VbVV @AAcA \\\\ C @= D \\end{CD} Ab↓⏐​C​a​​B⏐↑​cD​复制公式 Copy-tex 是一个 KaTeX 的插件。通过这个扩展，在选择并复制 KaTeX 渲染的公式时，会将其 LaTeX 源代码复制到剪贴板。 在主题配置中的 [params.page.math.katex] 下面设置属性 copyTex = true 来启用 Copy-tex。 化学方程式 mhchem 是一个 KaTeX 的插件，提供了 \\ce 和 \\pu 函数。通过这个扩展，你可以在文章中轻松编写漂亮的化学方程式。 $$ \\ce{CO2 + C -\u0026gt; 2 CO} $$ $$ \\ce{Hg^2+ -\u0026gt;[I-] HgI2 -\u0026gt;[I-] [Hg^{II}I4]^2-} $$ $$C_p[\\ce{H2O(l)}] = \\pu{75.3 J // mol K}$$ 呈现的输出效果如下： COX2+C→2 CO \\ce{CO2 + C -\u0026gt; 2 CO} COX2​+C​2COHgX2+→IX−HgIX2→IX−[HgXIIIX4]X2− \\ce{Hg^2+ -\u0026gt;[I-] HgI2 -\u0026gt;[I-] [Hg^{II}I4]^2-} HgX2+IX−​HgIX2​IX−​[HgXIIIX4​]X2−Cp[HX2O(l)]=75.3 Jmol KC_p[\\ce{H2O(l)}] = \\pu{75.3 J // mol K}Cp​[HX2​O(l)]=75.3 molKJ​自定义宏 你可以在主题配置中的 [params.page.math.katex.macros] 下面添加自定义宏。 例如： [params.page.math.katex.macros] \u0026#34;\\\\f\u0026#34; = \u0026#34;#1f(#2)\u0026#34; # usage: $\\f{a}{b}$ 然后在文章中使用： $$ \\f\\relax{x} = \\int_{-\\infty}^\\infty \\f\\hat\\xi\\,e^{2 \\pi i \\xi x} \\,d\\xi $$ 呈现的输出效果如下： \\fx=∫−∞∞\\fξ^ e2πiξx dξ \\f\\relax{x} = \\int_{-\\infty}^\\infty \\f\\hat\\xi\\,e^{2 \\pi i \\xi x} \\,d\\xi \\fx=∫−∞∞​\\fξ^​e2πiξxdξ错误信息 如果在渲染公式时遇到错误，KaTeX 会在页面上显示错误信息。 例如： $c = \\pm\\sqrt{a\\^2 + b^2}$ 呈现的输出效果如下，鼠标悬停在错误信息上可以查看详细的错误信息： c = \\pm\\sqrt{a\\^2 + b^2} 小心 如果你设置 params.page.math.katex.throwOnError 为 true，则会抛出错误并停止渲染。 ","date":"2026-05-17","objectID":"/markdown-extended/:9:1","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#自定义宏"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"KaTeX KaTeX 通过 Hugo 的 transform.ToMath 函数在 服务器端渲染，所以客户端加载速度更快。 提示 有一份 KaTeX 中支持的 TeX 函数清单。 行内公式 默认的行内公式分割符有： $ ... $ 例如： $c = \\pm\\sqrt{a^2 + b^2}$ 和 $f(x)=\\int_{-\\infty}^{\\infty} \\hat{f}(\\xi) e^{2 \\pi i \\xi x} d \\xi$ 呈现的输出效果如下： c=±a2+b2c = \\pm\\sqrt{a^2 + b^2}c=±a2+b2​ 和 f(x)=∫−∞∞f^(ξ)e2πiξxdξf(x)=\\int_{-\\infty}^{\\infty} \\hat{f}(\\xi) e^{2 \\pi i \\xi x} d \\xif(x)=∫−∞∞​f^​(ξ)e2πiξxdξ 公式块 默认的公式块分割符有： $$ ... $$ 例如： $$ c = \\pm\\sqrt{a^2 + b^2} $$ $$ \\begin{equation*} \\rho \\frac{\\mathrm{D} \\mathbf{v}}{\\mathrm{D} t}=\\nabla \\cdot \\mathbb{P}+\\rho \\mathbf{f} \\end{equation*} $$ $$ \\begin{equation} \\mathbf{E}=\\sum_{i} \\mathbf{E}\\_{i}=\\mathbf{E}\\_{1}+\\mathbf{E}\\_{2}+\\mathbf{E}_{3}+\\cdots \\end{equation} $$ $$ \\begin{align} a\u0026amp;=b+c \\\\ d+e\u0026amp;=f \\end{align} $$ $$ \\begin{alignat}{2} 10\u0026amp;x+\u0026amp;3\u0026amp;y = 2 \\\\ 3\u0026amp;x+\u0026amp;13\u0026amp;y = 4 \\end{alignat} $$ $$ \\begin{gather} a=b \\\\ e=b+c \\end{gather} $$ $$ \\begin{CD} A @\u0026gt;a\u0026gt;\u0026gt; B \\\\ @VbVV @AAcA \\\\ C @= D \\end{CD} $$ 呈现的输出效果如下： c=±a2+b2 c = \\pm\\sqrt{a^2 + b^2} c=±a2+b2​ρDvDt=∇⋅P+ρf \\begin{equation*} \\rho \\frac{\\mathrm{D} \\mathbf{v}}{\\mathrm{D} t}=\\nabla \\cdot \\mathbb{P}+\\rho \\mathbf{f} \\end{equation*} ρDtDv​=∇⋅P+ρf​E=∑iE_i=E_1+E_2+E3+⋯ \\begin{equation} \\mathbf{E}=\\sum_{i} \\mathbf{E}\\_{i}=\\mathbf{E}\\_{1}+\\mathbf{E}\\_{2}+\\mathbf{E}_{3}+\\cdots \\end{equation} E=i∑​E_i=E_1+E_2+E3​+⋯​​a=b+cd+e=f \\begin{align} a\u0026amp;=b+c \\\\ d+e\u0026amp;=f \\end{align} ad+e​=b+c=f​​10x+3y=23x+13y=4 \\begin{alignat}{2} 10\u0026amp;x+\u0026amp;3\u0026amp;y = 2 \\\\ 3\u0026amp;x+\u0026amp;13\u0026amp;y = 4 \\end{alignat} 103​x+x+​313​y=2y=4​​a=be=b+c \\begin{gather} a=b \\\\ e=b+c \\end{gather} a=be=b+c​​A→aBb↓↑cC=D \\begin{CD} A @\u0026gt;a\u0026gt;\u0026gt; B \\\\ @VbVV @AAcA \\\\ C @= D \\end{CD} Ab↓⏐​C​a​​B⏐↑​cD​复制公式 Copy-tex 是一个 KaTeX 的插件。通过这个扩展，在选择并复制 KaTeX 渲染的公式时，会将其 LaTeX 源代码复制到剪贴板。 在主题配置中的 [params.page.math.katex] 下面设置属性 copyTex = true 来启用 Copy-tex。 化学方程式 mhchem 是一个 KaTeX 的插件，提供了 \\ce 和 \\pu 函数。通过这个扩展，你可以在文章中轻松编写漂亮的化学方程式。 $$ \\ce{CO2 + C -\u0026gt; 2 CO} $$ $$ \\ce{Hg^2+ -\u0026gt;[I-] HgI2 -\u0026gt;[I-] [Hg^{II}I4]^2-} $$ $$C_p[\\ce{H2O(l)}] = \\pu{75.3 J // mol K}$$ 呈现的输出效果如下： COX2+C→2 CO \\ce{CO2 + C -\u0026gt; 2 CO} COX2​+C​2COHgX2+→IX−HgIX2→IX−[HgXIIIX4]X2− \\ce{Hg^2+ -\u0026gt;[I-] HgI2 -\u0026gt;[I-] [Hg^{II}I4]^2-} HgX2+IX−​HgIX2​IX−​[HgXIIIX4​]X2−Cp[HX2O(l)]=75.3 Jmol KC_p[\\ce{H2O(l)}] = \\pu{75.3 J // mol K}Cp​[HX2​O(l)]=75.3 molKJ​自定义宏 你可以在主题配置中的 [params.page.math.katex.macros] 下面添加自定义宏。 例如： [params.page.math.katex.macros] \u0026#34;\\\\f\u0026#34; = \u0026#34;#1f(#2)\u0026#34; # usage: $\\f{a}{b}$ 然后在文章中使用： $$ \\f\\relax{x} = \\int_{-\\infty}^\\infty \\f\\hat\\xi\\,e^{2 \\pi i \\xi x} \\,d\\xi $$ 呈现的输出效果如下： \\fx=∫−∞∞\\fξ^ e2πiξx dξ \\f\\relax{x} = \\int_{-\\infty}^\\infty \\f\\hat\\xi\\,e^{2 \\pi i \\xi x} \\,d\\xi \\fx=∫−∞∞​\\fξ^​e2πiξxdξ错误信息 如果在渲染公式时遇到错误，KaTeX 会在页面上显示错误信息。 例如： $c = \\pm\\sqrt{a\\^2 + b^2}$ 呈现的输出效果如下，鼠标悬停在错误信息上可以查看详细的错误信息： c = \\pm\\sqrt{a\\^2 + b^2} 小心 如果你设置 params.page.math.katex.throwOnError 为 true，则会抛出错误并停止渲染。 ","date":"2026-05-17","objectID":"/markdown-extended/:9:1","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#错误信息"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"MathJax MathJax 在页面加载后通过 JavaScript 进行 客户端渲染，速度较慢但功能更加强大。 这部分内容在 MathJax 支持页面中介绍。 ","date":"2026-05-17","objectID":"/markdown-extended/:9:2","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#mathjax"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"字符注音或者注释 FixIt 主题支持一种 字符注音或者注释 Markdown 扩展语法： [FixIt]^(一个简洁、优雅且高效的 Hugo 主题) 呈现的输出效果如下： FixIt一个简洁、优雅且高效的 Hugo 主题 ","date":"2026-05-17","objectID":"/markdown-extended/:10:0","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#字符注音或者注释"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"分数 FixIt 主题支持一种 分数 Markdown 扩展语法： [浅色]/[深色] [99]/[100] 呈现的输出效果如下： 浅色/深色 90/100 ","date":"2026-05-17","objectID":"/markdown-extended/:11:0","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#分数"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"Font Awesome FixIt 主题使用 Font Awesome V6 作为图标库。你同样可以在文章中轻松使用这些图标。 从 Font Awesome 网站上获取所需的图标 class。 去露营啦！:(fa-solid fa-campground fa-fw): 很快就回来。 真开心！:(fa-regular fa-grin-tears): 呈现的输出效果如下： 去露营啦！\u0026nbsp;很快就回来。 真开心！ ","date":"2026-05-17","objectID":"/markdown-extended/:12:0","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#font-awesome"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"转义字符 在某些特殊情况下，你的文章内容会与 Markdown 的基本或者扩展语法冲突，并且无法避免。转义字符语法可以帮助你渲染出想要的内容： {?X} -\u0026gt; X 例如，两个 : 会启用 emoji 语法。但有时候这不是你想要的结果。可以像这样使用转义字符语法： {?:}joy: 呈现的输出效果如下： :joy: 而不是 \u0026#x1f602; 提示 这个方法可以间接解决一个还未解决的 Hugo issue。 另一个例子是： [link{?]}(#escape-character) 呈现的输出效果如下： [link](#escape-character) 而不是 link。 ","date":"2026-05-17","objectID":"/markdown-extended/:13:0","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#转义字符"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"Markdown 属性 更新你的站点配置以启用块级元素的 Markdown 属性。 Hugo 支持图像和块元素上的 Markdown 属性，包括块引用、围栏代码块、标题、水平线、列表、段落和表格。 ","date":"2026-05-17","objectID":"/markdown-extended/:14:0","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#markdown-属性"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"语法 some Markdown content {#id .class1 .class2 key1=\u0026#34;value1\u0026#34; key2=\u0026#34;value2\u0026#34;} 在大多数情况下，将属性列表放置在标记元素下方。对于标题和围栏代码块，将属性列表放在右侧。 标记元素 属性放置的位置 blockquote 底部 fenced code block 右侧 heading 右侧 horizontal rule 底部 image 底部 list 底部 paragraph 底部 table 底部 ","date":"2026-05-17","objectID":"/markdown-extended/:14:1","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#语法"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"例子 分割线 带有 CSS 类的分割线： --- {.awesome-hr} 呈现的输出如下所示： 引用 带有 CSS 类的块引用： \u0026gt; The quick brown fox jumps over the lazy dog. {.blockquote-center} 呈现的输出如下所示： The quick brown fox jumps over the lazy dog. 表格 \u0026amp; 列表 目前有一些限制：对于表格，你目前只能将其应用于完整表格，而对于列表，仅适用于 ul/ol 节点，例如： * 水果 * 苹果 * 橙子 * 香蕉 {.text-success} * 乳制品 * 牛奶 * 奶酪 {.text-warning} {.text-primary} 呈现的输出如下所示： 水果 苹果 橙子 香蕉 乳制品 牛奶 奶酪 ","date":"2026-05-17","objectID":"/markdown-extended/:14:2","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#例子"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"例子 分割线 带有 CSS 类的分割线： --- {.awesome-hr} 呈现的输出如下所示： 引用 带有 CSS 类的块引用： \u0026gt; The quick brown fox jumps over the lazy dog. {.blockquote-center} 呈现的输出如下所示： The quick brown fox jumps over the lazy dog. 表格 \u0026amp; 列表 目前有一些限制：对于表格，你目前只能将其应用于完整表格，而对于列表，仅适用于 ul/ol 节点，例如： * 水果 * 苹果 * 橙子 * 香蕉 {.text-success} * 乳制品 * 牛奶 * 奶酪 {.text-warning} {.text-primary} 呈现的输出如下所示： 水果 苹果 橙子 香蕉 乳制品 牛奶 奶酪 ","date":"2026-05-17","objectID":"/markdown-extended/:14:2","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#分割线"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"例子 分割线 带有 CSS 类的分割线： --- {.awesome-hr} 呈现的输出如下所示： 引用 带有 CSS 类的块引用： \u0026gt; The quick brown fox jumps over the lazy dog. {.blockquote-center} 呈现的输出如下所示： The quick brown fox jumps over the lazy dog. 表格 \u0026amp; 列表 目前有一些限制：对于表格，你目前只能将其应用于完整表格，而对于列表，仅适用于 ul/ol 节点，例如： * 水果 * 苹果 * 橙子 * 香蕉 {.text-success} * 乳制品 * 牛奶 * 奶酪 {.text-warning} {.text-primary} 呈现的输出如下所示： 水果 苹果 橙子 香蕉 乳制品 牛奶 奶酪 ","date":"2026-05-17","objectID":"/markdown-extended/:14:2","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#引用"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"例子 分割线 带有 CSS 类的分割线： --- {.awesome-hr} 呈现的输出如下所示： 引用 带有 CSS 类的块引用： \u0026gt; The quick brown fox jumps over the lazy dog. {.blockquote-center} 呈现的输出如下所示： The quick brown fox jumps over the lazy dog. 表格 \u0026amp; 列表 目前有一些限制：对于表格，你目前只能将其应用于完整表格，而对于列表，仅适用于 ul/ol 节点，例如： * 水果 * 苹果 * 橙子 * 香蕉 {.text-success} * 乳制品 * 牛奶 * 奶酪 {.text-warning} {.text-primary} 呈现的输出如下所示： 水果 苹果 橙子 香蕉 乳制品 牛奶 奶酪 ","date":"2026-05-17","objectID":"/markdown-extended/:14:2","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#表格--列表"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"代码块扩展语法 FixIt 主题扩展了标准 Markdown 代码围栏，支持高级功能，包括图表、图形和交互式可视化。这些扩展的代码围栏使你能够直接在 Markdown 文件中创建丰富的动态内容。 ","date":"2026-05-17","objectID":"/markdown-extended/:15:0","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#代码块扩展语法"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"语法 扩展的代码围栏使用与标准 Markdown 相同的三重反引号语法，但使用特定语言标识符来触发特殊的渲染引擎： ```LANG [OPTIONS] // 在这里输入特定语言的内容 ``` ","date":"2026-05-17","objectID":"/markdown-extended/:15:1","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#语法-1"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"语言 这些功能在 FixIt 主题中自动启用，无需额外配置，只需在代码围栏中使用相应的语言标识符，内容就会使用相应的引擎进行渲染。 语言标识符 描述 goat ASCII 艺术图表，渲染为可缩放的矢量图形 mermaid 专业图表，包括流程图、时序图等 echarts 交互式数据可视化图表和图形 timeline 具有丰富格式的时间线事件显示 json 格式化和可折叠的 JSON 数据视图 file-tree 渲染文件和目录结构为交互式树 toggle 以 TOML、YAML 和 JSON 格式渲染语法高亮的配置数据 ","date":"2026-05-17","objectID":"/markdown-extended/:15:2","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#语言"},{"categories":["技术笔记"],"collections":["Markdown 语法"],"content":"选项 你可以通过 Hugo 语法高亮选项、主题代码块配置、Markdown 属性或者以下选项来自定义你的代码块： 选项 描述 类型 title 代码块标题 string name 代码块名称或标签项名称 string group 代码块标签组名称 string before_tabs 在标签项之前显示的内容 string filename 代码块文件名 string group 和 name 选项可以一起使用来创建标签页式的代码块。例如： ```python {group=\u0026#34;languages\u0026#34;, name=\u0026#34;Hi Python\u0026#34;} print(\u0026#39;Hello, world!\u0026#39;) ``` ```js {group=\u0026#34;languages\u0026#34;, name=\u0026#34;Hi JS\u0026#34;, .active} console.log(\u0026#39;Hello, world!\u0026#39;); ``` 呈现的输出如下所示： print(\u0026#39;Hello, world!\u0026#39;) console.log(\u0026#39;Hello, world!\u0026#39;); ","date":"2026-05-17","objectID":"/markdown-extended/:15:3","tags":["Markdown","Hugo"],"title":"Markdown 扩展语法","uri":"/markdown-extended/#选项"},{"categories":["项目记录"],"collections":null,"content":"介绍我使用 Codex 协助开发的 Go 语言 Windows 久坐提醒工具 Stand Reminder，包括功能设计、界面展示、关键迭代与项目发布过程。","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/"},{"categories":["项目记录"],"collections":null,"content":"最近我做了一个挺实用的小工具：Stand Reminder。 它是一个运行在 Windows 端的久坐提醒程序，使用 Go 编写，常驻系统托盘，实测内存占用可以控制在 10MB 以下。项目本身不大，但很完整：从托盘常驻、状态检测、系统通知，到本地网页控制中心、统计视图、中英文切换，再到 GitHub Release 打包，已经是一套可以直接拿来用的成品。 这个项目还有一个对我来说比较有意思的点：它是我和 Codex 协作完成的。 不是那种“让 AI 写几行 demo”式的尝试，而是我负责提出需求、确认产品方向、不断补充使用细节，Codex 负责把这些想法快速落地，再一起迭代成一个真正能用的工具。 ","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/:0:0","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/#"},{"categories":["项目记录"],"collections":null,"content":"为什么会做这个工具 原因很简单：久坐太久了。 很多提醒类工具要么太重，要么交互别扭，要么打断感太强。我想要的其实很明确： 平时安静地待在托盘里，不要打扰我 真正连续使用电脑一段时间后，再提醒我起身活动 如果我在摸鱼看视频，或者处于某种不适合打断的状态，识别最好能更合理一点 最好还能有一个简洁的控制面板，随时查看状态、调参数、看统计 占用尽量低，别为了提醒站起来反而多开一个“重量级软件” 于是就有了 Stand Reminder。 ","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/:1:0","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/#为什么会做这个工具"},{"categories":["项目记录"],"collections":null,"content":"它现在能做什么 根据 README 里的功能说明和当前界面，Stand Reminder 目前已经具备这些核心能力： Windows 托盘常驻运行，启动后不弹黑色终端窗口 检测键盘、鼠标活动以及媒体播放状态 按连续使用时长进行久坐提醒 到达阈值后发送 Windows 系统通知 点击通知后可直接打开控制中心 提供本地网页控制中心，默认地址为 http://127.0.0.1:47831 支持修改提醒分钟数、空闲重置分钟数、检测间隔、通知标题和通知内容 支持手动 暂停、开始 / 恢复、我已起身活动 “我已起身活动”后会停止当前计时，并显示一个 10 分钟活动倒计时 支持中英文界面切换 支持今天、7 天、20 天三个维度的统计视图 如果只看功能列表，这已经不是一个“玩具项目”了，而是一个完整的桌面应用。 ","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/:2:0","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/#它现在能做什么"},{"categories":["项目记录"],"collections":null,"content":"界面上，我比较满意的几个地方 从 README 展示图来看，这个项目的 UI 也不是“能用就行”的风格，而是认真做了组织和分层。 ","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/:3:0","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/#界面上我比较满意的几个地方"},{"categories":["项目记录"],"collections":null,"content":"1. 控制中心首页 首页主要承担状态总览和操作入口的职责，打开后能快速看到当前运行情况，并执行常用动作。对这种托盘类应用来说，这样的设计很合理： 日常不打扰 需要时一键打开 打开后信息集中，不用到处翻 ","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/:3:1","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/#1-控制中心首页"},{"categories":["项目记录"],"collections":null,"content":"2. 统计视图 统计页支持今天、7 天、20 天的视图切换，这一点我挺喜欢。 因为久坐提醒如果只有“提醒一下”，长期来看很容易被无视；但如果能看到自己的节奏和数据，它就更像一个轻量自我管理工具，而不仅仅是弹窗提醒器。 README 里也提到，今天统计图的 UI 思路参考了 Mizuki 的文章。这种做法我觉得挺好：尊重已有优秀设计，吸收思路，再结合自己的产品去实现。 ","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/:3:2","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/#2-统计视图"},{"categories":["项目记录"],"collections":null,"content":"3. 设置页 提醒时长、空闲重置时间、检测间隔、通知标题、通知内容都能自定义，说明这个工具一开始就不是“我写给自己能跑就行”，而是考虑到了不同人的使用习惯。 这也是我做工具时越来越在意的一点： 默认值重要，但允许用户调整同样重要。 ","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/:3:3","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/#3-设置页"},{"categories":["项目记录"],"collections":null,"content":"从 commit 里能看出的迭代重点 这个仓库的提交记录也很有意思，能比较清楚地看出这个项目不是一次性写完的，而是持续在打磨。 我挑几个我觉得最能体现“从可用到好用”的 commit 来说。 ","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/:4:0","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/#从-commit-里能看出的迭代重点"},{"categories":["项目记录"],"collections":null,"content":"1. feat: migrate storage to sqlite and refresh docs 这是一个很关键的升级。 从更简单的存储方式迁移到 SQLite，意味着项目开始认真处理统计数据和本地持久化能力。对于一个带历史统计、活动记录、状态管理的工具来说，SQLite 是很自然也很稳妥的选择。 这一步通常意味着项目从“逻辑跑通”进入“结构稳定、便于扩展”的阶段。 ","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/:4:1","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/#1-feat-migrate-storage-to-sqlite-and-refresh-docs"},{"categories":["项目记录"],"collections":null,"content":"2. feat: improve stats dashboard visuals 我很认同这种迭代优先级。 很多开发者做完功能就停了，但真实使用体验往往卡在“看起来乱、不愿意打开”。统计面板视觉优化虽然不是硬功能，却会直接影响这个工具会不会被持续使用。 ","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/:4:2","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/#2-feat-improve-stats-dashboard-visuals"},{"categories":["项目记录"],"collections":null,"content":"3. feat: open control center from notifications 这个细节非常加分。 提醒弹出后，如果用户还要自己去找托盘图标，再点开控制中心，流程就断了。现在直接从通知跳转控制中心，整个交互链条就顺了很多。这类改动不一定显眼，但非常体现产品感觉。 ","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/:4:3","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/#3-feat-open-control-center-from-notifications"},{"categories":["项目记录"],"collections":null,"content":"4. feat: 增加媒体播放的检测避免误判（大概有用吧） 我特别喜欢这个 commit 名，既诚实又有点好笑。 但它背后反映的是一个实际问题：“你在电脑前”不等于“你现在适合被提醒”。 如果正在放视频、开会、听内容，单纯靠输入事件判断，确实可能误判。加入媒体播放检测，说明这个工具在朝着“更像理解使用情境”而不是“机械计时器”的方向走。 ","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/:4:4","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/#4-feat-增加媒体播放的检测避免误判大概有用吧"},{"categories":["项目记录"],"collections":null,"content":"5. feat: add PauseAfter configuration to engine and update tests 这属于典型的“后期好用度增强项”。 配置越来越细，意味着产品开始照顾不同节奏的人；同时还更新了 tests，也说明这个项目不是一味堆功能，而是在尽量保持可维护性。 ","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/:4:5","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/#5-feat-add-pauseafter-configuration-to-engine-and-update-tests"},{"categories":["项目记录"],"collections":null,"content":"6. 一系列 release / version / build 相关提交 比如： ci: publish releases from version tags ci: enrich release notes fix: update version number to v0.2.3 in index.html and improve release bundle creation in build workflow fix: update app version to v0.2.4 and remove version display from index.html 这些提交说明项目已经不只是“本地能跑”，而是在认真处理： 版本发布 自动化构建 Release 打包 面向最终用户的分发体验 当一个项目开始反复打磨这些部分时，通常代表它真的准备给别人用了。 ","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/:4:6","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/#6-一系列-release--version--build-相关提交"},{"categories":["项目记录"],"collections":null,"content":"用 Codex 写这个项目，最大的感受 这次做下来，我对 Codex 的一个直观感受是： 它特别适合把脑子里的半成品需求，快速推进成一个结构完整的可运行项目。 尤其像这种桌面工具，需求会不断变化： 托盘怎么做更自然 通知如何触发 页面结构怎么拆 状态统计怎么存 设置项应该暴露哪些 Release 如何打包 如果全靠自己一点点切换上下文，会比较消耗精力；而有了 Codex 之后，我更像是在持续做“产品经理 + 技术审稿人”的角色： 我提出目标和细节 它快速生成初版实现 我再根据体验补充需求 然后继续迭代 这种协作方式对独立开发小工具来说，效率真的很高。 当然，前提还是你自己要知道想要什么。Codex 能帮你加速，但不能替你判断什么才是合理的产品体验。 ","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/:5:0","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/#用-codex-写这个项目最大的感受"},{"categories":["项目记录"],"collections":null,"content":"如果你想直接使用 如果你只是想直接试试这个工具，可以去 GitHub Releases 下载打包好的版本： Stand Reminder Releases 下载 zip 后，运行里面的 stand-reminder.exe 即可。程序启动后会进入系统托盘。 如果你想自己编译，README 里给出的方式也很直接： go build -ldflags=\u0026#39;-H windowsgui\u0026#39; -o stand-reminder.exe . 这条参数里的 -H windowsgui 也正好对应了这个项目的目标： 它应该是一个安静待在后台的 Windows 工具，而不是一启动就冒出控制台窗口。 ","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/:6:0","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/#如果你想直接使用"},{"categories":["项目记录"],"collections":null,"content":"最后 我挺喜欢这种项目。 它不是什么宏大的系统，也不是为了炫技而做的复杂工程，而是一个很具体、很贴近日常使用场景的小工具：解决久坐问题，减少打扰，保持足够轻量，同时把体验做顺。 更重要的是，这个项目也让我更明确了一件事： AI 写代码真正有价值的地方，不只是“帮你补代码”，而是让一个原本可能会被搁置的小想法，更容易被做成、做完、做得像样。 如果你也在折腾 Go、小工具开发，或者也在尝试和 Codex 一起做项目，也许可以看看这个仓库： https://github.com/sheetung/stand-Reminder ","date":"2026-04-09","objectID":"/codex-go-windows-stand-reminder/:7:0","tags":["Go","Codex","Windows","独立开发"],"title":"Codex 帮我写了个 Go 版 Windows 久坐提醒工具：Stand Reminder","uri":"/codex-go-windows-stand-reminder/#最后"},{"categories":["随笔"],"collections":["OpenClaw"],"content":"问题原因 在 Wayland 显示协议下，使用 scrot 等 X11 截图工具会导致黑屏。原因是 Wayland 对屏幕捕捉有更严格的安全限制。 ","date":"2026-03-12","objectID":"/Ubuntu%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8openclaw%E5%8F%91%E9%80%81%E6%88%AA%E5%9B%BE%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/:1:0","tags":["OpenClaw","Ubuntu","Wayland","截图"],"title":"Ubuntu系统使用openclaw发送截图黑屏解决办法","uri":"/Ubuntu%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8openclaw%E5%8F%91%E9%80%81%E6%88%AA%E5%9B%BE%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/#问题原因"},{"categories":["随笔"],"collections":["OpenClaw"],"content":"可能遇到的问题 scrot 截图黑屏 grim 报错：compositor doesn't support wlr-screencopy-unstable-v1 ","date":"2026-03-12","objectID":"/Ubuntu%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8openclaw%E5%8F%91%E9%80%81%E6%88%AA%E5%9B%BE%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/:2:0","tags":["OpenClaw","Ubuntu","Wayland","截图"],"title":"Ubuntu系统使用openclaw发送截图黑屏解决办法","uri":"/Ubuntu%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8openclaw%E5%8F%91%E9%80%81%E6%88%AA%E5%9B%BE%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/#可能遇到的问题"},{"categories":["随笔"],"collections":["OpenClaw"],"content":"🛠️ 解决方案 ","date":"2026-03-12","objectID":"/Ubuntu%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8openclaw%E5%8F%91%E9%80%81%E6%88%AA%E5%9B%BE%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/:3:0","tags":["OpenClaw","Ubuntu","Wayland","截图"],"title":"Ubuntu系统使用openclaw发送截图黑屏解决办法","uri":"/Ubuntu%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8openclaw%E5%8F%91%E9%80%81%E6%88%AA%E5%9B%BE%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/#-解决方案"},{"categories":["随笔"],"collections":["OpenClaw"],"content":"1. 安装截图工具 安装 Wayland 兼容的截图工具： sudo apt-get update \u0026amp;\u0026amp; sudo apt-get install -y grim slurp sudo apt-get install -y gnome-screenshot grim 和 slurp 用于部分 Wayland compositor；gnome-screenshot 适用于 GNOME 环境。 ","date":"2026-03-12","objectID":"/Ubuntu%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8openclaw%E5%8F%91%E9%80%81%E6%88%AA%E5%9B%BE%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/:3:1","tags":["OpenClaw","Ubuntu","Wayland","截图"],"title":"Ubuntu系统使用openclaw发送截图黑屏解决办法","uri":"/Ubuntu%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8openclaw%E5%8F%91%E9%80%81%E6%88%AA%E5%9B%BE%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/#1-安装截图工具"},{"categories":["随笔"],"collections":["OpenClaw"],"content":"2. 截图命令 方式一：gnome-screenshot（推荐 GNOME 用户） gnome-screenshot -f /home/sheetung/.openclaw/workspace/current_screen.png 方式二：grim（需要 compositor 支持 wlr-screencopy） grim /home/sheetung/.openclaw/workspace/current_screen.png ","date":"2026-03-12","objectID":"/Ubuntu%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8openclaw%E5%8F%91%E9%80%81%E6%88%AA%E5%9B%BE%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/:3:2","tags":["OpenClaw","Ubuntu","Wayland","截图"],"title":"Ubuntu系统使用openclaw发送截图黑屏解决办法","uri":"/Ubuntu%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8openclaw%E5%8F%91%E9%80%81%E6%88%AA%E5%9B%BE%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/#2-截图命令"},{"categories":["随笔"],"collections":["OpenClaw"],"content":"3. 配置 mediaLocalRoots 允许访问本地目录 配置 OpenClaw 允许访问需要的本地目录，才能发送截图文件： 允许访问 workspace 目录 openclaw config set channels.feishu.mediaLocalRoots \u0026#39;[\u0026#34;/root/clawd\u0026#34;]\u0026#39; 或者同时允许 /tmp（用于临时文件） openclaw config set channels.feishu.mediaLocalRoots \u0026#39;[\u0026#34;/root/clawd\u0026#34;, \u0026#34;/tmp\u0026#34;]\u0026#39; ","date":"2026-03-12","objectID":"/Ubuntu%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8openclaw%E5%8F%91%E9%80%81%E6%88%AA%E5%9B%BE%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/:3:3","tags":["OpenClaw","Ubuntu","Wayland","截图"],"title":"Ubuntu系统使用openclaw发送截图黑屏解决办法","uri":"/Ubuntu%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8openclaw%E5%8F%91%E9%80%81%E6%88%AA%E5%9B%BE%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/#3-配置-medialocalroots-允许访问本地目录"},{"categories":["随笔"],"collections":["OpenClaw"],"content":"4. 重启 gateway 使配置生效 openclaw gateway restart ","date":"2026-03-12","objectID":"/Ubuntu%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8openclaw%E5%8F%91%E9%80%81%E6%88%AA%E5%9B%BE%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/:3:4","tags":["OpenClaw","Ubuntu","Wayland","截图"],"title":"Ubuntu系统使用openclaw发送截图黑屏解决办法","uri":"/Ubuntu%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8openclaw%E5%8F%91%E9%80%81%E6%88%AA%E5%9B%BE%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/#4-重启-gateway-使配置生效"},{"categories":["随笔"],"collections":["OpenClaw"],"content":"环境信息 系统版本：Ubuntu 24.04.2 LTS 显示协议：Wayland 验证可用：gnome-screenshot ","date":"2026-03-12","objectID":"/Ubuntu%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8openclaw%E5%8F%91%E9%80%81%E6%88%AA%E5%9B%BE%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/:4:0","tags":["OpenClaw","Ubuntu","Wayland","截图"],"title":"Ubuntu系统使用openclaw发送截图黑屏解决办法","uri":"/Ubuntu%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8openclaw%E5%8F%91%E9%80%81%E6%88%AA%E5%9B%BE%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/#环境信息"},{"categories":["教程"],"collections":["OpenClaw"],"content":"OpenClaw 安装、配置以及与飞书消息渠道连接的详细教程","date":"2026-03-06","objectID":"/openclaw-feishu-setup/","tags":["OpenClaw","飞书","教程","AI"],"title":"OpenClaw 与飞书的搭建始末","uri":"/openclaw-feishu-setup/"},{"categories":["教程"],"collections":["OpenClaw"],"content":"不知道赶没赶上这口热乎的，自己也是折腾了很久。从刚开始的 Clawbot，又到 Moltbot 然后是现在的 OpenClaw，应该是不会改名了吧！ 也算是更新了有几个月？在安装的成功率和使用体验上都有了不小的进步。虽然目前博主也还没探索出更好玩的技能，但是对于搭建上还是有着不少经验（折腾过好几次也是~~） 所以本文会介绍 OpenClaw 的安装到与飞书的消息渠道的链接。 ","date":"2026-03-06","objectID":"/openclaw-feishu-setup/:0:0","tags":["OpenClaw","飞书","教程","AI"],"title":"OpenClaw 与飞书的搭建始末","uri":"/openclaw-feishu-setup/#"},{"categories":["教程"],"collections":["OpenClaw"],"content":"0. 准备阶段 一台服务器/个人电脑，配置要求并不高 系统方面因为在终端/命令行中完成，所以 Linux/Win/Macos 都是可以的 半个小时的个人时间 ","date":"2026-03-06","objectID":"/openclaw-feishu-setup/:1:0","tags":["OpenClaw","飞书","教程","AI"],"title":"OpenClaw 与飞书的搭建始末","uri":"/openclaw-feishu-setup/#0-准备阶段"},{"categories":["教程"],"collections":["OpenClaw"],"content":"1. 安装 OpenClaw 此处其实可以参照官方教程，官方教程也是有中文版的。 如果你是 Linux/Macos 使用如下命令一键安装： curl -fsSL https://openclaw.ai/install.sh | bash 如果你是 win 操作系统，在 PowerShell/cmd 中： iwr -useb https://openclaw.ai/install.ps1 | iex 当然还有 Docker 或者源码等安装方法，👉 OpenClaw官方中文网站 如果出现安装失败，首要考虑网络问题。请在系统或者终端处打开代理，重新运行安装脚本。 ","date":"2026-03-06","objectID":"/openclaw-feishu-setup/:2:0","tags":["OpenClaw","飞书","教程","AI"],"title":"OpenClaw 与飞书的搭建始末","uri":"/openclaw-feishu-setup/#1-安装-openclaw"},{"categories":["教程"],"collections":["OpenClaw"],"content":"2. 配置 OpenClaw 默认情况下安装成功会自动进入配置处理，如果没有可以手动进入配置，建议新开一个终端，输入以下命令进入配置项： openclaw onboard --install-daemon 命令执行后会有类似如下显示，此处弹出免责声明，务必使用键盘控制选择 yes。 第一次配置，建议选择 QuickStart，快速体验： Onboarding mode │ ● QuickStart (Configure details later via openclaw configure.) │ ○ Manual 如果已经进行过相关配置，会提示你对于已存在的配置项做什么处理，因为我已经安装过，我这里选择 Use existing values： ◆ Config handling │ ● Use existing values │ ○ Update values │ ○ Reset ","date":"2026-03-06","objectID":"/openclaw-feishu-setup/:3:0","tags":["OpenClaw","飞书","教程","AI"],"title":"OpenClaw 与飞书的搭建始末","uri":"/openclaw-feishu-setup/#2-配置-openclaw"},{"categories":["教程"],"collections":["OpenClaw"],"content":"2.1 大模型配置 接下来就会来到模型的配置页面，官方预制了一些模型供应商，如果是第一次体验又不想麻烦可以选择 GitHub/z.ai，当然如果你的服务器并不在国内或者你有代理的能力，可以选择 Gemini 等。 国内也有很不错的模型供应商，这里以硅基流动的 GLM5 模型为例。 可以白嫖部分额度的大模型供应商： 硅基流动，注册即送 14 元代金券 👉 硅基流动 白山智算，限时赠送 450 代金券 👉 白山智算 如果要使用自定义模型，控制光标到 Custom Provider，首先就会来到模型请求地址的配置。查看供应商的请求文档可知： 硅基的请求 url 为：https://api.siliconflow.cn/v1 白山的请求 url 为：https://api.edgefn.net/v1 ◆ API Base URL │ http://127.0.0.1:11434/v1█ └ 填写完 url 需要配置 API Key，从各自的个人中心处增加 key，并选择 Paste API key now 配置： ◇ API Base URL │ https://api.edgefn.net/v1 │ ◆ How do you want to provide this API key? │ ● Paste API key now (Stores the key directly in OpenClaw config) │ ○ Use external secret provider └ 然后就是兼容接口的选择，这里建议选择兼容更好的 OpenAI-compatible。（大佬们轻喷，此处我不熟悉他们各有的区别于特色） ◆ Endpoint compatibility │ ● OpenAI-compatible (Uses /chat/completions) │ ○ Anthropic-compatible │ ○ Unknown (detect automatically) └ 然后就是模型选择，目前市面上最好的肯定还是 Anthropic 团队的 claude opus 4.6，但是面对龙虾这个 token 饕餮，还是有些消费不起。所以可以退而求其次，重在体验，目前我认为最优解应该是智谱的 GLM5。 硅基的 GLM5 模型名字为：Pro/zai-org/GLM-5 白山的 GLM5 模型名字为：GLM-5 配置完成后会弹出一个命名框，这里建议在后面加上模型的名字，方便后续使用命令 /model 进行模型切换。填写完成后，Model alias 默认即可： ◆ Endpoint ID │ custom-api-edgefn-net-glm5█ └ ","date":"2026-03-06","objectID":"/openclaw-feishu-setup/:3:1","tags":["OpenClaw","飞书","教程","AI"],"title":"OpenClaw 与飞书的搭建始末","uri":"/openclaw-feishu-setup/#21-大模型配置"},{"categories":["教程"],"collections":["OpenClaw"],"content":"2.2 飞书消息渠道配置 ◆ Select channel (QuickStart) │ ○ Telegram (Bot API) │ ○ WhatsApp (QR link) (not linked) │ ○ Discord (Bot API) │ ○ IRC (Server + Nick) │ ○ Google Chat (Chat API) │ ○ Slack (Socket Mode) │ ○ Signal (signal-cli) │ ○ iMessage (imsg) │ ● Feishu/Lark (飞书) │ ○ Nostr (NIP-04 DMs) │ ○ Microsoft Teams (Bot Framework) │ ○ Mattermost (plugin) │ ○ Nextcloud Talk (self-hosted) │ ○ Matrix (plugin) │ ○ BlueBubbles (macOS app) │ ○ LINE (Messaging API) │ ○ Zalo (Bot API) │ ○ Zalo (Personal Account) │ ○ Synology Chat (Webhook) │ ○ Tlon (Urbit) │ ○ Skip for now 因为本文以飞书为例，所以就使用飞书作为消息渠道。这里先不急选择飞书，我们在网页端完成飞书平台的配置。 以下内容来自飞书 - OpenClaw 1. 打开飞书开放平台 访问 飞书开放平台，使用飞书账号登录。选择创建企业自建应用，填写应用名称和描述，选择应用图标。 2. 获取应用凭证 在应用的 凭证与基础信息 页面，复制： App ID（格式如 cli_xxx） App Secret 请妥善保管 App Secret，不要分享给他人。 3. 配置应用权限 在 权限管理 页面，点击 批量导入 按钮，粘贴以下 JSON 配置一键导入所需权限： 4. 启用机器人能力 在 应用能力 \u0026gt; 机器人 页面： 开启机器人能力 配置机器人名称 此时来到 OpenClaw 配置处，选择飞书渠道，然后系统会自动安装飞书插件，待安装完成后提示输入，顺序不要搞反！ App Secret App ID 配置完成后会来到技能页面的选择，此时我们回到飞书配置处。 5. 配置事件订阅 重要 ⚠️ 重要提醒：在配置事件订阅前，请务必确保已完成以上步骤。 在 事件订阅 页面： 选择 使用长连接接收事件（WebSocket 模式） ③处添加事件：im.message.receive_v1（接收消息） 6. 发布应用 在 版本管理与发布 页面创建版本 提交审核并发布 等待管理员审批（企业自建应用通常自动通过） ","date":"2026-03-06","objectID":"/openclaw-feishu-setup/:3:2","tags":["OpenClaw","飞书","教程","AI"],"title":"OpenClaw 与飞书的搭建始末","uri":"/openclaw-feishu-setup/#22-飞书消息渠道配置"},{"categories":["教程"],"collections":["OpenClaw"],"content":"2.2 飞书消息渠道配置 ◆ Select channel (QuickStart) │ ○ Telegram (Bot API) │ ○ WhatsApp (QR link) (not linked) │ ○ Discord (Bot API) │ ○ IRC (Server + Nick) │ ○ Google Chat (Chat API) │ ○ Slack (Socket Mode) │ ○ Signal (signal-cli) │ ○ iMessage (imsg) │ ● Feishu/Lark (飞书) │ ○ Nostr (NIP-04 DMs) │ ○ Microsoft Teams (Bot Framework) │ ○ Mattermost (plugin) │ ○ Nextcloud Talk (self-hosted) │ ○ Matrix (plugin) │ ○ BlueBubbles (macOS app) │ ○ LINE (Messaging API) │ ○ Zalo (Bot API) │ ○ Zalo (Personal Account) │ ○ Synology Chat (Webhook) │ ○ Tlon (Urbit) │ ○ Skip for now 因为本文以飞书为例，所以就使用飞书作为消息渠道。这里先不急选择飞书，我们在网页端完成飞书平台的配置。 以下内容来自飞书 - OpenClaw 1. 打开飞书开放平台 访问 飞书开放平台，使用飞书账号登录。选择创建企业自建应用，填写应用名称和描述，选择应用图标。 2. 获取应用凭证 在应用的 凭证与基础信息 页面，复制： App ID（格式如 cli_xxx） App Secret 请妥善保管 App Secret，不要分享给他人。 3. 配置应用权限 在 权限管理 页面，点击 批量导入 按钮，粘贴以下 JSON 配置一键导入所需权限： 4. 启用机器人能力 在 应用能力 \u0026gt; 机器人 页面： 开启机器人能力 配置机器人名称 此时来到 OpenClaw 配置处，选择飞书渠道，然后系统会自动安装飞书插件，待安装完成后提示输入，顺序不要搞反！ App Secret App ID 配置完成后会来到技能页面的选择，此时我们回到飞书配置处。 5. 配置事件订阅 重要 ⚠️ 重要提醒：在配置事件订阅前，请务必确保已完成以上步骤。 在 事件订阅 页面： 选择 使用长连接接收事件（WebSocket 模式） ③处添加事件：im.message.receive_v1（接收消息） 6. 发布应用 在 版本管理与发布 页面创建版本 提交审核并发布 等待管理员审批（企业自建应用通常自动通过） ","date":"2026-03-06","objectID":"/openclaw-feishu-setup/:3:2","tags":["OpenClaw","飞书","教程","AI"],"title":"OpenClaw 与飞书的搭建始末","uri":"/openclaw-feishu-setup/#1-打开飞书开放平台"},{"categories":["教程"],"collections":["OpenClaw"],"content":"2.2 飞书消息渠道配置 ◆ Select channel (QuickStart) │ ○ Telegram (Bot API) │ ○ WhatsApp (QR link) (not linked) │ ○ Discord (Bot API) │ ○ IRC (Server + Nick) │ ○ Google Chat (Chat API) │ ○ Slack (Socket Mode) │ ○ Signal (signal-cli) │ ○ iMessage (imsg) │ ● Feishu/Lark (飞书) │ ○ Nostr (NIP-04 DMs) │ ○ Microsoft Teams (Bot Framework) │ ○ Mattermost (plugin) │ ○ Nextcloud Talk (self-hosted) │ ○ Matrix (plugin) │ ○ BlueBubbles (macOS app) │ ○ LINE (Messaging API) │ ○ Zalo (Bot API) │ ○ Zalo (Personal Account) │ ○ Synology Chat (Webhook) │ ○ Tlon (Urbit) │ ○ Skip for now 因为本文以飞书为例，所以就使用飞书作为消息渠道。这里先不急选择飞书，我们在网页端完成飞书平台的配置。 以下内容来自飞书 - OpenClaw 1. 打开飞书开放平台 访问 飞书开放平台，使用飞书账号登录。选择创建企业自建应用，填写应用名称和描述，选择应用图标。 2. 获取应用凭证 在应用的 凭证与基础信息 页面，复制： App ID（格式如 cli_xxx） App Secret 请妥善保管 App Secret，不要分享给他人。 3. 配置应用权限 在 权限管理 页面，点击 批量导入 按钮，粘贴以下 JSON 配置一键导入所需权限： 4. 启用机器人能力 在 应用能力 \u0026gt; 机器人 页面： 开启机器人能力 配置机器人名称 此时来到 OpenClaw 配置处，选择飞书渠道，然后系统会自动安装飞书插件，待安装完成后提示输入，顺序不要搞反！ App Secret App ID 配置完成后会来到技能页面的选择，此时我们回到飞书配置处。 5. 配置事件订阅 重要 ⚠️ 重要提醒：在配置事件订阅前，请务必确保已完成以上步骤。 在 事件订阅 页面： 选择 使用长连接接收事件（WebSocket 模式） ③处添加事件：im.message.receive_v1（接收消息） 6. 发布应用 在 版本管理与发布 页面创建版本 提交审核并发布 等待管理员审批（企业自建应用通常自动通过） ","date":"2026-03-06","objectID":"/openclaw-feishu-setup/:3:2","tags":["OpenClaw","飞书","教程","AI"],"title":"OpenClaw 与飞书的搭建始末","uri":"/openclaw-feishu-setup/#2-获取应用凭证"},{"categories":["教程"],"collections":["OpenClaw"],"content":"2.2 飞书消息渠道配置 ◆ Select channel (QuickStart) │ ○ Telegram (Bot API) │ ○ WhatsApp (QR link) (not linked) │ ○ Discord (Bot API) │ ○ IRC (Server + Nick) │ ○ Google Chat (Chat API) │ ○ Slack (Socket Mode) │ ○ Signal (signal-cli) │ ○ iMessage (imsg) │ ● Feishu/Lark (飞书) │ ○ Nostr (NIP-04 DMs) │ ○ Microsoft Teams (Bot Framework) │ ○ Mattermost (plugin) │ ○ Nextcloud Talk (self-hosted) │ ○ Matrix (plugin) │ ○ BlueBubbles (macOS app) │ ○ LINE (Messaging API) │ ○ Zalo (Bot API) │ ○ Zalo (Personal Account) │ ○ Synology Chat (Webhook) │ ○ Tlon (Urbit) │ ○ Skip for now 因为本文以飞书为例，所以就使用飞书作为消息渠道。这里先不急选择飞书，我们在网页端完成飞书平台的配置。 以下内容来自飞书 - OpenClaw 1. 打开飞书开放平台 访问 飞书开放平台，使用飞书账号登录。选择创建企业自建应用，填写应用名称和描述，选择应用图标。 2. 获取应用凭证 在应用的 凭证与基础信息 页面，复制： App ID（格式如 cli_xxx） App Secret 请妥善保管 App Secret，不要分享给他人。 3. 配置应用权限 在 权限管理 页面，点击 批量导入 按钮，粘贴以下 JSON 配置一键导入所需权限： 4. 启用机器人能力 在 应用能力 \u0026gt; 机器人 页面： 开启机器人能力 配置机器人名称 此时来到 OpenClaw 配置处，选择飞书渠道，然后系统会自动安装飞书插件，待安装完成后提示输入，顺序不要搞反！ App Secret App ID 配置完成后会来到技能页面的选择，此时我们回到飞书配置处。 5. 配置事件订阅 重要 ⚠️ 重要提醒：在配置事件订阅前，请务必确保已完成以上步骤。 在 事件订阅 页面： 选择 使用长连接接收事件（WebSocket 模式） ③处添加事件：im.message.receive_v1（接收消息） 6. 发布应用 在 版本管理与发布 页面创建版本 提交审核并发布 等待管理员审批（企业自建应用通常自动通过） ","date":"2026-03-06","objectID":"/openclaw-feishu-setup/:3:2","tags":["OpenClaw","飞书","教程","AI"],"title":"OpenClaw 与飞书的搭建始末","uri":"/openclaw-feishu-setup/#3-配置应用权限"},{"categories":["教程"],"collections":["OpenClaw"],"content":"2.2 飞书消息渠道配置 ◆ Select channel (QuickStart) │ ○ Telegram (Bot API) │ ○ WhatsApp (QR link) (not linked) │ ○ Discord (Bot API) │ ○ IRC (Server + Nick) │ ○ Google Chat (Chat API) │ ○ Slack (Socket Mode) │ ○ Signal (signal-cli) │ ○ iMessage (imsg) │ ● Feishu/Lark (飞书) │ ○ Nostr (NIP-04 DMs) │ ○ Microsoft Teams (Bot Framework) │ ○ Mattermost (plugin) │ ○ Nextcloud Talk (self-hosted) │ ○ Matrix (plugin) │ ○ BlueBubbles (macOS app) │ ○ LINE (Messaging API) │ ○ Zalo (Bot API) │ ○ Zalo (Personal Account) │ ○ Synology Chat (Webhook) │ ○ Tlon (Urbit) │ ○ Skip for now 因为本文以飞书为例，所以就使用飞书作为消息渠道。这里先不急选择飞书，我们在网页端完成飞书平台的配置。 以下内容来自飞书 - OpenClaw 1. 打开飞书开放平台 访问 飞书开放平台，使用飞书账号登录。选择创建企业自建应用，填写应用名称和描述，选择应用图标。 2. 获取应用凭证 在应用的 凭证与基础信息 页面，复制： App ID（格式如 cli_xxx） App Secret 请妥善保管 App Secret，不要分享给他人。 3. 配置应用权限 在 权限管理 页面，点击 批量导入 按钮，粘贴以下 JSON 配置一键导入所需权限： 4. 启用机器人能力 在 应用能力 \u0026gt; 机器人 页面： 开启机器人能力 配置机器人名称 此时来到 OpenClaw 配置处，选择飞书渠道，然后系统会自动安装飞书插件，待安装完成后提示输入，顺序不要搞反！ App Secret App ID 配置完成后会来到技能页面的选择，此时我们回到飞书配置处。 5. 配置事件订阅 重要 ⚠️ 重要提醒：在配置事件订阅前，请务必确保已完成以上步骤。 在 事件订阅 页面： 选择 使用长连接接收事件（WebSocket 模式） ③处添加事件：im.message.receive_v1（接收消息） 6. 发布应用 在 版本管理与发布 页面创建版本 提交审核并发布 等待管理员审批（企业自建应用通常自动通过） ","date":"2026-03-06","objectID":"/openclaw-feishu-setup/:3:2","tags":["OpenClaw","飞书","教程","AI"],"title":"OpenClaw 与飞书的搭建始末","uri":"/openclaw-feishu-setup/#4-启用机器人能力"},{"categories":["教程"],"collections":["OpenClaw"],"content":"2.2 飞书消息渠道配置 ◆ Select channel (QuickStart) │ ○ Telegram (Bot API) │ ○ WhatsApp (QR link) (not linked) │ ○ Discord (Bot API) │ ○ IRC (Server + Nick) │ ○ Google Chat (Chat API) │ ○ Slack (Socket Mode) │ ○ Signal (signal-cli) │ ○ iMessage (imsg) │ ● Feishu/Lark (飞书) │ ○ Nostr (NIP-04 DMs) │ ○ Microsoft Teams (Bot Framework) │ ○ Mattermost (plugin) │ ○ Nextcloud Talk (self-hosted) │ ○ Matrix (plugin) │ ○ BlueBubbles (macOS app) │ ○ LINE (Messaging API) │ ○ Zalo (Bot API) │ ○ Zalo (Personal Account) │ ○ Synology Chat (Webhook) │ ○ Tlon (Urbit) │ ○ Skip for now 因为本文以飞书为例，所以就使用飞书作为消息渠道。这里先不急选择飞书，我们在网页端完成飞书平台的配置。 以下内容来自飞书 - OpenClaw 1. 打开飞书开放平台 访问 飞书开放平台，使用飞书账号登录。选择创建企业自建应用，填写应用名称和描述，选择应用图标。 2. 获取应用凭证 在应用的 凭证与基础信息 页面，复制： App ID（格式如 cli_xxx） App Secret 请妥善保管 App Secret，不要分享给他人。 3. 配置应用权限 在 权限管理 页面，点击 批量导入 按钮，粘贴以下 JSON 配置一键导入所需权限： 4. 启用机器人能力 在 应用能力 \u0026gt; 机器人 页面： 开启机器人能力 配置机器人名称 此时来到 OpenClaw 配置处，选择飞书渠道，然后系统会自动安装飞书插件，待安装完成后提示输入，顺序不要搞反！ App Secret App ID 配置完成后会来到技能页面的选择，此时我们回到飞书配置处。 5. 配置事件订阅 重要 ⚠️ 重要提醒：在配置事件订阅前，请务必确保已完成以上步骤。 在 事件订阅 页面： 选择 使用长连接接收事件（WebSocket 模式） ③处添加事件：im.message.receive_v1（接收消息） 6. 发布应用 在 版本管理与发布 页面创建版本 提交审核并发布 等待管理员审批（企业自建应用通常自动通过） ","date":"2026-03-06","objectID":"/openclaw-feishu-setup/:3:2","tags":["OpenClaw","飞书","教程","AI"],"title":"OpenClaw 与飞书的搭建始末","uri":"/openclaw-feishu-setup/#5-配置事件订阅"},{"categories":["教程"],"collections":["OpenClaw"],"content":"2.2 飞书消息渠道配置 ◆ Select channel (QuickStart) │ ○ Telegram (Bot API) │ ○ WhatsApp (QR link) (not linked) │ ○ Discord (Bot API) │ ○ IRC (Server + Nick) │ ○ Google Chat (Chat API) │ ○ Slack (Socket Mode) │ ○ Signal (signal-cli) │ ○ iMessage (imsg) │ ● Feishu/Lark (飞书) │ ○ Nostr (NIP-04 DMs) │ ○ Microsoft Teams (Bot Framework) │ ○ Mattermost (plugin) │ ○ Nextcloud Talk (self-hosted) │ ○ Matrix (plugin) │ ○ BlueBubbles (macOS app) │ ○ LINE (Messaging API) │ ○ Zalo (Bot API) │ ○ Zalo (Personal Account) │ ○ Synology Chat (Webhook) │ ○ Tlon (Urbit) │ ○ Skip for now 因为本文以飞书为例，所以就使用飞书作为消息渠道。这里先不急选择飞书，我们在网页端完成飞书平台的配置。 以下内容来自飞书 - OpenClaw 1. 打开飞书开放平台 访问 飞书开放平台，使用飞书账号登录。选择创建企业自建应用，填写应用名称和描述，选择应用图标。 2. 获取应用凭证 在应用的 凭证与基础信息 页面，复制： App ID（格式如 cli_xxx） App Secret 请妥善保管 App Secret，不要分享给他人。 3. 配置应用权限 在 权限管理 页面，点击 批量导入 按钮，粘贴以下 JSON 配置一键导入所需权限： 4. 启用机器人能力 在 应用能力 \u0026gt; 机器人 页面： 开启机器人能力 配置机器人名称 此时来到 OpenClaw 配置处，选择飞书渠道，然后系统会自动安装飞书插件，待安装完成后提示输入，顺序不要搞反！ App Secret App ID 配置完成后会来到技能页面的选择，此时我们回到飞书配置处。 5. 配置事件订阅 重要 ⚠️ 重要提醒：在配置事件订阅前，请务必确保已完成以上步骤。 在 事件订阅 页面： 选择 使用长连接接收事件（WebSocket 模式） ③处添加事件：im.message.receive_v1（接收消息） 6. 发布应用 在 版本管理与发布 页面创建版本 提交审核并发布 等待管理员审批（企业自建应用通常自动通过） ","date":"2026-03-06","objectID":"/openclaw-feishu-setup/:3:2","tags":["OpenClaw","飞书","教程","AI"],"title":"OpenClaw 与飞书的搭建始末","uri":"/openclaw-feishu-setup/#6-发布应用"},{"categories":["教程"],"collections":["OpenClaw"],"content":"2.3 后续但重要的配置 此处 skill 技能等配置可以选择 skip 进行跳过，后面并一直选择默认即可。 ","date":"2026-03-06","objectID":"/openclaw-feishu-setup/:4:0","tags":["OpenClaw","飞书","教程","AI"],"title":"OpenClaw 与飞书的搭建始末","uri":"/openclaw-feishu-setup/#23-后续但重要的配置"},{"categories":["教程"],"collections":["OpenClaw"],"content":"2.3.1 大模型上下文大小配置 如果您使用的是自选大模型供应商，那么就需要来到 openclaw.json 配置大模型的上下文窗口和输出长度。 对于 Linux 和 win 用户，openclaw 配置文件存在于用户目录下，即： Linux \u0026ndash;\u0026raquo; /home/\u0026lt;username\u0026gt;/.openclaw/openclaw.json Win \u0026ndash;\u0026raquo; C:\\Users\\\u0026lt;username\u0026gt;\\.openclaw\\openclaw.json 找到我们的模型相关的配置，对于参数大模型供应商都有标注，像白山的 GLM5 上下文就是 200K，contextWindow 就修改为：200000，一般 maxTokens 此处可以默认，如果后续遇到龙爪输出卡住的情况，可以稍微增加。 修改完成后保存： 因为当我们在 2.2 处配置结束后，OpenClaw 就会默认启动，我们这里修改了大模型的配置信息，需要重启一次 OpenClaw： openclaw gateway restart 更多内容参考官方 install 部分。 ","date":"2026-03-06","objectID":"/openclaw-feishu-setup/:4:1","tags":["OpenClaw","飞书","教程","AI"],"title":"OpenClaw 与飞书的搭建始末","uri":"/openclaw-feishu-setup/#231-大模型上下文大小配置"},{"categories":["教程"],"collections":["OpenClaw"],"content":"2.3.2 OpenClaw 系统指令操作权限 如果你刚使用它，让它查看系统内存占用等，他会发你相应的命令或者回你\u0026quot;我无法直接操作系统指令\u0026quot;。这是因为 OpenClaw（应该是默认）将操作终端的权限关掉了。 写入如下配置，并重启 OpenClaw： # 请注意自己的配置文件位置 sed -i \u0026#39;s/\u0026#34;profile\u0026#34;: \u0026#34;messaging\u0026#34;/\u0026#34;profile\u0026#34;: \u0026#34;full\u0026#34;/\u0026#39; ~/.openclaw/openclaw.json # 重启 OpenClaw openclaw gateway restart 重启后，OpenClaw 就拥有执行系统指令的权限了。 到这里，你应该可以从飞书唤醒 OpenClaw 了，恭喜你，尽情的使用吧。 我要把 OpenClaw 夸成翘嘴 ","date":"2026-03-06","objectID":"/openclaw-feishu-setup/:4:2","tags":["OpenClaw","飞书","教程","AI"],"title":"OpenClaw 与飞书的搭建始末","uri":"/openclaw-feishu-setup/#232-openclaw-系统指令操作权限"},{"categories":["随笔"],"collections":["OpenClaw"],"content":"skill，自动更新博客测试成功 ","date":"2026-03-06","objectID":"/openclaw-skill-%E6%B5%8B%E8%AF%95/:0:0","tags":["OpenClaw","Skill","测试"],"title":"openclaw 的 skill 测试","uri":"/openclaw-skill-%E6%B5%8B%E8%AF%95/#"},{"categories":["测试"],"collections":["OpenClaw"],"content":"测试通过 OpenClaw 自动更新博客文章的功能","date":"2026-03-06","objectID":"/test-openclaw-auto-update/","tags":["OpenClaw","测试","自动化"],"title":"测试 OpenClaw 自动更新博客","uri":"/test-openclaw-auto-update/"},{"categories":["测试"],"collections":["OpenClaw"],"content":"这是一篇测试文章，用于验证 OpenClaw 自动更新博客的功能。 ","date":"2026-03-06","objectID":"/test-openclaw-auto-update/:0:0","tags":["OpenClaw","测试","自动化"],"title":"测试 OpenClaw 自动更新博客","uri":"/test-openclaw-auto-update/#"},{"categories":["测试"],"collections":["OpenClaw"],"content":"测试内容 通过 OpenClaw 的自动化能力，我们可以： ✅ 自动创建博客文章 ✅ 自动配置评论功能 ✅ 自动提交到 Git 仓库 ✅ 触发 GitHub Actions 自动部署 ","date":"2026-03-06","objectID":"/test-openclaw-auto-update/:1:0","tags":["OpenClaw","测试","自动化"],"title":"测试 OpenClaw 自动更新博客","uri":"/test-openclaw-auto-update/#测试内容"},{"categories":["测试"],"collections":["OpenClaw"],"content":"评论测试 这篇文章开启了评论功能，测试评论系统是否正常工作。 ","date":"2026-03-06","objectID":"/test-openclaw-auto-update/:2:0","tags":["OpenClaw","测试","自动化"],"title":"测试 OpenClaw 自动更新博客","uri":"/test-openclaw-auto-update/#评论测试"},{"categories":["测试"],"collections":["OpenClaw"],"content":"总结 如果能看到这篇文章，说明自动化流程工作正常！🎉 ","date":"2026-03-06","objectID":"/test-openclaw-auto-update/:3:0","tags":["OpenClaw","测试","自动化"],"title":"测试 OpenClaw 自动更新博客","uri":"/test-openclaw-auto-update/#总结"},{"categories":[],"collections":null,"content":"西塘共享资源库定位 西塘的OD共享资源库，此位置为资源的定位信息 不定期更新中 ","date":"2025-09-08","objectID":"/tangfiles/:0:0","tags":[],"title":"Index","uri":"/tangfiles/#西塘共享资源库定位"},{"categories":[],"collections":null,"content":"塘の选图 ","date":"2025-09-08","objectID":"/tangfiles/:1:0","tags":[],"title":"Index","uri":"/tangfiles/#塘の选图"},{"categories":[],"collections":null,"content":"塘优APP 软件名 描述 链接 xshell8 不仅仅是一个ssh终端工具 xftp8 Linux_Reader 双系统文件互传，win端读取linux分区工具 Linux_Reader typora旧版 上手入门极简的基础markdown文本编辑器 typora Vmware15.5Pro 支持win11 typora ","date":"2025-09-08","objectID":"/tangfiles/:2:0","tags":[],"title":"Index","uri":"/tangfiles/#塘优app"},{"categories":[],"collections":null,"content":"塘的资料 资料名 描述 链接 2024具身智能图谱 - 2024具身智能图谱 SU7u_gazebo模型 ros2 gazebo su7u模型，实现你开su7u的梦想 su7u ","date":"2025-09-08","objectID":"/tangfiles/:3:0","tags":[],"title":"Index","uri":"/tangfiles/#塘的资料"},{"categories":[],"collections":null,"content":"系统镜像 镜像名 描述 链接 Ubuntu20.04 amd64 Ubuntu Win11 Win11 24h2系统镜像 win11 ","date":"2025-09-08","objectID":"/tangfiles/:4:0","tags":[],"title":"Index","uri":"/tangfiles/#系统镜像"},{"categories":["Ubuntu"],"collections":null,"content":"虚拟机安装px4环境配置 ","date":"2025-07-29","objectID":"/ubt20_px4/:0:0","tags":["Ubuntu20","PX4"],"title":"虚拟机Ubuntu20配置px4相关环境","uri":"/ubt20_px4/#"},{"categories":["Ubuntu"],"collections":null,"content":"安装和配置PX4 github clone源码，此处需要代理 [Linux 开启与关闭代理] 代理的相关命令 # 开启代理 export http_proxy=http://IP:PORT export https_proxy=http://IP:PORT # 关闭代理 unset http_proxy unset https_proxy git clone https://github.com/PX4/PX4-Autopilot.git --recursive 成功后，进入文件夹继续下载组件 cd PX4-Autopilot/ git submodule update --init --recursive bash ./Tools/setup/ubuntu.sh # !!！reboot 重启机器 测试编译px4 make px4_sitl_default gazebo ","date":"2025-07-29","objectID":"/ubt20_px4/:0:1","tags":["Ubuntu20","PX4"],"title":"虚拟机Ubuntu20配置px4相关环境","uri":"/ubt20_px4/#安装和配置px4"},{"categories":["Ubuntu"],"collections":null,"content":"安装mavros 编译成功显示gazebo后，退出。并安装mavros sudo apt-get install ros-noetic-mavros* 测试，并解决报错问题 roslaunch mavros px4.launch # 报错解决 sudo /opt/ros/noetic/lib/mavros/install_geographiclib_datasets.sh ","date":"2025-07-29","objectID":"/ubt20_px4/:0:2","tags":["Ubuntu20","PX4"],"title":"虚拟机Ubuntu20配置px4相关环境","uri":"/ubt20_px4/#安装mavros"},{"categories":["Ubuntu"],"collections":null,"content":"切换PX4版本 成功后切换PX4版本至工程需要的版本 我这里配置工程 ego visual, 需要版本为1.12.3 git checkout v1.12.3 git submodule update --init --recursive 安装jdk8, 并切换版本 sudo apt install openjdk-8-jdk sudo update-alternatives --config java # 选择Java 8 的指令 rm -rf Tools/jMAVSim/out 编译jmavsim make clean make px4_sitl_default jmavsim ","date":"2025-07-29","objectID":"/ubt20_px4/:0:3","tags":["Ubuntu20","PX4"],"title":"虚拟机Ubuntu20配置px4相关环境","uri":"/ubt20_px4/#切换px4版本"},{"categories":["Ubuntu"],"collections":null,"content":"安装QGC 根据官网提示安装 QGC ","date":"2025-07-29","objectID":"/ubt20_px4/:0:4","tags":["Ubuntu20","PX4"],"title":"虚拟机Ubuntu20配置px4相关环境","uri":"/ubt20_px4/#安装qgc"},{"categories":["无人机"],"collections":null,"content":"鲁班猫Cat5V2开发板，或者指鲁班猫Linux系列开发板40pin接口（树莓派同款接口），默认为复用关闭状态，所以要使用指定功能需要配置复用 ⛏ 官方链接 其中串口的引脚关系如下表所示 串口 引脚 功能 TXD 8 发送信号线 RXD 10 接受信号线 对应实物的40pin接口 ","date":"2025-07-16","objectID":"/lubancat_px4uart/:0:0","tags":["UAV","lubanCat"],"title":"【无人机】鲁班猫Cat5V2与PX4飞控的通信篇","uri":"/lubancat_px4uart/#"},{"categories":["无人机"],"collections":null,"content":"使能串口 #进入工具配置 sudo fire-config 移动到外设选项，我这里使用的串口将所有uart相关的都选择上，确认重启即可 ","date":"2025-07-16","objectID":"/lubancat_px4uart/:0:1","tags":["UAV","lubanCat"],"title":"【无人机】鲁班猫Cat5V2与PX4飞控的通信篇","uri":"/lubancat_px4uart/#使能串口"},{"categories":["无人机"],"collections":null,"content":"额外修改 因为要与PX4飞控进行通信，飞控端设置的通信频率为921600，所以板载端也要同样修改。官方指定中没用我们的板子，可能太新未来的及更新？通过检查使用的是S1 LubanCat-Zero系列使用的是ttyS8 LubanCat-1系列和LubanCat-2系列使用的是ttyS3 为了保持频率相同，需要修改ttyS1频率 #在板卡的终端执行如下命令 查询频率 stty -F /dev/ttyS1 #设置通讯速率，其中ispeed为输入速率，ospeed为输出速率 stty -F /dev/ttyS1 ispeed 921600 ospeed 921600 使用cat命令检查是否有信息接收（虽然是乱码） 修改 mavros 下的 px4. launch, 将串口修改为 /dev/ttyS1 ","date":"2025-07-16","objectID":"/lubancat_px4uart/:0:2","tags":["UAV","lubanCat"],"title":"【无人机】鲁班猫Cat5V2与PX4飞控的通信篇","uri":"/lubancat_px4uart/#额外修改"},{"categories":["百记"],"collections":null,"content":"一篇完整的git命令使用教程 记得很久以前，大概两年左右吧，为了方便自己查阅以及实验室朋友们的使用，搓了一篇git使用教程，很惭愧它特别的粗糙，并且还躺在我的blog里，现在作为gitee/github专业单词拼写专家，还是想精细化这个教程，同样是为了自己查阅，还有方便搜索到的朋友查看。 ","date":"2025-07-12","objectID":"/git_use/:0:0","tags":["git"],"title":"GIT使用教程 通关版","uri":"/git_use/#"},{"categories":["百记"],"collections":null,"content":"前提 前提条件 拥有一个gitee/github账号 会创建一个基础的仓库 Linux/Win下已经安装了git，并且Win下知道右键打开Git Bash ","date":"2025-07-12","objectID":"/git_use/:0:1","tags":["git"],"title":"GIT使用教程 通关版","uri":"/git_use/#前提"},{"categories":["百记"],"collections":null,"content":"新建仓库 首先，你需要在gitee/github上新建一个仓库，新建好后不要着急退出。会看到类似于这样的代码块 echo \u0026#34;# testgit\u0026#34; \u0026gt;\u0026gt; README.md git init git add README.md git commit -m \u0026#34;first commit\u0026#34; git branch -M main git remote add origin git@github.com:sheetung/testgit.git git push -u origin main #…or push an existing repository from the command line git remote add origin git@github.com:sheetung/testgit.git git branch -M main git push -u origin main 这里给出了一个使用SSH的基础的连接操作其实也就这么多操作，接下来来到电脑端，我使用的是Ubuntu，Win下一样 ","date":"2025-07-12","objectID":"/git_use/:0:2","tags":["git"],"title":"GIT使用教程 通关版","uri":"/git_use/#新建仓库"},{"categories":["百记"],"collections":null,"content":"添加SSH公钥 当然使用http远程管理仓库也是可行的，方法更简单。这里使用SSH是为了专业 首先不管是Linux还是Win，均可使用相同的命令生成SSH Key，命令后回车三次 # -t key 类型 -C 注释,随意可以是 计算机名，你的名字，Email... ssh-keygen -t rsa -C \u0026#34;email\u0026#34; 生成后，有类似如下显示 ubt@ubt:~$ ssh-keygen -t rsa -C \u0026#34;email\u0026#34; Generating public/private rsa key pair. Enter file in which to save the key (/home/ubt/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ubt/.ssh/id_rsa Your public key has been saved in /home/ubt/.ssh/id_rsa.pub The key fingerprint is: SHA256:0fefZMlW9pYVBnOZ3urEl6yMzyCjtzvM8UivXkYvtCQ email The key\u0026#39;s randomart image is: +---[RSA 3072]----+ | o.+o| | . +o.| | . . . . =| | . . ..oB| | SE + .oO+| | o= o B=o| | +o=*o+.o.| | .*=++o. | | .o== .o | +----[SHA256]-----+ 可见，Linux下SSH保存在/home/ubt/.ssh/id_rsa.pub内 # cat copy cat /home/ubt/.ssh/id_rsa.pub Win则保存在C盘用户\u0026gt;用户名\u0026gt;.ssh(隐藏文件夹)下，可直接用记事本打开 将复制好的SSH Key，来到gitee/github的设置页面，找到SSH 公钥粘贴进去即可 ","date":"2025-07-12","objectID":"/git_use/:0:3","tags":["git"],"title":"GIT使用教程 通关版","uri":"/git_use/#添加ssh公钥"},{"categories":["百记"],"collections":null,"content":"初始化仓库 在工程内打开终端，Win下右键打开Git Bash 首先配置你的git config git config --global user.name “你的名字” git config --global user.email \u0026#34;注册的邮箱\u0026#34; 仓库初始化 git init # 如果已有文件或者不需要readme可不执行这一步 echo \u0026#34;# testgit\u0026#34; \u0026gt;\u0026gt; README.md git add README.md # 推送三件套,三件套中不包括git remote # git add 也可以单个文件或者文件夹添加，--\u0026gt;baidu git add . git commit -m \u0026#34;first commit\u0026#34; git remote add origin ******.git # -u 第一次的参数 以后只需 git push origin main 此处gitee是master git push -u origin main 此时不出意外已经完成了仓库的推送，刷新你的仓库即可看到文件 ","date":"2025-07-12","objectID":"/git_use/:0:4","tags":["git"],"title":"GIT使用教程 通关版","uri":"/git_use/#初始化仓库"},{"categories":["百记"],"collections":null,"content":"同步远程仓库 如果已经拥有一个仓库，需要本地同步，那就这样这样这样 # 初始化本地仓库 git init # 链接远程仓库 git remote add origin ******.git # pull远程仓库的main分支 git pull origin main ","date":"2025-07-12","objectID":"/git_use/:0:5","tags":["git"],"title":"GIT使用教程 通关版","uri":"/git_use/#同步远程仓库"},{"categories":["百记"],"collections":null,"content":"仓库提交三件套 # 一般情况下，可以对所有文件进行直接提交，三件套如下 git add . git commit -m \u0026#34;[M]:又掉了一根头发\u0026#34; git push origin main ","date":"2025-07-12","objectID":"/git_use/:0:6","tags":["git"],"title":"GIT使用教程 通关版","uri":"/git_use/#仓库提交三件套"},{"categories":["百记"],"collections":null,"content":"git相关知识点 git remote删除本地对应的远程地址 #查看远程 git remote -v # 删除并重建 git remote remove origin # 重建，建议使用ssh密钥 git remote add origin git@***.com:******.git push忽略 .gitignore，放入不想上传的文件或者文件夹，例如编译产生的build文件，与工程无关的测试文件等 git commit规范化 当然，开心就好，这个随意 git commit -m \u0026quot;[M]:update...\u0026quot; ??：表示未被 Git 跟踪的新文件（Untracked files）。 A：表示新添加到暂存区（staged）的文件（Added）。 M：表示文件被修改了（Modified）。 D：表示文件被删除了（Deleted）。 R：表示文件被重命名了（Renamed）。 C：表示文件复制了一份（Copied）。 U：表示文件在合并时发生了冲突（Unmerged）。 分支的提交与合并 将本地的 tabbar 分支进行本地的 commit 提交： git add . git commit -m \u0026#34;完成了 tabBar 的开发\u0026#34; 将本地的 tabbar 分支推送到远程仓库进行保存： git push -u origin tabbar 将本地的 tabbar 分支合并到本地的 master 分支： git checkout master git merge tabbar 删除本地的 tabbar 分支： git branch -d tabbar git版本的切换 1.查看历史版本 可以在仓库中或者使用命令 git log 查看 2.然后切换到指定版本 git checkout [ID] 3.如果不放心使用 git branch 查看当前本地分支 ","date":"2025-07-12","objectID":"/git_use/:0:7","tags":["git"],"title":"GIT使用教程 通关版","uri":"/git_use/#git相关知识点"},{"categories":["百记"],"collections":null,"content":"git相关知识点 git remote删除本地对应的远程地址 #查看远程 git remote -v # 删除并重建 git remote remove origin # 重建，建议使用ssh密钥 git remote add origin git@***.com:******.git push忽略 .gitignore，放入不想上传的文件或者文件夹，例如编译产生的build文件，与工程无关的测试文件等 git commit规范化 当然，开心就好，这个随意 git commit -m \u0026quot;[M]:update...\u0026quot; ??：表示未被 Git 跟踪的新文件（Untracked files）。 A：表示新添加到暂存区（staged）的文件（Added）。 M：表示文件被修改了（Modified）。 D：表示文件被删除了（Deleted）。 R：表示文件被重命名了（Renamed）。 C：表示文件复制了一份（Copied）。 U：表示文件在合并时发生了冲突（Unmerged）。 分支的提交与合并 将本地的 tabbar 分支进行本地的 commit 提交： git add . git commit -m \u0026#34;完成了 tabBar 的开发\u0026#34; 将本地的 tabbar 分支推送到远程仓库进行保存： git push -u origin tabbar 将本地的 tabbar 分支合并到本地的 master 分支： git checkout master git merge tabbar 删除本地的 tabbar 分支： git branch -d tabbar git版本的切换 1.查看历史版本 可以在仓库中或者使用命令 git log 查看 2.然后切换到指定版本 git checkout [ID] 3.如果不放心使用 git branch 查看当前本地分支 ","date":"2025-07-12","objectID":"/git_use/:0:7","tags":["git"],"title":"GIT使用教程 通关版","uri":"/git_use/#git-remote删除本地对应的远程地址"},{"categories":["百记"],"collections":null,"content":"git相关知识点 git remote删除本地对应的远程地址 #查看远程 git remote -v # 删除并重建 git remote remove origin # 重建，建议使用ssh密钥 git remote add origin git@***.com:******.git push忽略 .gitignore，放入不想上传的文件或者文件夹，例如编译产生的build文件，与工程无关的测试文件等 git commit规范化 当然，开心就好，这个随意 git commit -m \u0026quot;[M]:update...\u0026quot; ??：表示未被 Git 跟踪的新文件（Untracked files）。 A：表示新添加到暂存区（staged）的文件（Added）。 M：表示文件被修改了（Modified）。 D：表示文件被删除了（Deleted）。 R：表示文件被重命名了（Renamed）。 C：表示文件复制了一份（Copied）。 U：表示文件在合并时发生了冲突（Unmerged）。 分支的提交与合并 将本地的 tabbar 分支进行本地的 commit 提交： git add . git commit -m \u0026#34;完成了 tabBar 的开发\u0026#34; 将本地的 tabbar 分支推送到远程仓库进行保存： git push -u origin tabbar 将本地的 tabbar 分支合并到本地的 master 分支： git checkout master git merge tabbar 删除本地的 tabbar 分支： git branch -d tabbar git版本的切换 1.查看历史版本 可以在仓库中或者使用命令 git log 查看 2.然后切换到指定版本 git checkout [ID] 3.如果不放心使用 git branch 查看当前本地分支 ","date":"2025-07-12","objectID":"/git_use/:0:7","tags":["git"],"title":"GIT使用教程 通关版","uri":"/git_use/#push忽略"},{"categories":["百记"],"collections":null,"content":"git相关知识点 git remote删除本地对应的远程地址 #查看远程 git remote -v # 删除并重建 git remote remove origin # 重建，建议使用ssh密钥 git remote add origin git@***.com:******.git push忽略 .gitignore，放入不想上传的文件或者文件夹，例如编译产生的build文件，与工程无关的测试文件等 git commit规范化 当然，开心就好，这个随意 git commit -m \u0026quot;[M]:update...\u0026quot; ??：表示未被 Git 跟踪的新文件（Untracked files）。 A：表示新添加到暂存区（staged）的文件（Added）。 M：表示文件被修改了（Modified）。 D：表示文件被删除了（Deleted）。 R：表示文件被重命名了（Renamed）。 C：表示文件复制了一份（Copied）。 U：表示文件在合并时发生了冲突（Unmerged）。 分支的提交与合并 将本地的 tabbar 分支进行本地的 commit 提交： git add . git commit -m \u0026#34;完成了 tabBar 的开发\u0026#34; 将本地的 tabbar 分支推送到远程仓库进行保存： git push -u origin tabbar 将本地的 tabbar 分支合并到本地的 master 分支： git checkout master git merge tabbar 删除本地的 tabbar 分支： git branch -d tabbar git版本的切换 1.查看历史版本 可以在仓库中或者使用命令 git log 查看 2.然后切换到指定版本 git checkout [ID] 3.如果不放心使用 git branch 查看当前本地分支 ","date":"2025-07-12","objectID":"/git_use/:0:7","tags":["git"],"title":"GIT使用教程 通关版","uri":"/git_use/#git-commit规范化"},{"categories":["百记"],"collections":null,"content":"git相关知识点 git remote删除本地对应的远程地址 #查看远程 git remote -v # 删除并重建 git remote remove origin # 重建，建议使用ssh密钥 git remote add origin git@***.com:******.git push忽略 .gitignore，放入不想上传的文件或者文件夹，例如编译产生的build文件，与工程无关的测试文件等 git commit规范化 当然，开心就好，这个随意 git commit -m \u0026quot;[M]:update...\u0026quot; ??：表示未被 Git 跟踪的新文件（Untracked files）。 A：表示新添加到暂存区（staged）的文件（Added）。 M：表示文件被修改了（Modified）。 D：表示文件被删除了（Deleted）。 R：表示文件被重命名了（Renamed）。 C：表示文件复制了一份（Copied）。 U：表示文件在合并时发生了冲突（Unmerged）。 分支的提交与合并 将本地的 tabbar 分支进行本地的 commit 提交： git add . git commit -m \u0026#34;完成了 tabBar 的开发\u0026#34; 将本地的 tabbar 分支推送到远程仓库进行保存： git push -u origin tabbar 将本地的 tabbar 分支合并到本地的 master 分支： git checkout master git merge tabbar 删除本地的 tabbar 分支： git branch -d tabbar git版本的切换 1.查看历史版本 可以在仓库中或者使用命令 git log 查看 2.然后切换到指定版本 git checkout [ID] 3.如果不放心使用 git branch 查看当前本地分支 ","date":"2025-07-12","objectID":"/git_use/:0:7","tags":["git"],"title":"GIT使用教程 通关版","uri":"/git_use/#分支的提交与合并"},{"categories":["百记"],"collections":null,"content":"git相关知识点 git remote删除本地对应的远程地址 #查看远程 git remote -v # 删除并重建 git remote remove origin # 重建，建议使用ssh密钥 git remote add origin git@***.com:******.git push忽略 .gitignore，放入不想上传的文件或者文件夹，例如编译产生的build文件，与工程无关的测试文件等 git commit规范化 当然，开心就好，这个随意 git commit -m \u0026quot;[M]:update...\u0026quot; ??：表示未被 Git 跟踪的新文件（Untracked files）。 A：表示新添加到暂存区（staged）的文件（Added）。 M：表示文件被修改了（Modified）。 D：表示文件被删除了（Deleted）。 R：表示文件被重命名了（Renamed）。 C：表示文件复制了一份（Copied）。 U：表示文件在合并时发生了冲突（Unmerged）。 分支的提交与合并 将本地的 tabbar 分支进行本地的 commit 提交： git add . git commit -m \u0026#34;完成了 tabBar 的开发\u0026#34; 将本地的 tabbar 分支推送到远程仓库进行保存： git push -u origin tabbar 将本地的 tabbar 分支合并到本地的 master 分支： git checkout master git merge tabbar 删除本地的 tabbar 分支： git branch -d tabbar git版本的切换 1.查看历史版本 可以在仓库中或者使用命令 git log 查看 2.然后切换到指定版本 git checkout [ID] 3.如果不放心使用 git branch 查看当前本地分支 ","date":"2025-07-12","objectID":"/git_use/:0:7","tags":["git"],"title":"GIT使用教程 通关版","uri":"/git_use/#git版本的切换"},{"categories":["百记"],"collections":null,"content":"简单但是功能完善的静态博客搭建教程，希望帮到你 ","date":"2025-07-11","objectID":"/build_hugo_blog/:0:0","tags":["Hugo","blog"],"title":"Hugo：零成本搭建一个带有评论和搜索系统的静态博客","uri":"/build_hugo_blog/#"},{"categories":["百记"],"collections":null,"content":"前提 搭建Hugo博客首先需要满足以下条件： 拥有一个GitHub账号 拥有一台服务器或者电脑也可以 额外：拥有一个域名用来做cname映射，非必需 注意 本文主要使用Ubuntu即Linux操作系统完成，win等其他系统在安装和使用上会略有不同。 win系统对于命令操作可以打开终端进行 按照本文教程结束后你将拥有一个前后端分离的Hugo静态博客以及Fixit主题，并且拥有搜索功能，评论功能，友链功能。 ","date":"2025-07-11","objectID":"/build_hugo_blog/:1:0","tags":["Hugo","blog"],"title":"Hugo：零成本搭建一个带有评论和搜索系统的静态博客","uri":"/build_hugo_blog/#前提"},{"categories":["百记"],"collections":null,"content":"Hugo博客系统搭建 ","date":"2025-07-11","objectID":"/build_hugo_blog/:2:0","tags":["Hugo","blog"],"title":"Hugo：零成本搭建一个带有评论和搜索系统的静态博客","uri":"/build_hugo_blog/#hugo博客系统搭建"},{"categories":["百记"],"collections":null,"content":"1. 安装 首先到Hugo官方下载满足系统要求的Hugo extended 版本，推荐在HugoReleases中下载指定版本，推荐最新版（图片仅为旧版截图未及时更换） v0.148.1, 我是使用树莓派安装的Ubuntu操作系统，所以我选择的是 hugo_extended_0.145.0_linux-arm64.deb 版本，教程中稍有不同。 下载后win系统需要解压使用，.deb 格式的Linux安装包需要使用命令 sudo dkpg -i hugo_extended_0.145.0_linux-arm64. deb 安装使用 安装完成后可以查看版本号验证是否安装成功, 如果有版本号返回代表安装成功 hugo version ","date":"2025-07-11","objectID":"/build_hugo_blog/:2:1","tags":["Hugo","blog"],"title":"Hugo：零成本搭建一个带有评论和搜索系统的静态博客","uri":"/build_hugo_blog/#1-安装"},{"categories":["百记"],"collections":null,"content":"2.创建你的第一个博客 Hugo提供了一个简单的指令来创建一个新的博客网站，找到一个合适的位置，my_website 可以修改为任意你期望的名字 hugo new site my_website cd my_website 当然此时已经搭建好了一个初始博客，但是还没有安装主题和写文章罢了，使用 hugo server 命令来本地浏览你的博客 # bind=0.0.0.0 用于指定服务器绑定的 IP 地址，可以让局域网内任意设备访问 hugo server --bind=0.0.0.0 然后打开你的浏览器输入 http://你的服务器IP:1313 来验证吧 ","date":"2025-07-11","objectID":"/build_hugo_blog/:2:2","tags":["Hugo","blog"],"title":"Hugo：零成本搭建一个带有评论和搜索系统的静态博客","uri":"/build_hugo_blog/#2创建你的第一个博客"},{"categories":["百记"],"collections":null,"content":"3. 安装主题 我这里使用的是 FixIt 主题，有着丰富的社交和评论系统支持，拥有扩展功能以及性能优越。使用git命令安装主题包，如果不会使用git可以看这篇教程或者手动下载。 # 可以直接克隆或者选择子模块方式二选一安装 #git clone https://github.com/hugo-fixit/FixIt.git themes/LoveIt git submodule add https://github.com/hugo-fixit/FixIt.git themes/LoveIt 提示 可以去官方手动下载稳定版 0.3.20 Source code即可，解压到theme文件夹下 ","date":"2025-07-11","objectID":"/build_hugo_blog/:2:3","tags":["Hugo","blog"],"title":"Hugo：零成本搭建一个带有评论和搜索系统的静态博客","uri":"/build_hugo_blog/#3-安装主题"},{"categories":["百记"],"collections":null,"content":"4. 主题基础配置 这里直接从你下载的主题内，即 theme/FixIt 下复制 hugo.toml 到博客目录下 hugo.toml, 或者直接复制其中内容覆盖 # your site 目录，使用命令复制配置文件 cp themes/FixIt/hugo.toml . 此时你的博客目录下就有了一个完整的配置文件，可以先将如下内容进行修改，使得博客为中文语言 baseURL = \u0026#34;http://example.org/\u0026#34; # 更改使用 Hugo 构建网站时使用的默认主题 theme = \u0026#34;FixIt\u0026#34; # 网站标题 title = \u0026#34;我的全新 Hugo 网站\u0026#34; # 网站语言, 仅在这里 CN 大写 [\u0026#34;en\u0026#34;, \u0026#34;zh-CN\u0026#34;, \u0026#34;fr\u0026#34;, \u0026#34;pl\u0026#34;, ...] languageCode = \u0026#34;zh-CN\u0026#34; # 语言名称 [\u0026#34;English\u0026#34;, \u0026#34;简体中文\u0026#34;, \u0026#34;Français\u0026#34;, \u0026#34;Polski\u0026#34;, ...] languageName = \u0026#34;简体中文\u0026#34; # 是否包括中日韩文字 hasCJKLanguage = true ","date":"2025-07-11","objectID":"/build_hugo_blog/:2:4","tags":["Hugo","blog"],"title":"Hugo：零成本搭建一个带有评论和搜索系统的静态博客","uri":"/build_hugo_blog/#4-主题基础配置"},{"categories":["百记"],"collections":null,"content":"5. 新建博客 hugo new content/posts/my-first-post.md ","date":"2025-07-11","objectID":"/build_hugo_blog/:2:5","tags":["Hugo","blog"],"title":"Hugo：零成本搭建一个带有评论和搜索系统的静态博客","uri":"/build_hugo_blog/#5-新建博客"},{"categories":[],"collections":null,"content":"sheetung的一个静态博客 静态好文明，等待我的博客部署在了阿里云到期了，转战静态，也尝试同步在静态更新帖子。 暂时使用的github.io，等西塘博客完全停摆之后部署服务器 ","date":"2025-07-09","objectID":"/about/:0:0","tags":[],"title":"About","uri":"/about/#"}]