【发布时间】:2013-12-27 21:10:16
【问题描述】:
我正在构建一个 Rails 应用程序,我正在寻找一种方法来将带有 html 和内联 MathJax 数学 (TeX) 的数据库条目转换为 LaTeX 以创建 pdf。
我发现了类似的问题:
- Convert html mathjax to markdown with pandoc
- How to convert HTML with mathjax into latex using pandoc?
我在这里看到两个选项:
- 创建一个 Haskell 可执行文件,在将 html 转换为 LaTeX 时,只保留
\(y=f(x)\)之类的内容 - 编写一个 ruby 方法,它执行以下操作:
- 将
string拆分为带有正则表达式的array(string.split(regex)) - 循环遍历创建的
array,如果内容匹配regex,则将不包含PandocRuby.html(string).to_latex的内联数学的部分转换为LaTeX - 将所有内容重新连接在一起 (
array.join)
- 将
我更喜欢 ruby 方法解决方案,因为我在 Heroku 上托管我的应用程序,我不喜欢将二进制文件签入 git。
注意:pandoc 二进制文件是这样实现的 @987654323 @)
所以我的问题是:regex 应该是什么样子将string 拆分为\(math\)。
例如string 可以是这样的: text \(y=f(x) \iff \log_{10}(b)\) and \(a+b=c\) text
为了完整起见,Haskell 脚本应该如何编写以在转换为 LaTeX 时不理会\(math\) 而 ruby 方法不是可能的解决方案?
【问题讨论】:
-
我不确定,但不认为标准的 Ruby 正则表达式引擎有任何递归支持。在这种情况下,匹配任意平衡括号变得更加棘手。
-
@Qtax 类似
string.split(/(\\\(.*?\\\))/).each_slice(2).map { |a| [PandocRuby.html(a[0]).to_latex, PandocRuby.convert(a[1].to_s, {f: "html+tex_math_single_backslash", to: :latex})] }.join的作品。
标签: ruby regex haskell latex pandoc