我需要在我的 LaTex 文档中绘制甘特图,并找到了pgfgantt
可以做到这一点的软件包。不幸的是,它需要 TikZ` 软件包,看起来我遇到了麻烦,我不知道为什么,因为我从未使用过它。
这是我的代码:
\documentclass[a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage{tikz}
\usepackage{pgfgantt}
\usetikzlibrary{arrows,backgrounds,calc,patterns,shapes,positioning,shadows,trees}
\usepackage{pgfcalendar}
\begin{document}
\begin{figure}[ht!]
\begin{ganttchart}{1}{15}
\gantttitle{Du 1er Février au 9 Mai}{15} \\
\gantttitlelist{1,...,15}{1} \\
\ganttgroup{Préparation}{1}{3} \\
\ganttbar{Recherche de ressources}{1}{3} \\
\ganttbar{Définition des contraintes}{1}{3} \\
\ganttbar{Recherche de méthode d'archivage}{1}{1} \\
\ganttlinkedbar{Mise en place archivage}{2}{3} \\
\end{ganttchart}
\caption{Diagramme de Gantt pour le projet SN3D}
\end{figure}
\end{document}
以下是错误信息:
!Package tikz 错误:预期为 + 或 - (\ganttlinkedbar 命令的行)
!Package tikz 错误:放弃此路径。您忘记了分号吗?(同一行)
我查看了pgfgantt
文档,但找不到任何相关信息。我也搜索了谷歌,但没有找到任何可以帮助我的东西。
感谢您的帮助 !
编辑:我尝试使用 TikZ babel 库,但在我的代码的另一部分使用 TikZ 时产生了几个错误,而之前没有任何问题。
这是我的完整代码:
\documentclass[a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage{graphicx}
\usepackage{stmaryrd}
\usepackage{amssymb}
\usepackage{dsfont}
%Pour les images (gantt, WBS)
\usepackage{tikz}
%Pour délimiter les flottants
\usepackage{placeins}
\usepackage{pgfgantt}
\usetikzlibrary{arrows,backgrounds,calc,patterns,shapes,positioning,shadows,trees}
\usepackage{pgfcalendar}
\tikzset{
basic/.style = {draw, text width=2cm, drop shadow, font=\sffamily, rectangle},
root/.style = {basic, rounded corners=2pt, thin, align=center,
fill=green!30},
level 2/.style = {basic, rounded corners=6pt, thin,align=center, fill=green!60,
text width=8em},
level 3/.style = {basic, thin, align=left, fill=pink!60, text width=6.5em}
}
\title{Plan de développement}
\author{Groupe PEI n\textsuperscript{o}44 \\ \\ Entreprise SN3D}
\date{le 3 Février 2016}
\begin{document}
\maketitle
\tableofcontents
\newpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PARTIE 1 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Définition du projet}
\subsection{Contexte du projet}
\subsection{Objectifs de la mission}
\subsection{Livrables}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PARTIE 2 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Modalités d'exécution}
\subsection{Cycle de vie}
\subsection{Work Breakdown Structure du projet}
L'objectif fixé est de rendre au client un livrable recensant une sélection de capteurs intégrés ou modules assortie de cas d'utilisation précis. \`A cette fin, le travail sera décomposé de la manière suivante : \newline
%%%%%%%%%%% WBS %%%%%%%%%%%%%%%
\FloatBarrier
\begin{figure}[ht!]
%makebox pour centrer les figures trop larges
\makebox[\textwidth][c]{
\begin{tikzpicture}[level 1/.style={sibling distance=40mm},
edge from parent/.style={->,draw},>=latex]
% root of the the initial tree, level 1
\node[root] {Projet SN3D}
% The first level, as children of the initial tree
child {node[level 2] (c1) {Choix des outils de travail}}
child {node[level 2] (c2) {Recherche des capteurs}}
child {node[level 2] (c3) {Définition de cas d'usage}}
child {node[level 2] (c4) {Synthèse et mise en forme}};
% The second level, relatively positioned nodes
\begin{scope}[every node/.style={level 3}]
\node [below of = c1, xshift=15pt] (c11) {Archivage};
\node [below of = c11] (c12) {Sources};
\node [below of = c12] (c13) {Mise en forme};
\node [below of = c2, xshift=15pt] (c21) {Intensive};
\node [below of = c21] (c22) {Veille};
\node [below of = c3, xshift=15pt] (c31) {Scénari};
\node [below of = c31] (c32) {Aspects techniques};
\node [below of = c32] (c33) {Illustrations};
\node [below of = c4, xshift=15pt] (c41) {Livrable};
\node [below of = c41] (c42) {Rapport};
\node [below of = c42] (c43) {Poster};
\end{scope}
% lines from each level 1 node to every one of its "children"
\foreach \value in {1,2,3}
\draw[->] (c1.195) |- (c1\value.west);
\foreach \value in {1,...,2}
\draw[->] (c2.195) |- (c2\value.west);
\foreach \value in {1,...,3}
\draw[->] (c3.195) |- (c3\value.west);
\foreach \value in {1,...,3}
\draw[->] (c4.195) |- (c4\value.west);
\end{tikzpicture}
}
\caption{WBS du projet}
\end{figure}
\FloatBarrier
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Planning (diagramme de Gantt)}
Les différentes tâches s'enchaînent assez naturellement du fait de leur forte dépendance. Le planning initialement prévu que l'on donne ci-après a une forme simple. Le projet en tant que tel démarrera le 1er Février pour une durée de 15 semaine.
\begin{figure}[ht!]
\begin{ganttchart}{1}{15}
\gantttitle{Du 1er Février au 9 Mai}{15} \\
\gantttitlelist{1,...,15}{1} \\
\ganttgroup{Préparation}{1}{3} \\
\ganttbar{Recherche de ressources}{1}{3} \\
\ganttbar{Définition des contraintes}{1}{3} \\
\ganttbar{Recherche de méthode d'archivage}{1}{1} \\
\ganttlinkedbar{Mise en place archivage}{2}{3} \\
\end{ganttchart}
\caption{Diagramme de Gantt pour le projet SN3D}
\end{figure}
\subsection{Ressources}
Le groupe de travail est constitué de cinq membres : Telem Avidor, Léo En terme d'exécution, il est prévu que tous les membres de l'équipe jouent des rôles interchangeables en fonction de la situation.
\subsection{Communication}
\end{document}
答案1
我认为你缺少textcomp
包,至少我需要添加它。在添加它和babel
TikZ 库之后,我还必须在 中添加括号\draw
。\foreach
不太确定为什么会这样,但从
\foreach \value in {1,2,3}
\draw[->] (c1.195) |- (c1\value.west);
\foreach \value in {1,...,2}
\draw[->] (c2.195) |- (c2\value.west);
\foreach \value in {1,...,3}
\draw[->] (c3.195) |- (c3\value.west);
\foreach \value in {1,...,3}
\draw[->] (c4.195) |- (c4\value.west);
到
\foreach \myvalue in {1,2,3}{
\draw[->] (c1.195) |- (c1\myvalue.west);
\draw[->] (c3.195) |- (c3\myvalue.west);
\draw[->] (c4.195) |- (c4\myvalue.west);
}
\foreach \myvalue in {1,...,2}{
\draw[->] (c2.195) |- (c2\myvalue.west);
}
解决了。
使用\value
可能不是一个好主意,因为这是一个现有的宏。完整的代码。
\documentclass[a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage{graphicx}
\usepackage{stmaryrd,textcomp}
\usepackage{amssymb}
\usepackage{dsfont}
%Pour les images (gantt, WBS)
\usepackage{tikz}
%Pour délimiter les flottants
\usepackage{placeins}
\usepackage{pgfgantt}
\usetikzlibrary{arrows,backgrounds,calc,patterns,shapes,positioning,shadows,trees,babel}
\usepackage{pgfcalendar}
\tikzset{
basic/.style = {draw, text width=2cm, drop shadow, font=\sffamily, rectangle},
root/.style = {basic, rounded corners=2pt, thin, align=center,
fill=green!30},
level 2/.style = {basic, rounded corners=6pt, thin,align=center, fill=green!60,
text width=8em},
level 3/.style = {basic, thin, align=left, fill=pink!60, text width=6.5em}
}
\title{Plan de développement}
\author{Groupe PEI n\textsuperscript{o}44 \\ \\ Entreprise SN3D}
\date{le 3 Février 2016}
\begin{document}
\maketitle
\tableofcontents
\newpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PARTIE 1 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Définition du projet}
\subsection{Contexte du projet}
\subsection{Objectifs de la mission}
\subsection{Livrables}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PARTIE 2 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Modalités d'exécution}
\subsection{Cycle de vie}
\subsection{Work Breakdown Structure du projet}
L'objectif fixé est de rendre au client un livrable recensant une sélection de capteurs intégrés ou modules assortie de cas d'utilisation précis. \`A cette fin, le travail sera décomposé de la manière suivante : \newline
%%%%%%%%%%% WBS %%%%%%%%%%%%%%%
\FloatBarrier
\begin{figure}[ht!]
%makebox pour centrer les figures trop larges
\makebox[\textwidth][c]{
\begin{tikzpicture}[level 1/.style={sibling distance=40mm},
edge from parent/.style={->,draw},>=latex]
% root of the the initial tree, level 1
\node[root] {Projet SN3D}
% The first level, as children of the initial tree
child {node[level 2] (c1) {Choix des outils de travail}}
child {node[level 2] (c2) {Recherche des capteurs}}
child {node[level 2] (c3) {Définition de cas d'usage}}
child {node[level 2] (c4) {Synthèse et mise en forme}};
% The second level, relatively positioned nodes
\begin{scope}[every node/.style={level 3}]
\node [below of = c1, xshift=15pt] (c11) {Archivage};
\node [below of = c11] (c12) {Sources};
\node [below of = c12] (c13) {Mise en forme};
\node [below of = c2, xshift=15pt] (c21) {Intensive};
\node [below of = c21] (c22) {Veille};
\node [below of = c3, xshift=15pt] (c31) {Scénari};
\node [below of = c31] (c32) {Aspects techniques};
\node [below of = c32] (c33) {Illustrations};
\node [below of = c4, xshift=15pt] (c41) {Livrable};
\node [below of = c41] (c42) {Rapport};
\node [below of = c42] (c43) {Poster};
\end{scope}
% lines from each level 1 node to every one of its "children"
\foreach \myvalue in {1,2,3}{
\draw[->] (c1.195) |- (c1\myvalue.west);
\draw[->] (c3.195) |- (c3\myvalue.west);
\draw[->] (c4.195) |- (c4\myvalue.west);}
\foreach \myvalue in {1,...,2}{
\draw[->] (c2.195) |- (c2\myvalue.west);
}
\end{tikzpicture}
}
\caption{WBS du projet}
\end{figure}
\FloatBarrier
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Planning (diagramme de Gantt)}
Les différentes tâches s'enchaînent assez naturellement du fait de leur forte dépendance. Le planning initialement prévu que l'on donne ci-après a une forme simple. Le projet en tant que tel démarrera le 1er Février pour une durée de 15 semaine.
\begin{figure}[ht!]
\begin{ganttchart}{1}{15}
\gantttitle{Du 1er Février au 9 Mai}{15} \\
\gantttitlelist{1,...,15}{1} \\
\ganttgroup{Préparation}{1}{3} \\
\ganttbar{Recherche de ressources}{1}{3} \\
\ganttbar{Définition des contraintes}{1}{3} \\
\ganttbar{Recherche de méthode d'archivage}{1}{1} \\
\ganttlinkedbar{Mise en place archivage}{2}{3} \\
\end{ganttchart}
\caption{Diagramme de Gantt pour le projet SN3D}
\end{figure}
\subsection{Ressources}
Le groupe de travail est constitué de cinq membres : Telem Avidor, Léo En terme d'exécution, il est prévu que tous les membres de l'équipe jouent des rôles interchangeables en fonction de la situation.
\subsection{Communication}
\end{document}