在 LaTeX 上复制带有竖线的复杂路线图设计

在 LaTeX 上复制带有竖线的复杂路线图设计

我一直在为一个文档编写自己的类,主要是因为该文档使用了一些非常规的设计要求,我认为从头开始编写一个类比改编现有的类要好。到目前为止,我几乎满足了所有的设计要求,但现在我在复制以下方面遇到了麻烦:

在此处输入图片描述

问题显然出在彩色垂直线上。我相信我可以处理其余部分。以下是我现在的情况:

在此处输入图片描述

字体格式、颜色、间距、边距等目前还不重要,我要做的是实现那些更长、更暗的线条来表示年份。虽然我发布了整个类,但重要的是roadmap底部的环境,其他所有内容都是在这里定义的。以下是该类:

% ----------------------------------------------------------------------------------------
% Identification
% ----------------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesClass{whitepaper}[2018/01/01 White Paper LaTeX class]

% ----------------------------------------------------------------------------------------
% Defaults
% ----------------------------------------------------------------------------------------
\RequirePackage{ifthen}

\newboolean{twoside}
\setboolean{twoside}{false}

% ----------------------------------------------------------------------------------------
% Options
% ----------------------------------------------------------------------------------------
\DeclareOption{twoside}{
    \setboolean{twoside}{true}
}
\ProcessOptions\relax

% ----------------------------------------------------------------------------------------
% Geometry
% ----------------------------------------------------------------------------------------
\RequirePackage[a4paper]{geometry}

\geometry{
    a4paper,
    textheight=750pt,
    headsep=50pt,
    voffset=0pt,
    top=30pt,
    left=20mm,
    right=20mm,
}\savegeometry{covergeometry}

\geometry{
    a4paper,
    textheight=650pt,
    headsep=50pt,
    voffset=0pt,
    top=95pt,
    left=61mm,
    right=39mm
}\savegeometry{evenpagegeometry}

\geometry{
    a4paper,
    textheight=650pt,
    headsep=50pt,
    voffset=0pt,
    top=95pt,
    left=20mm,
    right=20mm
}\savegeometry{sectiongeometry}

\geometry{
    a4paper,
    textheight=650pt,
    headsep=50pt,
    voffset=0pt,
    top=95pt,
    left=39mm,
    right=61mm
}\savegeometry{oddpagegeometry}

\geometry{
    a4paper,
    textheight=650pt,
    headsep=50pt,
    voffset=0pt,
    top=95pt,
    left=39mm,
    right=50mm
}\savegeometry{tocgeometry}

\geometry{
    a4paper,
    textheight=650pt,
    headsep=50pt,
    voffset=0pt,
    top=95pt,
    left=39mm,
    right=61mm
}\savegeometry{chaptergeometry}

\geometry{
    a4paper,
    textheight=650pt,
    headsep=50pt,
    voffset=0pt,
    top=95pt,
    left=20mm,
    right=20mm
}\savegeometry{defaultgeometry}

% ----------------------------------------------------------------------------------------
% Multilingual support
% ----------------------------------------------------------------------------------------
\RequirePackage[english]{babel}
\RequirePackage{csquotes}

% ----------------------------------------------------------------------------------------
% Colors
% ----------------------------------------------------------------------------------------
\RequirePackage{xcolor}
\RequirePackage{fmtcount}

\definecolor{primarycolor}{RGB}{47,53,61}
\definecolor{secondarycolor}{RGB}{152,160,171}
\definecolor{terciarycolor}{RGB}{151,159,172}
\definecolor{covercolor}{RGB}{46,53,61}
\definecolor{highlightcolor}{RGB}{34,104,249}
\definecolor{casecolor}{RGB}{0,232,163}

% ----------------------------------------------------------------------------------------
% SI units, used for money representations as well
% ----------------------------------------------------------------------------------------
\RequirePackage{siunitx}

\sisetup{
    group-four-digits = true,
    group-separator = {,}
}

