【问题标题】:In Docusaurus, is there can I preserve capitalization in anchors created from headings in docs?在 Docusaurus 中,我可以保留从文档标题创建的锚的大小写吗?
【发布时间】:2021-10-11 21:23:16
【问题描述】:

我正在使用 Docusaurus 发布开源库 API 的文档。我的源 Markdown 文件的标题对应于库中类的方法和属性的名称。这一切都很好。

但是,在 HTML 中创建的锚点都是小写的。我希望他们尊重降价文件中使用的大小写。

比如这个markdown header:

###.doSomething()

生成以下 HTML:

<h3>
    <a aria-hidden="true" tabindex="-1" class="..." id="dosomething"></a>. 
    <code>.doSomething()</code>
    <a class="..." href="#dosomething" title="...">#</a>
</h3>

如您所见,camelCase 被转换为小写。我想保持大写不变。有可能吗?

附: markdown 文件是从 jsdoc cmets 自动生成的。在 jsdoc 中,指向方法或属性的链接包括大写。

【问题讨论】:

    标签: docusaurus


    【解决方案1】:

    TL;DR

    1. 在您的项目中,导航到目录node_modules &gt; github-slugger

    2. 打开index.js文件;

    3. 删除if (!maintainCase) string = string.toLowerCase()

    函数会变成这样:

    function slugger (string, maintainCase) {
      if (typeof string !== 'string') return ''
      // if (!maintainCase) string = string.toLowerCase() <-- remove this!
    
      return string.trim()
        .replace(specials, '')
        .replace(emoji(), '')
        .replace(whitespace, '-')
    }
    

    重要!

    1. 如果您updatedocusaurus,您可能需要再次应用此更改;

    2. 由于缓存,可能需要编辑文档以查看更改。在这里我编辑了doc 文件并且它工作了;

    3. 进行此更改后,您必须重新启动 docusaurus 服务。并且可能需要使用npm cache clear --force 清除缓存;

    4. 另外,我认为您应该删除文件夹.docusaurus 以强制重建所有文档。

    结果

    .md 文件:

    ---
    id: intro
    ---
    
    # Random title
    
    ### WriNTinG with CaSeS
    
    test 1
    
    ### .doAnotherThink()
    
    test 3
    
    ### .doCamelCaseWithSeveralLETTERS()
    
    test 3
    

    路线图

    我必须说这个很难。首先我试图追踪anchor 标签,然后是描述。最终我找到了github-slugger,看起来就是这样。

    但是,一旦我进行了更改,文档就没有任何变化!所以经过几个小时的尝试,我放弃了……然后,出于好奇,我决定通过添加第二个具有相同名称的header 来查看slug 函数对文档的作用。还有——运气! ——它保留了原来的情况。

    【讨论】:

    • 哇!非常感谢您对此进行调查。我只是希望这是可配置的。事实上,我只是提出了一个请求(docusaurus.io/feature-requests/p/…)。这应该不会太难,因为 slug() 方法已经有一个选项......
    • 我在 github-slugger 代码中进行了建议的更改,但它似乎没有生效。我清除了缓存,删除了 .docusaurus 文件夹,并修改了 .md 文件,但它仍然是全部小写。
    • 我很高兴(尝试)帮助!我刚刚用一些“证据”更新了答案,但它有点棘手......尝试以下操作:转到node_modules并删除文件夹.cache。然后,在你的.md 文件中,复制一个标题——只是为了强制slug 函数——例如写两次### .doSomething()
    • 另外,在docusaurus 服务离线的情况下执行上述操作。而且,以防万一,请仔细检查 slug 功能。 (也许docusaurus 改回来了?)
    • 我很高兴您找到了一个(更简单的)解决方案!很抱歉没有解决这个问题......但我看到在未来版本的 docusaurus 中将是一个参数,用于将 case 保留在 ID 中。
    【解决方案2】:

    事实证明,您可以简单地使用显式 ID 来解决此问题:https://docusaurus.io/docs/next/markdown-features/headings#explicit-ids

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 2010-10-12
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多