<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>内容与自定义 on OINK 文档主题</title><link>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/</link><description>Recent content in 内容与自定义 on OINK 文档主题</description><generator>Hugo</generator><language>zh-CN</language><atom:link href="https://pgsty.github.io/oink.pgsty.com/zh/docs/content/index.xml" rel="self" type="application/rss+xml"/><item><title>Logo 与图片</title><link>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/iconsimages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/iconsimages/</guid><description>&lt;h2 id="add-your-logo"&gt;添加 Logo&lt;a class="td-heading-self-link" href="#add-your-logo" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;默认情况下，OINK 会在顶部导航栏起始位置（即最左侧）显示站点 Logo。把项目的 SVG
Logo 放在 &lt;code&gt;assets/icons/logo.svg&lt;/code&gt;，即可覆盖主题中的默认 Logo。&lt;/p&gt;
&lt;p&gt;如果不希望顶部导航栏显示 Logo，请在项目配置中把站点参数 &lt;code&gt;navbar_logo&lt;/code&gt; 设为
&lt;code&gt;false&lt;/code&gt;：&lt;/p&gt;
&lt;!-- markdownlint-disable no-shortcut-ref-link --&gt;
&lt;!-- prettier-ignore-start --&gt;





&lt;ul class="nav nav-tabs" id="tabs-0" role="tablist"&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link disabled" id="tabs-00-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-00" role="tab" aria-controls="tabs-00-00" aria-selected="false" disabled aria-disabled="true"&gt;配置文件：&lt;/button&gt;&lt;/li&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link active" id="tabs-00-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-01" role="tab" data-td-tp-persist="toml" aria-controls="tabs-00-01" aria-selected="true"&gt;hugo.toml&lt;/button&gt;&lt;/li&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link" id="tabs-00-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-02" role="tab" data-td-tp-persist="yaml" aria-controls="tabs-00-02" aria-selected="false"&gt;hugo.yaml&lt;/button&gt;&lt;/li&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link" id="tabs-00-03-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-03" role="tab" data-td-tp-persist="json" aria-controls="tabs-00-03" aria-selected="false"&gt;hugo.json&lt;/button&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;div class="tab-content" id="tabs-0-content"&gt;&lt;div class="tab-pane fade" id="tabs-00-00" role="tabpanel" aria-labelledby="tabs-00-00-tab" tabindex="0"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="tab-pane fade show active" id="tabs-00-01" role="tabpanel" aria-labelledby="tabs-00-01-tab" tabindex="0"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ui&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;navbar_logo&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="tab-pane fade" id="tabs-00-02" role="tabpanel" aria-labelledby="tabs-00-02-tab" tabindex="0"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;params&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ui&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;navbar_logo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="tab-pane fade" id="tabs-00-03" role="tabpanel" aria-labelledby="tabs-00-03-tab" tabindex="0"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;params&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;ui&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;navbar_logo&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;!-- prettier-ignore-end --&gt;
&lt;!-- markdownlint-enable no-shortcut-ref-link --&gt;
&lt;p&gt;Logo 样式的更多信息请参阅&lt;a href="https://pgsty.github.io/oink.pgsty.com/zh/docs/content/lookandfeel/#styling-your-project-logo-and-name"&gt;设置项目 Logo 与名称的样式&lt;/a&gt;。&lt;/p&gt;</description></item><item><title>代码仓库链接与页面信息</title><link>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/repository-links/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/repository-links/</guid><description>&lt;p&gt;OINK 的文档与博客布局可以显示指向当前页面源码仓库的链接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;查看页面源码&lt;/strong&gt;：打开源文件。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;编辑本页&lt;/strong&gt;：打开可编辑的源码视图。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;创建子页面&lt;/strong&gt;：在当前页面下新建文件，并可使用站点的
&lt;code&gt;assets/stubs/new-page-template.md&lt;/code&gt; 模板。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;创建文档 issue&lt;/strong&gt;：携带页面上下文，在文档仓库中创建 issue。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;创建项目 issue&lt;/strong&gt;：可选地把 issue 提交到另一个产品仓库。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;内置 URL 模式面向 GitHub 风格的代码仓库。如果使用其他兼容托管服务，请逐项验证；如果 URL 结构不同，应覆盖相应 partial。&lt;/p&gt;
&lt;h2 id="link-configuration"&gt;链接配置&lt;a class="td-heading-self-link" href="#link-configuration" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;典型站点配置如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;params&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;github_repo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;https://github.com/OWNER/DOCS&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;github_project_repo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;https://github.com/OWNER/PRODUCT&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;github_branch&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;main&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;github_subdir&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;site&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;当内容来自多个代码仓库时，可以在全局、单种语言、分区 cascade 或页面 front
matter 中设置这些值。&lt;/p&gt;
&lt;h3 id="github_repo"&gt;&lt;code&gt;github_repo&lt;/code&gt;&lt;a class="td-heading-self-link" href="#github_repo" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;文档源码仓库 URL。它用于生成查看、编辑、创建子页面和创建文档 issue 链接：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;params&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;github_repo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;https://github.com/pgsty/oink&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;省略后将隐藏从仓库派生的页面操作。如果页面源码实际位于消费站点，不要把它错误地指向主题仓库。&lt;/p&gt;
&lt;h3 id="github_subdir-optional"&gt;&lt;code&gt;github_subdir&lt;/code&gt;（可选）&lt;a class="td-heading-self-link" href="#github_subdir-optional" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;设置从仓库根目录到 Hugo 站点源码的路径。本项目把站点存放在 &lt;code&gt;oink.pgsty.com&lt;/code&gt; 中：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;params&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;github_subdir&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;oink.pgsty.com&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;该值是仓库内路径，不是本地绝对路径；除非内容目录就是实际站点根目录，否则也不能直接填写内容目录。&lt;/p&gt;</description></item><item><title>打印支持</title><link>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/print/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/print/</guid><description>&lt;p&gt;大多数浏览器都能很好地打印单篇文档，因为页面样式会从打印输出中移除导航外壳。&lt;/p&gt;
&lt;p&gt;有些站点适合启用“打印整节”功能（本用户指南就是如此）。选择后，系统会把当前顶层分区（本页所在的“内容与自定义”等）连同全部子页面和子分区渲染为适合打印的格式，并附上该分区的完整目录。&lt;/p&gt;
&lt;p&gt;要启用此功能，请在站点的 &lt;code&gt;hugo.toml&lt;/code&gt;、&lt;code&gt;hugo.yaml&lt;/code&gt; 或 &lt;code&gt;hugo.json&lt;/code&gt; 中，为
&lt;code&gt;section&lt;/code&gt; 类型添加 &lt;code&gt;print&lt;/code&gt; 输出格式：&lt;/p&gt;
&lt;!-- markdownlint-disable no-shortcut-ref-link --&gt;
&lt;!-- prettier-ignore-start --&gt;





&lt;ul class="nav nav-tabs" id="tabs-0" role="tablist"&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link disabled" id="tabs-00-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-00" role="tab" aria-controls="tabs-00-00" aria-selected="false" disabled aria-disabled="true"&gt;配置文件：&lt;/button&gt;&lt;/li&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link active" id="tabs-00-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-01" role="tab" data-td-tp-persist="toml" aria-controls="tabs-00-01" aria-selected="true"&gt;hugo.toml&lt;/button&gt;&lt;/li&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link" id="tabs-00-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-02" role="tab" data-td-tp-persist="yaml" aria-controls="tabs-00-02" aria-selected="false"&gt;hugo.yaml&lt;/button&gt;&lt;/li&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link" id="tabs-00-03-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-03" role="tab" data-td-tp-persist="json" aria-controls="tabs-00-03" aria-selected="false"&gt;hugo.json&lt;/button&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;div class="tab-content" id="tabs-0-content"&gt;&lt;div class="tab-pane fade" id="tabs-00-00" role="tabpanel" aria-labelledby="tabs-00-00-tab" tabindex="0"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="tab-pane fade show active" id="tabs-00-01" role="tabpanel" aria-labelledby="tabs-00-01-tab" tabindex="0"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;section&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;HTML&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;RSS&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;print&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="tab-pane fade" id="tabs-00-02" role="tabpanel" aria-labelledby="tabs-00-02-tab" tabindex="0"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;section&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;HTML&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;RSS&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;print&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="tab-pane fade" id="tabs-00-03" role="tabpanel" aria-labelledby="tabs-00-03-tab" tabindex="0"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;outputs&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;section&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;HTML&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;RSS&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;print&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;!-- prettier-ignore-end --&gt;
&lt;!-- markdownlint-enable no-shortcut-ref-link --&gt;
&lt;p&gt;随后，站点右侧导航中会显示“打印整节”链接。&lt;/p&gt;</description></item><item><title>导航与菜单</title><link>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/navigation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/navigation/</guid><description>&lt;p&gt;OINK 把 Hugo 的内容树和菜单模型组织成一套文档工作台：全局导航栏、可折叠且可调整宽度的分区侧边栏，以及可折叠的页面大纲。同一套结构适用于英文、中文和从右向左书写的语言。&lt;/p&gt;
&lt;h2 id="site-navbar"&gt;站点导航栏&lt;a class="td-heading-self-link" href="#site-navbar" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;全局导航栏由 Hugo 的 &lt;code&gt;main&lt;/code&gt;
菜单与 OINK 自动生成的控件组成。根据配置和页面类型，其中可以显示版本、语言、颜色模式与搜索控件。&lt;/p&gt;
&lt;h3 id="adding-main-menu-entries"&gt;添加 &lt;code&gt;main&lt;/code&gt; 菜单项&lt;a class="td-heading-self-link" href="#adding-main-menu-entries" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;可以在页面 Front Matter 中定义菜单项：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;文档&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;linkTitle&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;文档&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;menu&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pre&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;&amp;lt;i class=&amp;#34;fa-solid fa-book&amp;#34; aria-hidden=&amp;#34;true&amp;#34;&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;权重越小，位置越靠前。站点级外部链接写法类似：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;menus&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;GitHub&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;identifier&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;github&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;50&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;https://github.com/pgsty/oink&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pre&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;&amp;lt;i class=&amp;#34;fa-brands fa-github&amp;#34; aria-hidden=&amp;#34;true&amp;#34;&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;需要在配置中引用菜单项时，应为其设置 &lt;code&gt;identifier&lt;/code&gt;。&lt;code&gt;name&lt;/code&gt; 或 &lt;code&gt;linkTitle&lt;/code&gt;
可以按语言翻译，但标识符必须稳定。&lt;/p&gt;
&lt;h3 id="version-menu"&gt;版本菜单&lt;a class="td-heading-self-link" href="#version-menu" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;配置 &lt;code&gt;params.versions&lt;/code&gt;
后会显示版本选择器。条目可以表示标题、分隔线、正式版本、开发版本或站点变体：&lt;/p&gt;</description></item><item><title>短代码</title><link>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/shortcodes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/shortcodes/</guid><description>&lt;p&gt;短代码用于表达普通 Markdown 无法承载的行为。OINK 保留 Docsy 核心组件，并新增本地提供的图表、终端录像、信息图、轮播、卡片和折叠组件。浏览器运行时只在实际使用它们的页面加载。&lt;/p&gt;
&lt;p&gt;标题、正文、列表、链接、表格和图片应优先使用 Markdown。短代码一旦投入使用，就成为内容 API 的一部分：修改名称或参数可能破坏所有调用它的页面。&lt;/p&gt;
&lt;h2 id="shortcode-delimiters"&gt;短代码分隔符&lt;a class="td-heading-self-link" href="#shortcode-delimiters" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Hugo 支持两种形式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{{&amp;lt; name &amp;gt;}}&lt;/code&gt; 使用标准分隔符，原样传递内部内容；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{% name %}}&lt;/code&gt;
使用 Markdown 分隔符，在周围内容的上下文中渲染内部 Markdown。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;请采用各组件文档指定的形式。嵌套、缩进和空行都会影响结果，在列表和块引用中尤其如此。示例里的
&lt;code&gt;/* ... */&lt;/code&gt; 转义用于防止 Hugo 执行正在展示的短代码。&lt;/p&gt;
&lt;h2 id="blocks"&gt;&lt;code&gt;blocks/*&lt;/code&gt; 短代码 &lt;a id="shortcode-blocks"&gt;&lt;/a&gt;&lt;a class="td-heading-self-link" href="#blocks" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;块短代码用于组合全宽落地页。&lt;code&gt;color&lt;/code&gt;
参数使用 OINK/Bootstrap 语义颜色或项目自定义块样式，&lt;code&gt;height&lt;/code&gt;
参数接受各组件说明的取值。&lt;/p&gt;
&lt;h3 id="blocks-cover"&gt;&lt;code&gt;blocks/cover&lt;/code&gt; &lt;a id="blockscover"&gt;&lt;/a&gt;&lt;a class="td-heading-self-link" href="#blocks-cover" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;使用页面包中匹配 &lt;code&gt;*background*&lt;/code&gt; 的图片以及可选的 &lt;code&gt;*logo*&lt;/code&gt; 创建首屏：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{&amp;lt; blocks/cover title=&amp;#34;OINK&amp;#34; subtitle=&amp;#34;本地优先文档&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; color=&amp;#34;dark&amp;#34; height=&amp;#34;max&amp;#34; &amp;gt;}} [&lt;span class="nt"&gt;开始使用&lt;/span&gt;](&lt;span class="na"&gt;/zh/docs/get-started/&lt;/span&gt;){ .btn
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.btn-lg .btn-primary } {{&amp;lt; /blocks/cover &amp;gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;image_anchor&lt;/code&gt; 和 &lt;code&gt;logo_anchor&lt;/code&gt; 控制图片裁切位置，&lt;code&gt;byline&lt;/code&gt;
用于标注图片来源。高度可取 &lt;code&gt;auto&lt;/code&gt;、&lt;code&gt;min&lt;/code&gt;、&lt;code&gt;med&lt;/code&gt;、&lt;code&gt;max&lt;/code&gt; 或
&lt;code&gt;full&lt;/code&gt;。即使背景无法显示，首屏关键信息也必须保持可读。&lt;/p&gt;</description></item><item><title>分类法支持</title><link>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/taxonomy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/taxonomy/</guid><description>&lt;p&gt;OINK 在文档与博客分区中支持 Hugo
&lt;a href="https://gohugo.io/content-management/taxonomies/"&gt;分类法&lt;/a&gt;。本页既展示默认布局，也可以用来测试生成链接的行为。&lt;/p&gt;
&lt;h2 id="terminology"&gt;术语&lt;a class="td-heading-self-link" href="#terminology" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;使用分类法前，需要理解以下术语：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;分类法（Taxonomy）&lt;/strong&gt;：用于对内容进行分类的体系，例如标签、类别、项目、人物。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;术语（Term）&lt;/strong&gt;：分类法中的一个键。例如，在“项目”分类法中可以有“项目 A”和“项目 B”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;值（Value）&lt;/strong&gt;：分配给某个术语的一项内容，例如属于特定项目的站点页面。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hugo 文档提供了一个&lt;a href="https://gohugo.io/content-management/taxonomies/#example-taxonomy-movie-website"&gt;电影网站分类法示例&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id="parameters"&gt;参数&lt;a class="td-heading-self-link" href="#parameters" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;项目&lt;a href="https://gohugo.io/configuration/introduction/#configuration-file"&gt;配置文件&lt;/a&gt;中有多项参数可以控制分类法功能。Hugo 默认启用 &lt;code&gt;tags&lt;/code&gt; 与
&lt;code&gt;categories&lt;/code&gt; 分类法。要 &lt;strong&gt;禁用&lt;/strong&gt; 分类法，请在项目配置中添加：&lt;/p&gt;
&lt;!-- markdownlint-disable no-shortcut-ref-link --&gt;
&lt;!-- prettier-ignore-start --&gt;





&lt;ul class="nav nav-tabs" id="tabs-0" role="tablist"&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link disabled" id="tabs-00-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-00" role="tab" aria-controls="tabs-00-00" aria-selected="false" disabled aria-disabled="true"&gt;配置文件：&lt;/button&gt;&lt;/li&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link active" id="tabs-00-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-01" role="tab" data-td-tp-persist="toml" aria-controls="tabs-00-01" aria-selected="true"&gt;hugo.toml&lt;/button&gt;&lt;/li&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link" id="tabs-00-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-02" role="tab" data-td-tp-persist="yaml" aria-controls="tabs-00-02" aria-selected="false"&gt;hugo.yaml&lt;/button&gt;&lt;/li&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link" id="tabs-00-03-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-03" role="tab" data-td-tp-persist="json" aria-controls="tabs-00-03" aria-selected="false"&gt;hugo.json&lt;/button&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;div class="tab-content" id="tabs-0-content"&gt;&lt;div class="tab-pane fade" id="tabs-00-00" role="tabpanel" aria-labelledby="tabs-00-00-tab" tabindex="0"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="tab-pane fade show active" id="tabs-00-01" role="tabpanel" aria-labelledby="tabs-00-01-tab" tabindex="0"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;disableKinds&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;taxonomy&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="tab-pane fade" id="tabs-00-02" role="tabpanel" aria-labelledby="tabs-00-02-tab" tabindex="0"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;disableKinds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;taxonomy]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="tab-pane fade" id="tabs-00-03" role="tabpanel" aria-labelledby="tabs-00-03-tab" tabindex="0"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;disableKinds&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;taxonomy&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;!-- prettier-ignore-end --&gt;
&lt;!-- markdownlint-enable no-shortcut-ref-link --&gt;
&lt;p&gt;保持默认设置时，Hugo 会生成 &lt;code&gt;tags&lt;/code&gt; 与 &lt;code&gt;categories&lt;/code&gt;
的分类法页面。如果要使用其他分类法，需要在&lt;a href="https://gohugo.io/configuration/introduction/#configuration-file"&gt;配置文件&lt;/a&gt;中定义。如果希望自定义分类法与默认的
&lt;code&gt;tags&lt;/code&gt;、&lt;code&gt;categories&lt;/code&gt;
并存，也必须把默认分类法一并写入配置。每种分类法都需要提供单数与复数标签。&lt;/p&gt;</description></item><item><title>分析、用户反馈与 SEO</title><link>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/feedback/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/feedback/</guid><description>&lt;p&gt;OINK 默认不会连接分析、表单、评论或广告服务。这些集成属于站点决策：必须显式启用、记录数据边界，并根据用户与站点所在司法辖区提供必要的同意机制或政策说明。&lt;/p&gt;
&lt;h2 id="adding-analytics"&gt;添加分析&lt;a class="td-heading-self-link" href="#adding-analytics" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Hugo 为分析服务提供嵌入模板。站点配置 Google
Analytics 后，页面浏览量与自定义事件等浏览器使用信息会发送给 Google。这与完全网络隔离的运行环境不兼容，也可能不符合严格的同源内容安全策略（CSP）。&lt;/p&gt;
&lt;h3 id="setup"&gt;配置&lt;a class="td-heading-self-link" href="#setup" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;取得站点的 Google Analytics measurement ID，然后使用 Hugo 当前的服务配置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;googleAnalytics&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;G-YOUR-ID&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;不要同时设置已经弃用的顶层 &lt;code&gt;googleAnalytics&lt;/code&gt; 键。通常只有 Hugo &lt;code&gt;production&lt;/code&gt;
环境才会输出分析代码。发布前，请构建生产预览，并检查 HTML 与浏览器网络日志。&lt;/p&gt;
&lt;p&gt;禁用分析后，OINK 不会发起 Google
Analytics 请求。应彻底删除相关配置，而不是填写虚假 ID。&lt;/p&gt;
&lt;h2 id="user-feedback"&gt;用户反馈&lt;a class="td-heading-self-link" href="#user-feedback" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;OINK 可以在文档页底部显示“本页是否有帮助？”小组件。它提供 &lt;strong&gt;是&lt;/strong&gt; 与 &lt;strong&gt;否&lt;/strong&gt;
两个操作，随后显示配置好的响应；响应通常包含创建文档 issue 的链接。&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://pgsty.github.io/oink.pgsty.com/images/feedback.png"
 alt="页面询问内容是否有帮助，并提供“是”和“否”两个按钮。"/&gt;
 &lt;figcaption&gt;图 1：页面反馈组件&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;即使不启用分析，响应仍然可以发挥作用：它可以把读者引导到 issue 模板、讨论区、电子邮箱或站点自有的其他反馈渠道。只有站点配置了适当目标后，才会发生数据收集和事件上报。&lt;/p&gt;
&lt;h3 id="how-feedback-data-is-useful"&gt;反馈数据有什么用？&lt;a class="td-heading-self-link" href="#how-feedback-data-is-useful" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;应结合上下文理解反馈，不能把单一分数当作结论。访问量高且反复收到负面反馈的页面是值得优先复查的候选；高评分页面则可能揭示值得在其他页面验证的模式。&lt;/p&gt;
&lt;p&gt;应尽可能采用聚焦的编辑变更。例如，只更新一篇过时教程，或者把一小组页面的代码示例提前，然后在合适的时间范围内比较反馈。同时记录发布事件、流量变化、支持事件和其他可能解释变化的因素。&lt;/p&gt;
&lt;p&gt;反馈只能提供方向性证据，不能取代用户研究、无障碍评审、支持数据或技术验证。&lt;/p&gt;
&lt;h3 id="user-feedback-setup"&gt;配置&lt;a class="td-heading-self-link" href="#user-feedback-setup" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;OINK 默认关闭该小组件。请设置全局默认值，并配置本地化响应。英文配置如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;params&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ui&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;feedback&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;enable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;languages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;en&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;params&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ui&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;feedback&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;yes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;-&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; Glad to hear it! Please &amp;lt;a
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; href=&amp;#34;https://github.com/OWNER/REPOSITORY/issues/new&amp;#34;&amp;gt;tell us how we
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; can improve&amp;lt;/a&amp;gt;.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;no&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;-&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; Sorry to hear that. Please &amp;lt;a
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; href=&amp;#34;https://github.com/OWNER/REPOSITORY/issues/new&amp;#34;&amp;gt;tell us how we
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; can improve&amp;lt;/a&amp;gt;.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;简体中文字符串放在 &lt;code&gt;languages.zh.params&lt;/code&gt; 下：&lt;/p&gt;</description></item><item><title>搜索</title><link>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/search/</guid><description>&lt;p&gt;OINK 默认并推荐使用本地搜索。Hugo 会为每种语言生成独立索引；主题从同源资源提供 Lunr 及其 CJK 回退。站点无需公共爬虫、外部账户、CDN 或网络连接，即可完成构建和搜索。&lt;/p&gt;
&lt;p&gt;Google Custom Search 与 Algolia
DocSearch 仍作为兼容的在线集成保留。它们默认关闭；只有站点明确接受相应的外部请求、索引方式、可用性与隐私边界时，才应启用。&lt;/p&gt;
&lt;p&gt;同一时间只能启用一种搜索实现。&lt;/p&gt;
&lt;h2 id="local-search-with-lunr"&gt;使用 Lunr 的本地搜索&lt;a class="td-heading-self-link" href="#local-search-with-lunr" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;在 &lt;code&gt;hugo.yaml&lt;/code&gt; 中启用本地搜索：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;params&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;offlineSearch&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;不要同时配置 &lt;code&gt;gcs_engine_id&lt;/code&gt; 或
&lt;code&gt;params.search.algolia&lt;/code&gt;。生产构建完成后，输出中会为每种语言生成一个索引，例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;offline-search-index.en.json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;offline-search-index.zh.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;浏览器加载当前语言的索引，并在不离开页面的情况下显示结果。中文内容使用 OINK 的 CJK 回退，不依赖以空格分词。&lt;/p&gt;
&lt;h3 id="build-the-index-before-testing"&gt;测试前构建索引&lt;a class="td-heading-self-link" href="#build-the-index-before-testing" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;启动预览前先执行常规构建：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo --gc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo server --disableFastRender
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果索引变化时 server 已经在运行，请将其重启。对于子路径部署，请确认浏览器从配置的
&lt;code&gt;baseURL&lt;/code&gt; 下请求索引，而不是从域名根目录请求。&lt;/p&gt;
&lt;h3 id="configure-result-summaries-and-limits"&gt;配置结果摘要与数量限制&lt;a class="td-heading-self-link" href="#configure-result-summaries-and-limits" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;设置摘要长度和最大结果数：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;params&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;offlineSearch&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;offlineSearchSummaryLength&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;120&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;offlineSearchMaxResults&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;所选限制应确保搜索对话框在移动设备上保持流畅。摘要用于帮助发现内容，不能替代认真编写的页面描述。&lt;/p&gt;
&lt;h3 id="exclude-a-page"&gt;排除页面&lt;a class="td-heading-self-link" href="#exclude-a-page" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;在页面 front matter 中设置 &lt;code&gt;exclude_search: true&lt;/code&gt;：&lt;/p&gt;</description></item><item><title>添加内容</title><link>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/adding-content/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/adding-content/</guid><description>&lt;p&gt;OINK 沿用 Hugo 的内容模型：Markdown 承载信息，Front
Matter 保存页面元数据，布局则把二者渲染成静态站点。本指南说明随项目提供的中英双语样例站采用的内容约定。&lt;/p&gt;
&lt;h2 id="content-root-directory"&gt;内容根目录&lt;a class="td-heading-self-link" href="#content-root-directory" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;站点内容位于 &lt;code&gt;content/&lt;/code&gt; 目录下。多语言站点既可以分别使用
&lt;code&gt;content/en/&lt;/code&gt;、&lt;code&gt;content/zh/&lt;/code&gt;
等内容根目录，也可以在同一棵挂载目录中使用语言后缀。本仓库采用后一种形式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;content/docs/content/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── adding-content.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── adding-content.zh.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;英文文件是源页面，&lt;code&gt;.zh.md&lt;/code&gt;
文件是对应的简体中文译文。Hugo 解析语言后缀后，二者具有相同的逻辑路径。&lt;/p&gt;
&lt;p&gt;生成文件以及必须逐字节复制的文件不应放入内容树，而应放入
&lt;code&gt;static/&lt;/code&gt;；详见&lt;a href="https://pgsty.github.io/oink.pgsty.com/zh/docs/content/adding-content/#adding-static-content"&gt;添加静态内容&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id="content-sections-and-templates"&gt;内容分区与模板&lt;a class="td-heading-self-link" href="#content-sections-and-templates" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;内容根目录下的每个一级目录都是 Hugo 分区。OINK 提供以下布局：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docs&lt;/code&gt;：带分区树、目录、面包屑、上一篇/下一篇导航和仓库链接的文档页；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;blog&lt;/code&gt;：带日期、分类元数据、Feed 和时间倒序列表的文章页；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;community&lt;/code&gt;：展示项目与贡献者链接的社区页；&lt;/li&gt;
&lt;li&gt;默认页面：不显示文档侧边栏的落地页。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hugo 根据内容所属分区选择布局，因此 &lt;code&gt;content/docs/&lt;/code&gt; 下的页面会使用 &lt;code&gt;docs&lt;/code&gt;
布局。只有确实要复用其他分区布局时，才在 Front Matter 中设置 &lt;code&gt;type&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id="custom-sections"&gt;自定义分区&lt;a class="td-heading-self-link" href="#custom-sections" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;在内容根目录下新建目录；默认布局无法满足需求时，再为页面指定类型：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;架构决策&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;项目已经采纳的设计决策。&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;docs&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果某项行为适用于整个分区，应在 &lt;code&gt;_index.md&lt;/code&gt; 的 &lt;code&gt;cascade&lt;/code&gt;
中设置共享值，避免每页重复。只有现有 OINK 布局与 Partial 均不适用时，才在项目的
&lt;code&gt;layouts/&lt;/code&gt; 下新增布局。&lt;/p&gt;</description></item><item><title>图表与公式</title><link>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/diagrams-and-formulae/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/diagrams-and-formulae/</guid><description>&lt;p&gt;OINK 支持 KaTeX、Mermaid、Markmap、PlantUML 和 Diagrams.net。KaTeX、Mermaid 与 Markmap 使用构建期能力或主题随附的同源资源。PlantUML 和 Diagrams.net 编辑器需要显式配置服务端点；主题不会静默使用公共服务。&lt;/p&gt;
&lt;h2 id="latex-support-with-katex"&gt;使用 KaTeX 支持 LaTeX&lt;a class="td-heading-self-link" href="#latex-support-with-katex" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://katex.org/"&gt;KaTeX&lt;/a&gt;
可以在 Web 上渲染 TeX 数学公式。Hugo 内置的 KaTeX 支持可以在构建期间渲染公式，因此读者不需要连接远程数学服务。&lt;/p&gt;
&lt;h3 id="inline-formulae"&gt;行内公式&lt;a class="td-heading-self-link" href="#inline-formulae" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;行内公式使用 Goldmark 中配置的 passthrough 分隔符。条件允许时，应把公式前后的空格与标点留在公式之外。&lt;/p&gt;
&lt;h3 id="formulae-in-display-mode"&gt;独立显示公式&lt;a class="td-heading-self-link" href="#formulae-in-display-mode" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;使用 &lt;code&gt;math&lt;/code&gt; 代码块独立显示公式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;```math
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;E = mc^2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML" display="block"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;E = mc^2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class="katex-html" aria-hidden="true"&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.6833em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal" style="margin-right:0.05764em;"&gt;E&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace" style="margin-right:0.2778em;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut" style="height:0.8641em;"&gt;&lt;/span&gt;&lt;span class="mord mathnormal"&gt;m&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;c&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist" style="height:0.8641em;"&gt;&lt;span style="top:-3.113em;margin-right:0.05em;"&gt;&lt;span class="pstrut" style="height:2.7em;"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;h3 id="activating-katex-support"&gt;启用 KaTeX 支持&lt;a class="td-heading-self-link" href="#activating-katex-support" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;math&lt;/code&gt; 与 &lt;code&gt;chem&lt;/code&gt;
代码块会自动使用主题渲染钩子。对于行内公式和使用分隔符的公式，请启用 Goldmark 的
&lt;code&gt;passthrough&lt;/code&gt; 扩展，并设置适合站点的分隔符。随仓库提供的 &lt;code&gt;oink.pgsty.com&lt;/code&gt;
配置展示了方括号、双美元符号和圆括号分隔符。&lt;/p&gt;</description></item><item><title>外观与风格</title><link>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/lookandfeel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/lookandfeel/</guid><description>&lt;p&gt;OINK 在 Bootstrap 与 Docsy 基础上提供完整的视觉系统，并将字体、图标、样式和浏览器端代码全部本地化。使用方无需重建 Node 依赖树，就能通过设计变量和项目样式完成定制。&lt;/p&gt;
&lt;h2 id="project-styles"&gt;项目样式&lt;a class="td-heading-self-link" href="#project-styles" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Hugo Extended 通过 Hugo
Pipes 编译主题 SCSS。项目覆盖项会进入同一个资源包，因此生产构建可以对一份同源样式表完成压缩、指纹和完整性校验。&lt;/p&gt;
&lt;h3 id="project-style-files"&gt;项目样式文件&lt;a class="td-heading-self-link" href="#project-style-files" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;在站点的 &lt;code&gt;assets/scss/&lt;/code&gt; 目录中覆盖以下文件：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;文件&lt;/th&gt;
					&lt;th&gt;用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;_variables_project.scss&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;在 Bootstrap 与 OINK 默认值之前设置变量&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;_variables_project_after_bs.scss&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;设置依赖 Bootstrap 定义的变量或映射&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;_styles_project.scss&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;在主题组件样式之后加载项目选择器&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;先从最小覆盖项开始：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-scss" data-lang="scss"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// assets/scss/_variables_project.scss
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$primary&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#315f8f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$secondary&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mh"&gt;#b4762e&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-scss" data-lang="scss"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// assets/scss/_styles_project.scss
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nc"&gt;.td-content&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;--td-content-max-width&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;78&lt;/span&gt;&lt;span class="kt"&gt;ch&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;普通品牌定制不要直接修改纳管的 Bootstrap、Font
Awesome 或本地字体文件。主题更新会覆盖这些改动，也会模糊依赖边界。&lt;/p&gt;
&lt;h3 id="advanced-style-customization"&gt;高级样式定制&lt;a class="td-heading-self-link" href="#advanced-style-customization" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;OINK 的 SCSS 导入顺序如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Bootstrap 函数；&lt;/li&gt;
&lt;li&gt;项目变量；&lt;/li&gt;
&lt;li&gt;OINK 默认值与 Bootstrap；&lt;/li&gt;
&lt;li&gt;Bootstrap 之后的项目变量；&lt;/li&gt;
&lt;li&gt;OINK 组件与本地品牌层；&lt;/li&gt;
&lt;li&gt;项目样式。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;稳定的设计决策应通过变量或 CSS 自定义属性表达。没有合适设计变量时才覆盖选择器，而且作用域应尽量缩小到具体组件。许多颜色会随主题变化，因此必须检查浅色与深色输出。&lt;/p&gt;</description></item><item><title>文档版本管理</title><link>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/versioning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/versioning/</guid><description>&lt;!-- markdownlint-disable blanks-around-headings no-bare-urls single-h1 --&gt;
&lt;p&gt;根据项目的发布和版本管理方式，你可能需要让用户访问旧版文档。旧版本的具体部署方式由你决定。本页介绍 OINK 提供的功能：在各个文档版本之间导航，并在归档站点上显示信息横幅。&lt;/p&gt;
&lt;h2 id="adding-a-version-drop-down-menu"&gt;添加版本下拉菜单&lt;a class="td-heading-self-link" href="#adding-a-version-drop-down-menu" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;如果在 &lt;code&gt;hugo.toml&lt;/code&gt;、&lt;code&gt;hugo.yaml&lt;/code&gt; 或 &lt;code&gt;hugo.json&lt;/code&gt; 中添加
&lt;code&gt;[params.versions]&lt;/code&gt;，OINK 会在顶部导航栏加入版本下拉选择器。请为每个需要加入菜单的版本指定 URL 和名称，例如：&lt;/p&gt;
&lt;!-- markdownlint-disable no-shortcut-ref-link --&gt;
&lt;!-- prettier-ignore-start --&gt;





&lt;ul class="nav nav-tabs" id="tabs-0" role="tablist"&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link disabled" id="tabs-00-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-00" role="tab" aria-controls="tabs-00-00" aria-selected="false" disabled aria-disabled="true"&gt;配置文件：&lt;/button&gt;&lt;/li&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link active" id="tabs-00-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-01" role="tab" data-td-tp-persist="toml" aria-controls="tabs-00-01" aria-selected="true"&gt;hugo.toml&lt;/button&gt;&lt;/li&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link" id="tabs-00-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-02" role="tab" data-td-tp-persist="yaml" aria-controls="tabs-00-02" aria-selected="false"&gt;hugo.yaml&lt;/button&gt;&lt;/li&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link" id="tabs-00-03-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-03" role="tab" data-td-tp-persist="json" aria-controls="tabs-00-03" aria-selected="false"&gt;hugo.json&lt;/button&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;div class="tab-content" id="tabs-0-content"&gt;&lt;div class="tab-pane fade" id="tabs-00-00" role="tabpanel" aria-labelledby="tabs-00-00-tab" tabindex="0"&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="tab-pane fade show active" id="tabs-00-01" role="tabpanel" aria-labelledby="tabs-00-01-tab" tabindex="0"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Add your release versions here&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;versions&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;master&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://master.kubeflow.org&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;versions&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;v0.2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://v0-2.kubeflow.org&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;versions&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;v0.3&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://v0-3.kubeflow.org&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="tab-pane fade" id="tabs-00-02" role="tabpanel" aria-labelledby="tabs-00-02-tab" tabindex="0"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;params&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;versions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;master&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://master.kubeflow.org&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;v0.2&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://v0-2.kubeflow.org&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;v0.3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://v0-3.kubeflow.org&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="tab-pane fade" id="tabs-00-03" role="tabpanel" aria-labelledby="tabs-00-03-tab" tabindex="0"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;params&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;versions&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;master&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://master.kubeflow.org&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;v0.2&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://v0-2.kubeflow.org&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;v0.3&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://v0-3.kubeflow.org&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;!-- prettier-ignore-end --&gt;
&lt;!-- markdownlint-enable no-shortcut-ref-link --&gt;
&lt;p&gt;别忘了加入当前版本，这样用户才能返回！&lt;/p&gt;</description></item><item><title>AI 智能体支持</title><link>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/agent-support/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pgsty.github.io/oink.pgsty.com/zh/docs/content/agent-support/</guid><description>&lt;div class="td-alert td-alert--md alert alert-note" role="alert"&gt;&lt;div class="td-alert-heading alert-heading" role="heading" aria-level="4"&gt;早期评估&lt;/div&gt;
 &lt;div class="td-alert-body"&gt;
 &lt;p&gt;本页介绍的功能仍处于&lt;a href="https://pgsty.github.io/oink.pgsty.com/zh/project/about/changelog/#experimental"&gt;实验阶段&lt;/a&gt;，适合早期采用和评估。后续版本可能会调整输出细节和验证范围。要跟踪智能体支持功能的阶段性演进，请参阅
&lt;a href="https://github.com/google/docsy/issues/2614"&gt;Improve support for AI-agent doc consumption #2614&lt;/a&gt;。&lt;/p&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="features"&gt;功能&lt;a class="td-heading-self-link" href="#features" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;站点显式启用后，OINK 会提供以下面向用户和机器可读的行为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支持 &lt;strong&gt;&lt;a href="https://pgsty.github.io/oink.pgsty.com/zh/docs/content/agent-support/#markdown-output"&gt;Markdown 输出格式&lt;/a&gt;&lt;/strong&gt;。项目的 &lt;code&gt;outputs&lt;/code&gt;
配置决定哪些页面类型发布 Markdown。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;发现机制&lt;/strong&gt;：页面 HTML 的 header 会包含指向该页 Markdown 版本的
&lt;code&gt;rel=&amp;quot;alternate&amp;quot;&lt;/code&gt; 链接。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;查看 Markdown&lt;/strong&gt;：页面元信息区域会显示指向 Markdown 版本的“查看 Markdown”链接。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://pgsty.github.io/oink.pgsty.com/zh/docs/content/agent-support/#llms-txt"&gt;&lt;code&gt;llms.txt&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt;：位于站点根目录的内容清单文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本页其余部分介绍如何启用各项功能，并结合示例讨论相应的&lt;a href="https://pgsty.github.io/oink.pgsty.com/zh/docs/content/agent-support/#validation-and-metrics"&gt;验证与指标&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id="markdown-output"&gt;启用 Markdown 输出&lt;a class="td-heading-self-link" href="#markdown-output" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Hugo 提供多种&lt;a href="https://gohugo.io/configuration/output-formats/"&gt;内置输出格式&lt;/a&gt;，其中包括
&lt;code&gt;markdown&lt;/code&gt;。要启用 Markdown 输出，请在 Hugo 的 &lt;a href="https://gohugo.io/configuration/outputs/"&gt;outputs&lt;/a&gt; 配置中，把 &lt;code&gt;markdown&lt;/code&gt;
加入需要支持的页面类型。例如：&lt;/p&gt;


 &lt;ul class="nav nav-tabs" id="tabs-0" role="tablist"&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link disabled" id="tabs-00-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-00" role="tab" aria-controls="tabs-00-00" aria-selected="false" disabled aria-disabled="true"&gt;配置文件：&lt;/button&gt;&lt;/li&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link active" id="tabs-00-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-01" role="tab" data-td-tp-persist="yaml" aria-controls="tabs-00-01" aria-selected="true"&gt;hugo.yaml&lt;/button&gt;&lt;/li&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link" id="tabs-00-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-02" role="tab" data-td-tp-persist="toml" aria-controls="tabs-00-02" aria-selected="false"&gt;hugo.toml&lt;/button&gt;&lt;/li&gt;&lt;li class="nav-item"&gt;&lt;button class="nav-link" id="tabs-00-03-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-03" role="tab" data-td-tp-persist="json" aria-controls="tabs-00-03" aria-selected="false"&gt;hugo.json&lt;/button&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;div class="tab-content" id="tabs-0-content"&gt;&lt;div class="tab-body tab-pane fade" id="tabs-00-00" role="tabpanel" aria-labelledby="tabs-00-00-tab" tabindex="0"&gt;&lt;/div&gt;&lt;div class="tab-body tab-pane fade show active" id="tabs-00-01" role="tabpanel" aria-labelledby="tabs-00-01-tab" tabindex="0"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;home&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;HTML, markdown]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;page&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;HTML, markdown]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;section&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;HTML, RSS, print, markdown]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="tab-body tab-pane fade" id="tabs-00-02" role="tabpanel" aria-labelledby="tabs-00-02-tab" tabindex="0"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;home&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;HTML&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;markdown&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;page&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;HTML&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;markdown&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;section&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;HTML&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;RSS&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;print&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;markdown&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="tab-body tab-pane fade" id="tabs-00-03" role="tabpanel" aria-labelledby="tabs-00-03-tab" tabindex="0"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;outputs&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;home&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;HTML&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;markdown&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;page&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;HTML&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;markdown&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;section&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;HTML&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;RSS&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;print&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;markdown&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3 id="opt-pages-out"&gt;让页面退出 Markdown 输出&lt;a class="td-heading-self-link" href="#opt-pages-out" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class="td-alert td-alert--md alert alert-tip" role="alert"&gt;&lt;div class="td-alert-heading alert-heading" role="heading" aria-level="4"&gt;提示&lt;/div&gt;
 &lt;div class="td-alert-body"&gt;
 &lt;p&gt;默认情况下，无论 Hugo 的 &lt;code&gt;outputs&lt;/code&gt; 映射位于多文件站点配置还是页面 front
matter 中，它都会对每种页面类型执行 &lt;strong&gt;完整替换&lt;/strong&gt;，而不是合并&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。添加
&lt;code&gt;markdown&lt;/code&gt; 时，请保留站点已经依赖的所有格式，例如以上示例中分区使用的 &lt;code&gt;RSS&lt;/code&gt; 和
&lt;code&gt;print&lt;/code&gt;。&lt;/p&gt;</description></item></channel></rss>