2012-05-24 2 views
0

Я пытаюсь запустить mathtext из java-программы, используя apache-commons-exec. Проблема в том, что я получаю разные результаты, когда запускаю ту же самую команду из java-программы и когда запускаю ее через оболочку. так что если запустить mathtext как это в оболочке:Различные выходные данные - при запуске mathtext в командной строке и при выполнении команды из java-программы с использованием apache-commons-exec

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

в оболочке я получить идеальный PNG но когда я запускаю то же самое с помощью Apache-Коммонс-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 строка :(

Может кто-то пожалуйста, помогите мне в решении этого вопроса? Я хочу, чтобы получить точный результат. Спасибо.

ответ

1

Я выяснил, где проблема:

$ - специальный символ для оболочки unix, а не для java. Таким образом, даже если в командной строке ввода необходимо, чтобы избежать $ как:

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

внутри программы Java Мне не нужно, чтобы избежать «$» или положить "(двойные кавычки) в начале и в конце. Я должен был поставить команду как:

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

Надеется, что это помогает кто-то :)

--Shankhoneer