我想基于 homeland-docker 搭建一个论坛程序,目前我已经能做到让论坛在服务器上跑起来,但是有两个细节问题无法解决,十分苦恼,希望了解的朋友能帮助解决一下,非常感谢!我可以提供报酬,如果你愿意帮助解决,可以留下联系方式。
这两个问题都是跟 mathjax 有关的,第一个是我想在论坛中开启 mathjax 输入数学公式的功能,但是 homeland 默认的 markdown 解释器语法和 latex 冲突,我想调用外部的 pandoc 命令来渲染,不知道应该怎么修改框架?
第二个问题是每次提交回复/修改以后需要手动刷新一次才能显示数学公式,否则就还是显示原来的页面,这个怎么解决呢?
我想问一下,要修改内部的 markdown 渲染方式的话,是不是要 fork 一份 homeland 项目和一份 homeland-docker 项目,并且把 docker 里面的安装 homeland 的源设置为自己 fork 的那一份?
您的意思是我修改这个模块,改好以后推送到我 fork 的分支上,然后把 docker 安装时下载的源设置为我 fork 的分支吗?
@huacnlee 是不是我应该修改这个函数:
def call
html = Render.to_html(@text)
html.strip!
html
end
把
html = Render.to_html(@text)
这一行的 Render.to_html
替换为我自己的解释器实现?
另外,我搭建的论坛地址在 https://www.h3space.cn/
时间上确实不允许我先学一遍 ruby + rails 再去自己研究怎么 DIY 框架,所以盼不吝多多指点。
是这样的,调用 mathjax 写公式很容易,head 标签里面加上那段 js 代码就可以了,但是解决 latex 和 markdown 语法冲突的问题就很麻烦。目前最好的方法还是调用 pandoc。我感觉用 ruby 的 ruby-pandoc 库,替换到前面 huacnlee 提到的那个代码就可以。
还有就是这个框架每次编辑、回复、或者打开之前的页面都要手动刷新才会显示数学公式,也很头疼。
如果您也愿意解决这个问题就太好了,方便的话可以加我微信 pkumathzhao 讨论。
md 学习成本比 latex 低多了,所以友好度其实不是问题 (能屏蔽掉一些临时抱佛脚发帖的小白用户挺好的)。
trix 这个编辑器支持 latex 吗?我看你的图片里的输入好像类似 mathtype 啊?支持 latex 是硬要求。因为有一些连分式、矩阵、cases 环境等等用普通的数学公式编辑器很麻烦。
请问我是不是应该 fork 一份 homeland 项目,在这个 fork 的 副本里面修改,然后把 homeland-docker 里的源设置为 fork 的副本?
@huacnlee 我不知道这是不是一个 bug:在 homeland 的 md 格式里面给图片添加超链接:
[![](img_url)](link_url)
点击图片的结果是查看大图,而不是跳转到链接处。
@zemora 谢谢你提供的思路,我试了一下,其实解决语法冲突并不麻烦,有现成的方案. 我测试是可行的:
会被渲染成:
简单的说就是在 markdown 中输入 $..(数学公式)...$
不换行显示公式, $$..(数学公式)..$$
单独一行显示公式,其他的 markdown 语法不受影响照常使用,也不需要调用复杂的 pandoc。
我随机抽取了 latex 中的很多数学符号, 基本都可以正常显示。
当然缺点也很明显,这个不是 ruby/rails 的解决方案。
不,你这个方法只对最基本的符号和简单的表达式有效,你可以试试显示 matrix, array 环境里面的换行 "\",我这里输入的是两个 "\",但是默认的 markdown 解释器会转义为单个的 "\",所以你只能看到一个。
太棒了!它是可以兼容 latex 的!但是怎么替换掉 homeland 里的编辑器呢?我不懂 ruby,求告知详细一点的操作方式 ...
我发现它很合适,还能跳转到注释超链接,快,快教教我怎么整合到 homeland-docker 里面去
我看它可以作为一个 js 库使用,是不是我应该在服务器上 npm install 这个库,然后在 ruby 里面调用它?
继续追问:homeland 每次修改或者打开上次的页面以后要刷新才能渲染数学公式,这个在哪里改?
@huacnlee 再打扰一下,我找了半天,也没看到 homeland-docker 是在哪里配置的 homeland 的下载源?就那几个文件,没看见有 github 这个个字符串 ...
替换掉原有的 MD 编辑器,还是非常麻烦的,stackedit 是一个独立的 web app,替换 homeland 富文本编辑器,可能流程都会要改变
嵌入你得用这个 https://github.com/benweet/stackedit.js
继续追问:homeland 每次修改或者打开上次的页面以后要刷新才能渲染数学公式,这个在哪里改?
你要把渲染公式的 js 库加入才行。
能麻烦您详细解释一下怎么操作吗?
我在 head 标签里面加入 https://benweet.github.io/stackedit.js/ 中说的
<script src="https://unpkg.com/[email protected]/docs/lib/stackedit.min.js"></script>
是不行的。