저는 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에 대한 인상: