Проблемы с метапост

gr_nik

скажите, в чём у меня проблема? Я рисую картинки в метапосте. Пока там нет букв, всё нормально. Как только добавляю буквы (даже не русские, а английские то всё плохо...
Вот текст:

beginfig(1)
u:=3cm;
v:=sind(60);
a:=angle(1,sqrt(2;
drawarrow (-1.2,0)*u--(1.2,0)*u;
drawarrow (0,-0.3)*u--(0,1.2)*u;
draw (0,0) withpen pencircle scaled 1mm;
draw (-0.5,0)*u--(0,0.5)*u--(0.5,0)*u dashed evenly;
draw (0,0.5)*u withpen pencircle scaled 1mm;
draw (0.5,0)*u withpen pencircle scaled 1mm;
draw (-0.5,0)*u withpen pencircle scaled 1mm;
c:=1/4+sqrt(5)/4;
d:=2*c-1/2;
draw (c,c)*u withpen pencircle scaled 2mm;
draw (-c,c)*u withpen pencircle scaled 2mm;
draw (0,d)*u withpen pencircle scaled 1mm;
draw (c,c)*u--(0,0.5)*u--(-c,c)*u--(0,d)*u--(c,c)*u;
draw (c,c)*u--(0.5,0)*u;
draw (-c,c)*u--(-0.5,0)*u;
label.top(btex x etex0,0;
endfig;

end;

Вот как он ругается:
C:\progs\teoc\TEST>mpost test.mp --tex=latex
(test.mpC:\tex\texmf\miktex\bin\mptotex.exe "C:\progs\teoc\TEST\test.mp" > "C:
\DOCUME~1\05AC~1\LOCALS~1\Temp\mpx2572.tmp\mpx314.tex"
C:\tex\texmf\miktex\bin\latex.EXE -interaction=nonstopmode C:/DOCUME~1/05AC~1/LO
CALS~1/Temp/mpx2572.tmp/mpx314.tex
This is e-TeX, Version 3.141592-2.2 (MiKTeX 2.4)
entering extended mode
(C:/DOCUME~1/05AC~1/LOCALS~1/Temp/mpx2572.tmp/mpx314.tex
LaTeX2e <2003/12/01>
Babel <v3.8a> and hyphenation patterns for english, russian, dumylang, nohyphen
ation, loaded.
[1]
! I can't find file `mpx314.aux'.
\enddocument ...makeatletter \input \jobname .aux
\fi \@dofilelist \ifdim \f...
l.3 \end{document}
Please type another input file name
! Emergency stop.
\enddocument ...makeatletter \input \jobname .aux
\fi \@dofilelist \ifdim \f...
l.3 \end{document}
Output written on mpx314.dvi (1 page, 128 bytes).
Transcript written on mpx314.log.
TeX failed on C:/DOCUME~1/05AC~1/LOCALS~1/Temp/mpx2572.tmp/mpx314.tex! Return co
de: 1
>> test.mp
>> test.mpx
! Unable to make mpx file.
l.28 label.top(btex
x etex0,0;
Transcript written on test.log.

Те временные файлы, которые он создаёт, почему-то сразу стираются, поэтому я не могу прочитать, что за логи он там пишет в mpx314.log...
Как мне с этим разобраться? Вроде, ставил tex - всё как положено, не пойму в чём проблема.
Когда нет этой строчки с label, тогда всё работает.

gr_nik

Ап!
Неужели никто помочь не может?

yulial

У меня Linux, твой пример откомпилировался.
Но мой ТеХ плохо ведёт себя, если в именах файлов есть '~'. Не в этом ли дело?
% tex '~.tex'
This is TeX, Version 3.141592 (Web2C 7.5.4)
(/usr/share/texmf/tex/latex/tools/.tex File ignored)
*
! Emergency stop.
<*> ~.tex

No pages of output.
Transcript written on .log.

Может, сделать так, чтобы mpx*.tex файлы писались в текущий каталог, а не в какую-то задницу? Типа установить TEXMFOUTPUT=.
?
==========================================
Я, кажется, догадываюсь, в чём дело. Не в том, что я сначала подумал.
Временный ТеХ-файл пишется во временный каталог. Затем Латех, находясь в твоём рабочем каталоге, пытается откомпилировать его по заданному полному пути, который, видимо, не входит в путь поиска Латеха. Латеху нужен соответствующий *.aux файл, и ищется он по пути — и не находится.
Мне кажется, поскольку в твоём примере нет ничего специфического латеховского, стоит попробовать --tex=tex (или как там в МиКТеХе называется plain-TeX). Или слетать так, чтобы при запуске Латеха временный каталок вошёл в путь его поиска на всю глубину. Как это делается в Миктехе, я точно не знаю.

gr_nik

Мне кажется, поскольку в твоём примере нет ничего специфического латеховского, стоит попробовать --tex=tex.
Так он иногда работает, но не вклеивается в файл потом, dvi не просматривается. И всё равно файл посложнее не компилируется почему-то.

kachokslava

вначале метадокумента секция про documentclass есть?

yulial

Похоже, проблема с тильдами в именах:

latex '\input YYYY~/JJJ.tex'
This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4)
entering extended mode
LaTeX2e <2003/12/01>
Babel <v3.8d> and hyphenation patterns for american, french, german, ngerman, b
ahasa, basque, bulgarian, catalan, croatian, czech, danish, dutch, esperanto, e
stonian, finnish, greek, icelandic, irish, italian, latin, magyar, norsk, polis
h, portuges, romanian, russian, serbian, slovak, slovene, spanish, swedish, tur
kish, ukrainian, nohyphenation, loaded.
! I can't find file `YYYY'.
<to be read again>
\protect
<*> \input YYYY~
/JJJ.tex
Please type another input file name:
! Emergency stop.
<to be read again>
\protect
<*> \input YYYY~
/JJJ.tex
No pages of output.
Transcript written on texput.log.


latex '\catcode`\~=11 \input YYYY~/JJJ.tex'
This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4)
entering extended mode
LaTeX2e <2003/12/01>
Babel <v3.8d> and hyphenation patterns for american, french, german, ngerman, b
ahasa, basque, bulgarian, catalan, croatian, czech, danish, dutch, esperanto, e
stonian, finnish, greek, icelandic, irish, italian, latin, magyar, norsk, polis
h, portuges, romanian, russian, serbian, slovak, slovene, spanish, swedish, tur
kish, ukrainian, nohyphenation, loaded.
(./YYYY~/JJJ.tex (/usr/share/texmf/tex/latex/base/article.cls
Document Class: article 2004/02/16 v1.4f Standard LaTeX document class
(/usr/share/texmf/tex/latex/base/size10.clo (./JJJ.aux) [1] (./JJJ.aux) )
Output written on JJJ.dvi (1 page, 304 bytes).
Transcript written on JJJ.log.

gr_nik

Нет, нету. Когда я дописываю то, что в FAQ написано
+MP-ADDITIONAL-HEADER
verbatimtex
&latex
\documentclass{article}
\usepackage[cp1251]{inputenc}
\usepackage[russian]{babel}
\begin{document}etex
-MP-ADDITIONAL-HEADER

он ругается:
C:\progs\teoc\TEST>mpost test.mp
(test.mp
>> -2HEADER-2ADDITIONAL
! Isolated expression.
<to be read again>
begingroup
beginfig->begingroup
.charcode:=(EXPR0);clearxy;clearit;clearpen;pickup.defau...
l.9 beginfig(1)
! Extra tokens will be flushed.
<to be read again>
begingroup
beginfig->begingroup
.charcode:=(EXPR0);clearxy;clearit;clearpen;pickup.defau...
l.9 beginfig(1)
C:\tex\texmf\miktex\bin\mptotex.exe "C:\progs\teoc\TEST\test.mp" > "C:\DOCUME~
1\05AC~1\LOCALS~1\Temp\mpx696A.tmp\mpx314.tex"
C:\tex\texmf\miktex\bin\tex.exe -interaction=nonstopmode C:/DOCUME~1/05AC~1/LOCA
LS~1/Temp/mpx696A.tmp/mpx314.tex
This is TeX, Version 3.141592 (MiKTeX 2.4)
(C:/DOCUME~1/05AC~1/LOCALS~1/Temp/mpx696A.tmp/mpx314.tex
! Misplaced alignment tab character &.
l.1 &
latex
! Undefined control sequence.
l.2 \documentclass
{article}
! Undefined control sequence.
l.3 \usepackage
[cp1251]{inputenc}
! Undefined control sequence.
l.4 \usepackage
[russian]{babel}
! Undefined control sequence.
l.5 \begin
{document}%
[1] [1] )
(see the transcript file for additional information)
Output written on mpx314.dvi (2 pages, 340 bytes).
Transcript written on mpx314.log.
TeX failed on C:/DOCUME~1/05AC~1/LOCALS~1/Temp/mpx696A.tmp/mpx314.tex! Return co
de: 1
>> test.mp
>> test.mpx
! Unable to make mpx file.
l.28 label.top(btex
x etex0,0;
Transcript written on test.log.

yulial

+MP-ADDITIONAL-HEADER
verbatimtex
&latex
\documentclass{article}
\usepackage[cp1251]{inputenc}
\usepackage[russian]{babel}
\begin{document}etex
-MP-ADDITIONAL-HEADER
Нужен "%"перед &latex.

gr_nik

У меня, вроде бы, нет тильд в именах. Это он так заменяет длинные названия папок только, а так нету нигде тильд... Или я чего-то не понял, что имеется в виду.

gr_nik

Добавил, но мало что изменилось:
 
C:\progs\teoc\TEST>mpost test.mp
(test.mp
>> -2HEADER-2ADDITIONAL
! Isolated expression.
<to be read again>
     begingroup
beginfig->begingroup
     .charcode:=(EXPR0);clearxy;clearit;clearpen;pickup.defau...
l.9 beginfig(1)
! Extra tokens will be flushed.
<to be read again>
     begingroup
beginfig->begingroup
     .charcode:=(EXPR0);clearxy;clearit;clearpen;pickup.defau...
l.9 beginfig(1)
C:\tex\texmf\miktex\bin\mptotex.exe "C:\progs\teoc\TEST\test.mp" > "C:\DOCUME~
1\05AC~1\LOCALS~1\Temp\mpx72B4.tmp\mpx314.tex"
C:\tex\texmf\miktex\bin\tex.exe -interaction=nonstopmode C:/DOCUME~1/05AC~1/LOCA
LS~1/Temp/mpx72B4.tmp/mpx314.tex
This is TeX, Version 3.141592 (MiKTeX 2.4)
(C:/DOCUME~1/05AC~1/LOCALS~1/Temp/mpx72B4.tmp/mpx314.tex
! Undefined control sequence.
l.2 \documentclass
     {article}
! Undefined control sequence.
l.3 \usepackage
     [cp1251]{inputenc}
! Undefined control sequence.
l.4 \usepackage
     [russian]{babel}
! Undefined control sequence.
l.5 \begin
     {document}%
[1] [1] )
(see the transcript file for additional information)
Output written on mpx314.dvi (2 pages, 332 bytes).
Transcript written on mpx314.log.
TeX failed on C:/DOCUME~1/05AC~1/LOCALS~1/Temp/mpx72B4.tmp/mpx314.tex! Return co
de: 1
>> test.mp
>> test.mpx
! Unable to make mpx file.
l.28 label.top(btex
     x etex0,0;
Transcript written on test.log.
  

В test.log написано:
This is MetaPost, Version 0.641 (MiKTeX 2.4) (preloaded mem=plain 2007.2.15) 22 APR 2007 22:16
**test.mp
(test.mp
>> -2HEADER-2ADDITIONAL
! Isolated expression.
<to be read again>
begingroup
beginfig->begingroup
.charcode:=(EXPR0);clearxy;clearit;clearpen;pickup.defau...
l.9 beginfig(1)

I couldn't find an `=' or `:=' after the
expression that is shown above this error message,
so I guess I'll just ignore it and carry on.
! Extra tokens will be flushed.
<to be read again>
begingroup
beginfig->begingroup
.charcode:=(EXPR0);clearxy;clearit;clearpen;pickup.defau...
l.9 beginfig(1)

I've just read as much of that statement as I could fathom,
so a semicolon should have been next. It's very puzzling...
but I'll try to get myself back together, by ignoring
everything up to the next `;'. Please insert a semicolon
now in front of anything that you don't want me to delete.
(See Chapter 27 of The METAFONTbook for an example.)
>> test.mp
>> test.mpx
! Unable to make mpx file.
l.28 label.top(btex
x etex0,0;
The two files given above are one of your source files
and an auxiliary file I need to read to find out what your
btex..etex blocks mean. If you don't know why I had trouble,
try running it manually through MPtoTeX, TeX, and DVItoMP

yulial

Я не знаю точно, что именно передаётся ТеХу в командной строке в Windows в таком случае:
C:\tex\texmf\miktex\bin\latex.EXE -interaction=nonstopmode C:/DOCUME~1/05AC~1/LOCALS~1/Temp/mpx2572.tmp/mpx314.tex
Но когда выполняется \input\jobname .aux, и \jobname содержит "~" с \catcode == 13 (активный символ будут проблемы.
Я показал два примера. В одном компилировался файл, находящийся в каталоге с тильдой в имени, и эту тильду я защитил от досрочного раскрытия в командной строке кавычками — тех оказался с тильдой один на один (в Linux тильда раскрывается иногда в командной строке ещё до запуска команды). Во втором примере я прежде изменил \catcode у тильды на 11 (буква) — всё прошло нормально.

yulial

Убери нафик строчки с MP_ADDITIONAL_HEADER.
Как же мало что изменилось! Уже гораздо лучше. И верни уж тогда --tex=latex.

gr_nik

Да, так он работает, но получившийся файл не хочет потом просматриваться dvi-viewerом...
 
C:\progs\teoc\TEST>mpost test.mp --tex=latex
(test.mpC:\tex\texmf\miktex\bin\mptotex.exe "C:\progs\teoc\TEST\test.mp" > "C:
\DOCUME~1\05AC~1\LOCALS~1\Temp\mpx8D3C.tmp\mpx314.tex"
C:\tex\texmf\miktex\bin\latex.EXE -interaction=nonstopmode C:/DOCUME~1/05AC~1/LO
CALS~1/Temp/mpx8D3C.tmp/mpx314.tex
This is e-TeX, Version 3.141592-2.2 (MiKTeX 2.4)
entering extended mode
(C:/DOCUME~1/05AC~1/LOCALS~1/Temp/mpx8D3C.tmp/mpx314.tex
LaTeX2e <2003/12/01>
Babel <v3.8a> and hyphenation patterns for english, russian, dumylang, nohyphen
ation, loaded.
(C:\tex\texmf\tex\latex\base\article.cls
Document Class: article 2004/02/16 v1.4f Standard LaTeX document class
(C:\tex\texmf\tex\latex\base\size10.clo
(C:\tex\texmf\tex\latex\base\inputenc.sty
(C:\tex\texmf\tex\latex\cyrillic\cp1251.def
(C:\tex\texmf\tex\generic\babel\babel.sty
(C:\tex\texmf\tex\generic\babel\russianb.ldf
(C:\tex\texmf\tex\generic\babel\babel.def)
(C:\tex\texmf\tex\latex\cyrillic\t2aenc.def
No file mpx314.aux.
(C:\tex\texmf\tex\latex\cyrillic\t2acmr.fd) [1] (mpx314.aux) )
Output written on mpx314.dvi (1 page, 196 bytes).
Transcript written on mpx314.log.
C:\tex\texmf\miktex\bin\dvitomp.exe "mpx314.dvi" "C:\progs\teoc\TEST\test.mpx"
 [1] )
1 output file written: test.1
Transcript written on test.log.
  

А вот tex-файл:
 

\documentclass[12pt]{article}
\usepackage[T2A]{fontenc}
\usepackage[cp1251]{inputenc}
\usepackage[russian]{babel}
\usepackage{amsfonts}
\usepackage[dvips]{graphicx}

\begin{document}

\includegraphics{test.1}

\end{document}


но dvi ругается:
 
Error: /undefined in larm1000
Operand stack:
   --nostringval-- PermitFileReading --nostringval-- PermitFileWriting --nostringval-- (x)
Execution stack:
   %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1 3 %oparray_pop 1 3 %oparray_pop 1 3 %oparray_pop 1 3 %oparray_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval--
Dictionary stack:
   --dict:1057/1123(roG)-- --dict:0/20(G)-- --dict:70/200(L)-- --dict:95/300(L)-- --dict:42/200(L)--
Current allocation mode is local
MiKTeX GPL Ghostscript 8.01: Unrecoverable error, exit code 1
  

И картинка в документе в итоге не отображается...

yulial

Вот такой код должен работать:
%+MP-ADDITIONAL-HEADER <<<<<<< УБРАТЬ НАФИК
verbatimtex
%&latex
%^^^^^^<<<<<<<<<<<<<<<<<< ПРОЦЕНТ НУЖЕН
\documentclass{article}
\usepackage[cp1251]{inputenc}
\usepackage[russian]{babel}
\begin{document}etex
%-MP-ADDITIONAL-HEADER <<<<<<<<< УБРАТЬ НАФИК!



beginfig(1)
u:=3cm;
v:=sind(60);
a:=angle(1,sqrt(2;
drawarrow (-1.2,0)*u--(1.2,0)*u;
drawarrow (0,-0.3)*u--(0,1.2)*u;
draw (0,0) withpen pencircle scaled 1mm;
draw (-0.5,0)*u--(0,0.5)*u--(0.5,0)*u dashed evenly;
draw (0,0.5)*u withpen pencircle scaled 1mm;
draw (0.5,0)*u withpen pencircle scaled 1mm;
draw (-0.5,0)*u withpen pencircle scaled 1mm;
c:=1/4+sqrt(5)/4;
d:=2*c-1/2;
draw (c,c)*u withpen pencircle scaled 2mm;
draw (-c,c)*u withpen pencircle scaled 2mm;
draw (0,d)*u withpen pencircle scaled 1mm;
draw (c,c)*u--(0,0.5)*u--(-c,c)*u--(0,d)*u--(c,c)*u;
draw (c,c)*u--(0.5,0)*u;
draw (-c,c)*u--(-0.5,0)*u;
label.top(btex x etex0,0;
endfig;

end;

yulial

Да, так он работает, но получившийся файл не хочет потом просматриваться dvi-viewerом...
Вот это нормально. Этому явлению я давал подробное объяснение в стади месяц-другой тому назад.
Сделай dvips, и твой полученный *.ps файл будет готов к употреблению.

gr_nik

О, и правда, так работает.
Спасибо огромное за помощь!

yulial

О, пожалуйста!
Только не удаляй сообщения, в то время как на них отвечают

yulial

Всем поклонникам МЕТАПОСТа посвящается:

% $Id: clock.mp,v 1.1.1.1 2006/02/05 00:50:21 tz Exp $


beginfig(1);
numeric minutes, hours;
minutes=time;
hours=minutes/60;
if hours>=12: hours:=hours-12; fi

numeric clockdiam;
clockdiam=6cm;

color framecolor, bgcolor;
framecolor=red+.85green;
bgcolor=.45green;

fill fullcircle scaled 1.04clockdiam withcolor bgcolor;

%%%% Shadows

draw fullcircle scaled clockdiam shifted (bp*(1, -.5 withcolor .4bgcolor withpen pencircle scaled 1bp;

draw fullcircle scaled .83clockdiam shifted (bp*(1, -.5 withcolor .4bgcolor withpen pencircle scaled 2bp;

%fill fullcircle scaled .8clockdiam withcolor bgcolor;
draw fullcircle scaled .8clockdiam withpen pencircle scaled .5bp withcolor framecolor;

for i=1 upto 12:
for j=1 upto 4:
draw (.39*clockdiam*dir(90-30*i-j*6-- (.41*clockdiam*dir(90-30*i-j*6
shifted (bp*(1, -.5 withcolor .4bgcolor
withpen pencircle scaled .5bp;
endfor
draw (.38*clockdiam*dir(90-30*i-- (.41*clockdiam*dir(90-30*i
shifted (bp*(1, -.5 withcolor .4bgcolor
withpen pencircle scaled 1.5bp;
label(decimal(i) infont "cmtt9", .46*clockdiam*dir(90-30*i
shifted (.5bp*(1, -.5 withcolor .4bgcolor;
endfor

%%%%

draw fullcircle scaled clockdiam withpen pencircle scaled 1bp withcolor framecolor;

draw fullcircle scaled .83clockdiam withpen pencircle scaled 2bp withcolor framecolor;

draw fullcircle scaled .8clockdiam withpen pencircle scaled .5bp withcolor framecolor;

for i=1 upto 12:
for j=1 upto 4:
draw (.39*clockdiam*dir(90-30*i-j*6-- (.41*clockdiam*dir(90-30*i-j*6
withpen pencircle scaled .5bp withcolor framecolor;
endfor
draw (.38*clockdiam*dir(90-30*i-- (.41*clockdiam*dir(90-30*i
withpen pencircle scaled 1.5bp withcolor framecolor;
label(decimal(i) infont "cmtt9", .46*clockdiam*dir(90-30*i withcolor framecolor;
endfor



label("METAPOST" infont "logo8", .15clockdiam*down shifted (.5bp*(1, -.5 withcolor .4bgcolor;
label("METAPOST" infont "logo8", .15clockdiam*down) withcolor .75framecolor;

draw -.03*clockdiam*dir(90-30*hours-- (.3*clockdiam*dir(90-30*hours
shifted (1bp*(1, -.5
withpen pencircle scaled 3bp
withcolor .4bgcolor;
draw (-.03*clockdiam*dir(90-30*hours-- (.3*clockdiam*dir(90-30*hours
withpen pencircle scaled 3bp withcolor framecolor;
draw (-.05*clockdiam*dir(90-6*minutes-- (.35*clockdiam*dir(90-6*minutes
withpen pencircle scaled 1.8bp withcolor bgcolor;

draw -.05*clockdiam*dir(90-6*minutes-- (.35*clockdiam*dir(90-6*minutes
shifted (1bp*(1, -.5
withpen pencircle scaled 1.5bp
withcolor .4bgcolor;
draw (-.05*clockdiam*dir(90-6*minutes-- (.35*clockdiam*dir(90-6*minutes
withpen pencircle scaled 1.5bp withcolor framecolor;

fill fullcircle scaled 1bp withcolor .4bgcolor;

endfig;

end.
Оставить комментарий
Имя или ник:
Комментарий: