TikZ를 이용한 상태 천이도 작성 방법 비망록

6858 단어 LaTeX

이번 목표로 하는 상태 천이도와 그 소스



목표 상태 전이도: 다이어그램





목표 상태 전이도: 소스



node.tex
  \begin{center}
    \begin{tikzpicture}[node/.style={draw, circle, font=\Large, inner sep=6pt}]
      \node[node] (s1) {$s_{1}$};
      \node[node, below right = 3cm and 2cm of s1] (s2) {$s_{2}$};
      \node[node, below left  = 3cm and 2cm of s1] (s3) {$s_{3}$};

      \path[->, >=stealth]
        (s1) edge[left, bend right=10] node{0.8} (s2)
        (s1) edge[left, bend right=10] node{0.2} (s3)
        (s2) edge[right, bend right=10] node{0.5} (s1)
        (s2) edge[loop right, in=315, out=45, looseness=4] node{0.5} (s2)
        (s3) edge[right, bend right=10] node{0.5} (s1)
        (s3) edge[below] node{0.4} (s2)
        (s3) edge[loop left, in=225, out=135, looseness=4] node{0.1} (s3);
    \end{tikzpicture}
  \end{center}

소스 해설



TikZ 도입



TikZ 도입
% パッケージのインポート
\usepackage{tikz}

% 使用する関数の宣言
% (最低限これさえ宣言していれば十分だと思われるものを書いています)
\usetikzlibrary{intersections, calc, arrows, positioning, arrows.meta}

도형을 그리는 캔버스 인 tikzpicture에 대해


\begin{tikzpicture}[node/.style={draw, circle, font=\Large, inner sep=6pt}]
%                  [任意の設定名/.style={設定の羅列}]

이번에 추가하는 옵션은 다음과 같습니다.
  • draw 그리기
  • circle 원을 그리기
  • font 폰트(이번은 크기만 지정)
  • inner sep=6pt 원의 크기

  • 원 서명 \node에 대해


    \node[node] (s1) {$s_{1}$};
    % \node[設定した任意の設定名] (ラベル) {円の中に書きたい文字列};
    
  • 라벨 → 나중에 해당 노드를 참조 할 때 사용합니다
  • 문자열 → 수식 환경이 아니므로 $로 묶어야합니다
  • \node[node, below right = 3cm and 2cm of s1] (s2) {$s_{2}$};
    % \node[設定した任意の設定名, ラベルs1に対して下に3cm,右に2cmの位置] (ラベル) {円の中に書きたい文字列};
    
  • belowright 사이에는 ,가 필요하지 않습니다.
  • below right의 순서로 쓴 경우, 그 순서에 대응하도록 길이를 and 로 단락지어 씁니다

  • 중요 : tikzpicture 안에 마지막으로 세미콜론 ;을 붙이지 않으면 오류가 발생합니다!

    설정을 직접 쓸 수도 있습니다.
    % 「node」の設定を「\node」内に直接記述
    \node[draw, circle, font=\Large, inner sep=6pt, below right = 3cm and 2cm of s1] (s2) {$s_{2}$};
    

    화살표를 당기기 \path 정보


    % ※最初のソースと順番を入れ替えていますが同様の結果が得られます
    \path[->, >=stealth]
       (s1) edge[left, bend right=10] node{0.8} (s2)
       (s1) edge[left, bend right=10] node{0.2} (s3)
       (s2) edge[right, bend right=10] node{0.5} (s1)
       (s3) edge[right, bend right=10] node{0.5} (s1)
       % (スタートラベル) edge[数値の場所, 右側に10だけ曲げる] node{書きたい数値} (ゴールラベル)
    
       (s3) edge[below] node{0.4} (s2)
       % (スタートラベル) edge[数値の場所] node{書きたい数値} (ゴールラベル)
    
       (s2) edge[loop right, in=315, out=45, looseness=4] node{0.5} (s2)
       (s3) edge[loop left, in=225, out=135, looseness=4] node{0.1} (s3);
       % (スタートラベル) edge[loop 数値の場所, 矢印の開始位置, 矢印の終了位置, たわみ具合] node{書きたい数値} (ゴールラベル)
    
  • ->, >=stealth 는 「화살표 그리기」 「그 화살표의 선단의 삼각형의 종류」를 의미하고 있습니다 (스텔스 전투기와 같은 형태이기 때문에 stealth 라고 합니다)
  • bend 굽히고 싶은 방향이나 표시할 수치의 위치는 화살표가 진행되는 방향에 대한 방향(오른쪽 또는 왼쪽)을 지정합니다
  • loop 설정의 inout는 각도를 지정합니다. 각도는 통상의 180도를 시작 위치로서 시계 방향으로 생각해 주세요
  • loop 설정의 looseness는 루프의 처짐 상태를 나타냅니다. 좋아하는 처짐 상태를 찾아보십시오

  • 개행하고 있습니다만 명령으로서는 1행입니다. 따라서 세미콜론 ;은 마지막 줄에만 붙여야합니다!

    일괄 쓰지 않고 한 줄씩 쓸 수도 있습니다.
    \path[->, >=stealth] (s1) edge[left, bend right=10] node{0.8} (s2);
    \path[->, >=stealth] (s1) edge[left, bend right=10] node{0.2} (s3);
    

    요약



    이번에는 내가 처음으로 $\LaTeX$로 직접 도형을 그리는 법을 배웠으므로 비망록으로 정리했습니다.
    옵션 하나 하나가 어떤 의미인지 명확하게 썼습니다.

    좋은 웹페이지 즐겨찾기