1

我想编写一个 Jekyll 插件,利用 Kramdown 的LaTeX导出功能,使所有帖子都以 PDF 格式提供。对于 Markdown 格式的每个帖子,我想以普通.html帖子结尾,以及一个.tex包含LaTeX标记的文件,最后是一个.pdf.

创建插件的文档之后,我看到了两种解决问题的方法,使用转换器或生成器。

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

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

4

2 回答 2

1

如果你看一下 ThumbGenerator 类:https ://github.com/matthewowen/jekyll-slideshow/blob/master/_plugins/jekyll_slideshow.rb你会看到一个类似的例子。这个特殊的插件制作了网站中所有图像的缩略图大小版本。希望它为您如何与 Jekyll 的 StaticFile 类交互提供有用的指南(尽管我不是 Ruby 专业人士,所以请原谅任何糟糕的风格)。

不幸的是,并没有真正的文档——我是从阅读源代码中收集到的。

几个月前我写了这篇文章,并不太记得细节(这就是为什么我给出了一个例子而不是一个解决方案),但如果这不能让你走上正确的轨道,请告诉我,我会尽力帮助。

于 2012-11-01T20:45:04.300 回答
0

我尝试做同样的事情,但直接进行 html->pdf 转换。目前它在 gitlab-ci 管道中不起作用,但它在我的工作站上工作(见这里),还有第三种可能性:钩子!

(这里有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
于 2017-04-01T06:55:34.383 回答