कैसे LaTeX के साथ एक समय रेखा बनाने के लिए?


80

इतिहास-पुस्तकों में आपके पास अक्सर समयरेखा होती है, जहां घटनाओं और अवधि को एक दूसरे के लिए सही सापेक्ष दूरी में एक रेखा पर चिह्नित किया जाता है। LaTeX में कुछ इसी तरह का निर्माण कैसे संभव है?


3
यहाँ मेरा जवाब: tex.stackexchange.com/questions/183046/… मुझे आशा है कि यह मदद कर सकता है
flav

जवाबों:


49

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 के साथ बहुत विशेषज्ञ नहीं हूँ, लेकिन यह एक अच्छा समय देता है, जो दिखता है:

यहाँ छवि विवरण दर्ज करें


आउटपुट अच्छा लग रहा है। वाक्य-विन्यास उतना सरल नहीं है जितना मुझे उम्मीद थी, लेकिन मुझे लगता है कि मैं सामान को सरल बनाने के लिए कुछ कमांड बना सकता हूं। इस सुझाव के लिए धन्यवाद।
Mnementh

76

लेवी वाइसमैन द्वारा एक नया कालानुक्रम है । प्रलेखन (पीडीएफ) का कहना है:

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}

जो इस उत्पादन का उत्पादन करता है:

उदाहरण कालानुक्रम से उत्पादन


2
यह ध्यान दिया जाना चाहिए कि यह पैकेज प्रति दस्तावेज़ केवल एक समयरेखा का समर्थन करता है। कम से कम मेरे लिए, मुझे एक से अधिक के लिए प्रयास करने पर त्रुटि "कमांड \ सी @ चरण पहले से परिभाषित" मिलती है।
रसेलपिएरेस

3
मैंने एक ऊर्ध्वाधर समय रेखा प्राप्त करने के लिए कालक्रम.स्टी फ़ाइल को संशोधित करने का प्रयास किया, लेकिन बहुत सफल नहीं हुआ। क्या इसका कोई वर्टिकल वर्जन है?
highsciguy

1
क्या पैकेज शामिल हैं \textwidth?
हीथ हुननिकट

1
@KarlRichter इस लिंक को
DocBuckets

2
इस उदाहरण को संकलित करने में "लापता संख्या" त्रुटि का अनुभव करने वालों के लिए, निम्न प्रश्न देखें: tex.stackexchange.com/questions/233781/… (remove {3ex})।
1

22

इसके अलावा पैकेज क्रोनोसिस एक अच्छा समाधान प्रदान करता है। उपयोगकर्ता पुस्तिका से एक उदाहरण यहां दिया गया है:

यहाँ छवि विवरण दर्ज करें


3
धन्यवाद! हालांकि, अजीब है कि जिस व्यक्ति ने दस्तावेज लिखा था, वह समयरेखा को "फ्रिज़" कहता है, जैसे कि वह समयरेखा के समान है। बस डाल यहाँ मामले में किसी और प्रलेखन पढ़ता है।
जोनाथन कोमर

1
@JonathanKomar यह मध्ययुगीन लैटिन फ्रिसियम से फ्रेंच फ्रिज़ से है। यह मूर्तिकला या चित्रित सजावट की एक विस्तृत क्षैतिज पट्टी या एक क्षैतिज पेपर पट्टी को संदर्भित करता है।
जॉर्ज

15

बस एक अद्यतन।

वर्तमान 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


2
मुझे लगता है कि यह अब बन गया है \usetikzlibrary{decorations.pathmorphing}:। इसके अलावा, \documentclass[tikz]{standalone}यदि आप किसी अन्य दस्तावेज़ में सम्मिलित करने के लिए एक तंग फसली चित्र चाहते हैं।
पैट्रिक

14

टिम स्टॉपर ने अधिक लचीला और अच्छा दिखने वाला timeline.sty(इंटरनेट आर्काइव वेबैक मशीन लिंक, जैसा कि मूल चला गया है) लिखा । इसके अलावा, रेखा ऊर्ध्वाधर के बजाय क्षैतिज है। उदाहरण के लिए:

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

व्यक्तिगत रूप से, मुझे यह अन्य उत्तरों की तुलना में अधिक मनभावन समाधान लगता है। लेकिन मुझे यह भी लगता है कि मुझे लगता है कि टाइमलाइन जैसा दिखना चाहिए। इसलिए मेरी राय में इसका कोई निश्चित समाधान नहीं है।


11

सबसे पहले, मैं tikzनिर्देशित समाधान पसंद करता हूं , क्योंकि यह आपको अधिक स्वतंत्रता देता है। दूसरे, मैं कुछ भी नया पोस्ट नहीं कर रहा हूँ। यह स्पष्ट रूप से ज़ो गगनोन के जवाब के समान है, क्योंकि उन्होंने रास्ता दिखाया।

