Jekyll的多个转换器/发生器?

时间:2012-09-14 01:00:31

标签: ruby jekyll jekyll-extensions

我想写一个Jekyll插件,利用Kramdown的LaTeX导出功能,以PDF格式提供所有帖子。对于Markdown格式的每个帖子,我想最后得到正常的.html帖子以及包含.tex标记的LaTeX文件,最后是.pdf。< / p>

documentation for creating plugins之后,我看到了两种解决问题的方法,无论是使用转换器还是使用生成器。

转换器插件似乎在内置转换器之后运行,因此.markdown文件在到达转换器时已全部转换为.html

当我尝试实现Generator时,我能够使用fileutils成功写入文件,但是在Jekyll周期结束时,该文件已被删除。似乎有一个StaticFile类可以用来向Jekyll注册新的输出文件,但我找不到任何关于如何使用它的真正指导。

2 个答案:

答案 0 :(得分:1)

如果你看一下ThumbGenerator类:https://github.com/matthewowen/jekyll-slideshow/blob/master/_plugins/jekyll_slideshow.rb你会看到一个类似的例子。此特定插件可生成站点中所有图像的缩略图版本。希望它能为你如何与Jekyll的StaticFile类进行交互提供一个有用的指导(尽管我不是Ruby专业版,所以请原谅任何糟糕的风格)。

不幸的是,没有真正的文档 - 我通过阅读来源收集了它。

几个月前我写过这篇文章并且没有特别记住细节(这就是为什么我举了一个例子而不是一个练习),但如果这不能让你走上正确的轨道让我知道,我我会尽力帮忙。

答案 1 :(得分:0)

我尝试使用直接的html-&gt; pdf转换。 它目前在gitlab-ci管道中不起作用,但它在我的工作站(see here)上工作,第三种可能性:钩子!

(这里有pdfkit)

require 'pdfkit'

module Jekyll

  Jekyll::Hooks.register :site, :post_write do |post|

      post.posts.docs.each do |post|
          filename = post.site.dest + post.id + ".pdf"
          dirname = File.dirname(filename)
          Dir.mkdir(dirname) unless File.exists?(dirname)

          kit = PDFKit.new(post.content, :page_size => 'Letter')
          kit.stylesheets << './css/bootstrap.min.css'
          kit.to_file(filename)
      end
  end

end