Проблемы компиляции в TeX

gr_nik

У меня есть рисунок в формате .ms.
Я делаю, как в факе: запускаю mpost examples.ms, получается несколько файлов examples.1, examples.2 и всё такое.
Затем пишу в техе (WinEdt):
 
\documentclass[12pt, draft]{article}
\usepackage[T2A]{fontenc}
\usepackage[cp1251]{inputenc}
\usepackage[russian]{babel}
\usepackage{amsfonts}
\usepackage[dvips]{graphicx}
\begin{document}
\includegraphics{ris.1}
\includegraphics{ris.2}
\end{document}

А он мне ошибку выводит при компиляции - знак вопроса пишет.
В чём проблема?

Sergey79

) так у тебя файлы examples.1 или ris.1 и они в той же папке
2) что подробно ему не нравится
3) мб надо внутри \begin{figure}\end{figure}

gr_nik

Да, это я проглючил что-то.
написал там examples.1, теперь откомпилировалось, но в pdf-ке только прямоугольничек, внутри которого написано examples.1...
Хотя код был такой:
 
beginfig(1);
a=.7in; b=0.5in;
z0=(0,0); z1=(a,0); z2=(0,b);
z0=.5[z1,z3]=.5[z2,z4];
draw z1..z2..z3..z4..cycle;
drawarrow z0..z1;
drawarrow z0..z2;
label.top(btex $a$ etex, .5[z0,z1]);
label.lft(btex $b$ etex, .5[z0,z2]);
endfig;

Как сделать, чтобы рисунок нормально отображался?

sagemma

Убрать draft

gr_nik

Убрал, теперь просто пустой лист.
А когда открываешь в dvi, он говорит:
 
Some PostScript specials couldn't be rendered.
Do you want to see the transcript of the PostScirpt interprerter?
  

Если нажать да, то пишет:
 

Error: /undefined in cmmi10
Operand stack:
--nostringval-- PermitFileReading --nostringval-- PermitFileWriting --nostringval-- (a)
Execution stack:
%interp_exit .runexec2 --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

gr_nik

Спсибо, помогло. Попробовал картинку из первого примера в факе - показывает. Просто с этой картинкой проблема какая-то...

gr_nik

Всё-таки у меня какие-то проблемы с буквами - проблемы возникают, если есть вот эти команды (отлаживаю второй пример из фака):
 
label.llft(btex $O$ etex0,0;
label.top (btex $x$ etex1.1,0)*u);
label.rt (btex $y$ etex0,1.1)*u);
label.urt (btex $\omega_1$ etex,v[0]);
label.ulft(btex $\omega_2$ etex,v[1]);
label.bot (btex $\omega_3$ etex,v[2]);

И в том примере проблемы тоже в этом были. Что делать, чтобы эти команды нормально обрабатывались?

yulial

В dvi-просмотрщике они не будут нормально обрабатываться, т. к. при этом интерпретатор PostScript будет работать в окружении, в котором неизвестны используемые шрифты. Метки в рисунках будут в порядке после запуска dvips. dvips преобразует bitmap *.*pk шрифты к формату, поддерживаемому PostScript'ом на основании его файлов настройки, и включит их в *.ps документ. Если твой dvi-viewer поддерживает PostScript, то метки он будет показывать неверно, или, скорее всего, будет ругаться.
Можно, конечно, задать prologues:=1 в метапостовсом файле, тогда ghostscript будет для меток искать установленные в ситеме шрифты, но возникнет проблема с кодировками. Для простых буквенных подписей это приемлемо, но если в метках будут более сложные формулы — тогда увы...
Тем, у кого подобные проблемы, предлагаю неуклюжий скрипт собственного сочинения, помогающий просматривать MP-графику:

#!/usr/bin/perl

use warnings;
use Getopt::Long;
use Pod::Usage;

####################################################################

our $rcsrev='$Revision: 1.7 $';
$rcsrev=~s/.Revision:\ (\S+).*/$1/;

####################################################################

sub dim2bp
{
my $dim=shift;
$dim=~m/^(\-?\d*(?:\.\d*)?)?(bp|pt|cm|mm|pc|in|dd|cc|sp)?$/;
my ($len, $unit)=($1, $2);
#die "$len, $unit";
my %factor=(
'bp', 1,
'pt', 0.99626400996264,
'cm', 28.3464566929134,
'mm', 2.83464566929134,
'pc', 11.9551681195517,
'in', 72,
'dd', 1.06601110141206,
'cc', 12.7921332169447,
'sp', 1.52017823785803e-05,
);
unless(defined $len and defined $unit)
{
warn "Improper dimension or not specified, 0 assumed\n";
return 0;
}
return $len*$factor{$unit};
}

