2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2, 3  След.
 
 Latex из командной строки
Сообщение19.03.2015, 01:00 
Решил попытаться написать обработчик latex-строки в изображение.
Как я понял, обычно делают так. Создают файл .tex со всеми преамбулами, потом отправляют его на обработку в latex, он выдает файл .dvi, затем файл .dvi с помощью программы dvipng преобразуется в изображение.

С какими параметрами отправлять на обработку файл .tex, а затем .dvi?

Нашел такой пример:
Код:
cd /tmp; /usr/bin/latex myfile.tex < /dev/null |grep ^!|grep -v Emergency > /tmp/myfile.err 2> /dev/null 2>&1

Код:
/usr/bin/dvipng -q -T tight -D 155 -o myfile.png tmp/myfile.dvi 2>&1

Ну cd /tmp; - понятно, меняем текущую директорию. Дальше, как я понимаю, параметры для latex. Что означают эти команды?

 
 
 
 Re: Latex из командной строки
Сообщение19.03.2015, 04:19 
latex у вас с единственным параметром — имя файла. Всё прочее — фокусы bash, командного процессора. < — перенаправление: в качестве стандартного ввода передаётся /dev/null, сиречь пустой. | — неименованный пайп (не помню, как это по-русски): стандартный вывод latex передаётся команде grep ^!, то бишь, отфильтровываются строки, начинающиеся с «!», и передаются (через ещё один пайп) ещё одной grep, которая в данном случае выкидывает строки, где есть Emergency, прочие отправляются (> /tmp/myfile.err) в файл /tmp/myfile.err, а вот сообщения об ошибках сначала в пустоту (2> /dev/null), потом в тот же файл (2>&1). Тут какая-то ошибка, по-моему.
Что касается второй строчки, попробуйте
Используется синтаксис Bash
dvipng --help
.

 
 
 
 Re: Latex из командной строки
Сообщение19.03.2015, 07:53 
iifat, спасибо, теперь хоть знаю, что искать. Только не понятно, эти команды только для UNIX-образных систем? Точка с запятой как разделитель на Windows точно не работает :?

После команды:
D:\Server\htdocs\tmp>/Server/texlive/2014/bin/win32/dvipng -q -T tight -D 155 -o my123.png my123.dvi

Выдает ошибку:
This is /Server/texlive/2014/bin/win32/dvipng 1.14 Copyright 2002-2010 Jan-Ake Larsson GPL Ghostscript 9.15: Unrecoverable error, exit code 1

Когда из скрипта запускаю, скрипт зависает, будто ждет ответа.

При этом картинка нормальная создается. Что с ошибкой делать?

 
 
 
 Re: Latex из командной строки
Сообщение19.03.2015, 08:51 
ellipse в сообщении #992334 писал(а):
команды только для UNIX-образных систем?
Во-первых, есть команды и есть фокусы командной строки. К последним относятся «;», «|», <, >, 2>&1. Это конкретный процессор — bash. Он есть и для Виндовс, как, впрочем, и все команды. Возможно, и все прочие процессоры в Unix поддерживают всё это, возможно, нет. Хотя скорее да, впрочем, и cmd виндовый кроме точки с запятой, по-моему, всё поддерживает.
Про ошибку ничего сказать не могу. При чём тут Ghostscript — сам не пойму. Подождём кого поумнее.
ellipse в сообщении #992334 писал(а):
Когда из скрипта запускаю, скрипт зависает, будто ждет ответа
Скрипт какой? Тот что приведён?

 
 
 
 Re: Latex из командной строки
Сообщение19.03.2015, 13:46 
на php пока пробую:

Код:
$formula = 'x+y=z';

$tex = '\documentclass[12pt]{article}'."\n";
$tex .= '\usepackage[utf8]{inputenc}'."\n";
$tex .= '\begin{amssymb,amsmath}'."\n";
$tex .= '\begin{color}'."\n";
$tex .= '\begin{amsfonts}'."\n";
$tex .= '\begin{amssymb}'."\n";
$tex .= '\begin{pst-plot}'."\n";
$tex .= '\begin{document}'."\n";
$tex .= '\pagestyle{empty}'."\n";
$tex .= '\begin{displaymath}'."\n";

$tex .= $formula."\n";

$tex .= '\end{displaymath}'."\n";
$tex .= '\end{document}'."\n";

