
Я пользуюсь MetaPost уже более двадцати лет. Недавно я наткнулся на Asymptote, который, как мне кажется, является великолепной рационализацией и обобщением замечательного инструмента MetaPost. Я бы очень хотел перейти с MetaPost на Asymptote, но у меня есть проблема.
Моя текущая ОС — Windows 10 Pro. Не спрашивайте.
Я скачал последнюю версию Asymptote для Windows, приняв все настройки по умолчанию, и все, кажется, было хорошо. Вот результат запроса версии.
miktex-asy version 2.67 [(C) 2004 Andy Hammerlindl, John C. Bowman, Tom Prince]
ENABLED OPTIONS:
WebGL 3D HTML rendering
OpenGL 3D OpenGL rendering
CURL URL support
DISABLED OPTIONS:
GSL GNU Scientific Library (special functions)
FFTW3 Fast Fourier transforms
XDR external data representation (portable binary file format)
Readline interactive history and editing
Editline interactive editing (if Readline is unavailable)
Sigsegv distinguish stack overflows from segmentation faults
GC Boehm garbage collector
Каталог C:\Program Files\Asymptote, похоже, содержит все модули, включая plain. Однако ввод 'asy -f PNG test' в каталоге, содержащем классический test.asy, привел к 'cannot find module plain'.
Хотя это казалось излишним, я последовал совету из WEB и определил переменную окружения ASYMPTOTE_DIR как C:\Program Files\Asymptote, и вот что получилось в результате, который для этого старого автора компиляторов выглядит как ошибка компиляции:
Welcome to miktex-asy version 2.67 (to view the manual, type help)
real value(string s, int i) {return byteinv(hex(substr(s,2i+offset,2)));}
^
C:/Program Files/Asymptote/plain_pens.asy: 333.39: no matching variable 'byteinv'
real[][][] S=_schur(a);
^
C:/Program Files/Asymptote/plain.asy: 312.16: no matching variable '_schur'
pair[][][] S=_schur(a);
^
C:/Program Files/Asymptote/plain.asy: 326.16: no matching variable '_schur'
error: recursive loading of module 'plain'
Есть ли у кого-нибудь мысли о том, что я делаю не так?
решение1
Я скопировал этот запрос о помощи в сообщество Asymptote на SourceForge, и Джон Боуман любезно указал на проблему. MikTeX поставляется с безнадежно устаревшей копией asy.exe, которая несовместима с последними версиями Asymptote. Из-за порядка, в котором Windows ищет исполняемые файлы, она нашла эту старую версию до того, как нашла новую. Одним из решений является изменение порядка путей PATH так, чтобы Asymptote предшествовал MikTeX. Я просто переименовал asy.exe в каталоге bin MikTeX. Проблема решена. :)