Hevea 是 LaTeX 到 HTML 的轉換器,可從http://pauillac.inria.fr/~maranget/hevea/index.html
我正在嘗試(但失敗了)在 CentOS 機器上編譯 hevea,但 yum 儲存庫似乎沒有軟體包。我已經安裝了打包的 Objective Caml 編譯器,如下所示:
$ uname -a
Linux ppserver 2.6.32-431.29.2.el6.x86_64 #1 SMP Tue Sep 9 21:36:05
UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$ sudo yum install ocaml
...
$ /usr/bin/ocamlc.opt -v
The Objective Caml compiler, version 3.11.2
Standard library directory: /usr/lib64/ocaml
嘗試編譯橡膠給出:
$ wget http://pauillac.inria.fr/~maranget/hevea/distri/hevea-2.19.tar.gz
$ tar -zxvf hevea-2.19.tar.gz
$ cd hevea-2.19
[hevea-2.19]$ make
sh ocb.sh opt
/usr/bin/ocamldep.opt -modules hevea.ml > hevea.ml.depends
/usr/bin/ocamldep.opt -modules auxx.mli > auxx.mli.depends
...
/usr/bin/ocamlc.opt -c -w +a-4-9-41-45 -annot -o videoc.cmi videoc.mli
/usr/bin/ocamlc.opt -c -w +a-4-9-41-45 -annot -o zyva.cmi zyva.mli
+ /usr/bin/ocamlc.opt -c -w +a-4-9-41-45 -annot -o infoRef.cmo infoRef.ml
File "infoRef.mll", line 127, characters 2-12:
Error: Unbound value String.map
Command exited with code 2.
make: *** [ocb-opt] Error 10
這是觸發錯誤的程式碼,
let verifie name =
String.map
(fun c -> match c with
| '\t'
| ','
| '\n' -> ' '
| '.' -> '-'
| _ -> c)
name
;;
我的猜測是 Objective Caml 編譯器發生了一些變化,hevea 程式碼需要一些輕微的更新?我已經給 Luc Maranget 發了電子郵件,並將在此處發布任何回應 [見下文]。
答案1
從 Luc Maranget 的電子郵件回覆中,
您只需要一個比 3.11.2 更新的 ocaml 編譯器,最好是目前版本... String.map 是在 OCaml 4.00.0 中引入的
無論如何,我建議您將 OCaml 安裝升級到目前版本。 Linux 發行版提供的 ocaml 已過時,因為 OCaml 3.11.2 於 2010 年 1 月發布。http://opam.ocamlpro.com/
希望這個問答將來能對其他人有幫助。