sub color2tex
{
my $color=shift;
return $color unless $color=~m/^[[:alpha:]]/;
open my $rgbfd, '<', '/usr/X11R6/lib/X11/rgb.txt';
while(<$rgbfd>)
{
m/^\s*(\d+)\s+(\d+)\s+(\d+)\s+(.+)$/;
if(defined $4 and $4 eq $color)
{
close $rgbfd;
return sprintf "\%f,\%f,\%f", $1/255, $2/255, $3/255;
}
}
warn "Unknown color \`$color\' specified, \`black\' assumed\n";
return "0,0,0";
}

####################################################################

Getopt::Long::Configure('bundling', 'noignorecase');

my(
$output_file,
$output_format,
$use_gzip,
$use_bzip2,
$dont_mp,
$scale,
$border,
$border_color,
$bg_color,
);

GetOptions(
'o|output-file=s'=>\$output_file,
'f|output-format=s'=>\$output_format,
'z|use-gzip!'=>\$use_gzip,
'j|use-bzip2!'=>\$use_bzip2,
'd|dont-mp!'=>\$dont_mp,
's|scale=s'=>\$scale,
'border=s'=>\$border,
'border-color=s'=>\$border_color,
'bg-color=s'=>\$bg_color,
'h|help!'=>\$help,
);

if($help or @ARGV!=1)
{
pod2usage(1);
}


$border=dim2bp($border or '12bp');
$border_color=color2tex($border_color or 'navy');
$bg_color=color2tex($bg_color or '1,1,.75');
$output_format='ps' unless defined $output_format;
$scale=0 unless defined $scale;
$dont_mp=0 unless defined $dont_mp;

my $localtime=time;
my $tmptexfile="testfig-$localtime.tex";
my $tmpdvifile="testfig-$localtime.dvi";
my $tmpauxfile="testfig-$localtime.aux";
my $tmplogfile="testfig-$localtime.log";
my $tmppsfile="testfig-$localtime.ps";

die "Only one file allowed!\n" if @ARGV>1;
my $figurefile=$ARGV[0];
if($figurefile=~m/^(.*)\/([^\/]+)$/)
{
my $dirname=$1;
$figurefile=$2;
}
die "File name should have digital suffix!\n" unless $figurefile=~m/\.\d+$/;

#die $figurefile;
my $mpfile=$figurefile;
$mpfile=~s/^(.+?)\.\d+$/$1\.mp/;
#$mpfile=~s/\.\d+$/$1\.mp/;

chdir $dirname if defined $dirname;

die "Can not find source METAPOST file \`$mpfile\'!\n" unless -f $mpfile;

# Running METAPOST
#if(-M $mpfile < -M $figurefile)
unless($dont_mp)
{
unlink $figurefile;
system "mpost --interaction=batchmode \"$mpfile\""
and warn "An error occured!\n";
}

# Determine size of figure
open my $figurefd, '<', $figurefile or die "Can not open figure file!\n";
my ($left, $right, $top, $bottom, $width, $height);
while(<$figurefd>)
{
if(m/^\%\%BoundingBox\:\s+(\-?\d+)\s+(\-?\d+)\s+(\-?\d+)\s+(\-?\d+)\s+$/)
{
($left, $bottom, $right, $top)=($1, $2, $3, $4);
last;
}
}
$width=$right-$left+12;
$height=$top-$bottom+12;
$paperwidth=$width+$border;
$paperheight=$height+$border;
#die "$width x $height\n";
die "Can not determine size of bounding box!\n"
unless (defined $left and defined $right and defined $top and defined $bottom);
close $figurefd;

open my $tmptexfd, '>', $tmptexfile;
print $tmptexfd <<__TMPTEX__;
\%&latex
\\documentclass{slides}
\\usepackage{graphics}
\\usepackage[dvips]{color}
\\usepackage[
\%a5paper,
\%includefoot,
headsep=0bp,
headheight=0bp,
footskip=0bp,
papersize={${paperwidth}bp,${paperheight}bp},
total={${width}bp,${height}bp},
dvips
]{geometry}
\\definecolor{bg}{rgb}{$bg_color}
\\definecolor{border}{rgb}{$border_color}
\\pagecolor{border}
\\begin{document}
\\begin{center}
\\colorbox{bg}{\\includegraphics{$figurefile}}
\\end{center}
\\end{document}
__TMPTEX__
close $tmptexfd;

