首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同的输出--在命令行中运行mathtext和使用apache-commons-exec从java程序执行命令时

不同的输出--在命令行中运行mathtext和使用apache-commons-exec从java程序执行命令时
EN

Stack Overflow用户
提问于 2012-05-25 01:54:49
回答 1查看 125关注 0票数 0

我正在尝试使用apache-commons-exec从java程序运行mathtext。问题是,当我从java程序运行相同的命令时,我得到了不同的输出,当我通过shell运行它时。所以如果在shell中像这样运行mathtext:

代码语言:javascript
复制
./mathtext test.png "\$\frac{{\left( {{p^2} - {q^2}} \right)}}{2}\$"

在一个shell中,我得到了完美的png,但是当我使用apache-commons-exec运行同样的东西时

代码语言:javascript
复制
Map map = new HashMap();    

        map.put("target", new File(trgtFileName));
        DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
        Executor exec = new DefaultExecutor();
        exec.setWorkingDirectory(/*I set the working directory where the mathtext is*/);
        CommandLine cl = new CommandLine("./mathtext"); 
        cl.addArgument("${target}");
        cl.addArgument(latex);
        cl.setSubstitutionMap(map);
//      Logger.log4j.info("command is:::"+cl.toString());
        ExecuteWatchdog watchdog = new ExecuteWatchdog(5000);
        exec.setWatchdog(watchdog);
        exec.execute(cl,EnvironmentUtils.getProcEnvironment(),resultHandler);
        resultHandler.waitFor();

我得到的图像不是方程式,而是原始的TeX字符串:(

有人能帮我解决这个问题吗?我想要得到确切的输出。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-26 09:37:22

我找出了问题所在:

$是unix shell的特殊字符,而不是java的特殊字符。因此,即使在命令行中,输入也需要转义$ like:

代码语言:javascript
复制
"\$\frac{{\left( {{p^2} - {q^2}} \right)}}{2}\$"

在java程序中,我不需要转义'$‘或在开头和结尾放入“(双引号)。我必须将命令放在如下位置:

代码语言:javascript
复制
$\frac{{\left( {{p^2} - {q^2}} \right)}}{2}$

希望这对某些人有帮助:)

--Shankhoneer

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10742805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档