【问题标题】:Multiple Converters/Generators in Jekyll?Jekyll 中有多个转换器/生成器?
【发布时间】:2012-09-14 01:00:31
【问题描述】:

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

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

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

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

【问题讨论】:

标签: ruby jekyll jekyll-extensions


【解决方案1】:

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

不幸的是,没有关于这方面的真正文档 - 我是从阅读源代码中收集到的。

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

【讨论】:

    【解决方案2】:

    我尝试做同样的事情,但直接 html->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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      相关资源
      最近更新 更多