How can I draw a timeline using tikz with itemize/enumerate function (graphical example attached)

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
6
down vote

favorite
3












How can I draw a timeline using tikz like below?



enter image description here



I attempted with my own code but I was not able to itemize/enumerate, and the formatting looks like a mess.



documentclass[a4paper,12 pt]article
usepackagetikz
begindocument
beginfigure
centering
begintikzpicture[x=4.5cm]
draw[black,->,thick,>=latex]
(0,0) -- (4,0) node[below right] $scriptstyle t$;
foreach Xc in 0,...,3

draw[black,thick]
(Xc,0) -- ++(0,5pt) node[above] $scriptstyle Xc$;

node[below,align=left,anchor=north,inner xsep=0pt,color=black]
at (0,0)
Nature determines the state of the economy.;
node[below,align=left,anchor=north,inner xsep=0pt]
at (1,0)
Trading occurs;
node[below,align=left,anchor=north,inner xsep=0pt]
at (2,0)
The manager of each firm privately observes its entry cost;
node[below,align=left,anchor=north,inner xsep=0pt]
at (3,0)
Firms are liquidated.;
endtikzpicture
endfigure
enddocument









share|improve this question



















  • 2




    This can easily be done in tikz. Any own attempts?
    – Marian G.
    Aug 26 at 11:39











  • I've added some code of my own attempt. But everything seems a mess.
    – Ivan
    Aug 26 at 12:03














up vote
6
down vote

favorite
3












How can I draw a timeline using tikz like below?



enter image description here



I attempted with my own code but I was not able to itemize/enumerate, and the formatting looks like a mess.



documentclass[a4paper,12 pt]article
usepackagetikz
begindocument
beginfigure
centering
begintikzpicture[x=4.5cm]
draw[black,->,thick,>=latex]
(0,0) -- (4,0) node[below right] $scriptstyle t$;
foreach Xc in 0,...,3

draw[black,thick]
(Xc,0) -- ++(0,5pt) node[above] $scriptstyle Xc$;

node[below,align=left,anchor=north,inner xsep=0pt,color=black]
at (0,0)
Nature determines the state of the economy.;
node[below,align=left,anchor=north,inner xsep=0pt]
at (1,0)
Trading occurs;
node[below,align=left,anchor=north,inner xsep=0pt]
at (2,0)
The manager of each firm privately observes its entry cost;
node[below,align=left,anchor=north,inner xsep=0pt]
at (3,0)
Firms are liquidated.;
endtikzpicture
endfigure
enddocument









share|improve this question



















  • 2




    This can easily be done in tikz. Any own attempts?
    – Marian G.
    Aug 26 at 11:39











  • I've added some code of my own attempt. But everything seems a mess.
    – Ivan
    Aug 26 at 12:03












up vote
6
down vote

favorite
3









up vote
6
down vote

favorite
3






3





How can I draw a timeline using tikz like below?



enter image description here



I attempted with my own code but I was not able to itemize/enumerate, and the formatting looks like a mess.



documentclass[a4paper,12 pt]article
usepackagetikz
begindocument
beginfigure
centering
begintikzpicture[x=4.5cm]
draw[black,->,thick,>=latex]
(0,0) -- (4,0) node[below right] $scriptstyle t$;
foreach Xc in 0,...,3

draw[black,thick]
(Xc,0) -- ++(0,5pt) node[above] $scriptstyle Xc$;

node[below,align=left,anchor=north,inner xsep=0pt,color=black]
at (0,0)
Nature determines the state of the economy.;
node[below,align=left,anchor=north,inner xsep=0pt]
at (1,0)
Trading occurs;
node[below,align=left,anchor=north,inner xsep=0pt]
at (2,0)
The manager of each firm privately observes its entry cost;
node[below,align=left,anchor=north,inner xsep=0pt]
at (3,0)
Firms are liquidated.;
endtikzpicture
endfigure
enddocument









share|improve this question















How can I draw a timeline using tikz like below?



enter image description here



