我搜索了一条可以执行类似这样的操作的命令:我可以输入两个时间间隔:第一个是时间线的总长度,第二个是要突出显示的时间段。例如以下命令:
\timeline{1900-2000}{1950}{2000}
产生如下结果:
另一个例子:
\timeline{1900-2000}{1925}{1965}
我可以选择打印年份(例如带有符号*
):
\timeline{*1900-*2000}{*1945}{1976}
如果我想打印所有年份,我可以输入以下两个命令:
\timeline{*1900-*2000}{*1950}{*2000}
\timeline[*]{1900-2000}{1950}{2000}
另一个例子:
\timelineyears[*]{1900-2000}{1925}{1965}
如果我愿意,我可以输入不精确的年份(例如使用符号~
),产生与年份相关的颜色渐变。例如:
\timelineyears{1900-2000}{1945}{~1976}
\timelineyears{1900-2000}{~1945}{1976}
\timelineyears{1900-2000}{~1945}{~1976}
(也许,如果我输入一个不精确的年份并且打印出来,最好以某种方式根据具体年份进行区分。
我还可以设置时间间隔:
\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}