% ----------------------------------------------------------------------------------------
% Font
% ----------------------------------------------------------------------------------------
\RequirePackage[sfdefault]{roboto}
\RequirePackage[T1]{fontenc}

\renewcommand{\normalsize}{\fontsize{10pt}{14pt}\selectfont}

\makeatletter
\AtBeginDocument{
    \color{primarycolor}\global\let\default@color\current@color
}
\makeatother

% ----------------------------------------------------------------------------------------
% Paragraphs
% ----------------------------------------------------------------------------------------
\setlength{\parindent}{0pt}
\setlength{\parskip}{15pt}

% ----------------------------------------------------------------------------------------
% Double pages
% ----------------------------------------------------------------------------------------
\newcommand{\blankpage}{
    \null
    \thispagestyle{empty}%
    \newpage
}

\newcommand{\vacatpage}{
    \ifthenelse{\boolean{twoside}}{\blankpage\blankpage}{\newpage}
}

% ----------------------------------------------------------------------------------------
% Cover page
% ----------------------------------------------------------------------------------------
\RequirePackage{authoraftertitle}
\RequirePackage{pagecolor}
\RequirePackage{afterpage}
\RequirePackage[export]{adjustbox}

\newcommand{\maketitle}{
    \loadgeometry{covergeometry}
    \pagestyle{empty}
    \newpagecolor{covercolor}
    \afterpage{\restorepagecolor}
    \includegraphics[width=200pt,right]{logo-h-white}
    {
        \color{white}
        \fontseries{k}
        \fontsize{45pt}{60pt}
        \selectfont
        {
            \vspace*{25pt}
            \newline
            \MyTitle
            \par
        }
    }
}

% ----------------------------------------------------------------------------------------
% Utilities
% ----------------------------------------------------------------------------------------
\newcommand{\twodigits}[1]{
    \ifnum#1<10 0#1\else #1\fi
}

\makeatletter
\@ifundefined{thepage}{\def\thepage{\arabic{page}}}{}%
\makeatother

% ----------------------------------------------------------------------------------------
% Copyright
% ----------------------------------------------------------------------------------------
\newcommand{\makecopyright}{
    \vacatpage
    \vspace*{\fill}
    \centerline{Copyright {\copyright} {\the\year}}
    \centerline{All rights reserved.}
}

% ----------------------------------------------------------------------------------------
% Table of Contents
% ----------------------------------------------------------------------------------------
\makeatletter
\newcommand{\maketoc}{
    \vacatpage
    \loadgeometry{tocgeometry}
    \vspace*{5pt}
    {
        \fontseries{k}
        \fontsize{25pt}{25pt}
        \selectfont
        {Table of contents}
        \vspace{50pt}
        \newline
    }
    \@starttoc{toc}
}
\makeatother