I attempted with my own code but I was not able to itemize/enumerate, and the formatting looks like a mess.



documentclass[a4paper,12 pt]article
usepackagetikz
begindocument
beginfigure
centering
begintikzpicture[x=4.5cm]
draw[black,->,thick,>=latex]
(0,0) -- (4,0) node[below right] $scriptstyle t$;
foreach Xc in 0,...,3

draw[black,thick]
(Xc,0) -- ++(0,5pt) node[above] $scriptstyle Xc$;

node[below,align=left,anchor=north,inner xsep=0pt,color=black]
at (0,0)
Nature determines the state of the economy.;
node[below,align=left,anchor=north,inner xsep=0pt]
at (1,0)
Trading occurs;
node[below,align=left,anchor=north,inner xsep=0pt]
at (2,0)
The manager of each firm privately observes its entry cost;
node[below,align=left,anchor=north,inner xsep=0pt]
at (3,0)
Firms are liquidated.;
endtikzpicture
endfigure
enddocument






tikz-pgf itemize timeline






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Aug 26 at 12:02

























asked Aug 26 at 11:28









Ivan

434




434







  • 2




    This can easily be done in tikz. Any own attempts?
    – Marian G.
    Aug 26 at 11:39











  • I've added some code of my own attempt. But everything seems a mess.
    – Ivan
    Aug 26 at 12:03












  • 2




    This can easily be done in tikz. Any own attempts?
    – Marian G.
    Aug 26 at 11:39











  • I've added some code of my own attempt. But everything seems a mess.
    – Ivan
    Aug 26 at 12:03







2




2




This can easily be done in tikz. Any own attempts?
– Marian G.
Aug 26 at 11:39





This can easily be done in tikz. Any own attempts?
– Marian G.
Aug 26 at 11:39













I've added some code of my own attempt. But everything seems a mess.
– Ivan
Aug 26 at 12:03




I've added some code of my own attempt. But everything seems a mess.
– Ivan
Aug 26 at 12:03










2 Answers
2






active

oldest

votes

















up vote
7
down vote



accepted










Some key points of your question:




  • documentclass[tikz, border=5pt]standalone makes your tikzpicture more compact.

  • Draw the arrow: Use draw [->] (<start point>) -- (<end point>); You can change the arrow shape as you like. (I use [-stealth] in the example below.)

  • Specify coordinates: coordinate (<name>) at (<x>,<y>);

  • Calculate coordinates: coordinate (<point1>) at ($(<point1>)+(<xshift>,<yshift>)$);. The $...$ here claims a temporaty calculation environment instead of a math formula.

  • Text positioning: Use [anchor=...] options.

  • Add itemize environment: Just put the them into the node as: node [...] at (...) beginitemize ... enditemize;.


Here is a working example, you can improve it with foreach grammar.



enter image description here



documentclass[tikz, border=5pt]standalone

usepackagetikz
usepackagelipsum

begindocument
begintikzpicture
usetikzlibrarycalc

% draw arrow
coordinate (start) at (-4,0);
coordinate (end) at (26,0);
draw [line width=2pt, -stealth] (start) -- (end);

% You can use `foreach` to improve the following codes
coordinate (s0) at (1,0);
coordinate (t0) at ($(s0)+(0,0.3)$);
coordinate (s1) at (11,0);
coordinate (t1) at ($(s1)+(0,0.3)$);
coordinate (s2) at (21,0);
coordinate (t2) at ($(s2)+(0,0.3)$);

% draw ticks
draw [line width=2pt] (s0) -- (t0);
node [anchor=south] at (t0.north) $t=0$;

draw [line width=2pt] (t1) -- (s1);
node [anchor=south] at (t1.north) $t=1$;

draw [line width=2pt] (t2) -- (s2);
node [anchor=south] at (t2.north) $t=2$;

% add texts
node [anchor=north, align=left, text width=9cm] at (s0.south)
beginitemize
item lipsum[1]
item lipsum[2]
enditemize
;