मुझे कुछ वर्ष के समय की आवश्यकता थी और इसे करने में मुझे कुछ समय (क्या आश्चर्य है!) लगा, इसलिए मैं परिणाम साझा कर रहा हूं। मुझे उम्मीद है कि आप इसे पसंद करेंगे।

\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पहले से ही परिभाषित है (जब तक कि आप चयन का हिस्सा नहीं हटाते हैं और आपके फ्रेम से कोई अन्य फ्रेम-विभाजन आदेश)।

यहाँ छवि विवरण दर्ज करें


साझा करने के लिए धन्यवाद: मैंने कोड के लिए प्रस्तावना और आउटपुट की एक छवि जोड़ी है, आशा है कि आपको कोई आपत्ति नहीं है।
पैट्रिक

1
@ पैट्रिक: जवाब में किसी भी सुधार का हमेशा स्वागत किया जाता है, तो जाहिर है कि मैं बुरा नहीं मान सकता। :)
przemoc

2

यदि आप UML अनुक्रम आरेख की तलाश कर रहे हैं, तो आपको pkf-umlsd में रुचि हो सकती है , जो TiZZ पर आधारित है। यहां अच्छा डेमो पाया जा सकता है


नहीं, मुझे इतिहास-पुस्तक की तरह समयरेखा में अधिक दिलचस्पी थी। लेकिन फिर भी धन्यवाद, LaTeX में यूएमएल-आरेख किसी अन्य परियोजना में भी आ सकते हैं।
मुनीम

2

नहीं है timeline.sty चारों ओर तैर रही है।

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.

मैंने पैकेज के संदर्भ में तारीखों को 'सॉर्ट कीज' में बदलने के लिए अजगर के डेटटाइम.डॉट.ऑर्डिनल का उपयोग किया है।


0

मैं समयरेखा बनाने के लिए एक उचित तरीका खोजने के लिए संघर्ष कर रहा हूं, जिसे मैं अंत में इस संशोधन के साथ कर सकता हूं। आमतौर पर समयावधि बनाते समय समस्या यह थी कि मैं प्रत्येक तिथि को स्पष्ट रूप से एक लंबे पाठ के साथ समझाने के लिए एक पाठ नहीं जोड़ सकता था। मैंने @Zoe Gagnon की लेटेक्स स्क्रिप्ट को संशोधित और आगे उपयोग किया। कृपया निम्नलिखित देखने के लिए स्वतंत्र महसूस करें:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{snakes}
\usepackage{rotating}

\begin{document}
    
\begin{center}
    \begin{tikzpicture}
        % draw horizontal line   
        \draw (-5,0) -- (6,0);
    
    
    % draw vertical lines
    \foreach \x in {-5,-4,-3,-2, -1,0,1,2}
    \draw (\x cm,3pt) -- (\x cm,-3pt);
    
    % draw nodes
    \draw (-5,0) node[below=3pt] {$ 0 $} node[above=3pt] {$  $};
    \draw (-4,0) node[below=3pt] {$ 1 $} node[above=3pt] {$\begin{turn}{45}
            All individuals vote
        \end{turn}$};
    \draw (-3,0) node[below=3pt] {$ 2 $} node[above=3pt] {$\begin{turn}{45} 
        Policy vector decided
        \end{turn}$};
    \draw (-2,0) node[below=3pt] {$ 3 $} node[above=3pt] {$\begin{turn}{45}  Becoming a bureaucrat \end{turn} $};
    \draw (-1,0) node[below=3pt] {$ 4 $} node[above=3pt] {$\begin{turn}{45} Bureaucrats' effort choice \end{turn}$};
    \draw (0,0) node[below=3pt] {$ 5 $} node[above=3pt] {$\begin{turn}{45} Tax evasion decision made \end{turn}$};
    \draw (1,0) node[below=3pt] {$  6$} node[above=3pt] {$\begin{turn}{45} $p(x_{t})$ tax evaders caught \end{turn}$};
    \draw (2,0) node[below=3pt] {$ 7 $} node[above=3pt] {$\begin{turn}{45} $q_{t}$ shirking bureaucrats \end{turn}$};
            \draw (3,0) node[below=3pt] {$ $} node[above=3pt] {$\begin{turn}{45} Public service provided  \end{turn}   $};
\end{tikzpicture}
\end{center} 
\end{document}

दुर्भाग्य से लंबे ग्रंथों की अनुमति नहीं है। यह इस तरह दिखेगा:

उपरोक्त समयरेखा का दृश्य चित्रण

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.