
내 문제는 실제로것 같다간단합니다. 이전에 답변이 있었다면 사과드립니다. 찾을 수 없었습니다. 어쩌면 제가 키워드를 잘못 입력했을 수도 있습니다.
현재 상황:
\tikzstyle{block} = [rectangle, draw, fill=blue!20, text width=15em, text centered, rounded corners, minimum height=5em]
여기서는 텍스트 너비가 15em으로 늘어났습니다. 이전에는 노드가 텍스트를 너무 빨리 감싸서 그래프가 한 페이지에 맞지 않고 요소가 겹치기 시작했기 때문입니다.
내 사용 사례에서는 세 개의 수직 그래프를 나란히 두고 싶기 때문에 tikz가 maximum-width 지시문을 따르도록 하는 것도 중요합니다. text width=15em
(또는 )을 그대로 사용할 수 없습니다 0.3\textwidth
. 왜냐하면 텍스트가 짧을 때 노드 자체는 여전히 너비에 남아 있기 때문입니다.
따라서 본질적으로 나는 다음과 같은 노드를 원합니다. 최대 너비 미만이 텍스트 길이에 따라 크기가 조정되면 그렇지 않으면 텍스트 줄 바꿈이 시작됩니다. 또한 가능하다면 큰 노력 없이도 다음과 같이 너비를 설정할 수 있습니다.
\begin{figure}[htbp]
\centering
\begin{tikzpicture}[node distance = 2cm, auto, maximum-width=0.3\textwidth]
...
또는 유사하지만 스타일 정의에 없고 모든 개별 \node에 있는 것이 바람직하지 않습니다.
모든 도움에 미리 감사드립니다 :)
답변1
그렇게 하는 간단한 키는 없을 것 같지만 이것에 어느 정도 가까운 것이 있습니다. 이 답변은 다음 MWE의 예와 함께 max width node
형식의 인수를 취하는 스타일을 정의합니다 .max width node={[<style>]{content}}
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{calc}
\tikzset{max width node/.style args={[#1]#2}{insert path={
node[#1,opacity=0,overlay](tst){#2}
let \p1=($(tst.east)-(tst.west)$),
\n1={ifthenelse(\x1>\pgfkeysvalueof{/tikz/max width},1,0)}
in
\ifdim\n1>0pt
node[#1,text width=\pgfkeysvalueof{/tikz/max width}-4pt]{#2}
\else
node[#1]{#2}
\fi
}},max width/.initial=5em}
\begin{document}
\begin{tikzpicture}[block/.style={rectangle, draw, fill=blue!20, text centered, rounded corners, minimum height=5em}]
\path (0,0) [max width node={[block]{pft}}]
(0,-5) [max width node={[block]{pft pft pft pft pft pft pft pft pft pft
pft pft pft pft pft pft pft pft pft pft
pft pft pft pft pft pft pft pft pft pft}}];
\path (5,0) [max width node={[block,max width=7em]{pft}}]
(5,-5) [max width node={[block,max width=7em]{pft pft pft pft pft pft pft pft pft pft
pft pft pft pft pft pft pft pft pft pft
pft pft pft pft pft pft pft pft pft pft}}];
\end{tikzpicture}
\end{document}
는 \tikzstyle
더 이상 사용되지 않으며 일반적으로 최소한의 작업 예제에 질문이 있을 것으로 예상됩니다.