0

apache-commons-execを使用してJavaプログラムからmathtextを実行しようとしています。問題は、Javaプログラムから同じコマンドを実行した場合と、シェルを介して実行した場合で、異なる出力が得られることです。したがって、シェルで次のようにmathtextを実行すると、次のようになります。

./mathtext test.png "\$\frac{{\left( {{p^2} - {q^2}} \right)}}{2}\$"

シェルでは完璧なpngが得られますが、apache-commons-execを使用して同じことを実行すると

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文字列の画像を取得します:(

誰かが問題を解決するのを手伝ってくれませんか?正確な出力を取得したい。ありがとう。

4

1 に答える 1

1

私は問題がどこにあるかを理解しました:

$は、JavaではなくUNIXシェルの特殊文字です。したがって、コマンドラインで入力をエスケープする必要がある場合でも、次のようになります。

"\$\frac{{\left( {{p^2} - {q^2}} \right)}}{2}\$"

Javaプログラム内では、最初と最後に「$」をエスケープしたり、「」(二重引用符)を付けたりする必要はありません。次のようなコマンドを入力する必要がありました。

$\frac{{\left( {{p^2} - {q^2}} \right)}}{2}$

これが誰かに役立つことを願っています:)

--Shankhoneer

于 2012-05-26T01:37:21.547 に答える