我正在Jekyll中开发一个插件,它插入一个名为latex
. 其目的是以这种方式在 post 源文件中插入一块 LaTeX 源代码:
... post file contents ...
{% latex density=300 usepackages=pstricks-all, %}
\pspicture(5,5)
\psframe(0,0)(5,5) \psline(0,0)(5,5) \psline(0,5)(5,0)
\endpspicture
{% endlatex %}
... post file contents ...
编译后,输出帖子将包含一个标签而不是 Liquid Tag 块,并且 LaTeX 源代码将通过, ,<img>
的链式执行来编译。所以它将取决于外部程序(TexLive 和 ImageMagick)。latex
dvips
convert
到目前为止,我还没有发现任何解释的问题。我可以把 LaTeX 的块,放在一个临时文件中,最后编译成 PNG。渲染的文件必须放在帖子的同一文件夹中。
但就在那里我被困住了:我想将生成的 PNG 图像放到destination
输出文件夹内的这个文件夹中。定义一个站点配置变量来定义文件夹没有问题(事实上,我就是这样做的),也没有把文件放在那里。问题很简单:我可以写入source
文件夹,但是生成的文件不会复制到destination
文件夹中。
我知道原因:Jekyll 先生成后渲染。复制过程发生在渲染部分之前,因此不会复制生成的文件。
我找到了这个 SO 条目:“如何在 Jekyll 中从 Liquid 块生成文件? ”,但答案感觉不对:您必须为要复制的文件进行两次构建。
还发现“使用 Jekyll 插件在 _site 内生成文件”,但这不适用,因为我不想通过模板呈现文档。
我一直在计划的解决方案是这样的:
- 保留一个文件夹,其中包含所有生成的文件和一些最终放置的索引策略。
为最终放置过程实现一个
Site
广泛的方法,例如:class Site def generate_latex_adds // Code that copies the generated files to destination folders end end
在and调用之前在脚本中添加
self.generate_latex_adds
调用该方法。site_process.rb
self.cleanup
self.write
这可能会解决问题,但我觉得修改site_process.rb
. 我正在考虑将此 Liquid Tag 作为 GitHub 项目拉入社区,因此,我必须将此手动编辑记录site_process.rb
给此插件的用户。我知道这可能是一种常见的情况和常见的解决方案,但我想知道是否有更好的方法可以在不修改核心文件的情况下推迟生成文件的副本。我想保持插件简单:只需将插件文件复制到_plugins
目录中。
有任何想法吗?
编辑:我对实际代码的推理更感兴趣。我想学习,而不是要求代码解决方案。