file_put_contents('tmp/my123.tex', $tex);

/*LaTeX to DVI */

$command = 'cd tmp && /Server/texlive/2014/bin/win32/latex my123.tex';

shell_exec($command);

if( !file_exists('tmp/my123.dvi') ) goto clean;

/* DVI to PNG */

$command = 'cd tmp && /Server/texlive/2014/bin/win32/dvipng -q -T tight -o my123.png my123.dvi';

shell_exec($command);

if( !file_exists('tmp/my123.png') )  goto clean;

clean: /* планируется уборка мусора */


Кстати, может кто знает, как убить процесс, который вызвал shell_exec, если время превышено?

-- Чт мар 19, 2015 15:24:44 --

Кажется, все заработало. А как сделать поддержку кириллицы? Кириллические символы просто игнорирует, будто их нет в формуле.

 
 
 
 Re: Latex из командной строки
Сообщение19.03.2015, 15:19 
Аватара пользователя
ellipse в сообщении #992436 писал(а):
Кириллические символы просто игнорирует, будто их нет в формуле.
\text{текст}
Или это тоже игнорирует?

 
 
 
 Re: Latex из командной строки
Сообщение19.03.2015, 15:35 
Someone в сообщении #992478 писал(а):
ellipse в сообщении #992436 писал(а):
Кириллические символы просто игнорирует, будто их нет в формуле.
\text{текст}
Или это тоже игнорирует?
О, работает. Можно всю формулу полностью заключать в \text{текст} или будут какие-то неполадки с формулами?

-- Чт мар 19, 2015 16:46:11 --

Можно использовать кодировку UTF-8 в tex-фйале?

-- Чт мар 19, 2015 16:59:15 --

А, так тут на форуме кириллица без \text тоже не работает.

 
 
 
 Re: Latex из командной строки
Сообщение20.03.2015, 02:37 
Как решить эту проблему?

