【问题标题】:Convert HTML and inline Mathjax math to LaTeX with pandoc ruby使用 pandoc ruby​​ 将 HTML 和内联 Mathjax 数学转换为 LaTeX
【发布时间】:2013-12-27 21:10:16
【问题描述】:

我正在构建一个 Rails 应用程序,我正在寻找一种方法来将带有 html 和内联 MathJax 数学 (TeX) 的数据库条目转换为 LaTeX 以创建 pdf。

我发现了类似的问题:

我在这里看到两个选项:

  1. 创建一个 Haskell 可执行文件,在将 html 转换为 LaTeX 时,只保留 \(y=f(x)\) 之类的内容
  2. 编写一个 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


【解决方案1】:

获取最新版本的 pandoc (1.12.2)。然后就可以了

pandoc -f html+tex_math_dollars+tex_math_single_backslash -t latex

【讨论】:

  • 感谢@john-macfarlane,这几乎可以完美运行。唯一的问题是$$y=f(x)$$ 被转换为$$y=f(x)$\\$\n 而不是$$y=f(x)$$\n。知道为什么吗?
猜你喜欢
  • 1970-01-01
  • 2013-04-07
  • 2020-12-21
  • 1970-01-01
  • 2015-12-13
  • 2016-10-08
  • 2019-02-25
  • 1970-01-01
  • 2012-09-29
相关资源
最近更新 更多