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}

관련 정보