如何在LuaLatex中将两个metapost图表放在同一行?

如何在LuaLatex中将两个metapost图表放在同一行?

我在LuaLatex中使用metapost绘制图表,比先用metapost创建图表再插入图表方便多了,但是我不知道如何把两个图表放在同一行,比如下面两个图表如何放在同一行?谢谢。

\RequirePackage{luatex85}
\documentclass[12pt]{amsart}
\usepackage{float}
\usepackage{luamplib}

\begin{document}


\begin{figure}[H]
\begin{mplibcode}
beginfig(1)
pair A[],L[],R[],N[];
A[1] := (0,2cm);

for i=2 upto 5:
A[i] := A[i-1] rotated -360/5;
endfor;

draw A[1]--A[2];
draw A[2]--A[3];
draw A[3]--A[4];
draw A[4]--A[5];
draw A[5]--A[1];
draw A[1]--A[4];

endfig;
\end{mplibcode}
\end{figure}


\begin{figure}[H]
\begin{mplibcode}
beginfig(1)
pair A[],L[],R[],N[],t[];
path p[];

A[1] := (0,2cm);

for i=2 upto 5:
A[i] := A[i-1] rotated -360/5;
endfor;

draw A[1]..A[2]..A[3]..A[4]..A[5]..A[1];

endfig;
\end{mplibcode}
\end{figure}

\end{document}

答案1

在您的文档中使用了两个图形。LaTeX 绝不会将多个图形放在同一行,因此您必须将两个mplibcode环境放在同一个figure环境中。(您也可以将它们组合成一个mplibcode具有多个组的环境beginfig(...) endfig;,但使用不同的mplibcode环境可以更轻松地分离图形。

然后还有一个问题:在 之后\begin{figure},TeX 处于垂直模式。如果在垂直模式处于活动状态时添加多个\hboxes(通过mplibcode),TeX 会垂直堆叠它们。因此您需要先进入水平模式:\leavevmode在第一个mplibcode环境之前添加:

\RequirePackage{luatex85}
\documentclass[12pt]{amsart}
\usepackage{float}
\usepackage{luamplib}

\begin{document}


\begin{figure}[H]
  \leavevmode
\begin{mplibcode}
beginfig(1)
pair A[],L[],R[],N[];
A[1] := (0,2cm);

for i=2 upto 5:
A[i] := A[i-1] rotated -360/5;
endfor;

draw A[1]--A[2];
draw A[2]--A[3];
draw A[3]--A[4];
draw A[4]--A[5];
draw A[5]--A[1];
draw A[1]--A[4];

endfig;
\end{mplibcode}% <- Omit this comment to add a space between the graphs.
\begin{mplibcode}
beginfig(1)
pair A[],L[],R[],N[],t[];
path p[];

A[1] := (0,2cm);

for i=2 upto 5:
A[i] := A[i-1] rotated -360/5;
endfor;

draw A[1]..A[2]..A[3]..A[4]..A[5]..A[1];

endfig;
\end{mplibcode}
\end{figure}

\end{document}

在此处输入图片描述

相关内容