역사 책에는 종종 일정과 기간이 서로 정확한 상대적 거리에있는 선에 표시되는 타임 라인이 있습니다. LaTeX에서 비슷한 것을 어떻게 만들 수 있습니까?
답변
tikz의 패키지는 당신이 원하는 것 같습니다.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{snakes}
\begin{document}
\begin{tikzpicture}[snake=zigzag, line before snake = 5mm, line after snake = 5mm]
% draw horizontal line
\draw (0,0) -- (2,0);
\draw[snake] (2,0) -- (4,0);
\draw (4,0) -- (5,0);
\draw[snake] (5,0) -- (7,0);
% draw vertical lines
\foreach \x in {0,1,2,4,5,7}
\draw (\x cm,3pt) -- (\x cm,-3pt);
% draw nodes
\draw (0,0) node[below=3pt] {$ 0 $} node[above=3pt] {$ $};
\draw (1,0) node[below=3pt] {$ 1 $} node[above=3pt] {$ 10 $};
\draw (2,0) node[below=3pt] {$ 2 $} node[above=3pt] {$ 20 $};
\draw (3,0) node[below=3pt] {$ $} node[above=3pt] {$ $};
\draw (4,0) node[below=3pt] {$ 5 $} node[above=3pt] {$ 50 $};
\draw (5,0) node[below=3pt] {$ 6 $} node[above=3pt] {$ 60 $};
\draw (6,0) node[below=3pt] {$ $} node[above=3pt] {$ $};
\draw (7,0) node[below=3pt] {$ n $} node[above=3pt] {$ 10n $};
\end{tikzpicture}
\end{document}
나는 tikz에 너무 전문적이지는 않지만 다음과 같은 좋은 타임 라인을 제공합니다.
답변
Levi Wiseman 의 새로운 chronology.sty 가 있습니다. 문서 (PDF)는 말한다 :
LATEX을위한 대부분의 타임 라인 패키지 및 솔루션은 많은 정보를 전달하는 데 사용되므로 수직으로 설계됩니다. 날짜에 레이블을 지정하려는 경우보다 전통적인 타임 라인이 더 적합 할 수 있습니다. 그것이 연대기의 목적입니다.
다음은 몇 가지 예제 코드입니다.
\documentclass{article}
\usepackage{chronology}
\begin{document}
\begin{chronology}[5]{1983}{2010}{3ex}[\textwidth]
\event{1984}{one}
\event[1985]{1986}{two}
\event{\decimaldate{25}{12}{2001}}{three}
\end{chronology}
\end{document}
다음 출력을 생성합니다.
답변
또한 chronosys 패키지 는 좋은 솔루션을 제공합니다. 다음은 사용자 설명서의 예입니다.
답변
업데이트 일뿐입니다.
현재 TiKZ 패키지는 다음을 발행합니다. 패키지 tikz 경고 : 뱀이 장식으로 대체되었습니다. 입력 줄에 뱀 라이브러리 대신 장식 라이브러리를 사용하십시오. . .
따라서 코드의 관련 부분을 다음과 같이 변경해야합니다.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations}
\begin{document}
\begin{tikzpicture}
%draw horizontal line
\draw (0,0) -- (2,0);
\draw[decorate,decoration={snake,pre length=5mm, post length=5mm}] (2,0) -- (4,0);
\draw (4,0) -- (5,0);
\draw[decorate,decoration={snake,pre length=5mm, post length=5mm}] (5,0) -- (7,0);
%draw vertical lines
\foreach \x in {0,1,2,4,5,7}
\draw (\x cm,3pt) -- (\x cm,-3pt);
%draw nodes
\draw (0,0) node[below=3pt] {$ 0 $} node[above=3pt] {$ $};
\draw (1,0) node[below=3pt] {$ 1 $} node[above=3pt] {$ 10 $};
\draw (2,0) node[below=3pt] {$ 2 $} node[above=3pt] {$ 20 $};
\draw (3,0) node[below=3pt] {$ $} node[above=3pt] {$ $};
\draw (4,0) node[below=3pt] {$ 5 $} node[above=3pt] {$ 50 $};
\draw (5,0) node[below=3pt] {$ 6 $} node[above=3pt] {$ 60 $};
\draw (6,0) node[below=3pt] {$ $} node[above=3pt] {$ $};
\draw (7,0) node[below=3pt] {$ n $} node[above=3pt] {$ 10n $};
\end{tikzpicture}
\end{document}
HTH
답변
Tim Storer 는 더 유연하고보기 좋은 글을 썼습니다 timeline.sty
(원본은 사라졌기 때문에 Internet Archive Wayback Machine 링크). 또한 선은 수직이 아닌 수평입니다. 예를 들어 :
\begin{timeline}{2008}{2010}{50}{250}
\MonthAndYearEvent{4}{2008}{First Podcast}
\MonthAndYearEvent{7}{2008}{Private Beta}
\MonthAndYearEvent{9}{2008}{Public Beta}
\YearEvent{2009}{IPO?}
\end{timeline}
다음과 같은 타임 라인을 생성합니다.
2008 2010
· · April, 2008 First Podcast ·
· July, 2008 Private Beta
· September, 2008 Public Beta
· 2009 IPO?
개인적으로 나는 이것이 다른 답변보다 더 즐거운 해결책이라고 생각합니다. 하지만 타임 라인이 어떻게 생겼는지에 더 가깝게 만들기 위해 코드를 수정하고 있습니다. 그래서 제 생각에는 확실한 해결책이 없습니다.
답변
첫째, tikz
더 많은 자유를 제공하기 때문에 가이드 솔루션을 선호합니다 . 둘째, 나는 완전히 새로운 것을 게시하지 않습니다. 그가 길을 보여 주었기 때문에 Zoe Gagnon의 대답과 분명히 비슷합니다.
나는 몇 년의 타임 라인이 필요했고 그것을하는 데 약간의 시간이 걸렸기 때문에 (놀랍습니다!) 결과를 공유하고 있습니다. 나는 당신이 그것을 좋아하기를 바랍니다.
\documentclass[tikz]{standalone}
\usepackage{verbatim}
\begin{document}
\newlength\yearposx
\begin{tikzpicture}[scale=0.57] % timeline 1990-2010->
% define coordinates (begin, used, end, arrow)
\foreach \x in {1990,1992,2000,2002,2004,2005,2008,2009,2010,2011}{
\pgfmathsetlength\yearposx{(\x-1990)*1cm};
\coordinate (y\x) at (\yearposx,0);
\coordinate (y\x t) at (\yearposx,+3pt);
\coordinate (y\x b) at (\yearposx,-3pt);
}
% draw horizontal line with arrow
\draw [->] (y1990) -- (y2011);
% draw ticks
\foreach \x in {1992,2000,2002,2004,2005,2008,2009}
\draw (y\x t) -- (y\x b);
% annotate
\foreach \x in {1992,2002,2005,2009}
\node at (y\x) [below=3pt] {\x};
\foreach \x in {2000,2004,2008}
\node at (y\x) [above=3pt] {\x};
\begin{comment}
% for use in beamer class
\only<2> {\fill (y1992) circle (5pt);}
\only<3-5> {\fill (y2000) circle (5pt);}
\only<4-5> {\fill (y2002) circle (5pt);}
\only<5> {\fill[red] (y2004) circle (5pt);}
\only<6> {\fill (y2005) circle (5pt);}
\only<7> {\fill[red] (y2005) circle (5pt);}
\only<8-11> {\fill (y2008) circle (5pt);}
\only<11> {\fill (y2009) circle (5pt);}
\end{comment}
\end{tikzpicture}
\end{document}
보시다시피 비머 프레젠테이션 (부분 선택 및 크기 조정 옵션)에 맞게 조정되었지만 프레젠테이션에서 실제로 테스트 \newlength\yearposx
하려면 프레임 정의 외부로 이동해야합니다. 그렇지 않으면 실제로 다음 과 같은 오류가 발생하기 때문입니다. 해당 명령 \yearposx
은 이미 정의되어 있습니다 (프레임에서 선택 부분과 다른 프레임 분할 명령을 제거하지 않는 한).