gpt4 book ai didi

markdown - 如何使用液体标签访问 Jekyll 中未渲染( Markdown )的内容?

转载 作者:行者123 更新时间:2023-12-04 02:10:16 29 4
gpt4 key购买 nike

从阅读 documentation Jekyll's template data有人可能认为访问未渲染内容的方式是 page.content ;但据我所知,这是提供已由 Markdown 解析器呈现的帖子内容。

我需要一个直接访问原始(原始 Markdown )内容的解决方案,而不是简单地尝试将 html 转换回 Markdown 。

用例背景

我的用例如下:我使用 pandoc plugin为我的 Jekyll 站点渲染 Markdown,使用 'mathjax' 选项来获得漂亮的方程。但是,mathjax 需要 javascript,因此这些不会显示在 RSS 提要中,我通过循环 page.content 生成了该提要。像这样:

 {% for post in site.posts %}
<entry>
<title>{{ post.title }}</title>
<link href="{{ site.production_url }}{{ post.url }}"/>
<updated>{{ post.date | date_to_xmlschema }}</updated>
<id>{{ site.production_url }}{{ post.id }}</id>
<content type="html">{{ post.content | xml_escape }}</content>
</entry>
{% endfor %}

xml_escape过滤器暗示, post.content这里出现在 html 中。如果我可以获得原始内容(想象 post.contentraw 或类似的内容),那么我可以轻松添加一个过滤器,该过滤器将使用带有“webtex”选项的 pandoc 在解析 RSS 提要时为方程生成图像,例如:
require 'pandoc-ruby'
module TextFilter
def webtex(input)
PandocRuby.new(input, "webtex").to_html
end
end
Liquid::Template.register_filter(TextFilter)

但是当我对已经用 html+mathjax 而不是原始 Markdown 呈现的方程感到满意时,我被卡住了。转换回 markdown 没有帮助,因为它不会转换 mathjax(只是乱码)。

有什么建议?当然有一种方法可以调用原始 Markdown 吗?

最佳答案

这是我认为你会遇到的麻烦:https://github.com/mojombo/jekyll/blob/master/lib/jekyll/convertible.rb https://github.com/mojombo/jekyll/blob/master/lib/jekyll/site.rb

根据我的阅读,对于给定的帖子/页面 self.content 被替换为通过 Markdown 和 Liquid 运行 self.content 的结果,在 convertible.rb 的第 79 行:

self.content = Liquid::Template.parse(self.content).render(payload, info)

帖子在页面之前呈现,在 site.rb 中的第 37-44 和 197-211 行:
def process
self.reset
self.read
self.generate
self.render
self.cleanup
self.write
end

... ...

def render
payload = site_payload
self.posts.each do |post|
post.render(self.layouts, payload)
end

self.pages.each do |page|
page.render(self.layouts, payload)
end

self.categories.values.map { |ps| ps.sort! { |a, b| b <=> a } }
self.tags.values.map { |ps| ps.sort! { |a, b| b <=> a } }
rescue Errno::ENOENT => e
# ignore missing layout dir
end

当你开始渲染这个页面时,self.content 已经被渲染成 HTML - 所以它不是停止渲染的情况。已经完成了。

但是,生成器( https://github.com/mojombo/jekyll/wiki/Plugins )在渲染阶段之前运行,因此,据我阅读源代码可以看出,您应该能够相当简单地编写一个生成器,它将 self.content 复制到某个属性(例如 self .raw_content) 之后,您可以在模板 {{ page.raw_content }} 中以原始 Markdown 的形式访问它。

关于markdown - 如何使用液体标签访问 Jekyll 中未渲染( Markdown )的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13159286/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com