Soy nuevo en LaTeX y TikZ.
Necesito dibujar una línea de tiempo con texto escrito en diferentes colores que representen diferentes pasos paralelos de mi proyecto.
Aquí está mi código:
\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}
Tengo dos problemas.
Primero, para cada tick podría escribir varias entradas presentadas como una lista, pero no sé cómo dividir una línea. Por ejemplo, en el segundo tick me gustaría tener
"I would like a list here
With different colors"
Intenté usar " \\
" entre llaves pero TeX no lo reconoce.
Además, para diferentes entradas de mi lsit me gustaría poder usar diferentes colores, pero siento que solo puedo ingresar un color. Por ejemplo, me gustaría que la expresión "Me gustaría una lista aquí" fuera azul mientras que "Con diferentes colores" fuera naranja.
¿Es posible hacerlo?
Respuesta1
Si lo usa, align=center
puede usarlo \\
en el texto de su nodo.
Para diferenciar los colores, use \textcolor{<color>}{<text>}
dentro del nodo en lugar de usar la text
opción.
\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}
Respuesta2
Solución
Aquí hay algunas cosas que podría hacer y puede que haya más. Algunas observaciones:
- Agregué algunas partes faltantes
- ruido de código reducido para mis ojos ;-)
- Por alguna razón la
every node
declaración causó problemas, así que la eliminé por ahora. - Hay varias formas de hacer que el texto del nodo se rompa; restringir el
text width
es uno de ellos, verpgfmanual en el texto del nodo - Lo presenté como un estilo separado.
runtxt
- Si nombras tu nodo de interés, aquí
(A)
, las cosas se vuelven más fáciles. - simplemente ancle pseudocodish (A.sur sobre B.norte)
- Ponga texto LaTeX normal dentro, como una lista.
- apílelos, aquí con el valor predeterminado, que está intacto y centrado
Haz tu elección. Sin embargo, aún quedan algunas cosas por hacer:
- posicionamiento de tu leyenda (¿puede ser que la pongas como
\pic
?) - tu
every node
estilo necesita al menos una revisión para usarlo
Sugerencias generales
Como observación general, no exageraría con un diagrama de este tipo. ¿Es usted consciente de laGráfico de gantt, construido sobre Tikz?
Si realmente tiene mucho que manejar, tal vez, en lo que respecta a la parte de visualización, es posible que desee echar un vistazo al software de gestión de proyectos. Si no lo tiene en un mundo de MS-Office, esteBanco de trabajo abiertopodría valer la pena echarle un vistazo (https://sourceforge.net/projects/openworkbench/). // Vea una captura de pantalla para buscar imágenes de Open Workbench a continuación.
\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}
Impresiones sobre Open Workbench: