Brauche Hilfe bei einer Zeitleiste mit Tikz

Brauche Hilfe bei einer Zeitleiste mit Tikz

Ich bin neu bei LaTeX und TikZ.

Ich muss eine Zeitleiste mit Text in verschiedenen Farben zeichnen, die die verschiedenen parallelen Schritte meines Projekts darstellen.

Hier ist mein Code:

\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}

Ich habe zwei Probleme.

Erstens könnte ich für jeden Tick mehrere Einträge als Liste schreiben, aber ich weiß nicht, wie ich eine Zeile umbrechen kann. Im zweiten Tick hätte ich zum Beispiel gerne

"I would like a list here   
 With different colors"

Ich habe versucht, " \\" innerhalb der Klammern zu verwenden, aber TeX erkennt es nicht.

Außerdem möchte ich für verschiedene Einträge meiner Liste unterschiedliche Farben verwenden können, habe aber das Gefühl, dass ich nur eine Farbe eingeben kann. Beispielsweise möchte ich, dass der Ausdruck „Ich möchte hier eine Liste“ blau ist, während „Mit verschiedenen Farben“ orange ist.

Ist das möglich?

Antwort1

Wenn Sie verwenden, align=centerkönnen Sie \\in Ihrem Knotentext verwenden.

Um die Farben zu unterscheiden, verwenden Sie \textcolor{<color>}{<text>}stattdessen innerhalb des Knotens die textOption.

\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}

Bildbeschreibung hier eingeben

Antwort2

Lösung

Hier sind ein paar Dinge, die Sie tun könnten, und vielleicht gibt es noch mehr. Ein paar Anmerkungen:

  • einige fehlende Teile hinzugefügt
  • weniger Coderauschen für meine Augen ;-)
  • aus irgendeinem Grund hat die every nodeAussage Probleme verursacht, also habe ich sie vorerst entfernt
  • Es gibt mehrere Möglichkeiten, Knotentext umzubrechen. text widthEine davon ist die Einschränkung. Weitere Informationen finden Sie unterpgfmanual zum Knotentext
  • Ich habe es als separaten Stil eingeführtruntxt
  • Wenn Sie Ihren Knoten, der Sie interessiert, hier benennen (A), wird es einfacher
  • nur pseudocode Anker (A.süd über B.nord)
  • Fügen Sie normalen LaTeX-Text ein, etwa eine Liste
  • Stapeln Sie sie, hier mit Standard, der ununterbrochen und zentriert ist

Treffen Sie Ihre Wahl. Einige Dinge müssen jedoch noch erledigt werden:

  • Positionierung Ihrer Legende (vielleicht setzen Sie sie als \pic?)
  • Ihr every nodeStil benötigt mindestens eine Überprüfung, um ihn verwenden zu können

Allgemeine Vorschläge

Generell möchte ich ein solches Diagramm nicht übertreiben. Kennen Sie dieGantt-Diagramm, auf Tikz aufgebaut?

Wenn Sie wirklich viel zu tun haben, vielleicht für den Anzeigeteil, möchten Sie vielleicht einen Blick in die Projektmanagement-Software werfen. Wenn Sie es in einer MS-Office-Welt nicht haben, ist diesOffene Workbenchkönnte einen Blick wert sein (https://sourceforge.net/projects/openworkbench/). // Unten sehen Sie einen Screenshot für die Suche nach Bildern für Open Workbench.

Ergebnis

\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}

Eindrücke von Open Workbench:

OW

verwandte Informationen