前段时间我问过关于时间轴的问题,给出了许多解决方案,但最终我决定使用 TikZ,并且提出我的解决方案.但如果没有Torbjørn T. 的评论,他建议自动创建日期,这很有帮助,因为我不需要自己输入所有内容,最重要的是,它节省了我的 Tex 文档的空间。解决方案是1:
\documentclass[10pt]{article}
\usepackage[a4paper, landscape]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{rotating}
\usepackage{pgfplots}
%\usepackage{changepage}
\usepackage{tikz}
\usetikzlibrary{arrows,backgrounds,snakes}
\begin{document}
\begin{tikzpicture}
%draw horizontal line
\draw[|->, -latex] (0,0) -- (17,0);
\draw[-, dashed] (-1,0) -- (0,0);
%draw years
\foreach \x [evaluate=\x as \year using int(1790+\x*10)] in {0,1,...,17}{
\draw (\x,0) node[below=7pt,anchor=east,xshift=0,rotate=45] {$\year$};
}
\draw[] (0,-0.1) -- (0,0.1);
\draw[] (1,-0.1) -- (1,0.1);
\draw[] (2,-0.1) -- (2,0.1);
\draw[] (3,-0.1) -- (3,0.1);
\draw[] (4,-0.1) -- (4,0.1);
\draw[] (5,-0.1) -- (5,0.1);
\draw[] (6,-0.1) -- (6,0.1);
\draw[] (7,-0.1) -- (7,0.1);
\draw[] (8,-0.1) -- (8,0.1);
\draw[] (9,-0.1) -- (9,0.1);
\draw[] (10,-0.1) -- (10,0.1);
\draw[] (11,-0.1) -- (11,0.1);
\draw[] (12,-0.1) -- (12,0.1);
\draw[] (13,-0.1) -- (13,0.1);
\draw[] (14,-0.1) -- (14,0.1);
\draw[] (15,-0.1) -- (15,0.1);
\draw[] (16,-0.1) -- (16,0.1);
\end{tikzpicture}
\end{document}
结果是:
... 并且它继续(太长了,这里放不下)。现在我想重新创建它,但要加上小时和分钟,这样我才能在行底看到它们00:00
等等01:00
。
这可能是无限的,因为我打算制作一份长的横向文档(不会打印,只用于数字用途,所以没问题)。
我尝试过调整代码并搜索此网站,但无济于事。我该怎么做?代码是否可以使用多年,但不能像我想要的那样使用很长时间?我真的不知道从哪里开始。
1:这实际上是一个最小的工作示例。我指的是评论中报告的行。
答案1
通过对循环进行一些小小的改变\foreach
你就会得到我认为是期望的结果:
笔记:
您可以大大简化您的代码:
- 我注释掉了这个 MWE 不需要的包。
- 通过设置
\MaxNumber
您可以轻松更改一个参数并增加图片的宽度(页面尺寸需要调整)。 - 各个
\draw
命令可以处于\foreach
循环之中。
代码:
\documentclass[10pt]{article}
\usepackage[a4paper, landscape]{geometry}
%\usepackage[utf8]{inputenc}
%\usepackage{rotating}
%\usepackage{pgfplots}
%\usepackage{changepage}
\usepackage{tikz}
%\usetikzlibrary{arrows,backgrounds,snakes}
\newcommand*{\MaxNumber}{17}%
\begin{document}
\begin{tikzpicture}
%draw horizontal line
\draw[|->, -latex] (0,0) -- (\MaxNumber,0);
\draw[-, dashed] (-1,0) -- (0,0);
%draw hours
\foreach \x in {0,...,\MaxNumber} {%
\draw (\x,0) node[below=7pt,anchor=east,xshift=0,rotate=45] {\x:00};
\draw[] (\x,-0.1) -- (\x,0.1);
}
\end{tikzpicture}
\end{document}