\newcommand{\addchaptertocline}[2]{
    \addtocontents{toc}
    {
        \makebox[50pt][l] { % Numbering
            \fontsize{24pt}{24pt}\selectfont\color{primarycolor}\textbf{\unexpanded{\unexpanded{\twodigits}}{\thechapter}}
        }
        % Title
        \fontsize{10pt}{10pt}\selectfont\color{highlightcolor}\textbf{\MakeUppercase{#1}}
        \hfill\color{terciarycolor}\textbf{\thepage}
        \par
        { % Description
            \parindent=52.5pt
            \hangindent=52.5pt
            \parbox{200pt}{
                \fontsize{9}{12pt}\selectfont\color{secondarycolor}{#2}\\
            }
            \par
        }
    }
}

\newcommand{\addsectiontocline}[2]{
    \addtocontents{toc}
    {
        {
            \parindent=52.5pt
            \hangindent\parindent
            \fontsize{10pt}{15pt}
            \selectfont
            \color{primarycolor}\textbf{#1}
            \hfill\color{terciarycolor}\textbf{\thepage}
            \strut
            \newline
            \parbox{200pt}{
                \strut
                \color{terciarycolor}#2
            }
            \par
        }
    }
}

% ----------------------------------------------------------------------------------------
% Styles
% ----------------------------------------------------------------------------------------
\RequirePackage{fancyhdr}
\RequirePackage{everypage}

\ifthenelse{\boolean{twoside}}
{
%   \fancyheadoffset[leh,roh]{70pt}
%   \fancyheadoffset[loh,reh]{65pt}
}
{
%   \fancyheadoffset[le]{135pt}
%   \fancyheadoffset[ro]{135pt}
%   \fancyfootoffset[le]{135pt}
%   \fancyfootoffset[ro]{135pt}
}

\fancypagestyle{printchaptertitle}{
    \fancyhf{}
    \chaptermarginals
    \setlength{\footskip}{43pt}
    \rfoot{\color{secondarycolor}\thepage}
}

\fancypagestyle{printchaptercontents}{
    \fancyhf{}
    \chaptermarginals
    \rhead{\color{secondarycolor}\thepage}
}

\fancypagestyle{printsectiontitle}{
    \fancyhf{}
    \sectionmarginals
    \rhead{\color{secondarycolor}\thepage}
}

\fancypagestyle{printsectioncontents}{
    \fancyhf{}
    \sectionmarginals
    \rhead{\color{secondarycolor}\thepage}
}

\newcommand{\chaptermarginals}{
    \fancyheadoffset[ro]{135pt}
    \fancyheadoffset[re]{135pt}
    \fancyfootoffset[re]{135pt}
    \fancyfootoffset[ro]{135pt}
}

\newcommand{\sectionmarginals}{
    \fancyheadoffset[re]{18pt}
    \fancyheadoffset[ro]{18pt}
}

% There's never a head rule
\renewcommand{\headrulewidth}{0pt}

% ----------------------------------------------------------------------------------------
% Chapters
% ----------------------------------------------------------------------------------------
\newcounter{chapter}
\newcommand{\chaptername}{\null}
\newcommand{\chapter}[2]{
    \vacatpage
    \renewcommand{\chaptername}{#1}
    \refstepcounter{chapter}
    \loadgeometry{chaptergeometry}
    \chapterstyle
    \vspace*{45pt} % Empty space
    \par
    { % Numbering
        \fontsize{24pt}{50pt}
        \fontseries{k}
        \selectfont
        \setlength{\parskip}{0pt}
        \hspace*{-70pt}
        \color{secondarycolor}
        \twodigits{\thechapter}
        \vspace{19pt}
        \par
    }
    { % Title
        \fontsize{44pt}{39pt}
        \fontseries{k}
        \selectfont
        \setlength{\parskip}{0pt}
        \color{primarycolor}
        \hspace*{-75pt}
        \vspace*{30pt}
        #1
    }
    \fontsize{10pt}{13pt}
    \selectfont
    % ToC
    \addchaptertocline{#1}{#2}
}

\newcommand{\chapterstyle}{
    \pagestyle{printchaptercontents}
    \thispagestyle{printchaptertitle}
}

% ----------------------------------------------------------------------------------------
% Sections
% ----------------------------------------------------------------------------------------
\RequirePackage{multicol}

\newcounter{section}
\newcommand{\sectionname}{\null}
\newcommand{\section}[2]{
    \newpage
    \loadgeometry{sectiongeometry}
    \sectionstyle
    \fontsize{10pt}{14pt}
    \selectfont
    \vspace*{90pt}
    { % Chapter name
        \color{secondarycolor}
        \MakeUppercase{\chaptername}
        \par
    }
    { % Title
        \setlength{\parskip}{10pt}
        \fontsize{44pt}{44pt}
        \fontseries{k}
        \selectfont
        \setlength{\parskip}{0pt}
        \color{primarycolor}
        {#1}
        \par
    }
    \vspace*{30pt}
    % ToC
    \addsectiontocline{#1}{#2}
    \setlength{\columnsep}{20pt}
}

\newcommand{\sectionstyle}{
    \pagestyle{printsectioncontents}
    \thispagestyle{printsectiontitle}
}

% ----------------------------------------------------------------------------------------
% Conditional content
%
% \contentlevel impacts the output of \cont by filtering content that is of a level greater
% than the given threshold. Such content does not appear on the output, while everything
% else does. The level also applies to citations. Content levels are defined as follows:
%
%   0       Minimal         Doesn't print any conditional content
%   1       Basic           Prints basic content
%   2       Overview        Prints enough content for a general overview
%   3       Technical       Prints technical content
%   4       Enterprise      Prints all content except private
%   5       Private         Prints all content
% ----------------------------------------------------------------------------------------
\def\contentlevel#1{
    \def\contentlevel_{#1}
}

\def\contentif#1{
    \expandafter\contentiff#1\relax
}

\def\contentiff#1,#2\relax{
    \ifnum\contentlevel_ < 1
        % nop
    \else
        \ifnum\numexpr#1-1 < \contentlevel_\relax#2\fi
    \fi
}

\def\citeif#1{
    \expandafter\citeiff#1\relax
}

\def\citeiff#1,#2\relax{
    \ifnum\numexpr#1-1 < \contentlevel_\relax\supercite{#2}\fi
}

% ----------------------------------------------------------------------------------------
% Quotes
% ----------------------------------------------------------------------------------------
\newcommand{\highlight}[2]{
    \begingroup
        \fontsize{13pt}{17pt}
        \selectfont
        \begin{flushleft}
            \textbf{\color{secondarycolor}"\color{highlightcolor}#2\color{secondarycolor}"}
        \end{flushleft}
    \endgroup
    \begingroup
        \fontsize{11pt}{11pt}
        \selectfont
        \color{secondarycolor}\textbf{#1}
    \endgroup
}

% ----------------------------------------------------------------------------------------
% State of the technology
% ----------------------------------------------------------------------------------------
\RequirePackage{vwcol}

\newcommand{\sot}[1]{
    \vfill
    \begin{multicols}{3}
        \color{highlightcolor}
        \begingroup
            \begin{flushright}
                \textbf{State of the techonolgy}
                \hspace{3pt}
                \rule[-5pt]{1pt}{15pt}
                \vfill\null
                \columnbreak
            \end{flushright}
        \endgroup
        \begingroup
            \begin{flushleft}
                #1
            \end{flushleft}
        \endgroup
    \end{multicols}
}

% ----------------------------------------------------------------------------------------
% Case lists
% ----------------------------------------------------------------------------------------
\RequirePackage{mdframed}

% innerbottommargin=-2pt
\newmdenv[topline=false,rightline=false,bottomline=false,linecolor=casecolor,linewidth=2pt]{caselistleftborder}

\newenvironment{caselist}[1]{
    \vspace*{25pt}
    \begin{caselistleftborder}
        {
            \fontsize{11pt}{0pt}
            \fontseries{b}
            \selectfont
            \color{secondarycolor}
            \MakeUppercase{\chaptername}
            \par
        }
        { % Title
            \fontsize{25pt}{0pt}
            \fontseries{b}
            \selectfont
            \textbf{#1}
        }
    \end{caselistleftborder}
    \setlength{\columnsep}{20pt}
    \begin{multicols}{2}
}{
    \end{multicols}
}

\newcommand{\casetitle}[1]{
    \vspace*{30pt}
    \begin{flushleft}
        \fontsize{17pt}{21pt}
        \selectfont
        \color{primarycolor}
        \textbf{#1}
    \end{flushleft}
        \setlength{\parskip}{5pt}
\par
}

\newcommand{\casesubtitle}[1]{
    \fontsize{11pt}{0pt}
    \selectfont
    \color{primarycolor}
    \textbf{#1}
    \setlength{\parskip}{15pt}
    \par
}

\newcommand{\casecontents}[1]{
    \fontsize{11pt}{15pt}
    \selectfont
    \color{secondarycolor}
    #1
}

\newcommand{\case}[3]{
    \begin{minipage}{\columnwidth}
        \casetitle{#1}
        \casesubtitle{#2}
        \casecontents{#3}
    \end{minipage}
}

% ----------------------------------------------------------------------------------------
% Roadmap
% ----------------------------------------------------------------------------------------

\newmdenv[topline=false,rightline=false,bottomline=false,linecolor=casecolor,linewidth=6pt]{roadmayearborder}

\newenvironment{roadmap}{

    \newenvironment{releaseyear}[1]{
%       \mbox{
%           \fontsize{23pt}{0pt}
%           \fontseries{k}
%           \selectfont
%           \rotatebox{90}{##1}
%       }
    }{
    }

    \newenvironment{releasequarter}[1]{
        \mbox{
            \fontsize{13pt}{0pt}
            \fontseries{b}
            \selectfont
            ##1
        }
    }{
    }

    \newcommand{\release}[2]{
        \begin{roadmayearborder}
            \mbox{##1}
            \hspace*{\fill}
            \mbox{##2}
        \end{roadmayearborder}
    }
}{
}

% ----------------------------------------------------------------------------------------
% Bibliography
% ----------------------------------------------------------------------------------------
\RequirePackage[backend=bibtex,sorting=none,autocite=superscript]{biblatex}

\DeclareCiteCommand{\supercite}[\mkbibsuperscript]
{\iffieldundef{prenote}
    {}
    {\BibliographyWarning{Ignoring prenote argument}}%
    \iffieldundef{postnote}
    {}
    {\BibliographyWarning{Ignoring postnote argument}}%
    \bibopenbracket}%
{\usebibmacro{citeindex}%
    \usebibmacro{cite}}
{\supercitedelim}
{\bibclosebracket}

以下是文档:

\documentclass{whitepaper}

\begin{document}

\chapter{Roadmap}

\begin{roadmap}

    \begin{releaseyear}{2016}

        \begin{releasequarter}{Q1}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
        \end{releasequarter}

        \begin{releasequarter}{Q2}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
        \end{releasequarter}

        \begin{releasequarter}{Q3}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
        \end{releasequarter}

        \begin{releasequarter}{Q4}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
        \end{releasequarter}

    \end{releaseyear}
\end{roadmap}
\end{document}

我怎样才能达到预期的效果?

根据要求,这是一个独立版本,没有类,但我无法重现相同的输出。即使有\setlength{\parskip}{0pt}这些行,显示仍然不同:

% ----------------------------------------------------------------------------------------
% Preamble
% ----------------------------------------------------------------------------------------
\documentclass{article}

\usepackage[sfdefault]{roboto}
\usepackage[T1]{fontenc}

\renewcommand{\normalsize}{\fontsize{10pt}{14pt}\selectfont}

\usepackage[a4paper]{geometry}

\geometry{
    a4paper,
    textheight=650pt,
    headsep=50pt,
    voffset=0pt,
    top=95pt,
    left=39mm,
    right=61mm
}

\setlength{\parindent}{0pt}
\setlength{\parskip}{0pt}
\renewcommand{\baselinestretch}{0}

% ----------------------------------------------------------------------------------------
% Roadmap
% ----------------------------------------------------------------------------------------
\usepackage{mdframed}

\newmdenv[topline=false,rightline=false,bottomline=false,linecolor=black,linewidth=6pt]{roadmayearborder}

\newenvironment{roadmap}{

    \newenvironment{releaseyear}[1]{
        %       \mbox{
        %           \fontsize{23pt}{0pt}
        %           \fontseries{k}
        %           \selectfont
        %           \rotatebox{90}{##1}
        %       }
    }{
    }

    \newenvironment{releasequarter}[1]{
        \mbox{
            \fontsize{13pt}{0pt}
            \fontseries{b}
            \selectfont
            ##1
        }
    }{
    }

    \newcommand{\release}[2]{
        \begin{roadmayearborder}
            \mbox{##1}
            \hspace*{\fill}
            \mbox{##2}
        \end{roadmayearborder}
    }
}{
}


\begin{document}

\begin{roadmap}
    \begin{releaseyear}{2016}
        \begin{releasequarter}{Q1}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
        \end{releasequarter}
        \begin{releasequarter}{Q2}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
        \end{releasequarter}
        \begin{releasequarter}{Q3}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
        \end{releasequarter}
        \begin{releasequarter}{Q4}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
        \end{releasequarter}
    \end{releaseyear}
\end{roadmap}

\end{document}

这将产生以下输出: 在此处输入图片描述

答案1

类似的东西tcolorboxreleasequarter不过,盒子不会破碎。

\documentclass{article}
\usepackage[sfdefault]{roboto}
\usepackage[T1]{fontenc}

\renewcommand{\normalsize}{\fontsize{10pt}{14pt}\selectfont}

\usepackage[a4paper]{geometry}
\geometry{
    a4paper,
    textheight=650pt,
    headsep=50pt,
    voffset=0pt,
    top=95pt,
    left=39mm,
    right=61mm
}

%\setlength{\parindent}{0pt}
%\setlength{\parskip}{0pt}
%\renewcommand{\baselinestretch}{0}

% ----------------------------------------------------------------------------------------
% Roadmap
% ----------------------------------------------------------------------------------------
\usepackage{etoolbox}
\usepackage{xcolor}
\usepackage{titlesec}
\titleformat{\section}[display]{\bfseries}{\Large\textcolor{gray}{%
    \ifnumcomp{\thesection}{>}{9}{\thesection}{0\thesection}}%
    }{1mm}{\huge}


\usepackage[most]{tcolorbox}
\newtcolorbox{releaseyear}[2]{%
blanker, breakable, 
     left=5mm, left skip=10.2mm,
     top=-2.2mm,
     coltitle=black,
     attach boxed title to top left={yshift=-12mm, xshift=-13mm},
     fonttitle=\bfseries\Large,
     finish={\draw[#2, line width=3mm,line cap=round]
(frame.south west) -- (frame.north west);},
    title={\rotatebox{90}{#1}}
}
\newtcolorbox{releasequarter}[2]{%
blanker,  
     left=11mm,top=4mm,
          finish={\draw[#2, line width=3mm,line cap=round]
(frame.south west) -- (frame.north west);},
     coltitle=#2,
     attach boxed title to top left={yshift=-4mm},
     fonttitle=\bfseries,
    title={#1}
}


\newcommand{\release}[2]{%
        #1
        \hspace*{\fill}
        \textcolor{gray}{#2}\par}
  
\begin{document}
\section{Roadmap}
    \begin{releaseyear}{2016}{red}
        \begin{releasequarter}{Q1}{red!50}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
        \end{releasequarter}
        \begin{releasequarter}{Q2}{red!50}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
        \end{releasequarter}
        \begin{releasequarter}{Q3}{red!50}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
        \end{releasequarter}
        \begin{releasequarter}{Q4}{red!50}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
        \end{releasequarter}
    \end{releaseyear}
    
    \begin{releaseyear}{2017}{cyan}
        \begin{releasequarter}{Q1}{cyan!50}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
        \end{releasequarter}
        \begin{releasequarter}{Q2}{cyan!50}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
        \end{releasequarter}
        \begin{releasequarter}{Q3}{cyan!50}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
        \end{releasequarter}
        \begin{releasequarter}{Q4}{cyan!50}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
        \end{releasequarter}
    \end{releaseyear}
    
    \begin{releaseyear}{2018}{orange}
        \begin{releasequarter}{Q1}{orange!50}
            \release{Feature}{Platf}
            \release{Feature}{Platf}
        \end{releasequarter}
        \begin{releasequarter}{Q2}{orange!50}
            \release{Feature}{Platf}
            
        \end{releasequarter}
        \begin{releasequarter}{Q3}{orange!30}
        \end{releasequarter}
        \begin{releasequarter}{Q4}{orange!30}
        \end{releasequarter}
    \end{releaseyear}
\end{document}

在此处输入图片描述 在此处输入图片描述

相关内容