Tikz를 사용하여 타임라인에 대한 도움이 필요합니다.

Tikz를 사용하여 타임라인에 대한 도움이 필요합니다.

저는 LaTeX와 TikZ를 처음 사용합니다.

내 프로젝트의 여러 병렬 단계를 나타내는 다양한 색상으로 작성된 텍스트로 타임라인을 그려야 합니다.

내 코드는 다음과 같습니다.

\documentclass{standalone}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[%
    every node/.style={
        font=\scriptsize,
        % Better alignment, see https://tex.stackexchange.com/questions/315075
        text height=1ex,
        text depth=.25ex,
    },
]

% draw horizontal line   
\draw[-] (0,0) -- (15,0);

% draw vertical lines
\foreach \x in {0,1.25,...,15}{
    \draw (\x cm,3pt) -- (\x cm,0pt);
}

\foreach \x in {0,5,...,15}{
    \draw (\x cm,3pt) -- (\x cm,8pt);
}

% place axis labels
\node[anchor=north] at (0,0) {Sep. 2024};
\node[anchor=north] at (2.5,0) {T3};
\node[anchor=north] at (5,0) {Sep. 2025};
\node[anchor=north] at (7.5,0) {T7};
\node[anchor=north] at (10,0) {Sep. 2026};
\node[anchor=north] at (12.5,0) {T11};
\node[anchor=north] at (15,0) {Sep. 2027};

% Text markers
\draw[color=black, thick] (0,0.4) -- (0,0.7) node[above, text=blue] {Step 1};
\draw[color=black, thick] (7.5,0.2) -- (7.5,0.5) node[above, text=orange] {Example};
\draw[color=black, thick] (12.5,0.2) -- (12.5,0.5) node[above, text=ForestGreen] {Enseignement};
\draw[color=black, thick] (1.25, -0.2) -- (1.25, -0.5) node[below, text=blue] {I would like a list here With different colors};


% Legend
\node[draw, circle, fill=blue, inner sep=1pt, label={right:Valorisation}] at (4,-2) {};
\node[draw, circle, fill=orange, inner sep=1pt, label={right:Recherche}] at (6.5,-2) {};
\node[draw, circle, fill=ForestGreen, inner sep=1pt, label={right:Enseignement}] at (9,-2) {};

\end{tikzpicture}
\end{document}

두 가지 문제가 있습니다.

첫째, 각 틱에 대해 목록으로 표시되는 여러 항목을 작성할 수 있지만 줄을 끊는 방법을 모르겠습니다. 예를 들어 두 번째 틱에서는

"I would like a list here   
 With different colors"

\\중괄호 안에 " "를 사용해 보았지만 TeX가 이를 인식하지 못합니다.

또한, 내 목록의 여러 항목에 대해 다른 색상을 사용할 수 있으면 좋겠지만 한 가지 색상만 입력할 수 있는 것 같습니다. 예를 들어, "여기에 목록을 원합니다"라는 표현은 파란색으로, "다른 색상으로"는 주황색으로 표시하고 싶습니다.

그렇게 할 수 있습니까?

답변1

사용하는 경우 노드 텍스트에 align=center사용할 수 있습니다 .\\

색상을 구별하려면 옵션 \textcolor{<color>}{<text>}을 사용하는 대신 노드 내부를 사용하십시오 text.

\documentclass{standalone}
\usepackage[dvipsnames]{xcolor}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[%
    every node/.style={
        font=\scriptsize,
        % Better alignment, see https://tex.stackexchange.com/questions/315075
        text height=1ex,
        text depth=.25ex,
    },
]

% draw horizontal line   
\draw[-] (0,0) -- (15,0);

% draw vertical lines
\foreach \x in {0,1.25,...,15}{
    \draw (\x cm,3pt) -- (\x cm,0pt);
}

\foreach \x in {0,5,...,15}{
    \draw (\x cm,3pt) -- (\x cm,8pt);
}

% place axis labels
\node[anchor=north] at (0,0) {Sep. 2024};
\node[anchor=north] at (2.5,0) {T3};
\node[anchor=north] at (5,0) {Sep. 2025};
\node[anchor=north] at (7.5,0) {T7};
\node[anchor=north] at (10,0) {Sep. 2026};
\node[anchor=north] at (12.5,0) {T11};
\node[anchor=north] at (15,0) {Sep. 2027};

% Text markers
\draw[color=black, thick] (0,0.4) -- (0,0.7) node[above, text=blue] {Step 1};
\draw[color=black, thick] (7.5,0.2) -- (7.5,0.5) node[above, text=orange] {Example};
\draw[color=black, thick] (12.5,0.2) -- (12.5,0.5) node[above, text=ForestGreen] {Enseignement};
\draw[color=black, thick] (1.25, -0.2) -- (1.25, -0.5) node[below=3.5mm, align=center] {\textcolor{blue}{I would like a list here}\\ \textcolor{orange}{With different colors}};


