尝试以下任一选项之前的一些注意事项
选项 0 即使使用 --incremental 也会增加构建时间,并且实际上选项 1 应该可能在大多数实例中使用,但是,这以及占用的额外空间可能值得如果您在客户端可能无法访问 CDN 的网络上进行部署,则会产生成本。
这两个选项都在私有服务器上进行了测试,kramdown 作为降价解释器,mathjax: true 在项目的_config.yml 文件中设置;请参阅 Step 2 of Soham Bhattacharyya 的答案及其前言,以及 Caramdir 的前两个代码块,了解这些位的操作方法。
选项0下载解压后复制到project-name
- 下载源代码
cd ~
mkdir -p git/hub && cd git/hub
git clone --depth 1 https://github.com/mathjax/MathJax.git
- 在你的项目中创建一个目录路径并将文件从
MathJax/unpacked复制到这个路径
cd ~
mkdir -p git/lan/project-name/assets/JS_3rd_Party/MathJax
cp -r git/hub/MathJax/unpacked/* git/lan/project-name/assets/JS_3rd_Party/MathJax/
- 将源添加到
git跟踪
cd git/lan/project-name/
git add assets/JS_3rd_Party/MathJax
git commit -m 'Added MathJax.js unpacked source to git tracking'
- 编写包含文件
tee ./_includes/MathJax.html 1>/dev/null <<EOF
{%- if jekyll.environment == 'production' and site.mathjax == true -%}
<script type="text/javascript" src="{{'/assets/javascripts/JS_3rd_Party/latest.js?config=TeX-AMS-MML_HTMLorMML' | relative_url}}"></script>
{%- elsif jekyll.environment != 'production' and site.mathjax == true -%}
<script type="text/javascript" src="{{'/assets/javascripts/JS_3rd_Party/MathJax.js?config=TeX-AMS-MML_HTMLorMML' | relative_url}}"></script>
{%- endif -%}
EOF
私有服务器构建将使用MathJax.js,而生产环境(GitHub)将使用latest.js,使用上面的Liquid if...elsif...endif 声明。
- 写一篇文章来测试一下
tee ./_posts/$(date +'%Y-%d-%m')-math-tests.markdown 1>/dev/null <<EOF
---
layout: post
title: "Math Tests"
date: $(date +'%Y-%d-%m %H:%M:%S %z')
categories: math
---
{%- include MathJax.html -%}
<span>
for $x,y,z \in \{1, 2,\dots 9\}$
</span>
<span>
$$
\sum_{i=1}^n X_n
$$
</span>
EOF
没有<span>s 我没有尝试过,因为cboettig 的建议似乎完全可以解决问题。
此外,spans 中的额外换行符没有错误,没有它们,渲染输出仍然存在问题。
- 将这些最新文件添加到
git tracking
git add _posts/$(date +'%Y-%d-')math-tests.markdown
git add _includes/MathJax.html
- 在本地构建,或在远程服务器上推送和构建
bundle exec jekyll build --destination /tmp/www/project-name --config _config.yml --incremental
选项 1 仅复制 latest.js 以使用 CDN(内容交付网络)
见Option 0步1.
为第三方 JavaScripts 创建一个目录路径并在那里复制MathJax/unpacked/latest.js
cd ~
mkdir -p git/lan/project-name/assets/JS_3rd_Party/MathJax
cp git/hub/MathJax/unpacked/latest.js git/lan/project-name/assets/JS_3rd_Party/MathJax/
- 编写包含文件
cd git/lan/project-name
tee ./_includes/MathJax.html 1>/dev/null <<EOF
<script type="text/javascript" src="{{'/assets/javascripts/JS_3rd_Party/latest.js?config=TeX-AMS-MML_HTMLorMML' | relative_url}}"></script>
EOF
见Option 0步5.
将这三个文件添加到git tracking
git add _includes/MathJax.html
git add _posts/$(date +'%Y-%d-')math-tests.markdown
git add assets/JS_3rd_Party/MathJax
git commit -m 'Added `MathJax.html`, `latest.js`, and a test post to git tracking'
- 本地构建参见
Option 0 步骤7.
对于任一选项
如果部署在私有服务器上,您可能还需要在项目的 _config.yml 文件中定义 baseurl,尤其是在模拟 GitHub 在您的私有服务器上使用的 username.tld/project-name URL 方案时。
如果同时部署到私有服务器和 GitHub,最好使用单独的配置文件,并且在构建问题 --config _config.yml,_config_baseurl.yml 时,例如...
# Write the special config file
tee ./_config_baseurl.yml 1>/dev/null <<EOF
baseurl: "project-name"
EOF
# Build with extra config
bundle exec jekyll build --destination /tmp/www/project-name --config _config.yml,_config_baseurl.yml --incremental
希望有助于通过包含加载资产。