关于时间线的一个范例

文本排版 2019-08-16 18:48  浏览 :2388

网站上有一篇文章用 LaTeX 生成了一个竖直的时间线,效果很漂亮,链接在这里: https://www.latexstudio.net/archives/9763.html 。这个例子是用 table 浮动体环境和表格 tabular 环境形成的,对于能在一页内表达的问题,当然很不错,可是当内容太多需要进行换页的时候就无能为力了。我采用 tcolorbox 的 tcbitemize 环境,也实现了一个竖直的时间线环境,在使用中也比较方便。这个例子就留在下面。

\\documentclass{ctexart}
\\usepackage{tcolorbox}
\\tcbuselibrary{skins,breakable,listings,raster}
\\usepackage{varwidth}
\\usepackage{zhlipsum,cncolours}
\\colorlet{cvprimary}{松花绿}
\\colorlet{cvsecondary}{cvprimary!20}
\\tcbset{
  skin=enhanced,
  timeline/.style={
        skin=enhanced,
        attach boxed title to top left={yshift=-\\tcboxedtitleheight},
        varwidth boxed title={2.3cm},
        empty,breakable,leftrule=2.9cm,left=2mm,right=0mm,bottom=0pt,top=0pt,
        colback=cvprimary,
        coltitle=black,
      % code for unbroken boxes:
        interior code={%
            \\path[tcb fill interior] (interior.south west|-frame.south)--
            (interior.north west|-frame.north);
            \\fill[shading=ball,ball color=cvprimary] 
            ([yshift=-1.9ex]interior.north west) circle (3pt);
        },
      % code for the first part of a break sequence:
        skin first is subskin of={emptyfirst}{%
            interior code={\\draw[tcb fill interior] (interior.south west)--
                (interior.north west);
                \\fill[shading=ball,ball color=cvprimary] 
                ([yshift=-1.9ex]interior.north west) circle (3pt);
            }
        },%
      % code for the middle part of a break sequence:
        skin middle is subskin of={emptymiddle}{%
            interior code={\\draw[tcb fill interior] (interior.south west|-frame.south)
			--(interior.north west|-frame.north);},
        },
      % code for the last part of a break sequence:
        skin last is subskin of={emptylast}{%
             interior code={\\draw[tcb fill interior] (interior.south west)
		     --(interior.north west|-frame.north);},
        },
    }
}

\\newenvironment{timeline}%
    {\\begin{tcbitemize}[timeline,raster columns=1,raster row skip=0pt]}%
    {\\end{tcbitemize}}
\\newcommand{\\titem}[2]{\\tcbitem[title={#1}]#2}

\\begin{document}
\\begin{timeline}
  \\tcbitem[title={2008年8月}]\\zhlipsum[1][name=xiangyu]
  \\tcbitem[title={2008年8月至2009年5月}]\\zhlipsum[2][name=xiangyu]
  \\tcbitem[title={2009年5月12日}]\\zhlipsum[4][name=xiangyu]
  \\titem{2009年12月31日}{\\zhlipsum[4][name=xiangyu]}
  \\titem{2019年7月31日}{\\zhlipsum[4][name=xiangyu]}
\\end{timeline}
\\end{document}

timeline.zip

发布评论
登录后方可评论!点击登录
全部评论 (1)
赤霓
1楼 · 2019-08-17 08:55

很棒,收藏了