다음 다이어그램을 그리려고 합니다.
지금까지 내가 할 수 있었던 일:
코드:
\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}