為什麼我不能使用“延遲選項”為座標指定別名?

為什麼我不能使用“延遲選項”為座標指定別名?

這是一個小文檔:

\documentclass{standalone}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
    %\coordinate (A) at (0, 0);                     % Line A
    %\node [coordinate] (A) at (0, 0) {};           % Line B
    %\node (A) at (0, 0) {};                        % Line C
    %\coordinate [alias=AA] (A) at (0, 0);          % Line D
    %\node [coordinate, alias=AA] (A) at (0, 0) {}; % Line E
    %\path (A) [late options = {alias=AA}];         % Line ABC
    \coordinate (B) at (1, 0);
    \draw (AA) -- (B);
\end{tikzpicture}

\end{document}
  1. 取消註解行 A 和 ABC,您會得到「套件 pgf 錯誤:沒有名為 AA 的形狀已知」。
  2. 重新註解 A 行並取消註解 B 行,您會得到相同的結果。
  3. 重新註記 B 行並取消註解 C 行,文件編譯成功。
  4. 重新註解 C 行和 ABC 行並取消註解 D 行,文件編譯成功。
  5. 重新註解 D 行並取消註解 E 行,文件編譯成功。

似乎如果一個節點是形狀座標的,你可以給它一個別名,但不能使用後期選項機制。如果您嘗試使用較晚的選項來執行此操作,TikZ 不會報告錯誤,但它不會執行任何操作。

我正在使用 PGF/TikZ 版本 2.10。

答案1

確保 TikZ 正確識別要套用「late options」的節點的最簡單方法是在「late options」選項清單中提供「name」屬性(使用節點的現有名稱):

\documentclass{standalone}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
    \coordinate (A) at (0, 0);
    \path [late options = {name=A,alias=AA}];
    \coordinate (B) at (1, 0);
    \draw (AA) -- (B);
\end{tikzpicture}

\end{document}

如問題中的範例所示,TikZ 隱式辨識節點的能力(如 2.10 手冊所建議的)有點容易出錯。 3.00版本手冊(可透過下載TikZ/PGF 3.00版本取得)該專案的 Sourceforge 頁面)修改(第 251 頁)2.10 手冊第 201 頁的內容,建議「name」屬性是僅有的指示要套用「後期選項」的節點的正確方法; TikZ 將自動從上下文中識別正確節點的建議已被刪除。

感謝安德魯·斯旺和打擊樂。

相關內容