30 怎样"优雅"的在一个 tikzpicture 环境内排布多个子图

发布于 2025-08-13 11:41:13

问题源于:tkz-euclide 宏包中如何合理地排布多个图形

对一个 tikzpicture 环境内的多个子图 (一般是多个 scope 环境) 可以使用 xshift, yshift 参数设置相对位置,从而实现在一行内 "均匀" 排布多个子图,达到类似以下的效果:
image.png
然而这种方法需要手动设置 xshift=<num>, 能否有自动的方式,或者能否造出类似普通文本环境中的\hfill 命令,只需在多个子图之间插入该命令,就能实现一行内均匀排布子图。

现在能想到的是用 matrix 模块实现排布,但似乎还不够简洁,或者使用 foreach 语句,但 foreach 内比较复杂,经常会涉及宏展开等问题,也不方便。

除此之外,还有无其他方法?谢谢。

查看更多

关注者
0
被浏览
81
Sagittarius Rover
Sagittarius Rover 20小时前
我要成为Typst糕手/(ㄒoㄒ)/~~

这样也许可以避免手动指定xshift=<dim>?

image.png

\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}

image.png

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览