
在第 14 頁的節點選項說明中/tikz/shape
。 TikZ & PGF 3.0.1a 版本手冊的 216 指出:
最初沒有預設值
rectangle
接下來解釋這個選項選擇
當前節點的形狀,或當選項未在節點內部給出但在外部某處給出時,當前範圍內所有節點的形狀。
具有預設值的選項與初始具有特定值的選項有什麼區別?如果最初不是預設情況rectangle
,那麼它的行為和使用方式會發生什麼變化?/tikz/shape
rectangle
有人可以用一個最小的例子來解釋和證明這些差異嗎?
目前的問題類似這個。然而,這個問題涉及 PGF(我不熟悉),而當前的問題涉及 TikZ。
PGF 和 TikZ 是兩個獨立的等級。請考慮手冊中的以下引用(第 221 頁):
PGF 和 TikZ 都支援此類多部分節點。在較低層級上,PGF 提供了一個系統,用於指定形狀由多個部分組成。在 TikZ 級別,您可以使用以下命令指定不同的節點部分:
\nodepart[<options>]{<part name>}
這段引用的目的是為了表明,相同的功能在PGF 和TikZ 中可以有不同的表現形式,並且有理由詢問某個功能在一個級別中如何體現以及在另一個級別中如何體現,這將構成兩種不同的表現形式\nodepart
。問題重複。
我的問題是:是否可以僅使用 TikZ 概念和語法來解釋差異並給出一個最小的示例,而不訴諸低級 PGF?從只知道 TikZ 的高階用戶的角度來看,這種差異是否可以察覺? (我就是這樣的用戶。)
答案1
這個答案是為了解釋 TikZ/PGF 手冊對於關鍵字的預設/初始值的含義。它可能有也可能沒有任何關係.default
和.initial
鍵的使用取決於具體實施。
例如對於shape:
no default
意味著你不能說\node[shape, red]{...}
因為沒有預設值(在這種情況下,鍵被定義為必須有一個參數,所以如果你這樣做,它會出錯;謝謝,@percusse)。例如,如果它有
circle
預設情況下,這意味著您可以使用上述命令來建立圓形節點;initial
意味著如果你說\node[color=red] {...}
沒有提到
shape
你會有一個rectangle
.
另一個例子可能是(直接來自手冊):
/pgf/tips=value
(默認true
,初始on draw
)別名/tikz/tips
此鍵控制在什麼情況下將箭頭提示新增至路徑。以下值是允許的:
true
(未指定值時使用的值)proper
on draw
(初始值,如果金鑰尚未被使用)on proper draw
never
或false
(效果相同)[...]
(雖然我不明白最後一項的評論是什麼意思——只是和never
一樣false
嗎?)
答案2
在這種情況下,聽起來問題與鍵有關,但它shape
是一個非常傳統的關鍵字,而且它的定義方式非常簡單。
\tikzoption{shape}{\edef\tikz@shape{#1}}
(\tikzoption
後來變成了\tikzset
。所以不要使用它)
然後在 TikZ 套件的初始化中我們看到
\def\tikz@shape{rectangle}%
請注意,這是全域範圍,因此如果您不擺弄它,每個 TikZ 圖片都會繼承此預設值。這是不是相關/.initial
和/.default
問題。手冊的分類使其看起來像是關鍵問題。
在手冊中,如果您看到no default
這意味著您需要提供一個值。如果您看到no value
了,...那麼...您不需要提供值。如果您堅持提供一個值,有時您會收到錯誤,有時則不會。
例子,
\node[matrix of math nodes={4}{5}] {\tan \\ \sin};
不會出錯。因為每個樣式/程式碼處理程序本質上都接受參數。如果處理程序未明確設置,/.value forbidden
則不會發生任何事情。
Initially <...>
方法如果你不提供任何其他東西,我將使用 <...>
。
像往常一樣,例外情況適用...
關於 TikZ/PGF 差異的最後一點說明。所有 TikZ 都轉換為 PGF 代碼,因此沒有單獨的功能。這是文法問題。