以下代码适用于 texlive 2021,但不再适用于 texlive 2022。
% !TeX program = lualatex
\documentclass{article}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[inline]{asymptote}
\begin{document}
Alors?
\begin{asydef}
texpreamble("\usepackage[math-style=french,bold-style=ISO]{fourier-otf}");
texpreamble("\setmainfont[Scale=0.72]{Verdana}");
settings.tex="lualatex";
\end{asydef}
\begin{center}
\begin{asy}
import three;
unitsize(1cm);
//draw('en 2D : $A$ et A',(0,0)--(10,0));
draw('en 3D : $B$ et B',(0,0,0)--(10,0,0));
\end{asy}
\end{center}
\end{document}
在 2D 中没有问题,但在 3D 中,不再正确生成 pdf,在 pdf 中绘制并且文本仅在 _ps 上使用 asy -f pdf essai-1.asy
根据评论进行了修改。操作系统 64 位,处理器 x64 Windows 10 系列
代码生成
if(!settings.multipleView) settings.batchView=false;
settings.tex="pdflatex";
settings.inlinetex=true;
deletepreamble();
defaultfilename="essai-1";
if(settings.render < 0) settings.render=4;
settings.outformat="";
settings.inlineimage=true;
settings.embed=true;
settings.toolbar=false;
viewportmargin=(2,2);
texpreamble("\usepackage[math-style=french,bold-style=ISO]{fourier-otf}");
texpreamble("\setmainfont[Scale=0.72]{Verdana}");
settings.tex="lualatex";
import three;
unitsize(1cm);
//draw('en 2D : $A$ et A',(0,0)--(10,0));
draw('en 3D : $B$ et B',(0,0,0)--(10,0,0));
生成的文件
答案1
我下载了 TeXLive 2022。
/usr/local/texlive/2022/bin/x86_64-linux/asy -f pdf
工作正常,其中 test.asy 包含行
import three;
unitsize(1cm);
draw('en 3D : $B$ et B',(0,0,0)--(10,0,0));
请使用 来检查您的 asy 版本是否已编译 3D 支持asy --version
。x86_64-linux 版本返回
Asymptote version 2.79 [(C) 2004 Andy Hammerlindl, John C. Bowman, Tom Prince]
ENABLED OPTIONS:
V3D 3D vector graphics output
WebGL 3D HTML rendering
OpenGL 3D OpenGL rendering
SSBO GLSL shader storage buffer objects
XDR External Data Representation (portable binary file format for V3D)
Readline Interactive history and editing
GC Boehm garbage collector
threads Render OpenGL in separate thread
DISABLED OPTIONS:
GSL GNU Scientific Library (special functions)
FFTW3 Fast Fourier transforms
CURL URL support
LSP Language Server Protocol
Sigsegv Distinguish stack overflows from segmentation faults
答案2
也许我不应该提出新的问题。我应该吗?
让我们看一下 John Bowman 编写的 test.asy 文件。如果我添加第一行:
settings.tex="latex";
import three;
unitsize(1cm);
draw('en 3D : $B$ et B',(0,0,0)--(10,0,0));
然后 asy -kf pdf test.asy 工作(test.pdf 包含行和文本)并且 test_.tex 是
\documentclass[12pt]{article}
\newbox\ASYbox
\newdimen\ASYdimen
\def\ASYprefix{}
\long\def\ASYbase#1#2{\leavevmode\setbox\ASYbox=\hbox{#1}%\ASYdimen=\ht\ASYbox%
\setbox\ASYbox=\hbox{#2}\lower\ASYdimen\box\ASYbox}
\pagestyle{empty}
\textheight=2048pt
\textwidth=2048pt
\begin{document}
\makeatletter%
\let\ASYencoding\f@encoding%
\let\ASYfamily\f@family%
\let\ASYseries\f@series%
\let\ASYshape\f@shape%
\makeatother%
\fontsize{12.000000}{14.400000}\selectfont%
\usefont{\ASYencoding}{\ASYfamily}{\ASYseries}{\ASYshape}%
\special{ps:
/ASYx {( ) print ASYX sub 12 string cvs print} bind def
/ASYy {( ) print ASYY sub 12 string cvs print} bind def
/ASY1 true def
/show {ASY1 {/ASYX currentpoint pop def /ASYY currentpoint exch pop def /ASY1 false def} if currentpoint newpath moveto false charpath {(M) print ASYy ASYx} {(L) print ASYy ASYx} {(C) print ASYy ASYx ASYy ASYx ASYy ASYx} {(c) print} pathforall} bind def /V {ASY1 {/ASYX currentpoint pop def /ASYY currentpoint exch pop def ASY1 false def} if Ry neg Rx 4 copy 4 2 roll 2 copy 6 2 roll 2 copy (M) print ASYy ASYx (L) print ASYy add ASYx (L) print add ASYy add ASYx (L) print add ASYy ASYx (c) print} bind def}
en 3D : $B$ et B\ %
\end{document}
如果我用“pdflatex”替换“latex”,结果也是一样。
如果我将“latex”替换为“xelatex”,
settings.tex="xelatex";
然后 asy -kf pdf test.asy 不起作用(只有行,没有文本)并且 text_.tex 是
\documentclass[12pt]{article}
\newbox\ASYbox
\newdimen\ASYdimen
\def\ASYprefix{}
\long\def\ASYbase#1#2{\leavevmode\setbox\ASYbox=\hbox{#1}%\ASYdimen=\ht\ASYbox%
\setbox\ASYbox=\hbox{#2}\lower\ASYdimen\box\ASYbox}
\pagestyle{empty}
\textheight=2048pt
\textwidth=2048pt
\begin{document}
\makeatletter%
\let\ASYencoding\f@encoding%
\let\ASYfamily\f@family%
\let\ASYseries\f@series%
\let\ASYshape\f@shape%
\makeatother%
\fontsize{12.000000}{14.400000}\selectfont%
\usefont{\ASYencoding}{\ASYfamily}{\ASYseries}{\ASYshape}%
en 3D : $B$ et B\ %
\end{document}
我想我们遇到了问题...
附注:Manjaro Linux、Asymptote 2.79、texlive 2022。