Pull to refresh

Настройка программы Asymptote

Reading time7 min
Views2.1K
Из всех хабов этот показался мне наиболее подходящей для этой темы. Итак.

Скопировано с моего блога в целях создания еще одного русскоязычного источника информации по данной теме.

Я опишу этот процесс для Asymptote 2.35. Итак, вот я скачал эту программу, установил. Если мы хотим использовать эту программу в полном объеме, то следующий шаг для этого — соединение ее с $\TeX$ (я делаю описание для используемой мной реализации $\TeX$'a — MiKTeX2.9, предполагая, что эта программа установлена и настроена должным образом: к ней подключен репозиторий, выбрана установка пакетов на лету, и т. д.). Я предполагаю, что в процессе установки Asymptote и MiKTeX папки, в которых предлагалось установщиками этих программ создавать файлы этих программ, не изменялись пользователем. Тогда открываем папку C:\Program Files\Asymptote, в ней находятся файлы asycolors.sty и asymptote.sty. Открываем папку C:\Program Files\MiKTeX 2.9\tex\latex, создаем в ней папки asycolors и asymptote и копируем в эти папки одноименные файлы sty, названные выше. Не забываем пройти Пуск>MiKTeX2.9>Maintenance (Admin)>Settings (Admin) и там последовательно нажать Refresh FNDB, Update Formats, Ok. Все, Asymptote знает, где находится TeX. Сделаю маленькое отступление от перечисления нужных сторонних компонентов для Asymptote. Я в TeXworks чисто на интуиции создал такой инструмент верстки Asymptote:

image

И теперь я могу открывать файлы .asy в TeXworks'е и обрабатывать эти файлы моим инструментом. Все получающиеся при этом файлы, в том числе и конечные .pdf с создаваемыми изображениями, анимацией, файлы .mpg (см. ниже) образуются в одной папке с обрабатываемом файлом .asy, независимо от наличия/отсутствия в этом файле кодов анимированной графики.

Отмечу, что в окне, приведенном на фото, имеющем заголовок «Настройки TeXworks» в разделе «Пути к ТеХ и сопотствующим программам», путь к папке программы Asymptote не был добавлен ни мной вручную, ни системой автоматически в процессе использования созданного мной инструмента Asymptote. При открытии же файлов .asy в проводнике:

image

эти файлы, как и следует ожидать по заголовку окна командной строки, в котором выводится инфа о ходе начатой обработки, образуются в папке C:\Windows\System32, тоже независимо от присутствия/отсутствия в этом файле анимации. Далее, нужна программа ghostscript. Эта программа нужна для нормального построения графики даже из файлов .asy, в которых нет анимации. Про анимацию я вообще молчу. Я с Asymptote 2.35 использую ghostscript версии 9.23. Что касается версии самой Asymptote, так я, было, разогнался и установил версию 2.45. И что? При тестировании кодов из папки примеров Asymptote, даже не содержащих анимацию (файлы с анимацией я тогда просто не умел превращать в .pdf) я не смог получить .pdf из бо́льшего числа файлов .asy, чем при использовании версии 2.35, даже при установке более новой версии ghostscript. Повозился я, повозился, плюнул, поудалял все эти обновленные версии и сделал, как было. Так, потом нужно установить imagemagick. Я дал ссылку не на домашнюю страницу проекта, а на страницу, с которой непосредственно нужно скачивать установочный файл. Вот тоже проблема была: долго не мог решить, какой файл нужно скачать для Винды7. И так, и так, и прочитать-то негде, что именно нужно установить для Asymptote. Потом наугад скачал ImageMagick-7.0.8-42-Q16-x86-dll.exe. Когда ее не было, обработка файлов .asy с анимацией, выходным форматом которых является .pdf, не вызывала вообще никаких ошибок. Отсутствие этой программы дало о себе знать при попытке получения анимированного файла .gif из файла wheel.asy следующей ошибкой в командной строке (для примера я взял обработку файла wheel.asy, описания ошибок при получении .gif из других файлов .asy выглядят также, различия только в, быть может, значениях недопустимого параметра):

image

Попытка же обработки этого файла в TeXworks упомянутым выше моим инструментом Asymptote давало такую ошибку:

image

Путем достаточно долгих поисков инфы в Инете, да и то только на англоязычных сайтах, форумах мне удалось узнать, что у меня на компе не хватает программы ImageMagick.

ВАЖНЫЙ МОМЕНТ: В PATH ПУТЬ К ЭТОЙ ПРОГРАММЕ ДОЛЖЕН СТОЯТЬ ПЕРЕД ПУТЕМ К ПАПКЕ SYSTEM32.

, потому что ImageMagick при обработке файлов .asy с анимацией использует утилиту convert.exe, а файл с точно таким же названием существует в папке system32 и когда system32 стоит в РАТН перед ImageMagick, система при вызове этого файла прогрой ImageMagick ищет файл convert.exe не в папке программы ImageMagick, а в папке system32 и успешно его находит, только вот применение этого файла для этих целей оканчивается не успехом, а ошибкой, описанной выше. Про эту проблему и сам John Bowman говорит здесь, во второй реплике 2016-05-12:

image

Я сделал этот снимок после перевода этой страницы на русиш в браузере Гугл. Я это нашел сейчас и ответ ниже собеседника подтверждает правильность моей догадки о том, как вплетать файл convert.exe из папки программы ImageMagick в работу Asymptote. Да, если бы не переводчик этого браузера, сомневаюсь я, что написал бы эту статью. Ежли мы хотим использовать ну, совсем на полную катушку, то нам нужно еще скачать ffmpeg. Отсутствие этой прогры дало о себе знать только при попытке обработки файла earthmoon.asy, из чего я делаю вывод, что эта програ нужна Asymptote только для обработки файлов .asy с анимацией, выходным форматом которых является .mpg. Так что, если вы не используете ее помимо Asymptote, то, скорее всего, ей вы будете пользоваться довольно редко. Но тем не менее расскажу, как и это делать, тем более, что при этом затрону момент, который нам понадобится в будущем. Итак, переходим по приведенной немного выше ссылке. Далее нажимаем на кнопки, обведенными оранжевыми прямоугольниками, на следующем фото:

image

Скачиваем этот архив, распаковываем его. Я, т. к. мне понадобилось добавить папку bin этой прогры в РАТН, чтобы не засорять его лишними буквами, распаковал его прямо на диск С:\. Если вы тоже так сделали, то добавляем в PATH строку C:\ffmpeg-4.1.3-win32-shared\bin. В отличии от программы ImageMagick, положение ffmpeg в РАТН относительно пути к папке system32 не имеет значения, также, как, между прочим, не имеет значения это положение и относительно пути к папке прогры ImageMagick. Я так понял, что, когда Asymptote включает в дело ffmpeg, начинает работу файл ...\ffmpeg-4.1.3-win32-shared\bin\ffmpeg.exe. Файл же ffmpeg.exe имеется и в папке прогры ImageMagick, однако, при запросе у него, к примеру, версии, выдается ошибка, так что у меня сложилось впечатление, что этот файл в конкретно этой версии ImageMagick с дефектом и именно поэтому нам и понадобилось устанавливать еще и прогру ffmpeg: мы этим просто добавили на комп работоспособный файл ffmpeg.ехе, необходимый для получения формата .mpg, а если бы этот файл программы ImageMagick работал, программа ffmpeg была бы вообще не нужна. Впрочем, это мое личное мнение, которое я на данный момент не могу ничем подтвердить. Однако, наличие файла ffmpeg.exe в папке прогры ImageMagick поначалу вызывало проблему: с одной стороны, видимо, получение .mpg без ImageMagick вообще невозможно, потому что при исключении его из РАТН (но с наличием в РАТН ffmpeg) ничего не получалось. Значит, вначале в дело вступает эта программа. Ну, а коль она вступила в дело, она тянет и свой файл ffmpeg.exe (даже при положении в РАТН пути к ffmpeg.exe перед путем к ImageMagick), а он не работает. И поэтому ничего не получалось. И снова это всего лишь мое умозаключение. А выходом из этой проблемы оказалось простое удаление файла ffmpeg.exe из папки прогры ImageMagick.

Во время изучения технологии обработки файла earthmoon.asy из подпапки animations папки examples обозначилась следующая деталь. После установки прогры ffmpeg описанными выше действиями и добавления ее в РАТН, открытие этого файла для получения из него .mpg в проводнике (см. выше) получалось на раз, а обработка в TeXworks — ну ни в какую и все тут! И так, и так — никак! Оказалось, что дело в являющемся даже для англоязычного пользователя тайной файле config.asy. Что это такое? Это обыкновенный файл с расширением .asy и именем config. Создатели Asymptote предполагали, что если пользователь дойдет до такого уровня владения их прогрой, когда ему этот файл понадобится, то бо́льшая часть его потребностей удовлетворится при условии нахождения этого файла в одной и той же папке. Эта папка создается при установке программы Asymptote. Например, если пользователь установил эту программу, находясь в учетной записи ИВАН, то абсолютный путь к этой папке будет следующим: C:\Users\ИВАН\.asy. Это не является проблемой для англоязычных пользователей: все буквы в полном пути к этой папке содержат, скорее всего, только латинские буквы и програ Asymptote без труда отыскивает файл config.asy. Однако, если пользователь является русскоязычным, то, скорее всего, имя той учетки, под которой он пользуется компом, написано кириллическими буквами. И потому Asymptote не может найти эту папку, а, значит, не может найти и файл config.asy. Но опять-таки, это мое объяснение поведения Asymptote, а я не программист и даже не любитель программирования (хотя я не могу сказать, что программирование мне так уж и не нравится). Казалось бы, тупик. Но, к счастью, создатели Asymptote предусмотрели эту возможную проблему. Они сделали так, что эта програ перед тем, как искать файл config.asy а папке C:\Users\...\.asy, где вместо многоточия стоит имя пользователя, ищет его в папке с обрабатываемым файлом .asy. Итак, при обработке файла earthmoon.asy я стал создавать в одной папке с ним файл config.asy следующего содержания:
import settings;
convert ="C:\Program Files\ImageMagick-7.0.8-Q16\convert.exe";

и только после этого у меня все стало получаться. По правде говоря, я потом понял, что можно обходиться и без файла config.asy: если бы я в файл earthmoon.asy включил строки
settings.convert ="C:\Program Files\ImageMagick-7.0.8-Q16\convert.exe";

или вставил бы строки из приведенного мной файла config.asy непосредственно в файл earthmoon.asy и при этом в папке с этим файлом отсутствовал бы файл config.asy, то это бы ничего не изменило: при обработке такого файла earthmoon.asy точно так же получается работоспособный файл .mpg (отмечу, что присутствие файла config.asy в одной папке с файлом .asy, из которого собираются получить работоспособный файл .mpg или включение строк из файла config.asy в файл .asy, из которого собираются получить работоспособный файл .mpg, но тогда с необязательным присутствием файла config.asy в одной папке с файлом asy, из которого хотят получить работоспособный файл .mpg, является обязательным условием создания работоспособного файла .mpg). На каком-то этапе обработки в TeXworks файлов с выходным форматом .mpg в папке с этим файлом .asy наблюдается следующая форменное безобразие (когда я делал снимок, шла обработка файла earthmoon.asy, в котором я для ускорения процесса и для сокращения количества образующихся файлов установил в файле earthmoon.asy значение $n$, равным 4):

image

Это свидетельствует о том, что Asymptote подключил к процессу ImageMagick и все идет как нужно. А когда работа Asymptote оканчивается, все файлы с этими ужасными именами исчезают и в папке остается только 3 файла — 2 файла, которые там были с самого начала: файл config.asy и файл .asy, из которого изготавливался файл .mpg и, собственно, сам файл .mpg. Отмечу, что, кроме переменной окружения convert есть и другие переменные окружения gs, pdfviewer, texpath, dvips и, например, python, значения которых можно указывать в конфигурационном файле config.asy и, по-видимому, это еще не все такие переменные (значения этих переменных являются путями, и только поэтому я их упоминаю вместе с упоминанием переменной convert).

Фух, вроде ничего не упустил.
Tags:
Hubs:
+5
Comments0

Articles