问题源于:tkz-euclide 宏包中如何合理地排布多个图形
对一个 tikzpicture 环境内的多个子图 (一般是多个 scope 环境) 可以使用 xshift, yshift
参数设置相对位置,从而实现在一行内 "均匀" 排布多个子图,达到类似以下的效果:
然而这种方法需要手动设置 xshift=<num>
, 能否有自动的方式,或者能否造出类似普通文本环境中的\hfill
命令,只需在多个子图之间插入该命令,就能实现一行内均匀排布子图。
现在能想到的是用 matrix 模块实现排布,但似乎还不够简洁,或者使用 foreach 语句,但 foreach 内比较复杂,经常会涉及宏展开等问题,也不方便。
除此之外,还有无其他方法?谢谢。
这样也许可以避免手动指定xshift=<dim>
?
\documentclass{article}
\usepackage[margin=.8in,centering]{geometry}
\usepackage{showframe,lipsum,tikz,tkz-euclide}
\newcommand*{\inserttkz}[1][]{%
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(2.5,0){B}
\tkzDefPoint(1.5,2){C}
\tkzDrawPolygon[#1](A,B,C)
\tkzLabelPoints(A,B,C)
\end{tikzpicture}%
}
\begin{document}
\lipsum[1][1-3]
\fbox{
\begin{tikzpicture}[node distance=.5cm]
\node (O) {\inserttkz};
\node[right=of O] (O1) {\inserttkz[blue]};
\node[right=of O1] (O2) {\inserttkz[magenta]};
\node[right=of O2] (O3) {\inserttkz[olive]};
\end{tikzpicture}
}
\lipsum[1][1-3]
\end{document}