Я новичок в 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 его не распознает.
Также, для разных записей моего lsit я хотел бы иметь возможность использовать разные цвета, но мне кажется, что я могу ввести только один цвет. Например, я хотел бы, чтобы выражение "Я хотел бы список здесь" было синим, а "С разными цветами" - оранжевым.
Возможно ли это сделать?
решение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 над 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: