<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Inkstone Demo</title><link>https://inkstone.125520.xyz/</link><description>极简双语 Hugo 写作模板，为长读、慢写而生。</description><generator>Hugo</generator><language>zh-cn</language><managingEditor>Inkstone Author</managingEditor><copyright>© 2026 Inkstone Author</copyright><lastBuildDate>Fri, 15 May 2026 12:14:50 +0000</lastBuildDate><atom:link href="https://inkstone.125520.xyz/zh-cn/index.xml" rel="self" type="application/rss+xml"/><item><title>多语言写作</title><link>https://inkstone.125520.xyz/zh-cn/%E5%A4%9A%E8%AF%AD%E8%A8%80%E5%86%99%E4%BD%9C/</link><pubDate>Mon, 20 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://inkstone.125520.xyz/zh-cn/%E5%A4%9A%E8%AF%AD%E8%A8%80%E5%86%99%E4%BD%9C/</guid><description>Inkstone 如何处理双语内容模型。</description><content:encoded><![CDATA[<p>Inkstone 用的是 Hugo 的内容语言回落模型。默认语言走根 URL（<code>/posts/foo/</code>），其他语言走子目录（<code>/zh-cn/posts/foo/</code>）。</p>
<h2 id="文件名约定">文件名约定</h2>
<p>标记内容语言有两种方式：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">content/posts/foo.md          # 默认语言
</span></span><span class="line"><span class="cl">content/posts/foo.zh-cn.md    # 中文版本
</span></span><span class="line"><span class="cl">content/posts/foo.en.md       # 默认是 zh-cn 时显式标注英文
</span></span></code></pre></div><p>或者用目录划分：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">content/en/posts/foo.md
</span></span><span class="line"><span class="cl">content/zh-cn/posts/foo.md
</span></span></code></pre></div><p>主题对两种都兼容，按你的写作流程选一个即可。</p>
<h2 id="语言切换">语言切换</h2>
<p>页眉有一个语言切换按钮。当前页有翻译时，按钮指向对应语言的同一篇；没有翻译时回退到目标语言的首页——不会出现死链或占位页。</p>
<h2 id="i18n-字符串">i18n 字符串</h2>
<p>UI 字符串放在 <code>i18n/&lt;lang&gt;.toml</code>。主题自带 <code>en.toml</code> 和 <code>zh-cn.toml</code>。要新增一种语言：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">cp themes/inkstone/i18n/en.toml i18n/ja.toml
</span></span><span class="line"><span class="cl"><span class="c1"># 然后翻译里面的值</span>
</span></span></code></pre></div><p>在站点配置里加上这一语言：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">languages</span><span class="p">.</span><span class="nx">ja</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">  <span class="nx">label</span> <span class="p">=</span> <span class="s2">&#34;日本語&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="nx">locale</span> <span class="p">=</span> <span class="s2">&#34;ja&#34;</span>
</span></span><span class="line"><span class="cl">  <span class="nx">weight</span> <span class="p">=</span> <span class="mi">3</span>
</span></span><span class="line"><span class="cl">  <span class="p">[</span><span class="nx">languages</span><span class="p">.</span><span class="nx">ja</span><span class="p">.</span><span class="nx">params</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">    <span class="nx">description</span> <span class="p">=</span> <span class="s2">&#34;...&#34;</span>
</span></span></code></pre></div><h2 id="阅读时间">阅读时间</h2>
<p>阅读时间按页面的实际语言计算，用 Hugo 的 <code>WordCount</code> 与 <code>ReadingTime</code>。设了 <code>hasCJKLanguage = true</code> 之后，CJK 页面按 501 字符/分钟报，非 CJK 页面按 213 词/分钟报。主题读取页面真实语言并自动选公式。</p>

  <link
    rel="stylesheet"
    type="text/css"
    href="/css/_shortcodes/admonition.css"
  />
  <div
    class="shortcode-admonition shortcode-admonition-warning "
  >
      <div class="shortcode-admonition-title">不要按页/按语言覆盖</div>
      <div class="shortcode-admonition-content">不要在单篇或某语言下覆盖 <code>hasCJKLanguage</code>——它是站点级开关。<code>hugo.toml</code> 顶部设一次就够了，剩下的由 Hugo 按内容自动处理。</div>
  </div>

<p>这就是多语言模型的全部要点。底层模式见 Hugo 的 <a href="https://gohugo.io/content-management/multilingual/" target="_blank" rel="noopener">language management 文档<span class="external-mark" aria-hidden="true">↗</span></a>
。</p>
]]></content:encoded></item><item><title>中英混排示例</title><link>https://inkstone.125520.xyz/zh-cn/%E4%B8%AD%E8%8B%B1%E6%B7%B7%E6%8E%92%E7%A4%BA%E4%BE%8B/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://inkstone.125520.xyz/zh-cn/%E4%B8%AD%E8%8B%B1%E6%B7%B7%E6%8E%92%E7%A4%BA%E4%BE%8B/</guid><description>演示 Inkstone 在中英混排场景下的排版细节。</description><content:encoded><![CDATA[<p>这是一篇用来演示 <strong>中英混排</strong> 排版细节的文章。Inkstone 主题对 CJK 内容做了几件事：</p>
<ol>
<li>自动开启 <code>hasCJKLanguage = true</code>，让 <code>.WordCount</code> 按字符数（而不是空白分隔的 token 数）计算</li>
<li><code>.ReadingTime</code> 用 Hugo 的 CJK 常量 501 char/min（而不是 213 word/min）</li>
<li>字体栈优先 <code>LXGW WenKai</code>，回落到 <code>Noto Serif SC</code> 与系统衬线字体</li>
<li>行高为 1.7（而不是英文的 1.6），适配中文字符更高的 baseline</li>
</ol>
<h2 id="长段落示例">长段落示例</h2>
<p>读到一篇好文章，往往是从某个准确的句子开始的。比如博尔赫斯写的「我的脚踩到了你正在踩着的影子」——这里包含了一种几乎没有重量的存在论。把这种存在论翻译成 English 是困难的，因为英语的语序天然倾向 SVO，而中文允许把「踩到了」这个动作压缩到主谓之间，让影子的&quot;被踩&quot;瞬间放大。</p>
<p>混排时常见的问题：英文单词与中文字符之间没有空格时，浏览器有时会粘连。Inkstone 在 prose 区域加了 <code>font-feature-settings: &quot;palt&quot;</code> 让标点收紧，并通过 <code>text-spacing-trim</code> 处理首尾空白。</p>
<h2 id="引用">引用</h2>
<blockquote>
<p>「书是人类进步的阶梯。」——高尔基</p>
</blockquote>
<blockquote>
<p>&ldquo;Reading furnishes the mind only with materials of knowledge; it is thinking that makes what we read ours.&rdquo; — John Locke</p>
</blockquote>
<p>中英文引用混在同一篇文章里，typography 应该在两种风格之间无缝切换。</p>
<h2 id="代码块">代码块</h2>
<p>中文注释和英文代码混合：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">calculate_reading_time</span><span class="p">(</span><span class="n">content</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">lang</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&#34;zh-cn&#34;</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;&#34;&#34;
</span></span></span><span class="line"><span class="cl"><span class="s2">    根据语言计算阅读时间。
</span></span></span><span class="line"><span class="cl"><span class="s2">    Hugo 的 CJK 常量是 501 字符/分钟，英文是 213 词/分钟。
</span></span></span><span class="line"><span class="cl"><span class="s2">    &#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="n">lang</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&#34;zh&#34;</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nb">max</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">content</span><span class="p">)</span> <span class="o">//</span> <span class="mi">501</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="k">else</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="nb">max</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">content</span><span class="o">.</span><span class="n">split</span><span class="p">())</span> <span class="o">//</span> <span class="mi">213</span><span class="p">)</span>
</span></span></code></pre></div><h2 id="排版小细节">排版小细节</h2>
<ul>
<li><strong>标点压缩</strong>：句号、逗号、问号、感叹号在 CJK 区会自动收窄</li>
<li><strong>数字与中文之间</strong>：自动加 0.15em 间距（<code>Pangu</code> 风格，但只在 prose 区生效，不影响 UI）</li>
<li><strong>首字下沉</strong>：可选 <code>class=&quot;dropcap&quot;</code> 给段落，但 demo 默认不开</li>
<li><strong>斜体处理</strong>：CJK 字体不支持斜体，主题在中文区域用 <code>font-style: normal</code> 回退，避免浏览器伪斜体</li>
</ul>
<h2 id="总结">总结</h2>
<p>如果你也写中英混排的长文，希望 Inkstone 的这些细节能让你少花一点心思在排版上，多花点在内容上。</p>
]]></content:encoded></item><item><title>排版与正文</title><link>https://inkstone.125520.xyz/zh-cn/%E6%8E%92%E7%89%88%E4%B8%8E%E6%AD%A3%E6%96%87/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://inkstone.125520.xyz/zh-cn/%E6%8E%92%E7%89%88%E4%B8%8E%E6%AD%A3%E6%96%87/</guid><description>为长读优化的正文排版。</description><content:encoded><![CDATA[<p>Inkstone 是为<strong>长读</strong>做的主题。这篇文章展示主题应用到每一篇文章正文上的排版规则。</p>
<h2 id="标题">标题</h2>
<p>CJK 场景下，正文用 <code>LXGW WenKai</code>，回落到 <code>Noto Serif SC</code> 与系统衬线字体。标题默认继承同一字族，但可以通过 <code>assets/css/variable.css</code> 里的设计 token 按项目重新调整。</p>
<h3 id="三级标题">三级标题</h3>
<p>读到一篇好文章，往往是从准确的句子开始的。一段克制而精确的描述比花哨的修辞更接近写作的核心，长文的节奏也由这些细小的判断累积而成。</p>
<h4 id="四级标题">四级标题</h4>
<p>排版的目标不是让页面好看，而是让阅读不需要解释——读者翻开后立刻进入内容，意识不到字体、行高、间距的存在。</p>
<h2 id="段间距">段间距</h2>
<p>默认节奏是 1.6 倍行高，配合让一行 65–75 个字符的最大宽度。这是为桌面阅读调的；移动端会折叠为单列并调整间距。</p>
<p>中英混排的文本，主题会在原本基础上把行高再略微抬高，照顾中文字符更高的字身，同时不至于让纯英文段落显得过于稀松。</p>
<h2 id="列表">列表</h2>
<p>无序列表：</p>
<ul>
<li>第一项写一句有意义的话</li>
<li>第二项展示项目符号的视觉效果</li>
<li>第三项凑数
<ul>
<li>嵌套项一</li>
<li>嵌套项二</li>
</ul>
</li>
</ul>
<p>有序列表：</p>
<ol>
<li>数字列表用了略不同的节奏</li>
<li>数字本身的颜色与正文风格一致</li>
<li>嵌套有序列表也能正常工作：
<ol>
<li>缩进项一</li>
<li>缩进项二</li>
</ol>
</li>
</ol>
<h2 id="行内元素">行内元素</h2>
<p>这一句里有 <code>行内代码</code>、<strong>粗体</strong>、<em>斜体</em>，以及一个 <a href="https://github.com/BerBai/inkstone" target="_blank" rel="noopener">指向源码的链接<span class="external-mark" aria-hidden="true">↗</span></a>
。指向站外的链接会自动加上外链标记。</p>
<h2 id="引用块">引用块</h2>
<blockquote>
<p>阅读对于头脑而言，正如锻炼之于身体。</p>
<p>——约瑟夫·艾迪生</p>
</blockquote>
<h2 id="代码块">代码块</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">fibonacci</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;&#34;&#34;经典的递归 fib——请不要在生产环境这样写。&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="n">n</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&#34;__main__&#34;</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="nb">print</span><span class="p">([</span><span class="n">fibonacci</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">)])</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">debounce</span> <span class="o">=</span> <span class="p">(</span><span class="nx">fn</span><span class="p">,</span> <span class="nx">ms</span> <span class="o">=</span> <span class="mi">250</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="kd">let</span> <span class="nx">t</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">  <span class="k">return</span> <span class="p">(...</span><span class="nx">args</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">clearTimeout</span><span class="p">(</span><span class="nx">t</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="nx">t</span> <span class="o">=</span> <span class="nx">setTimeout</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="nx">fn</span><span class="p">(...</span><span class="nx">args</span><span class="p">),</span> <span class="nx">ms</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="p">};</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div><h2 id="表格">表格</h2>
<table>
  <thead>
      <tr>
          <th>特性</th>
          <th>Inkstone</th>
          <th>PaperMod</th>
          <th>Hugo 默认</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>双语 i18n</td>
          <td>✅</td>
          <td>✅</td>
          <td>❌</td>
      </tr>
      <tr>
          <td>CJK 阅读时间</td>
          <td>✅</td>
          <td>❌</td>
          <td>❌</td>
      </tr>
      <tr>
          <td>内置 ⌘K 搜索</td>
          <td>✅</td>
          <td>❌</td>
          <td>❌</td>
      </tr>
      <tr>
          <td>Tailwind v4</td>
          <td>✅</td>
          <td>❌</td>
          <td>❌</td>
      </tr>
      <tr>
          <td>25+ shortcodes</td>
          <td>✅</td>
          <td>❌</td>
          <td>❌</td>
      </tr>
  </tbody>
</table>
<h2 id="引言pullquote">引言（pullquote）</h2>

<blockquote class="pullquote">
  经典是这样一种作品——它永远没有把要说的话说完。
  <cite>— 伊塔洛·卡尔维诺</cite>
</blockquote>

<p>差不多就是这些。完整的 shortcode 目录见 <a href="/zh-cn/shortcodes-demo/">Shortcodes demo</a>
。</p>
]]></content:encoded></item><item><title>欢迎使用 Inkstone</title><link>https://inkstone.125520.xyz/zh-cn/%E6%AC%A2%E8%BF%8E%E4%BD%BF%E7%94%A8-inkstone/</link><pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://inkstone.125520.xyz/zh-cn/%E6%AC%A2%E8%BF%8E%E4%BD%BF%E7%94%A8-inkstone/</guid><description>主题能力的快速一览。</description><content:encoded><![CDATA[<p>这是 Inkstone demo 站的第一篇文章，目的是展示主题的正文排版、Callout，以及一些常用 shortcode。</p>
<h2 id="为什么是-inkstone">为什么是 Inkstone？</h2>
<p>Inkstone 围绕三条信念构建：</p>
<ol>
<li><strong>阅读是首要场景。</strong> 每一个布局决策都为读者服务，不是作者的自我表达。</li>
<li><strong>双语是默认而非附加。</strong> 中英混排的内容会得到合适的行高、按字符数计算的阅读时间，以及不会用 CJK 字体渲染拉丁字符的字体回落链。</li>
<li><strong>渐进增强是底线。</strong> 搜索、灯箱、主题切换在禁用 JS 的环境下都能优雅降级。</li>
</ol>
<div class="callout callout-note" role="note">
  <div class="callout-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10"/><line x1="12" y1="16" x2="12" y2="12"/><line x1="12" y1="8" x2="12.01" y2="8"/></svg></div>
  <div class="callout-body"><p class="callout-title">安装小贴士</p>
    主题用 <code>hugo server</code> 即可开箱跑起来。Tailwind v4 走 Hugo 内建的 <code>css.TailwindCSS</code>——开发期间不需要单独跑 npm watch。
  </div>
