使用 6300 版MikTeX
(不包括)Asymptote
,可以.asy
在命令行上毫无问题地编译所有扩展文件。当它们准备就绪时,可以将它们包含在文件中TEX
以获得 pdf。
自从 MikTeX 6400 版包含 Asymptote 以来,我无法再通过命令行直接.asy
使用该模块编译扩展文件three
。下面的代码生成了一个可以用鼠标操作的 3D 立方体。在命令行中编译时会出现以下错误:
C:\Program Files\MiKTeX 2.9/asymptote/three.asy: 2905.13: 运行时:为支持屏幕渲染,请安装 glut 库,运行 ./configure,然后重新编译
import three;
currentlight=nolight;
settings.tex="latex"; // Moteur LaTeX utilisé pour la compilation (latex, pdflatex, ...)
settings.outformat="pdf"; // Format de sortie ; eps par défaut
settings.prc=true; // Format PRC de la figure ; vrai par défaut
settings.render=4; // Rendu des figures ; -1 par défaut
currentprojection=orthographic(
camera=(11.8235956621239,4.72943826484957,7.09415739727435),
up=(-0.014547132307495,-0.005818852922998,0.0281244557944903),
target=(1.90038956793259e-15,8.63024929298462e-16,2.51968584885631e-16),
zoom=0.7);
size(2.5cm,0);
real a = 0.05;
draw(box(O, 84a*(-X+Y+Z)), heavycyan);
但是,文件中包含的相同代码.tex
在经过三重编译后不会出现任何问题,PDFLaTeX -> Asymptote -> PDFLaTeX
因为它应该使用 Asymptote 进行。
\documentclass[10pt]{article}
\usepackage{graphicx}
\usepackage[inline]{asymptote}
\begin{document}
\begin{asy}
import three;
currentlight=nolight;
settings.tex="latex";
settings.outformat="pdf"; // Format de sortie ; eps par défaut
settings.prc=true; // Format PRC de la figure ; vrai par défaut
settings.render=4; // Rendu des figures ; -1 par défaut
currentprojection=orthographic(
camera=(11.8235956621239,4.72943826484957,7.09415739727435),
up=(-0.014547132307495,-0.005818852922998,0.0281244557944903),
target=(1.90038956793259e-15,8.63024929298462e-16,2.51968584885631e-16),
zoom=0.7);
size(2.5cm,0);
real a = 0.05;
draw(box(O, 84a*(-X+Y+Z)), heavycyan);
\end{asy}
\end{document}
输出:
[编辑]
奇怪的是,在 Windows 上安装 Asymptote 之后(就像我们以前对扩展文件所做的那样) ,我们可以从 TeXmaker 编译文件和文件.exe
而不会出现错误,但这在 Windows 命令行中仍然是不可能的。.asy
.tex
[\编辑]
在将文件包含到文件中之前能够Asymptote
在命令行上编译文件非常方便TeX
,因为编译速度确实快得多。
那么,如何在windows上安装glut库?
答案1
我在 miktex github 网站上问过(https://github.com/MiKTeX/miktex/issues/26)。 答案是
OpenGL 支持目前尚未在 Asymptote 的本机 MiKTeX 端口中实现。
这意味着你应该确保你的代码不会尝试调用 OpenGL 渲染器。如果我移动 outformat 和 render 声明,你的示例将编译(并创建一个 pdf,然后在 Adobe Reader 中打开)前 import three
import settings;
outformat="pdf";
render=-1;
import three;
currentlight=nolight;
settings.tex="latex"; // Moteur LaTeX utilisé pour la compilation (latex, pdflatex, ...)
currentprojection=orthographic(
camera=(11.8235956621239,4.72943826484957,7.09415739727435),
up=(-0.014547132307495,-0.005818852922998,0.0281244557944903),
target=(1.90038956793259e-15,8.63024929298462e-16,2.51968584885631e-16),
zoom=0.7);
size(2.5cm,0);
real a = 0.05;
draw(box(O, 84a*(-X+Y+Z)), heavycyan);