# Running TeX
system 'latex',
"--interaction=batchmode",
$tmptexfile;

# Running dvips
unless(defined $output_file)
{
system "dvips -q -o \"$tmppsfile\" \"$tmpdvifile\"";
}
else
{
if($use_gzip)
{
system "dvips -q -o - \"$tmpdvifile\" |gzip -9c >\"$output_file\"";
}
elsif($use_bzip2)
{
system "dvips -q -o - \"$tmpdvifile\" |bzip2 -9c >\"$output_file\"";
}
else
{
system "dvips -q -o \"$output_file\" \"$tmpdvifile\"";
}
print STDERR "Output file $output_file written.\nThank you.\n"
}

# Running GhostView
system "gv --resize --scale=$scale --center --spartan --media=BBox \"$tmppsfile\""
unless $output_file;

# Final cleanup
unlink $tmptexfile, $tmpdvifile, $tmpauxfile, $tmplogfile, $tmppsfile;

__END__

=pod

=head1 NAME

testfig -- Preview METAPOST output PostScript file.

=head1 SYNOPSIS

testfig [OPTION]... I<FILE>

=head1 DESCRIPTION

To be written...

=head1 OPTIONS

=over

=item B<-o>, B<--output-file> I<FILE>

Output file

=item B<-f>, B<--output-format> I<FORMAT>

Output format (not implemented yet)

=item B<-z>, B<--use-gzip>

Compress output PostScript file via gzip

=item B<-j>, B<--use-bzip2>

Compress output PostScript file via bzip2

=item B<-d>, B<--dont-mp>

Do not compile with METAPOST

=item B<-s>, B<--scale> I<FACTOR>

Scale factor, integer, this option is passed to GhostView

=item B<--border> I<SIZE>

Border width in TeX units, default `12bp'

=item B<--border-color> I<COLOR>

Border color, name comma-separated values, eg. `DarkOrange' or `.2,.45,.3',
default `Navy'

=item B<--bg-color> I<COLOR>

Background color, default `1,1,.75'

=item B<-h>, B<--help>

Display this help message

=back

=head1 FILES

=over

=item F</usr/X11R6/lib/X11/rgb.txt>

=back

=head1 AUTHOR

*******************************, 2004

=head1 SEE ALSO

L<tex>, L<mpost>, L<dvips>, L<gv>, L<perl>.

=cut


Желающие могут легко приспособить его к своей системе (у меня MDV Linux 2006.0). Он создаёт теховский одностраничный документ с включённой с него графикой, компилирует и обрабатывает dvips'ом, затем запускает Ghostview. Может быть использован для превращения ПС-картинок в самодостаточные.

gr_nik

У меня не отображаются буквы, несмотря на то, что они латинские. Когда пытаюсь использовать команды label, mpost ругается, что "Unable to make mpx file".
Что надо сделать, чтобы можно было делать надписи в метапосте?

gr_nik

Ап.
Что, никто не знает?

yulial

У тебя, возможно, ошибка ТеХ'а при компиляции файла с метками mpxerr.tex. Посмотри mpxerr.log.

gr_nik

А как это посмотреть?
Он мне пишет что-то про mpx314, но эти файлы (mpx314.log, mpx314.tex и mpx314.dvi) записываются в какую-то временную папку (C:\Documents and Settings\User\Local Settings\temp\что-то там.tmp) и затриаются сразу же после окончания работы mpost, я их там даже не видел.
Что сделать, чтобы исправить эту ошибку?
У меня стоит MikTex 2.4 в полном объёме.

yulial

Выложи, пожалуйста, <твой_файл>.log.
Создай файл XXX.tex

\shipout\hbox{\smash{\hbox{\hbox{% line 8 XXX.mp
$a$}\vrule width1sp}}}
\shipout\hbox{\smash{\hbox{\hbox{% line 9 XXX.mp
$b$}\vrule width1sp}}}
\end{document}

Попробуй запустить
tex XXX.tex
и пришли XXX.log.
Попробуй вставить в начало метапостовского файла строчки

verbatimtex
%&latex
\documentclass{article}
\begin{document}
etex
Оставить комментарий
Имя или ник:
Комментарий: