## 编译环境 操作系统 * [x] Windows 7/8/10 * [ ] macOS * [ ] Linux `若需勾选,请把[ ]改成[x]` Tex发行版 * [ ] TexLive `年份` * [x] MikTeX `版本号` * [ ] CTeX `若需勾选,请把[ ]改成[x]` ## 我的问题 关于TikZ的library fit,我有一个问题: 在fit源码"tikzlibraryfit.code.tex"中, "\tikz@lib@fit"这个macro是通过“\tikz@lib@fit@scan”测量出fit的边界的吗? 原理是怎样的呢? 是否有循环/迭代呢?体现在哪里?

1 回答1

2
1.`\tikz@lib@fit@scan`用了迭代,因为`\tikz@lib@fit@scan`调用`\tikz@lib@fit@scan@handle`,而`\tikz@lib@fit@scan@handle`又调用`\tikz@lib@fit@scan` 2.`\tikz@lib@fit@scan`的使用格式是: ```c \tikz@lib@fit@scan{<P1>}{<P2>}...\pgf@stop ``` 其中的`<P1>`和`<P2>`等等都是 TikZ 的坐标,可以是 node 名称,或坐标数据,会被`\tikz@scan@one@point`解析。 每当命令`\tikz@lib@fit@scan@handle`处理一个 TikZ 的坐标时,这个命令都会刷新寄存器`\pgf@xa`, `\pgf@xb`, `\pgf@ya`, `\pgf@yb`的值,这4个寄存器用于记录 fit node 的左右下上的边界数据。 3.最后,命令`\tikz@lib@fit`根据这4个寄存器来决定 fit node 的位置和尺寸。

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。