Markdown 如何使用液体标签访问Jekyll中未呈现(标记)的内容?

Markdown 如何使用液体标签访问Jekyll中未呈现(标记)的内容?,markdown,jekyll,liquid,mathjax,pandoc,Markdown,Jekyll,Liquid,Mathjax,Pandoc,读了这篇文章,你可能会认为访问未呈现内容的方法是page.content;但据我所知,这提供了markdown解析器已经呈现的文章内容 我需要一个直接访问原始(原始标记)内容的解决方案,而不是简单地尝试将html转换回标记 用例的背景 我的用例如下所示:我使用来呈现我的Jekyll站点的降价,使用“mathjax”选项来获得漂亮的方程式。但是,mathjax需要javascript,因此这些内容不会显示在RSS提要中,我通过循环页面生成RSS提要 {% for post in site.pos

读了这篇文章,你可能会认为访问未呈现内容的方法是
page.content
;但据我所知,这提供了markdown解析器已经呈现的文章内容

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

用例的背景 我的用例如下所示:我使用来呈现我的Jekyll站点的降价,使用“mathjax”选项来获得漂亮的方程式。但是,mathjax需要javascript,因此这些内容不会显示在RSS提要中,我通过循环
页面生成RSS提要

 {% 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 %}
但当我得到的内容是已经在html+mathjax中呈现的方程,而不是原始的降价时,我被卡住了。转换回markdown没有任何帮助,因为它不会转换mathjax(只是将其弄得乱七八糟)


有什么建议吗?当然有一种方法可以称之为原始降价吗?

我想你会遇到以下问题:

根据我的阅读,对于给定的帖子/页面,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
def过程
自动复位
自述
自生
自我渲染
自我清理
自述
结束
... ...
def渲染
有效载荷=站点\单位有效载荷
self.posts.each do| post|
后期渲染(自布局、有效负载)
结束
self.pages.each do| page|
页面渲染(自布局、有效负载)
结束
self.categories.values.map{| ps | ps.sort!{| a,b | ba}
self.tags.values.map{| ps | ps.sort!{| a,b | ba}
救援错误号::enoint=>e
#忽略缺少的布局目录
结束
当您开始呈现此页面时,self.content已呈现为HTML,因此不会停止呈现。已经完成了


但是,生成器()在呈现阶段之前运行,因此,从阅读源代码中可以看出,您应该能够非常轻松地编写一个生成器,将self.content复制到某个属性(例如self.raw_content)中,稍后您可以在模板{{page.raw_content}中作为原始标记访问该属性

#冻结的字符串文字:true
模块内容
类生成器
解决我的用例的另一种完全不同的方法是:,尽管它没有解决如何访问原始降价。对这里发生的事情有很好的解释,还有很好的建议。My ruby很差(partic variable scope)--这是一个简单的编写生成器的方法吗?行:
self.raw\u content=self.content
,然后
page.raw\u content
将自动可用?关闭:查看以下要点,了解一些有用的东西:。然后,您可以使用
{{page.raw_content}}
访问版面中的原始内容。请注意,您自己的插件(本例中的生成器)不会在Github页面上运行。因此,如果您打算在那里使用它,您需要找到其他解决方案。@heliotrope我尝试了gist中的插件,但出现了错误,看起来数据结构自2012年以来发生了变化……我确信它已经发生了变化!坦率地说,在过去的六年里,我根本没有注意过杰基尔的任何事情,所以我真的帮不上忙。
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