Pergunta

Na história-livros muitas vezes você tem linha do tempo, onde os eventos e períodos são marcados em uma linha na distância em relação correta entre si. Como é possível criar algo semelhante em LaTeX?

Foi útil?

Solução

O pacote TikZ parece ter o que quiser.

\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}

Eu não estou muito perito com TikZ, mas isso dá uma boa linha do tempo, que se parece com:

enter descrição da imagem aqui

Outras dicas

Há um novo cronologia. chiqueiro por Levi Wiseman . A documentação (pdf) diz:

A maioria dos pacotes e soluções para o látex cronograma são usados ??para transmitir uma grande quantidade de informações e, portanto, são projetados verticalmente. Se você está apenas tentando etiquetas atribuir a datas, um cronograma mais tradicional pode ser mais apropriado. Isso é que a cronologia é para.

Aqui está um exemplo de código:

\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}

Que produz esta saída:

exemplo de saída de chronology.sty

Além disso, o pacote chronosys fornece uma solução agradável. Aqui está um exemplo do manual do usuário:

enter descrição da imagem aqui

Apenas uma atualização.

O pacote TikZ presente emitirá: Pacote TikZ Aviso: Snakes foram substituídas pelos decorações. Utilize as bibliotecas decoração em vez do serpenteia biblioteca na linha de entrada. . .

Assim, a parte pertinente do código tem de ser alterado para:

\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 escreveu uma mais agradável mais flexível e olhando timeline.sty (ligação Internet Archive Wayback Machine, como o original se foi). Além disso, a linha é horizontal em vez de vertical. Assim, por exemplo:

\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}

produz uma linha do tempo que se parece com isso:

2008                              2010
 · · April, 2008 First Podcast    ·
       · July, 2008 Private Beta
           · September, 2008 Public Beta
                · 2009 IPO?

Pessoalmente, acho isso uma solução mais agradável do que as outras respostas. Mas eu também me encontro modificar o código para obter algo mais perto do que eu acho que uma linha do tempo deve ser parecida. Então não há solução definitiva na minha opinião.

Em primeiro lugar, eu prefiro solução tikz guiada, porque lhe dá mais liberdade. Em segundo lugar, eu não vou postar qualquer coisa totalmente nova. É obviamente semelhante a resposta de Zoe Gagnon, porque ele mostrou o caminho.

Eu precisava de algum cronograma ano e ele me levou algum tempo (que surpresa!) Para fazê-lo, por isso estou compartilhando os resultados. Eu espero que você vai gostar.

\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}

Como você pode ver, é sob medida para apresentação beamer (select parte e também opção de escala), mas se você realmente quiser testá-lo em uma apresentação, então você deve se mover para fora \newlength\yearposx da definição de estrutura, porque senão você vai recebo erro veritably afirmando que \yearposx comando já está definido (a menos que você remover a parte selecção e quaisquer outros comandos frame-divisão de seu frame).

enter descrição da imagem aqui

Se você está à procura de diagramas de sequência UML, você pode estar interessado em pkf-umlsd , que é baseado em TikZ. Agradáveis ??demos pode ser encontrada aqui .

timeline.sty flutuando.

A sintaxe é mais simples do que usar TikZ:

%%% In LaTeX:
%%% \begin{timeline}{length}(start,stop)
%%%   .
%%%   .
%%%   .
%%% \end{timeline}
%%%
%%% in plain TeX
%%% \timeline{length}(start,stop)
%%%   .
%%%   .
%%%   .
%%% \endtimeline
%%% in between the two, we may have:
%%% \item{date}{description}
%%% \item[sortkey]{date}{description}
%%% \optrule
%%%
%%% the options to timeline are:
%%%      length The amount of vertical space that the timeline should
%%%                use.
%%%      (start,stop) indicate the range of the timeline. All dates or
%%%                sortkeys should lie in the range [start,stop]
%%%
%%% \item without the sort key expects date to be a number (such as a
%%%      year).
%%% \item with the sort key expects the sort key to be a number; date
%%%      can be anything. This can be used for log scale time lines
%%%      or dates that include months or days.
%%% putting \optrule inside of the timeline environment will cause a
%%%      vertical rule to be drawn down the center of the timeline.

Eu tenho python é usado datetime.data.toordinal para converter datas para 'chaves de classificação' no contexto do pacote.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top