控制垂直时间轴中日期的突出显示和分隔

控制垂直时间轴中日期的突出显示和分隔

我想使用的解决方案多个 Beamer 框架中共享的时间线制作垂直时间线,即箭头指向幻灯片的底部。

\documentclass[t]{beamer}
%----------- width and color of progressbar
\usetheme[progressbar=frametitle,
% outer/progressbar=foot
]{metropolis}
\makeatletter
\setlength{\metropolis@titleseparator@linewidth}{2pt}
\setlength{\metropolis@progressonsectionpage@linewidth}{2pt}
\setlength{\metropolis@progressinheadfoot@linewidth}{2pt}
\makeatother
%------------
\setbeamertemplate{frame numbering}[fraction]
% \setbeamertemplate{navigation symbols}{}
% \useoutertheme{metropolis}
% \useinnertheme{metropolis}
\usefonttheme{metropolis}
\usetikzlibrary{overlay-beamer-styles}
\setbeamercovered{transparent=7}
\tikzset{
    highlight on/.style={alt={#1{fill=red!80!black,color=red!80!black}{fill=gray!30!white,color=gray!30!white}}},
}
\begin{document}

\begin{frame}[t]{Timeline}
    

    \frametitle{Timeline}
    \begin{tikzpicture}[xscale=0.5]
    \draw[line width=1.5mm,-latex,red!20] (-0.2,0) -- (20+0.2,0);
    \foreach \X [evaluate=\X as \Y using int(\X-2005),count=\Z] in {2009,2010,2012,2015,2016,2017} %<- these are the years not to be highlighted
    {
    \draw[highlight on=<0>] ({\Y-0.2},-0.5) -- ({\Y+0.2},-0.5) -- (\Y,-0.1) -- cycle;
    \node[anchor=south,highlight on=<0>,fill=white,rotate=45,anchor=south
    west,inner sep=0pt] at (\Y,0.2) {\X};
    }
    \foreach \X [evaluate=\X as \Y using int(\X-2000),count=\Z] in {} %<- these are the years which are to be highlighted
    {
    \draw[highlight on=<\Z>] ({\Y-0.2},-0.5) -- ({\Y+0.2},-0.5) -- (\Y,-0.1) -- cycle;
    \node[anchor=south,highlight on=<\Z>,fill=white,rotate=45,anchor=south
    west,inner sep=0pt] at (\Y,0.2) {\X};
    }
    \end{tikzpicture}
    
    
    
    \begin{itemize}
    \item<1> frame 1
    \item<2> frame 2
    \item<3> frame 3
    \item<4> frame 4
    \item<5> frame 5
    \item<6> frame 6
    \end{itemize}
    
\end{frame}
%--- Next Frame ---%

\end{document}

我还想知道如何使用相同的项目列表(例如 itemize 中的第一个项目)显示两个日期(例如 2009 年和 2012 年)。我还想知道如何控制箭头的长度和日期之间的间隔。

答案1

下面的解决方案使用列,第一列用于时间线,第二列用于项目列表。

\begin{columns}[b]
    \begin{column}{0.15\textwidth}
    ... tikzpicture ...
    \end{column}
    \begin{column}{0.8\textwidth}
    ... itemize ...
    \end{column}
\end{columns}

时间线的长度取决于命令中的坐标\draw和因子scale。在这里,线从 开始0.5并下降到-17(想法是每减少 1 对应 1 年)。因子scale是。可以通过更改选项中的0.38魔法数字来控制图片相对于逐项列表的垂直位置。-5.5baseline

\begin{tikzpicture}[scale=0.38,baseline={(0,-5.5)}]
\draw[line width=1mm,-latex,red!20] (0,0.5) -- +(0,-17);

时间线上的每一项都由三个值描述:\Label\Offset年份 和\Overlay规范。对于以下示例中的时间线,项目列表指定为

\Label/\Offset/\Overlay in {2000/0/1,2001/1/2,2002/2/3,2005/5/4,2008/8/5,2009/9/6,2012/12/6,2015/15/7}

此列表以及逐项列表中的叠加规范决定何时突出显示某项。如果两个项出现相同的帧编号,则它们将同时突出显示。您还可以使用更复杂的规范来指定范围等。

关于箭头,请注意两个绘制命令中的选项-latex-{Latex[length=8]}。第一个选项确定时间轴的箭头,第二个选项确定时间轴上标记年份的箭头。您可以用 tikz 库中的任何箭头替换它们arrows.meta

在此处输入图片描述

\documentclass{beamer}
\setbeamercovered{transparent}
\setbeamertemplate{navigation symbols}{} % removes navigation symbols at the bottom left
\usepackage{tikz}
\usetikzlibrary{overlay-beamer-styles}
\usetikzlibrary{arrows.meta}
\tikzset{
    highlight on/.style={alt={#1{fill=red!80!black,color=red!80!black}{fill=gray!30!white,color=gray!30!white}}},
}
\begin{document}
\begin{frame}[t]{Timeline}
  \begin{columns}[b]
    \begin{column}{0.15\textwidth}
      \begin{tikzpicture}[scale=0.38,baseline={(0,-5.5)}]
      \draw[line width=1mm,-latex,red!20] (0,0.5) -- +(0,-17);
      \foreach \Label/\Offset/\Overlay in {2000/0/1,2001/1/2,2002/2/3,2005/5/4,2008/8/5,2009/9/6,2012/12/6,2015/15/7} {
        \def\Y{-\Offset}
        \draw[highlight on=<\Overlay>,-{Latex[length=8]}] (-0.5,\Y) -- (-0.1,\Y);
        \node[highlight on=<\Overlay>,anchor=west,fill=white,inner sep=0pt] at (0.4,\Y) {\Label};
      }
      \end{tikzpicture}
    \end{column}
    \begin{column}{0.8\textwidth}
      \begin{itemize}
      \item<1> November 2000: marmots start hibernating
      \item<2> August 2001: marmots eat
      \item<2> Semptember 2001: marmots eat
      \item<3> July 2002: marmots eat
      \item<4> May 2005: marmots awake from hibernation\
      \item<4> November 2005: marmots start hibernating again
      \item<5> May 2008: marmots drink honey liquor
      \item<6> 2009, 2012: noisy, marmots can't fall asleep
      \item<7> July 2015: marmots eat pineapple cake
      \end{itemize}
    \end{column}
  \end{columns}
\end{frame}
\end{document}

如何从 pdf 页面获取动画 gif:使用 ImageMagick 将 PDF 幻灯片转换为动画 GIF 和视频

相关内容