簡體   English   中英

如何在 Jekyll/Kramdown 中生成正確的片段標識符?

[英]How to generate correct Fragment identifier in Jekyll/Kramdown?

我將 Jekyll 與 Minimal Mistakes 模板一起使用,並面臨片段 header 生成的問題。

這是一個例子..

如果您將 header 放入您的 *.md 頁面,例如:

## Fuß- und Radentscheid?

你在最后的 html 中得到了這個:

<h2 id="fuß--und-radentscheid">Fuß- und Radentscheid?</h2>

請注意,添加了片段標識符。

現在我想設置一個指向這個 ID 的鏈接:

- [Fuß- und Radentscheid?](#{{ "Fuß- und Radentscheid?" | slugify: "raw" }})

## Fuß- und Radentscheid?

使用 slugify function 我嘗試生成與片段標識符中的字符串匹配的正確字符串。

但是 Jekyll(或者 Kramdown)從中生成了它:

<ul>
  <li><a href="#fuß--und-radentscheid?">Fuß- und Radentscheid?</a></li>
</ul>

<h2 id="fuß--und-radentscheid">Fuß- und Radentscheid?</h2>

請注意,問號仍然存在於錨 href 中。

我已經嘗試了所有 Slugify 選項以及與其他 Liquid 過濾器的一些組合,但找不到生成與 header 片段 ID 相同的字符串的過濾器。

我知道通過刪除或替換問號很容易解決,但我想有一個可靠的解決方案來放入任何字符串並獲得與自動生成的片段標識符相同的結果。

編輯:

另一個例子:

[foobar?](#{{ "Foo- bar" | slugify  }})

## Foo- bar

產生:

<p><a href="#foo-bar">foobar?</a></p>

<h2 id="foo--bar">Foo- bar</h2>

URL 中的第一個問號是保留字符,被解釋為分隔符。 它將頁面 URL 與(通常)在服務器端解釋的參數分開。

出於這個原因,我不希望在 URL 中有問號,並且從你的問題中不清楚你想要實現什么,但如果你想要一致性,最好的選擇可能是避免使用 markdown 並堅持直接使用 HTML。

雖然我不推薦它,但我相信你想要的可以通過以下方式實現:

{{ assign slugified = "Fuß- und Radentscheid?" | slugify: "raw" }}

<ul>
  <li><a href="#{{ slugified }}">{{ slugified }}</a></li>
</ul>

<h2 id="{{ slugified }}">Foo- bar</h2>

我什至會冒險嘗試這個鏈接,但我發現 md 有點不可預測(主要是因為我不太了解它的規則)所以我不確定它是否有效

- [{{ slugified }}](#{{ slugified }})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM