![在 \pgfpicture 的定义中,为什么 \pgf@picmaxx 和 \pgf@picmaxy 是负数,并且这个 16000pt 值到底是什么?](https://linux22.com/image/421877/%E5%9C%A8%20%5Cpgfpicture%20%E7%9A%84%E5%AE%9A%E4%B9%89%E4%B8%AD%EF%BC%8C%E4%B8%BA%E4%BB%80%E4%B9%88%20%5Cpgf%40picmaxx%20%E5%92%8C%20%5Cpgf%40picmaxy%20%E6%98%AF%E8%B4%9F%E6%95%B0%EF%BC%8C%E5%B9%B6%E4%B8%94%E8%BF%99%E4%B8%AA%2016000pt%20%E5%80%BC%E5%88%B0%E5%BA%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
宏的定义pgfpicture
来自pgfcorescopes.code.tex
\def\pgfpicture{%
\begingroup%
\pgfpicturetrue%
\global\advance\pgf@picture@serial@count by1\relax%
\edef\pgfpictureid{pgfid\the\pgf@picture@serial@count}%
\let\pgf@nodecallback=\pgfutil@gobble%
\pgf@picmaxx=-16000pt\relax%
\pgf@picminx=16000pt\relax%
\pgf@picmaxy=-16000pt\relax%
\pgf@picminy=16000pt\relax%
\pgf@relevantforpicturesizetrue%
\pgf@resetpathsizes%
\pgfutil@ifnextchar\bgroup\pgf@oldpicture\pgf@picture}
这个值代表什么16000pt
,为什么使用\pgf@picmaxx
和\pgf@picmaxy
负号?
答案1
值 16000 pt 接近 TeX 允许的最大尺寸,2¹⁴ pt = 16384 pt(实际上是 16384 pt − 1 sp = 16383.99998 pt),因此据 TeX 所知,您可以将其算作(接近)无穷大。
在编程中,当尝试逐步确定一组值的最小值或最大值时,通常以 −∞ 开始表示最大值,以 +∞ 开始表示最小值。这是因为,如果您以(例如)零开始表示最大值,而您的数字恰好为负数,那么您将得到错误的结果。从 −∞(或尽可能接近)开始,您肯定可以知道您的数字大于该值,反之亦然。
如果您使用的语言具有max
您可以执行的功能curr_max = max(curr_max,<any value>)
,并且如果curr_max
是−∞,那么无论<any value>
发生什么都会给出正确的答案。
由于 TeX 没有内置max
函数,因此 PGF 具有以下功能:
\ifdim \pgf@x>\pgf@picmaxx
\pgf@picmaxx=\pgf@x
\fi
这大致就是max
函数要做的事情。