lua-resty-graphics-node

一个适用于 TeX 图形的 MathJax 版本

$ opm get sjnam/lua-resty-graphics-node

lua-resty-graphics-node

就像 MathJax 使在网页上使用 TeX 数学公式变得更容易一样,lua-resty-graphics-node 使通过脚本(如 metapostgraphviz)在网页上获取相应的图形变得更容易。

状态

实验性。

安装

  • 先决条件

  • TeX Live,一种轻松上手 TeX 文档制作系统的便捷方法

  • OpenResty,一个功能齐全的 Web 平台,集成了标准的 Nginx 核心和 LuaJIT

  • lua-gumbo,一个用于 Lua 的 HTML5 解析器和 DOM 库

  • sockexec,一个用于执行本地进程的小型服务器

  • netstring.lua,一个用于 Lua/LuaJIT 的 DJB netstring 编码格式实现

  • lua-resty-exec,在 OpenResty 中运行外部程序,无需生成 shell 或阻塞

  • Graphviz,图形可视化是一种将结构信息表示为抽象图形和网络图的方法。

  • lib/resty 放到你的 Lua 库路径中。

入门

    $ export PATH=/usr/local/openresty/nginx/sbin:$PATH
    $ mkdir ~/www
    $ cd ~/www
    $ mkdir -p conf logs util html/images
    $ sockexec /tmp/exec.sock &
    $ nginx -p `pwd`/ -c conf/nginx.conf
  • html/sample.html

        <html>
        <body>
        <mplibcode width="250">
        beginfig(1)
          pair A, B, C;
          A:=(0,0); B:=(1cm,0); C:=(0,1cm);
          draw A--B--C;
        endfig;
        </mplibcode>
        <hr>
        <graphviz cmd="dot" width="250">
        digraph G {
          main -> init;
          main -> cleanup;
        }
        </graphviz>
        </body>
        </html>
  • conf/nginx.conf

        worker_processes  1;
        error_log logs/error.log;
        events {
            worker_connections 1024;
        }
        http {
            server {
                listen 8080;
                include mime.types;
                location /sample {
                    default_type text/html;
                    content_by_lua_block {
                        require("resty.gxn"):render()
                    }
                }
            }
        }
  • util/gxn.sh

        #!/bin/bash
        
        cd $1
        
        ERROR=0
        
        case $2 in
            mplibcode)
                $5 $3
                ERROR=$?
                ;;
            graphviz)
                $5 -Tsvg $3.gv -o $3.$4
                ERROR=$?
                ;;
            *)
                echo 'NOT SUPPORTED'
        esac
        
        rm -rf *.mp *.mpx *.gv
        
        exit $ERROR

作者

Soojin Nam

许可证

mit

依赖项

jprjr/lua-resty-exec,openresty

版本