时间间隔的时间线

时间间隔的时间线

我搜索了一条可以执行类似这样的操作的命令:我可以输入两个时间间隔:第一个是时间线的总长度,第二个是要突出显示的时间段。例如以下命令:

\timeline{1900-2000}{1950}{2000}

产生如下结果:

时间线-1900-2000-1950-2000

另一个例子:

\timeline{1900-2000}{1925}{1965}

时间线-1900-2000-1925-1965


我可以选择打印年份(例如带有符号*):

\timeline{*1900-*2000}{*1945}{1976}

时间轴年份-d1900-d2000-d1945-1976

如果我想打印所有年份,我可以输入以下两个命令:

\timeline{*1900-*2000}{*1950}{*2000}
\timeline[*]{1900-2000}{1950}{2000}

时间轴年份-d1900-d2000-d1950-d2000

另一个例子:

\timelineyears[*]{1900-2000}{1925}{1965}

时间线年份-1900-2000-1925-1965


如果我愿意,我可以输入不精确的年份(例如使用符号~),产生与年份相关的颜色渐变。例如:

\timelineyears{1900-2000}{1945}{~1976}

时间轴年份-1900-2000-1945-a1976

\timelineyears{1900-2000}{~1945}{1976}

时间线年份-1900-2000-a1945-1976

\timelineyears{1900-2000}{~1945}{~1976}

时间轴年份-1900-2000-a1945-a1976

(也许,如果我输入一个不精确的年份并且打印出来,最好以某种方式根据具体年份进行区分。


我还可以设置时间间隔:

\settimeinterval{1900-2000}

这样我只需要指定要突出显示的范围:

\timeline{1912}{1920}

时间间隔保持不变,直到下一次\settimeinterval声明(但我可以用默认命令覆盖它\timeline{a-b}{c}{d})。

答案1

该命令的结构如下

\Timeline[ <option> ]{ <start>-<end> }{ <startint> }{ <endint> }

添加*到选项将打印所有年份,否则将不打印任何年份。第一个参数<start>-<end>分别设置开始和结束年份。后两个参数设置间隔。~在年份前添加将激活渐变效果。

在 David Carlisle 的帮助下,波浪号已修复。现在,当您添加一个不准确的年份时,波浪号就会出现。

输出(各种)

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

代码

\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\usepackage{xstring}
\usepackage[T1]{fontenc}
\usepackage{newtxtext}

\usetikzlibrary{fadings}

\newcommand\Timeline[4][]{%
    % Some options
    \def\printy{*}
    \def\option{#1}
    % Setting Start-End bar
    \StrBehind{#2}{-}[\endyear]
    \StrBefore{#2}{-}[\startyear]
    % Setting Start-End Interval
    \StrRight{#3}{4}[\startint]
    \StrRight{#4}{4}[\endint]
    % Some calculations
    \pgfmathsetmacro\endy{(\endyear-\startyear)/10}
    \pgfmathsetmacro\fromyear{(\startint-\startyear)/10}
    \pgfmathsetmacro\toyear{(\endint-\startyear)/10}
    \pgfmathsetmacro\midy{(\fromyear+\toyear)/2}
    % Fill interval
    \fill (\fromyear,0) rectangle (\toyear,.2);
    % Fill with gradient if ~ is added
    \IfSubStr{#3}{~}{%
        \fill[right color=black, left color=white] (\fromyear,0) rectangle (\midy,.2);
        \node[anchor=north] at (\fromyear,0) {\string~\phantom{#3}};
        }{}
    \IfSubStr{#4}{~}{%
        \fill[right color=white, left color=black] (\midy,0) rectangle (\toyear,.2);
        \node[anchor=north] at (\toyear,0) {\string~\phantom{#4}};
        }{}
    \draw[white] (\fromyear,0) rectangle (\toyear,.2);
    % Print years
    \ifx\option\printy\relax
    \node[anchor=north] at (0,0) {\startyear};
    \node[anchor=north] at (\endy,0) {\endyear};
    \node[anchor=north] at (\fromyear,0) {#3};
    \node[anchor=north] at (\toyear,0) {#4};
    \fi
    % Print rectangle
    \draw (0,0) rectangle (\endy,.2);
}

\begin{document}
\begin{tikzpicture}

\Timeline[*]{1900-2000}{~1950}{1974}
\end{tikzpicture}
\end{document}

相关内容