2015-07-28 1 views
1

Latex файла: 0.tex содержание:Невозможно запустить терминальные команды из Java для латекса

\documentclass{article} 
\begin{document} 
\begin{equation} 
\frac{\partial p_{dyn}}{\partial n} = A 
\end{equation} 
\end{document} 

Shell файл: 0.sh содержание:

latex /u/b/basnet/Desktop/0.tex 
dvipng /u/b/basnet/Desktop/0.dvi 

команды в терминале:

>chmod 755 /u/b/basnet/Desktop/0.sh 
>/u/b/basnet/Desktop/0.sh 

Выход: Изображение, Dvi и другие файлы, созданные латексом. Вы можете видеть в синем окне.

enter image description here

Проблема: Это работает только через терминал, не выполнив команду с помощью программы Java.

Java Программа Код:

Runtime.getRuntime().exec("chmod 755 /u/b/basnet/Desktop/0.sh"); 
Runtime.getRuntime().exec("/u/b/basnet/Desktop/0.sh"); 
System.out.println("Script executed successfully"); 

Выход:

run: 
Script executed successfully 
BUILD SUCCESSFUL (total time: 0 seconds) 

Первая строка кода т.е. делает файл исполняемым работает отлично, как я перепроверены. Но вторая строка, где файл сценария содержит команду латекса, не работает при работе через Java. Мне нужно сгенерировать эти файлы через мою программу.

ответ

1

Я предполагаю, что это что-то делать с окружающей средой, я не слишком глубоко во всю эту ОС вещи, но я думаю, что у меня есть решение, которое работало на вашем примере на моем компьютере:

Вы должны изменить имена программ для полных путей для использования в вашем shell-файле, поскольку среда выполнения Java не находит их. Например:

/Library/TeX/texbin/latex /u/basnet/Desktop/0.tex 

Единственное, что идет не так в том, что выходные файлы появляются одну папку выше, где файл текс находится, что означает, что вы должны изменить либо назначение вывода или линию для выполнения дви ,

Если вы не можете найти путь для программ, откройте Баш и введите

which latex 

и

which diving