关于TikZ的library fit的疑惑

2020-09-24 02:10发布

## 编译环境 操作系统 * [x] Windows 7/8/10 * [ ] macOS * [ ] Linux `若需勾选,请把[ ]改成[x]` Tex发行版 * [ ] TexLive `年...

## 编译环境 操作系统 * [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条回答
U9430
2020-09-24 22:22 .采纳回答
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{}{}...\pgf@stop ``` 其中的``和``等等都是 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 的位置和尺寸。

一周热门 更多>