node [anchor=north, align=left, text width=9cm] at (s1.south)
beginitemize
item lipsum[3]
item lipsum[4]
enditemize
;

node [anchor=north, align=left, text width=9cm] at (s2.south)
beginitemize
item lipsum[5]
item lipsum[6]
enditemize
;

endtikzpicture
enddocument





share|improve this answer






















  • that works perfectly. many thanks!
    – Ivan
    Aug 26 at 12:25

















up vote
5
down vote













an alternative:



  • using the enumitem package for lists in nodes

  • node are positioned by using the positioning library

  • time line is drawn from the left top corner of the first node to the right top corner of the last node

  • time events are determined by the foreach loop

by this measure the document example's code is simpler, cleaner and shorter.



edit:
ups, now I see that I forgot to add the mwe :-(. now it is here:



documentclass[a4paper, 12 pt]article
usepackagetikz
usetikzlibrarypositioning
usepackageenumitem

begindocument
beginfigure
setlist[itemize]nosep, leftmargin=*
begintikzpicture[
node distance = 0mm and 0.02linewidth,
box/.style = inner xsep=0pt, outer sep=0pt,
text width=0.32linewidth,
align=left, font=small
]
node (n1) [box]
beginitemize
item The shareshoulders design compensation contract for the manager simultaneously.
enditemize
;
node (n2) [box, below right=of n1.north east]
beginitemize
item The manager of each firm privately observes its entry cost;
item The manager make entry decision simultaneously;
item Trading and financial market occurs.
enditemize
;
node (n3) [box, below right=of n2.north east]
beginitemize
item Entry cost and profits are realised;
item Manager receive their compensation;
item Firms are liquidated.
enditemize
;
draw[thick, -latex] (n1.north west) -- (n3.north east);
foreach x [count=xx from 1] in 0,1,2
draw (nxx.north) -- + (0,3mm) node[above] $t=x$;
endtikzpicture
endfigure
enddocument


enter image description here



(red lines are indicate text borders)






share|improve this answer






















    Your Answer







    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "85"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    convertImagesToLinks: false,
    noModals: false,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













     

    draft saved


    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f447777%2fhow-can-i-draw-a-timeline-using-tikz-with-itemize-enumerate-function-graphical%23new-answer', 'question_page');

    );

    Post as a guest






























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    7
    down vote



    accepted










    Some key points of your question:




    • documentclass[tikz, border=5pt]standalone makes your tikzpicture more compact.

    • Draw the arrow: Use draw [->] (<start point>) -- (<end point>); You can change the arrow shape as you like. (I use [-stealth] in the example below.)

    • Specify coordinates: coordinate (<name>) at (<x>,<y>);

    • Calculate coordinates: coordinate (<point1>) at ($(<point1>)+(<xshift>,<yshift>)$);. The $...$ here claims a temporaty calculation environment instead of a math formula.

    • Text positioning: Use [anchor=...] options.

    • Add itemize environment: Just put the them into the node as: node [...] at (...) beginitemize ... enditemize;.


    Here is a working example, you can improve it with foreach grammar.



    enter image description here



    documentclass[tikz, border=5pt]standalone

    usepackagetikz
    usepackagelipsum

    begindocument
    begintikzpicture
    usetikzlibrarycalc

    % draw arrow
    coordinate (start) at (-4,0);
    coordinate (end) at (26,0);
    draw [line width=2pt, -stealth] (start) -- (end);

    % You can use `foreach` to improve the following codes
    coordinate (s0) at (1,0);
    coordinate (t0) at ($(s0)+(0,0.3)$);
    coordinate (s1) at (11,0);
    coordinate (t1) at ($(s1)+(0,0.3)$);
    coordinate (s2) at (21,0);
    coordinate (t2) at ($(s2)+(0,0.3)$);

    % draw ticks
    draw [line width=2pt] (s0) -- (t0);
    node [anchor=south] at (t0.north) $t=0$;

    draw [line width=2pt] (t1) -- (s1);
    node [anchor=south] at (t1.north) $t=1$;

    draw [line width=2pt] (t2) -- (s2);
    node [anchor=south] at (t2.north) $t=2$;

    % add texts
    node [anchor=north, align=left, text width=9cm] at (s0.south)
    beginitemize
    item lipsum[1]
    item lipsum[2]
    enditemize
    ;

    node [anchor=north, align=left, text width=9cm] at (s1.south)
    beginitemize
    item lipsum[3]
    item lipsum[4]
    enditemize
    ;

    node [anchor=north, align=left, text width=9cm] at (s2.south)
    beginitemize
    item lipsum[5]
    item lipsum[6]
    enditemize
    ;

    endtikzpicture
    enddocument





    share|improve this answer






















    • that works perfectly. many thanks!
      – Ivan
      Aug 26 at 12:25














    up vote
    7
    down vote



    accepted










    Some key points of your question:




    • documentclass[tikz, border=5pt]standalone makes your tikzpicture more compact.

    • Draw the arrow: Use draw [->] (<start point>) -- (<end point>); You can change the arrow shape as you like. (I use [-stealth] in the example below.)

    • Specify coordinates: coordinate (<name>) at (<x>,<y>);

    • Calculate coordinates: coordinate (<point1>) at ($(<point1>)+(<xshift>,<yshift>)$);. The $...$ here claims a temporaty calculation environment instead of a math formula.

    • Text positioning: Use [anchor=...] options.

    • Add itemize environment: Just put the them into the node as: node [...] at (...) beginitemize ... enditemize;.


    Here is a working example, you can improve it with foreach grammar.



    enter image description here



    documentclass[tikz, border=5pt]standalone

    usepackagetikz
    usepackagelipsum

    begindocument
    begintikzpicture
    usetikzlibrarycalc

    % draw arrow
    coordinate (start) at (-4,0);
    coordinate (end) at (26,0);
    draw [line width=2pt, -stealth] (start) -- (end);

    % You can use `foreach` to improve the following codes
    coordinate (s0) at (1,0);
    coordinate (t0) at ($(s0)+(0,0.3)$);
    coordinate (s1) at (11,0);
    coordinate (t1) at ($(s1)+(0,0.3)$);
    coordinate (s2) at (21,0);
    coordinate (t2) at ($(s2)+(0,0.3)$);

    % draw ticks
    draw [line width=2pt] (s0) -- (t0);
    node [anchor=south] at (t0.north) $t=0$;

    draw [line width=2pt] (t1) -- (s1);
    node [anchor=south] at (t1.north) $t=1$;

    draw [line width=2pt] (t2) -- (s2);
    node [anchor=south] at (t2.north) $t=2$;

    % add texts
    node [anchor=north, align=left, text width=9cm] at (s0.south)
    beginitemize
    item lipsum[1]
    item lipsum[2]
    enditemize
    ;

    node [anchor=north, align=left, text width=9cm] at (s1.south)
    beginitemize
    item lipsum[3]
    item lipsum[4]
    enditemize
    ;

    node [anchor=north, align=left, text width=9cm] at (s2.south)
    beginitemize
    item lipsum[5]
    item lipsum[6]
    enditemize
    ;

    endtikzpicture
    enddocument





    share|improve this answer






















    • that works perfectly. many thanks!
      – Ivan
      Aug 26 at 12:25












    up vote
    7
    down vote



    accepted







    up vote
    7
    down vote



    accepted






    Some key points of your question:




    • documentclass[tikz, border=5pt]standalone makes your tikzpicture more compact.

    • Draw the arrow: Use draw [->] (<start point>) -- (<end point>); You can change the arrow shape as you like. (I use [-stealth] in the example below.)

    • Specify coordinates: coordinate (<name>) at (<x>,<y>);

    • Calculate coordinates: coordinate (<point1>) at ($(<point1>)+(<xshift>,<yshift>)$);. The $...$ here claims a temporaty calculation environment instead of a math formula.

    • Text positioning: Use [anchor=...] options.

    • Add itemize environment: Just put the them into the node as: node [...] at (...) beginitemize ... enditemize;.


    Here is a working example, you can improve it with foreach grammar.



    enter image description here



    documentclass[tikz, border=5pt]standalone

    usepackagetikz
    usepackagelipsum

    begindocument
    begintikzpicture
    usetikzlibrarycalc

    % draw arrow
    coordinate (start) at (-4,0);
    coordinate (end) at (26,0);
    draw [line width=2pt, -stealth] (start) -- (end);

    % You can use `foreach` to improve the following codes
    coordinate (s0) at (1,0);
    coordinate (t0) at ($(s0)+(0,0.3)$);
    coordinate (s1) at (11,0);
    coordinate (t1) at ($(s1)+(0,0.3)$);
    coordinate (s2) at (21,0);
    coordinate (t2) at ($(s2)+(0,0.3)$);

    % draw ticks
    draw [line width=2pt] (s0) -- (t0);
    node [anchor=south] at (t0.north) $t=0$;

    draw [line width=2pt] (t1) -- (s1);
    node [anchor=south] at (t1.north) $t=1$;

    draw [line width=2pt] (t2) -- (s2);
    node [anchor=south] at (t2.north) $t=2$;

    % add texts
    node [anchor=north, align=left, text width=9cm] at (s0.south)
    beginitemize
    item lipsum[1]
    item lipsum[2]
    enditemize
    ;

    node [anchor=north, align=left, text width=9cm] at (s1.south)
    beginitemize
    item lipsum[3]
    item lipsum[4]
    enditemize
    ;

    node [anchor=north, align=left, text width=9cm] at (s2.south)
    beginitemize
    item lipsum[5]
    item lipsum[6]
    enditemize
    ;

    endtikzpicture
    enddocument





    share|improve this answer














    Some key points of your question:




    • documentclass[tikz, border=5pt]standalone makes your tikzpicture more compact.

    • Draw the arrow: Use draw [->] (<start point>) -- (<end point>); You can change the arrow shape as you like. (I use [-stealth] in the example below.)

    • Specify coordinates: coordinate (<name>) at (<x>,<y>);

    • Calculate coordinates: coordinate (<point1>) at ($(<point1>)+(<xshift>,<yshift>)$);. The $...$ here claims a temporaty calculation environment instead of a math formula.

    • Text positioning: Use [anchor=...] options.

    • Add itemize environment: Just put the them into the node as: node [...] at (...) beginitemize ... enditemize;.


    Here is a working example, you can improve it with foreach grammar.



    enter image description here



    documentclass[tikz, border=5pt]standalone

    usepackagetikz
    usepackagelipsum

    begindocument
    begintikzpicture
    usetikzlibrarycalc

    % draw arrow
    coordinate (start) at (-4,0);
    coordinate (end) at (26,0);
    draw [line width=2pt, -stealth] (start) -- (end);

    % You can use `foreach` to improve the following codes
    coordinate (s0) at (1,0);
    coordinate (t0) at ($(s0)+(0,0.3)$);
    coordinate (s1) at (11,0);
    coordinate (t1) at ($(s1)+(0,0.3)$);
    coordinate (s2) at (21,0);
    coordinate (t2) at ($(s2)+(0,0.3)$);

    % draw ticks
    draw [line width=2pt] (s0) -- (t0);
    node [anchor=south] at (t0.north) $t=0$;

    draw [line width=2pt] (t1) -- (s1);
    node [anchor=south] at (t1.north) $t=1$;

    draw [line width=2pt] (t2) -- (s2);
    node [anchor=south] at (t2.north) $t=2$;

    % add texts
    node [anchor=north, align=left, text width=9cm] at (s0.south)
    beginitemize
    item lipsum[1]
    item lipsum[2]
    enditemize
    ;

    node [anchor=north, align=left, text width=9cm] at (s1.south)
    beginitemize
    item lipsum[3]
    item lipsum[4]
    enditemize
    ;

    node [anchor=north, align=left, text width=9cm] at (s2.south)
    beginitemize
    item lipsum[5]
    item lipsum[6]
    enditemize
    ;

    endtikzpicture
    enddocument






    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited Aug 26 at 12:35

























    answered Aug 26 at 12:06









    Hansimov

    1639




    1639











    • that works perfectly. many thanks!
      – Ivan
      Aug 26 at 12:25
















    • that works perfectly. many thanks!
      – Ivan
      Aug 26 at 12:25















    that works perfectly. many thanks!
    – Ivan
    Aug 26 at 12:25




    that works perfectly. many thanks!
    – Ivan
    Aug 26 at 12:25










    up vote
    5
    down vote













    an alternative:



    • using the enumitem package for lists in nodes

    • node are positioned by using the positioning library

    • time line is drawn from the left top corner of the first node to the right top corner of the last node

    • time events are determined by the foreach loop

    by this measure the document example's code is simpler, cleaner and shorter.



    edit:
    ups, now I see that I forgot to add the mwe :-(. now it is here:



    documentclass[a4paper, 12 pt]article
    usepackagetikz
    usetikzlibrarypositioning
    usepackageenumitem

    begindocument
    beginfigure
    setlist[itemize]nosep, leftmargin=*
    begintikzpicture[
    node distance = 0mm and 0.02linewidth,
    box/.style = inner xsep=0pt, outer sep=0pt,
    text width=0.32linewidth,
    align=left, font=small
    ]
    node (n1) [box]
    beginitemize
    item The shareshoulders design compensation contract for the manager simultaneously.
    enditemize
    ;
    node (n2) [box, below right=of n1.north east]
    beginitemize
    item The manager of each firm privately observes its entry cost;
    item The manager make entry decision simultaneously;
    item Trading and financial market occurs.
    enditemize
    ;
    node (n3) [box, below right=of n2.north east]
    beginitemize
    item Entry cost and profits are realised;
    item Manager receive their compensation;
    item Firms are liquidated.
    enditemize
    ;
    draw[thick, -latex] (n1.north west) -- (n3.north east);
    foreach x [count=xx from 1] in 0,1,2
    draw (nxx.north) -- + (0,3mm) node[above] $t=x$;
    endtikzpicture
    endfigure
    enddocument


    enter image description here



    (red lines are indicate text borders)






    share|improve this answer


























      up vote
      5
      down vote













      an alternative:



      • using the enumitem package for lists in nodes

      • node are positioned by using the positioning library

      • time line is drawn from the left top corner of the first node to the right top corner of the last node

      • time events are determined by the foreach loop

      by this measure the document example's code is simpler, cleaner and shorter.



      edit:
      ups, now I see that I forgot to add the mwe :-(. now it is here:



      documentclass[a4paper, 12 pt]article
      usepackagetikz
      usetikzlibrarypositioning
      usepackageenumitem

      begindocument
      beginfigure
      setlist[itemize]nosep, leftmargin=*
      begintikzpicture[
      node distance = 0mm and 0.02linewidth,
      box/.style = inner xsep=0pt, outer sep=0pt,
      text width=0.32linewidth,
      align=left, font=small
      ]
      node (n1) [box]
      beginitemize
      item The shareshoulders design compensation contract for the manager simultaneously.
      enditemize
      ;
      node (n2) [box, below right=of n1.north east]
      beginitemize
      item The manager of each firm privately observes its entry cost;
      item The manager make entry decision simultaneously;
      item Trading and financial market occurs.
      enditemize
      ;
      node (n3) [box, below right=of n2.north east]
      beginitemize
      item Entry cost and profits are realised;
      item Manager receive their compensation;
      item Firms are liquidated.
      enditemize
      ;
      draw[thick, -latex] (n1.north west) -- (n3.north east);
      foreach x [count=xx from 1] in 0,1,2
      draw (nxx.north) -- + (0,3mm) node[above] $t=x$;
      endtikzpicture
      endfigure
      enddocument


      enter image description here



      (red lines are indicate text borders)






      share|improve this answer
























        up vote
        5
        down vote










        up vote
        5
        down vote









        an alternative:



        • using the enumitem package for lists in nodes

        • node are positioned by using the positioning library

        • time line is drawn from the left top corner of the first node to the right top corner of the last node

        • time events are determined by the foreach loop

        by this measure the document example's code is simpler, cleaner and shorter.



        edit:
        ups, now I see that I forgot to add the mwe :-(. now it is here:



        documentclass[a4paper, 12 pt]article
        usepackagetikz
        usetikzlibrarypositioning
        usepackageenumitem

        begindocument
        beginfigure
        setlist[itemize]nosep, leftmargin=*
        begintikzpicture[
        node distance = 0mm and 0.02linewidth,
        box/.style = inner xsep=0pt, outer sep=0pt,
        text width=0.32linewidth,
        align=left, font=small
        ]
        node (n1) [box]
        beginitemize
        item The shareshoulders design compensation contract for the manager simultaneously.
        enditemize
        ;
        node (n2) [box, below right=of n1.north east]
        beginitemize
        item The manager of each firm privately observes its entry cost;
        item The manager make entry decision simultaneously;
        item Trading and financial market occurs.
        enditemize
        ;
        node (n3) [box, below right=of n2.north east]
        beginitemize
        item Entry cost and profits are realised;
        item Manager receive their compensation;
        item Firms are liquidated.
        enditemize
        ;
        draw[thick, -latex] (n1.north west) -- (n3.north east);
        foreach x [count=xx from 1] in 0,1,2
        draw (nxx.north) -- + (0,3mm) node[above] $t=x$;
        endtikzpicture
        endfigure
        enddocument


        enter image description here



        (red lines are indicate text borders)






        share|improve this answer














        an alternative:



        • using the enumitem package for lists in nodes

        • node are positioned by using the positioning library

        • time line is drawn from the left top corner of the first node to the right top corner of the last node

        • time events are determined by the foreach loop

        by this measure the document example's code is simpler, cleaner and shorter.



        edit:
        ups, now I see that I forgot to add the mwe :-(. now it is here:



        documentclass[a4paper, 12 pt]article
        usepackagetikz
        usetikzlibrarypositioning
        usepackageenumitem

        begindocument
        beginfigure
        setlist[itemize]nosep, leftmargin=*
        begintikzpicture[
        node distance = 0mm and 0.02linewidth,
        box/.style = inner xsep=0pt, outer sep=0pt,
        text width=0.32linewidth,
        align=left, font=small
        ]
        node (n1) [box]
        beginitemize
        item The shareshoulders design compensation contract for the manager simultaneously.
        enditemize
        ;
        node (n2) [box, below right=of n1.north east]
        beginitemize
        item The manager of each firm privately observes its entry cost;
        item The manager make entry decision simultaneously;
        item Trading and financial market occurs.
        enditemize
        ;
        node (n3) [box, below right=of n2.north east]
        beginitemize
        item Entry cost and profits are realised;
        item Manager receive their compensation;
        item Firms are liquidated.
        enditemize
        ;
        draw[thick, -latex] (n1.north west) -- (n3.north east);
        foreach x [count=xx from 1] in 0,1,2
        draw (nxx.north) -- + (0,3mm) node[above] $t=x$;
        endtikzpicture
        endfigure
        enddocument


        enter image description here



        (red lines are indicate text borders)







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Aug 27 at 9:33

























        answered Aug 26 at 13:19









        Zarko

        113k861150




        113k861150



























             

            draft saved


            draft discarded















































             


            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f447777%2fhow-can-i-draw-a-timeline-using-tikz-with-itemize-enumerate-function-graphical%23new-answer', 'question_page');

            );

            Post as a guest













































































            Popular posts from this blog

            How to check contact read email or not when send email to Individual?

            Displaying single band from multi-band raster using QGIS

            How many registers does an x86_64 CPU actually have?