LINUX.ORG.RU

Проблемы с выводом скрипта в латех

 ,


0

2

Есть такой код:

\newcommand{\python}[1]{%
\immediate\write18{python #1 > ./py.out 2> ./py.err}
\immediate\input"py.out"}

\newcommand{\ptn}[1]{%
\python{./path_to_your_scripts/script_name.py #1}}

\newcommand{\peval}[1]{%
\python{-c "print #1" |./works/sedder.sh}}
(Седер заменяет точки на запятые)
При вводе «\peval{30+4}м» выводится:
Emergency stop. \peval{30+4}м (followed by: \peval{30+4}м....)
Иначе говоря, ошибка происходит, когда символ вплотную присоединяется к команде, а если его не присоединять так, то образуется естественно пробел, которого я хочу избежать. Как починить?

★★★★★

Последнее исправление: deterok (всего исправлений: 2)

А какая версия texlive? У меня вообще:

! I can't find file `py.outм'.
l.24 \peval{30+4}м

Кстати, вместо sedder.sh можно сделать \usepackage{icomma}, если я правильно понимаю предназначение скрипта.

Array
()
Ответ на: комментарий от Array

В общем app-text/texlive-2011-r1
Проблема в том, что к имени подключаемого файла добавляются все находящиеся символы, если они не отделены пробелом.
sedder нужен для замены точки на запятую в числах.

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok

У себя решил так

\newcommand{\python}[1]{%
\immediate\write18{python #1 > ./py.out 2> ./py.err}
\immediate\input{py.out}}
Но все-равно появился пробел.

Array
()
Ответ на: комментарий от Array

Думал, что python виноват, но

\newcommand{\peval}[1]{%
\python{-c "import sys;%
sys.stdout.write(#1) |./works/sedder.sh}}
дает такой же результат. Думаю дело в импортируемом файле.

deterok ★★★★★
() автор топика
Ответ на: комментарий от Array

Вот так убирает пробел и спереди

\newcommand{\python}[1]{%
\immediate\write18{python #1 > ./py.out 2> ./py.err}
\unskip\immediate\input{py.out}\unskip}
Спасибо, выручили.
Теперь, если хотите, можете написать в лор вики, что бы сие ценное знание не помогало и другим.

deterok ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.