% Legend
\node[draw, circle, fill=blue, inner sep=1pt, label={right:Valorisation}] at (4,-2) {};
\node[draw, circle, fill=orange, inner sep=1pt, label={right:Recherche}] at (6.5,-2) {};
\node[draw, circle, fill=ForestGreen, inner sep=1pt, label={right:Enseignement}] at (9,-2) {};

\end{tikzpicture}
\end{document}

여기에 이미지 설명을 입력하세요

답변2

해결책

다음은 귀하가 수행할 수 있는 몇 가지 작업이며 더 많은 작업이 있을 수 있습니다. 몇 가지 참고사항:

  • 누락된 부분을 추가했습니다
  • 내 눈에 코드 소음이 줄어 들었습니다 ;-)
  • 어떤 이유에서 every node인지 해당 발언으로 인해 문제가 발생하여 일단 삭제했습니다.
  • 노드 텍스트를 나누는 방법에는 여러 가지가 있습니다. 제한하는 것은 text width그 중 하나입니다. 참조노드 텍스트의 pgfmanual
  • 별도의 스타일로 소개해 드렸는데요runtxt
  • 관심 있는 노드의 이름을 여기로 지정하면 (A)작업이 더 쉬워집니다.
  • 그냥 의사코드를 고정하세요(A.south over B.north).
  • 목록처럼 일반 LaTeX 텍스트를 안에 넣습니다.
  • 여기에는 깨지지 않고 중앙에 배치된 기본값이 있습니다.

선택하세요. 그러나 아직 수행해야 할 작업이 남아 있습니다.

  • 전설의 위치 지정(으로 넣어도 될까요 \pic?)
  • 귀하의 every node스타일을 사용하려면 최소한의 리뷰가 필요합니다

일반적인 제안

일반적으로 나는 그러한 다이어그램을 과장하지 않을 것입니다. 당신은 알고 있습니까?간트 차트, Tikz를 기반으로 구축되었나요?

디스플레이 부분 등 처리해야 할 부분이 정말 많다면 프로젝트 관리 소프트웨어를 살펴보는 것이 좋습니다. MS-Office 세계에 없다면, 이것은오픈 워크벤치한 번 볼만한 가치가 있을 것 같습니다(https://sourceforge.net/projects/openworkbench/). // 아래 Open Workbench 이미지 검색 스크린샷을 참고하세요.

결과

\documentclass[border=3mm]{standalone}
\usepackage[dvipsnames]{xcolor} % <<<

\usepackage{tikz}

\begin{document}
 \begin{tikzpicture}[%
%       every node/.style={
%           font=\scriptsize,
%           % Better alignment, see https://tex.stackexchange.com/questions/315075
%           text height=1ex,
%           text depth=.25ex,
%       },
        runtxt/.style={text width=25mm},    % <<<
    ]
    
    % draw horizontal line   
    \draw[-] (0,0) -- (15,0);
    
    % draw vertical lines
    \foreach \x in {0,1.25,...,15}{
        \draw (\x cm,3pt) -- (\x cm,0pt);
    }
    
    \foreach \x in {0,5,...,15}{
        \draw (\x cm,3pt) -- (\x cm,8pt);
    }
    
    % place axis labels
    \node[anchor=north] at (0,0) {Sep. 2024};
    \node[anchor=north] at (2.5,0) {T3};
    \node[anchor=north] at (5,0) {Sep. 2025};
    \node[anchor=north] at (7.5,0) {T7};
    \node[anchor=north] at (10,0) {Sep. 2026};
    \node[anchor=north] at (12.5,0) {T11};
    \node[anchor=north] at (15,0) {Sep. 2027};
    
    % Text markers
    \draw[color=black, thick] 
                            (0,0.4) -- (0,0.7) 
                            node[above, text=blue] {Step 1};
    \draw[color=black, thick] 
                            (7.5,0.2) -- (7.5,0.5) 
                            node[above, text=orange] {Example};
    \draw[color=black, thick] 
                            (12.5,0.2) -- (12.5,0.5) 
                            node[above, text=ForestGreen] {Enseignement};
    \draw[color=black, thick,runtxt]                % <<<
                            (1.25, -0.2) -- (1.25, -0.5) 
                            node[below, text=blue] (A)
                                {I would like a 
                                list here With different colors};
    
    % ~~~ demonstrating some options ~~~~~~~
    \node[anchor=north,runtxt,teal] (B) at (A.south){
        \begin{itemize}         % use regular LaTeX, BUT NO \tikz
         \item if you like it
         \item and you want it
         \item put a list on it
        \end{itemize}
    };
    \node[anchor=north,red] (C1) at (B.south) {
        This could be the first row
    };
    \node[anchor=north,red!100!orange!50,fill=yellow!20] (C2) at (C1.south) {
        of your list
    };
    
    % Legend
    \node[draw, circle, fill=blue, inner sep=1pt, label={right:Valorisation}] at (4,-2) {};
    \node[draw, circle, fill=orange, inner sep=1pt, label={right:Recherche}] at (6.5,-2) {};
    \node[draw, circle, fill=ForestGreen, inner sep=1pt, label={right:Enseignement}] at (9,-2) {};

 \end{tikzpicture}
\end{document}

Open Workbench에 대한 인상:

아야

관련 정보