提问于:
浏览数:
1670
## 编译环境
操作系统
* [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 回答
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 的位置和尺寸。
-
谢谢^_^ – 温柔的大象 2020-09-25 15:08 回复
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。