</div>

<h2 id="内置-shortcodes">内置 shortcodes</h2>
<p>Inkstone 自带 25+ 内容 shortcodes，最常用的有：</p>
<ul>
<li><strong>Callout 与 Admonition</strong> —— 五个严重程度（note、tip、warning、danger、success），标签会自动按 i18n 切换</li>
<li><strong>画廊</strong> —— 等高网格 + 灯箱，由 JSON 数据驱动</li>
<li><strong>代码块</strong> —— 用 Chroma 高亮，可选复制按钮和行号</li>
<li><strong>图表</strong> —— Mermaid、Markmap，按需通过 CDN 客户端渲染</li>
<li><strong>数学公式</strong> —— MathJax v4，只在用到的页面才加载</li>
</ul>
<p>完整的 shortcode 参考与实时示例见 <a href="/zh-cn/shortcodes-demo/">Shortcodes demo 页面</a>
。</p>

  <link
    rel="stylesheet"
    type="text/css"
    href="/css/_shortcodes/admonition.css"
  />
  <div
    class="shortcode-admonition shortcode-admonition-tip "
  >
      <div class="shortcode-admonition-title">Pagefind 搜索</div>
      <div class="shortcode-admonition-content">按 <kbd>⌘K</kbd>（非 macOS 系统是 <kbd>Ctrl-K</kbd>）打开搜索 modal。主题提供 UI，你在自己的构建流水线里串上 Pagefind（<code>hugo</code> 之后跑 <code>pagefind --site public</code>）即可。</div>
  </div>

<h2 id="接下来">接下来</h2>
<p>去 <a href="/zh-cn/posts/">文章</a>
 区看更多示例，或直接跳到 <a href="/zh-cn/shortcodes-demo/">Shortcodes demo</a>
 查阅完整参考。</p>
]]></content:encoded></item></channel></rss>