Цитата:
This is pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012/Debian) (format=latex 2015.3.20) 20 MAR 2015 02:32
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**6519c72263ce077ed1a73d3685512ca3_1426807927.tex
(./6519c72263ce077ed1a73d3685512ca3_1426807927.tex
LaTeX2e <2011/06/27>
Babel <v3.8m> and hyphenation patterns for english, dumylang, nohyphenation, et
hiopic, farsi, arabic, pinyin, croatian, bulgarian, ukrainian, russian, slovak,
czech, danish, dutch, usenglishmax, ukenglish, finnish, french, basque, ngerma
n, german, swissgerman, ngerman-x-2012-05-30, german-x-2012-05-30, monogreek, g
reek, ibycus, ancientgreek, hungarian, bengali, tamil, hindi, telugu, gujarati,
sanskrit, malayalam, kannada, assamese, marathi, oriya, panjabi, italian, lati
n, latvian, lithuanian, mongolian, mongolianlmc, nynorsk, bokmal, indonesian, e
speranto, coptic, welsh, irish, interlingua, serbian, serbianc, slovenian, friu
lan, romansh, estonian, romanian, armenian, uppersorbian, turkish, afrikaans, i
celandic, kurmanji, polish, portuguese, galician, catalan, spanish, swedish, th
ai, loaded.
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo
File: size12.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
)
\c@part=\count79
\c@section=\count80
\c@subsection=\count81
\c@subsubsection=\count82
\c@paragraph=\count83
\c@subparagraph=\count84
\c@figure=\count85
\c@table=\count86
\abovecaptionskip=\skip41
\belowcaptionskip=\skip42
\bibindent=\dimen102
)
(/usr/share/texlive/texmf-dist/tex/latex/ucs/ucs.sty
Package: ucs 2004/10/17 UCS: Unicode input support

(/usr/share/texlive/texmf-dist/tex/latex/ucs/data/uni-global.def
File: uni-global.def 2012/04/20 UCS: Unicode global data
)
\uc@secondtry=\count87
\uc@combtoks=\toks14
\uc@combtoksb=\toks15
\uc@temptokena=\toks16
)
(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty
Package: inputenc 2008/03/30 v1.1d Input encoding file
\inpenc@prehook=\toks17
\inpenc@posthook=\toks18

(/usr/share/texlive/texmf-dist/tex/latex/ucs/utf8x.def
File: utf8x.def 2004/10/17 UCS: Input encoding UTF-8
))
(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty
Package: fontenc 2005/09/27 v1.99g Standard LaTeX package

(/usr/share/texlive/texmf-dist/tex/latex/cyrillic/t2aenc.def
File: t2aenc.def 2005/09/27 v1.0i Cyrillic encoding definition file
)
LaTeX Font Info: Try loading font information for T2A+cmr on input line 100.


(/usr/share/texlive/texmf-dist/tex/latex/cyrillic/t2acmr.fd
File: t2acmr.fd 2001/08/11 v1.0a Computer Modern Cyrillic font definitions
)
! Font T2A/cmr/m/n/12=larm1200 at 12.0pt not loadable: Metric (TFM) file not found.
<to be read again>
relax
l.100 \fontencoding\encodingdefault\selectfont

?
! Emergency stop.
<to be read again>
relax
l.100 \fontencoding\encodingdefault\selectfont


End of file on the terminal!


Here is how much of TeX's memory you used:
888 strings out of 493486
11901 string characters out of 3143549
63973 words of memory out of 3000000
4260 multiletter control sequences out of 15000+200000
3938 words of font info for 15 fonts, out of 3000000 for 9000
957 hyphenation exceptions out of 8191
22i,0n,20p,371b,71s stack positions out of 5000i,500n,10000p,200000b,50000s
No pages of output.

 
 
 
 Re: Latex из командной строки
Сообщение20.03.2015, 02:44 
Аватара пользователя
dvipng использует gs для постскипта но это можно избежать

http://www.nongnu.org/dvipng/dvipng_4.html

Известно, что 9.14 содержал баги, но вроде в 9.15 их нет

 
 
 
 Re: Latex из командной строки
Сообщение20.03.2015, 02:51 
ellipse в сообщении #992493 писал(а):
Можно использовать кодировку UTF-8 в tex-фйале?
И можно, и стоит, тем более что в преамбуле вы уже указали её, и тех будет читать текст в ней.

 
 
 
 Re: Latex из командной строки
Сообщение20.03.2015, 03:07 
Red_Herring в сообщении #992855 писал(а):
dvipng использует gs для постскипта но это можно избежать
Так вроде проблема не с dvipng, а с latex. Или Вы просто между прочим совет даете :roll:

Имеете ввиду это?
--nogssafer* Don't use -dSAFER in ghostscript calls

 
 
 
 Re: Latex из командной строки
Сообщение20.03.2015, 03:21 
ellipse в сообщении #992862 писал(а):
проблема не с dvipng, а с latex
Насколько могу судить, не найден шрифт larm1200. Посмотрите, есть у вас там файлы larm*.*?

 
 
 
 Re: Latex из командной строки
Сообщение20.03.2015, 03:46 
iifat, вот все, что найдено:
Цитата:
~# find / -name *larm*
/usr/lib/perl/5.14.2/auto/POSIX/alarm.al
/usr/local/mgr5/www/webmail-afterlogic/webmail/libraries/Sabre/VObject/Component/VAlarm.php
/usr/local/mgr5/external/include/net-snmp/library/snmp_alarm.h
/usr/share/texmf/tex4ht/ht-fonts/win/1251/lh/lh-t2a/larm.htf
/usr/share/texmf/tex4ht/ht-fonts/unicode/lh/lh-t2a/larm.htf
/usr/share/texmf/tex4ht/ht-fonts/iso8859/5/lh/lh-t2a/larm.htf
/usr/share/texmf/tex4ht/ht-fonts/koi/8r/lh/lh-t2a/larm.htf
/usr/share/doc/gawk/examples/prog/alarm.awk
/usr/share/man/man3/ualarm.3.gz
/usr/share/man/man2/alarm.2.gz

 
 
 
 Re: Latex из командной строки
Сообщение20.03.2015, 03:57 
Показалось, в вашей преамбуле чего-то не хватает — только не знаю, чего. И почему там \begin в некоторых местах вместо \usepackage? А если не вместо, должны быть соответствующие \end тогда…

 
 
 
 Re: Latex из командной строки
Сообщение20.03.2015, 04:16 
Аватара пользователя
ellipse в сообщении #992862 писал(а):
Так вроде проблема не с dvipng, а с latex. Или Вы просто между прочим совет даете

Кто-то спрашивал причём gs

 
 
 [ Сообщений: 44 ]  На страницу 1, 2, 3  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group