tikz 塊對角劃分

tikz 塊對角劃分

我試著畫下圖:

在此輸入影像描述

到目前為止我能做什麼:

在此輸入影像描述

代碼:

\documentclass[tikz,border=20pt]{standalone}

\usetikzlibrary{shapes,arrows}
\usetikzlibrary{decorations.pathreplacing}
\usetikzlibrary{babel}
\usetikzlibrary{calc,arrows.meta,patterns,backgrounds}
\usetikzlibrary{shapes.multipart}

\tikzstyle{block} = [draw, rectangle, rounded corners, minimum size=1cm, text centered]
\tikzstyle{transform} = [draw, block, path picture={\draw (path picture bounding box.south west)--(path picture bounding box.north east);}]
\tikzstyle{state} = [draw, rectangle split,rectangle split parts=2,rounded corners, minimum size=1cm, text centered]

\begin{document}

\begin{tikzpicture}
    \node at (0.0,0.0) [transform](inverter){$qd0$};
    \node at (2.0,0.0) [state] {$qd0$ \nodepart{two} $abc$};
\end{tikzpicture}

\end{document}

我需要一些幫助 :)

答案1

計算是基本的,

在此輸入影像描述

如果您考慮使用節點形狀pic而不是成熟的節點形狀,那麼實作也很簡單。自由參數被視為完整形狀的高度。然後以對角線不切割任何節點的方式計算寬度(其中“安全距離”由 給出inner sep)。

\documentclass{article}
\usepackage{tikz}
\tikzset{pics/dbox/.style 2 args={code={%
\pgfmathsetmacro{\w}{max((width("#1")+2*\pgfkeysvalueof{/pgf/inner xsep})/(\pgfkeysvalueof{/tikz/dbox/height}-2*\pgfkeysvalueof{/pgf/inner xsep}-height("#1")),%
(width("#2")+2*\pgfkeysvalueof{/pgf/inner xsep})/(\pgfkeysvalueof{/tikz/dbox/height}-2*\pgfkeysvalueof{/pgf/inner xsep}-height("#2")))*\pgfkeysvalueof{/tikz/dbox/height}}
\path[pic actions] (-\w*1pt/2,-\pgfkeysvalueof{/tikz/dbox/height}/2) 
 node[above right] {#2}
 rectangle
(\w*1pt/2,\pgfkeysvalueof{/tikz/dbox/height}/2)
 node[below left] {#1} (-\w*1pt/2,\pgfkeysvalueof{/tikz/dbox/height}/2)
 -- (\w*1pt/2,-\pgfkeysvalueof{/tikz/dbox/height}/2) ;
}},dbox/.cd,height/.initial=2cm}
\begin{document}
\begin{tikzpicture}
 \path pic[draw]{dbox={abc}{xyzuv}} (3,0) pic[draw,blue]{dbox={abc}{xyz}}
 (6,0) pic[draw,red,thick]{dbox={abcdefgh}{xyz}};
\end{tikzpicture}
\end{document}

在此輸入影像描述

您可以透過一個簡單的技巧為該形狀提供常用的錨點:只需使用 將其轉換為節點即可fit。然後必須使用 設定名稱dbox/name=<name>

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\tikzset{pics/dbox/.style 2 args={code={%
\pgfmathsetmacro{\w}{max((width("#1")+2*\pgfkeysvalueof{/pgf/inner xsep})/(\pgfkeysvalueof{/tikz/dbox/height}-2*\pgfkeysvalueof{/pgf/inner xsep}-height("#1")),%
(width("#2")+2*\pgfkeysvalueof{/pgf/inner xsep})/(\pgfkeysvalueof{/tikz/dbox/height}-2*\pgfkeysvalueof{/pgf/inner xsep}-height("#2")))*\pgfkeysvalueof{/tikz/dbox/height}}
\path (-\w*1pt/2,-\pgfkeysvalueof{/tikz/dbox/height}/2) 
 node[above right] (bl) {#2}
 rectangle
(\w*1pt/2,\pgfkeysvalueof{/tikz/dbox/height}/2)
 node[below left] (tr) {#1};
 \node[pic actions,inner sep=0pt,fit=(bl)(tr),path picture={\path[pic actions]
 (path picture bounding box.north west)
 -- (path picture bounding box.south east);}] 
 (\pgfkeysvalueof{/tikz/dbox/name}){};
}},dbox/.cd,height/.initial=2cm,name/.initial=}
\begin{document}
\begin{tikzpicture}
 \path pic[draw]  {dbox={abc}{xyzuv}} (3,0) 
 pic[draw,blue,dbox/name=A] {dbox={abc}{xyz}}
 (6,0) pic[draw,red,thick,rounded corners,dbox/name=B] {dbox={abcdefgh}{xyz}};
 \draw[stealth-stealth] (A.north) to[out=80,in=100](B.100);
\end{tikzpicture}
\end{document}

在此輸入影像描述

答案2

您是否正在尋找這樣的簡單程式碼?從幾何角度思考:只是一個(縮放)正方形,裡面有一些可以手動調整的文字。

在此輸入影像描述

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[xscale=.8,yscale=1.5]
\draw[thick] (1,0)--(0,1) (0,0) rectangle (1,1);
\path[magenta] 
(0,0)+(.3,.3)    node{$dq$}
(1,1)+(-.4,-.15) node{$abc$};
\end{tikzpicture}

\begin{tikzpicture}[xscale=2.5,yscale=1.5]
\draw[thick] (1,0)--(0,1) (0,0) rectangle (1,1);
\path[blue] 
(0,0)+(.2,.15)    node{$TikZ$}
(1,1)+(-.4,-.15)  node{$Asymptote$};
\end{tikzpicture}

\end{document}

相關內容