我正在尝试使用 float row 将两个浮点数放在一行中。使用以下结构,一切都运行良好:
\documentclass[12pt,letterpaper]{article}
\usepackage[inline]{asymptote}
\usepackage{floatrow,calc}
\begin{document}
\begin{figure}[!h]
\floatsetup{heightadjust=object,valign=c}
\begin{floatrow}
\ffigbox{\caption{}\label{}}
{}
\ffigbox{\caption{}\label{}}
{}
\end{floatrow}
\end{figure}
\begin{asy}
settings.outformat = "pdf";
settings.prc = false;
settings.render = 0;
import three;
size(5cm, 0);
currentprojection=orthographic((7,2,3));
real xmin=-1.5;
real xmax=4;
real ymin=-1.3;
real ymax=4;
path3 p=(xmin,ymin,0)--(xmin,ymax,0)--(xmax,ymax,0)--(xmax,ymin,0)--cycle;
draw(p);
\end{asy}
\end{document}`
这个 Asy 示例也可以正常工作,没有问题。但是!然后我将 asy 代码移到浮点数中,如下所示:
\documentclass[12pt,letterpaper]{article}
\usepackage[inline]{asymptote}
\usepackage{floatrow,calc}
\begin{document}
\begin{figure}[!h]
\floatsetup{heightadjust=object,valign=c}
\begin{floatrow}
\ffigbox{\caption{}\label{}}
{\begin{asy}
settings.outformat = "pdf";
settings.prc = false;
settings.render = 0;
import three;
size(5cm, 0);
currentprojection=orthographic((7,2,3));
real xmin=-1.5;
real xmax=4;
real ymin=-1.3;
real ymax=4;
path3 p=(xmin,ymin,0)--(xmin,ymax,0)--(xmax,ymax,0)--(xmax,ymin,0)--cycle;
draw(p);
\end{asy}}
\ffigbox{\caption{}\label{}}
{\begin{asy}
settings.outformat = "pdf";
settings.prc = false;
settings.render = 0;
import three;
size(5cm, 0);
currentprojection=orthographic((7,2,3));
real xmin=-1.5;
real xmax=4;
real ymin=-1.3;
real ymax=4;
path3 p=(xmin,ymin,0)--(xmin,ymax,0)--(xmax,ymax,0)--(xmax,ymin,0)--cycle;
draw(p);
\end{asy}}
\end{floatrow}
\end{figure}
\end{document}
它拒绝工作并说:
! \ProcessAsymptoteLine 的参数有一个额外的 }。\par l.22 \end{asy}}
我刚刚复制粘贴了可以运行的代码!为什么它不起作用?我发现的唯一原因可能是 Asymptote 和 floatrow 不兼容。当然还有我的愚钝。
为什么不工作?谢谢大家。
答案1
总结使用包裹subcaption
代替floatrow
。
当您将类似逐字的环境asy
放入命令中时,它们不起作用。
作品:
\begin{figure}
\begin{asy}
...asymptote code...
\end{asy}
\end{figure}
现在假设您更喜欢命令而不是环境。您可以尝试以下操作:
\newcommand{\figurecmd}[1]{\begin{figure}#1\end{figure}} % BAD
% Doesn't work
\figurecmd{
\begin{asy}
...asymptote code...
\end{asy}
}
简单解释:为了正确导出 Asymptote 代码,必须将\
和的含义%
(以及其他内容)更改为\begin{asy}
。\end{asy}
不幸的是,在我给出的“糟糕”代码示例中,所有字符的含义在读取命令时都是固定的\figurecmd
,因此它无法按预期工作。幸运的是,有替代方案,例如subcaption
使用环境而不是命令的包,正是出于这种原因。
请注意,一些 TeX 专家能够施展某种魔法来创建在这方面表现得像环境的命令。例如,可以将环境放在asy
Ti 中钾Z\node
命令。但对于大多数命令,您不应该期望这一点,这也是环境存在的主要原因。