![使用 TikZ 進行彭羅斯圖形表示法](https://rvso.com/image/330728/%E4%BD%BF%E7%94%A8%20TikZ%20%E9%80%B2%E8%A1%8C%E5%BD%AD%E7%BE%85%E6%96%AF%E5%9C%96%E5%BD%A2%E8%A1%A8%E7%A4%BA%E6%B3%95.png)
也許可以在上面添加一些文字。
我對 LaTeX 非常熟悉,但對 TikZ 仍然是菜鳥。我會廣泛地畫這些形狀,並希望知道它們的模板。謝謝!
編輯
這就是我到目前為止所做的。我不確定如何在指定邊界連接線、放置節點的正確方法(相對位置或座標?)以及如何將標記放置在指定位置。
\documentclass[tikz,multi,border=10pt]{standalone}
\usetikzlibrary{shapes.geometric,positioning}
\begin{document}
\begin{tikzpicture}
[
triangle/.style = {regular polygon, regular polygon sides=3, draw=black, fill=green!60!black, inner sep=0pt, minimum size=2cm},
border rotated/.style = {shape border rotate=180},
rectangular/.style={fill=brown!80!black, rectangle, rounded corners = 5pt, draw=black, inner sep=0pt, minimum width=4.5cm, minimum height=1cm},
square/.style={fill=blue!60!black, rectangle, draw=black, inner sep=0pt, minimum size = 1cm}
]
\node[square] (1) {};
\node[triangle, border rotated] (2) [below left = 1cm of 1] {};
\node[triangle, border rotated] (3) [below right = 1cm of 1] {};
\node[rectangular] (4) [below=3cm of 1] {};
\node[square] (7) [below = 7cm of 1]{};
\node[triangle] (5) [above left = 1cm of 7] {};
\node[triangle] (6) [above right = 1cm of 7]{};
\draw (2.35) -- +(0,0.2) -- (1);
\draw (2.145) to [bend right=45] (5.215);
\draw (3.145) -- +(0,0.2) -- (1);
\end{tikzpicture}
\end{document}
答案1
我不確定我是否理解您所問的所有 3 點。例如,我不確定“令牌”指的是什麼,儘管我猜測是實心的黑色圓圈。
一般來說,相對定位使得以後修改程式碼更容易。例如,可以更輕鬆地將新內容新增至圖表並自動調整其他內容。但這實際上是一個在特定情況下什麼最有效的問題。例如,通常情況下,一次性使用絕對定位會更快,儘管它會降低程式碼的靈活性。
我已重命名triangle
為triangular
以避免覆蓋triangle
形狀。
下面的程式碼顯示了一種方法:
- 從適當的點連接三角形;
- 從適當的點將三角形連接到矩形;
- 在矩形上添加黑色圓圈;
- 添加帶有標籤的彎曲箭頭
s'
。
希望這能讓您在現有的基礎上進一步發展。
\documentclass[tikz,multi,border=10pt]{standalone}
\usetikzlibrary{shapes.geometric,positioning}
\begin{document}
\begin{tikzpicture}
[
triangular/.style = {regular polygon, regular polygon sides=3, draw=black, fill=green!60!black, inner sep=0pt, minimum size=2cm},
border rotated/.style = {shape border rotate=180},
rectangular/.style={fill=brown!80!black, rectangle, rounded corners = 5pt, draw=black, inner sep=0pt, minimum width=4.5cm, minimum height=1cm},
square/.style={fill=blue!60!black, rectangle, draw=black, inner sep=0pt, minimum size = 1cm}
]
\node[square] (1) {};
\node[triangular, border rotated] (2) [below left = 1cm of 1] {};
\node[triangular, border rotated] (3) [below right = 1cm of 1] {};
\node[rectangular] (4) [below=3cm of 1] {};
\node[square] (7) [below = 7cm of 1]{};
\node[triangular] (5) [above left = 1cm of 7] {};
\node[triangular] (6) [above right = 1cm of 7]{};
\draw (2.35) -- +(0,0.2) -- (1);
\draw (2.145) .. controls +(-7.5mm,35mm) and +(-7.5mm,-35mm) .. (5.215);
\draw (3.145) -- +(0,0.2) -- (1);
\draw (5.-35) -- +(0,-0.2) -- (7);
\draw (6.-145) -- +(0,-0.2) -- (7);
\draw (3.35) .. controls +(7.5mm,35mm) and +(7.5mm,-35mm) .. (6.-35);
\draw (2.south) -- (4.north -| 2.south) (3.south) -- (4.north -| 3.south) (4.south -| 5.north) -- (5.north) (4.south -| 6.north) -- (6.north);
\path (2.south) -- node [fill, circle] {} (5.north);
\path (3.south) -- node [fill, circle] {} (6.north);
\draw [<-] (4.north west) [bend right] to ++(-10mm,10mm) node [anchor=south] {$s'$};
\end{tikzpicture}
\end{document}