Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I'm trying to generate a clock similar to as in the question asked here

But I want the face to be numbered. Is this possible with this package or any other?

share|improve this question
3  
As an aside -- if you're planning on producing a Roman Numeral clock, be careful to look at actual RN clocks, as they sometimes have interesting features, e.g., most show 4 as "IIII" instead of "IV", and most also have the "feet" of each number pointing towards the center of the clock (making the six upside down). –  Chris Gregg Sep 9 '13 at 6:09
add comment

4 Answers

up vote 16 down vote accepted

A little variation of an example taken from the PGF documentation (page 507):

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[line cap=rect,line width=3pt]
\filldraw [fill=cyan] (0,0) circle [radius=2cm];
\foreach \angle [count=\xi] in {60,30,...,-270}
{
  \draw[line width=1pt] (\angle:1.8cm) -- (\angle:2cm);
  \node[font=\large] at (\angle:1.36cm) {\textsf{\xi}};
}
\foreach \angle in {0,90,180,270}
  \draw[line width=2pt] (\angle:1.6cm) -- (\angle:2cm);
\draw (0,0) -- (120:0.8cm);
\draw (0,0) -- (90:1cm);
\end{tikzpicture}

\end{document}

enter image description here

An perhaps one could define a command to control some attributes; below an example, allowing to specify the color, the radius and the font size for the numbers:

\documentclass{article}
\usepackage{tikz}
\usepackage{xparse}

\NewDocumentCommand{\Clock}{O{2cm}O{\large}O{cyan}}{%
\def\radius{#1}%
\begin{tikzpicture}[line cap=rect,line width=0.055*\radius]
\filldraw [fill=#3] (0,0) circle [radius=\radius];
\foreach \angle [count=\xi] in {60,30,...,-270}
{
  \draw[line width=1pt] (\angle:0.9*\radius) -- (\angle:\radius);
  \node[font=#2] at (\angle:0.68*\radius) {\textsf{\xi}};
}
\foreach \angle in {0,90,180,270}
  \draw[line width=0.04*\radius] (\angle:0.82*\radius) -- (\angle:\radius);
\draw (0,0) -- (120:0.4*\radius);
\draw (0,0) -- (90:0.5*\radius);
\end{tikzpicture}%
}

\begin{document}

\Clock\quad\Clock[1cm][\footnotesize][orange]

\end{document}

enter image description here

share|improve this answer
add comment

We can convert Gonzalo's excellent answer in to a macro so that we can use it like:

\clock{<hour>}{<minute>}{<seconds>}

Further beautification is possible and left as a home work ;-).

\documentclass[dvipsnames]{article}
\usepackage{tikz}

\begin{document}
\newcommand\clock[3]{%
\begin{tikzpicture}[line cap=round,line width=3pt]
\filldraw [fill=Goldenrod!30] (0,0) circle (2cm);
\foreach \angle / \label in
{0/3, 30/2, 60/1, 90/12, 120/11, 150/10, 180/9,
210/8, 240/7, 270/6, 300/5, 330/4}
{
\draw[line width=1pt] (\angle:1.8cm) -- (\angle:2cm);
\draw (\angle:1.4cm) node{\textsf{\label}};
}
\foreach \angle in {0,90,180,270}
\draw[line width=2pt] (\angle:1.6cm) -- (\angle:2cm);
\node[draw=none,font=\tiny,text=red] at (0,.9cm) {TICK-TOCK};
\draw[rotate=90,line width=2pt] (0,0) -- (-#1*30-#2*30/60:0.7cm); % hours
\draw[rotate=90,line width=1.5pt] (0,0) -- (-#2*6:1cm); % minutes
\draw[rotate=90,thin,red] (0,0) -- (-#3*6:1.2cm); % seconds
\path [fill=red] (0,0) circle (2pt);
%
\end{tikzpicture}%
}
%%\syntax
%% \clock{<hour>}{<minute>}{<seconds>}
\noindent\clock{1}{15}{30} \clock{2}{25}{15}
\clock{12}{58}{10} \clock{6}{10}{45}


\end{document}

enter image description here

Scalable version:

\documentclass[dvipsnames]{article}
\usepackage{tikz}

\begin{document}
\newcommand\clock[4][2]{%
\begin{tikzpicture}[scale=#1,line cap=round,line width=#1*3pt]
\filldraw [fill=Goldenrod!20] (0,0) circle (2cm);
\foreach \angle / \label in
{0/3, 30/2, 60/1, 90/12, 120/11, 150/10, 180/9,
210/8, 240/7, 270/6, 300/5, 330/4}
{
\draw[line width=#1*1pt] (\angle:1.8cm) -- (\angle:2cm);
\draw (\angle:1.4cm) node[scale=#1]{\textsf{\label}};
}
\foreach \angle in {0,90,180,270}
\draw[line width=#1*2pt] (\angle:1.6cm) -- (\angle:2cm);
\node[draw=none,font=\tiny,text=red,scale=#1] at (0,.9cm) {TICK-TOCK};
\draw[rotate=90,line width=#1*2pt] (0,0) -- (-#2*30-#3*30/60:0.7cm); % hours
\draw[rotate=90,line width=#1*1.5pt] (0,0) -- (-#3*6:1cm); % minutes
\draw[rotate=90,line width=#1*.6pt,red] (0,0) -- (-#4*6:1.2cm); % seconds
\path [fill=black] (0,0) circle (3pt);
\path [fill=red] (0,0) circle (1.5pt);
%
\end{tikzpicture}%
}
%%\syntax
%% \clock[<optional scaling dim>]{<hour>}{<minute>}{<seconds>}
\noindent\clock{9}{35}{55}\clock[1.2]{1}{15}{30} \clock[.9]{2}{25}{15}
\clock[.7]{12}{58}{10} \clock[.5]{6}{10}{55}
\clock[.3]{12}{20}{22} \clock[.2]{8}{0}{5}


\end{document}

enter image description here

And here is a minimal animation. I don't dare to go for the inclusion of seconds hand / make the intervals small.

\documentclass[preview,border={10pt 0pt 10pt 10pt}]{standalone}

\usepackage{filecontents}
\begin{filecontents*}{clock.tex}
\documentclass[tikz,border=0pt,dvipsnames]{standalone}
\usepackage{tikz}

\begin{document}
\foreach \hdeg / \mdeg in {0/0,2/24,4/48,6/72,8/96,10/120,12/144,14/168,
16/192,18/216,20/240,22/264,24/288,26/312,28/336,30/360}{%
\begin{tikzpicture}[line cap=round,line width=3pt]
\filldraw [fill=Goldenrod!30] (0,0) circle (2cm);
\foreach \angle / \label in
{0/3, 30/2, 60/1, 90/12, 120/11, 150/10, 180/9,
210/8, 240/7, 270/6, 300/5, 330/4}
{
\draw[line width=1pt] (\angle:1.8cm) -- (\angle:2cm);
\draw (\angle:1.4cm) node{\textsf{\label}};
}
\foreach \angle in {0,90,180,270}
\draw[line width=2pt] (\angle:1.6cm) -- (\angle:2cm);
\node[draw=none,font=\tiny,text=red] at (0,.9cm) {TICK-TOCK};
\draw[rotate=90,line width=2pt] (0,0) -- (-\hdeg:0.7cm); % hours
\draw[rotate=90,line width=1.5pt] (0,0) -- (-\mdeg:1cm); % minutes
\path [fill=black] (0,0) circle (3pt);
\path [fill=red] (0,0) circle (2pt);
%
\end{tikzpicture}%
%}
}

\end{document}
\end{filecontents*}
%
\immediate\write18{pdflatex clock}

% convert to GIF animation
\immediate\write18{convert -delay 200 -loop 0 -density 400 -alpha remove clock.pdf clock.gif}

\usepackage{animate}
\begin{document}
See the gif file in the same folder as this file.
\end{document}

enter image description here

share|improve this answer
    
Maybe I'm wrong, but shouldn't it be \newcommand\clock[4][1]{% (or the starred varsion \newcommand*\clock[4][1]{%) instead of \newcommand\clock[4][2]{%? –  Svend Tveskæg Sep 9 '13 at 9:06
    
@SvendTveskæg It was \newcommand\clock[4][1]{% originally. Now edited by MMA :) –  Harish Kumar Sep 9 '13 at 9:49
1  
I just broke my watch, I think I will buy one of these... :-) –  karlkoeller Sep 9 '13 at 13:21
1  
@PSTikZ Sorry. It is a wall clock ;-). Geometrically, I was careless and file size, trust me, it could have been even larger ;-) let alone the time of compilation. I do have a almost full version, but, I hate it as it ran too long to compile. –  Harish Kumar Sep 10 '13 at 0:14
1  
@PSTikZ: True. PSTricks is powerful than TikZ in some aspects. But you know, I am on the other side ;-) –  Harish Kumar Sep 10 '13 at 0:17
show 10 more comments

Bit off topic-answer, once I made a "mathematican clock" as a birthday present. The result was printed out, and I replaced the number plate of a real clock with it:

\documentclass[landscape,a3paper,extrafontsizes,12pt]{memoir}
\usepackage[a3paper,margin=0.2cm]{geometry} 
\usepackage{tikz}
\usepackage{amsmath}
\begin{document}
\begin{center}
\vspace*{\fill}

\begin{tikzpicture}
    \foreach \x in {0,30,...,360} {
        \draw [line width = 0.1cm] (\x:9cm) -- (\x:10.5cm);
    };
    \foreach \x in {0,6,...,360} {
        \draw [line width = 0.05cm] (\x:10cm) -- (\x:10.5cm);
    };
    \draw (0:0cm) circle [radius = 0.2cm];

    \node (1) at (60:7cm) {\Large $\boldsymbol{9^{9-9}}$};
    \node (2) at (30:7cm) {\Large $\boldsymbol{\dfrac{9+9}{9}}$};
    \node (3) at (0:7cm) {\Huge $\boldsymbol{\sqrt{\log_{9}{9^9}}}$};
    \node (4) at (-30:7cm) {\Large $\boldsymbol{\sqrt{9}+\log_{9}9}$};
    \node (5) at (-60:7cm) {\Large $\boldsymbol{\sqrt{9}!-\log_{9}9}$};
    \node (6) at (-90:7cm) {\Huge $\boldsymbol{9 - \dfrac{9}{\sqrt{9}}}$};
    \node (7) at (-120:7cm) {\Large $\boldsymbol{\sqrt{9}!+\dfrac{9}{9}}$};
    \node (8) at (-150:7cm) {\Large $\boldsymbol{9 - \dfrac{9}{9}}$};
    \node (9) at (-180:7cm) {\Huge $\boldsymbol{\sqrt[9]{9^9}}$};
    \node (10) at (-210:7cm) {\Large $\boldsymbol{9 + \log_{9}{9}}$};
    \node (11) at (-240:7cm) {\Large $\boldsymbol{\dfrac{99}{9}}$};
    \node (12) at (-270:7cm) {\Huge $\boldsymbol{9 + \dfrac{9}{\sqrt{9}}}$};
\end{tikzpicture}
\vspace*{\fill}
\end{center}
\end{document}

(this is an excerpt, the original had also numbers 0-59 on each of the minutes line)

result:

LaTeX results

There are no hands, as those were provided by the real clock

share|improve this answer
1  
You should typeset the birthday present correctly; log --> \log. –  Svend Tveskæg Sep 9 '13 at 9:51
    
didn't knew there was a \log command. Thanks –  SztupY Sep 9 '13 at 10:25
add comment

With PSTricks.

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{multido}
\SpecialCoor
\begin{document}
\begin{pspicture}(-3,-3)(3,3)
    \pscircle{3}
    \multido{\ia=60+-30,\in=1+1}{12}{\psline(2.9;\ia)(3;\ia)\uput{2.4}[\ia](0,0){\in}}
    \multido{\ia=90+90}{4}{\psline(2.8;\ia)(2.9;\ia)}
    \psline[linewidth=3\pslinewidth]{<->}(2.1;90)(0,0)(1.5;0)
\end{pspicture}
\end{document}

enter image description here

A clock with exhausted batteries

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{multido}
\SpecialCoor
\begin{document}
\multido{\is=90+-6,\ic=0+1}{60}{%
\begin{pspicture}(-3,-3)(3,3)
    \pscircle{3}
    \multido{\ia=60+-30,\in=1+1}{12}{\psline(2.9;\ia)(3;\ia)\uput{2.4}[\ia](0,0){\in}}
    \multido{\ia=90+90}{4}{\psline(2.8;\ia)(2.9;\ia)}
    \pstVerb{/angle {\ic\space 2 mod 0 gt {90}{105} ifelse} bind def}%
    \psline[linewidth=3\pslinewidth]{<->}(!2.1 angle PtoC)(0,0)(!1.5 angle 90 sub PtoC)
    \psset{linecolor=red}
    \psline{->}(0,0)(2.2;\is)
    \pscircle*{2pt}
\end{pspicture}}
\end{document}

enter image description here

share|improve this answer
    
Just curious: Where is second's hand and it's Animation (your unique answer feature)? –  texenthusiast Sep 9 '13 at 7:20
    
Looks like \psline[linewidth=3\pslinewidth]{<->}(2.1;90)(0,0)(1.5;0) represends both hands. –  Paxinum Sep 9 '13 at 7:47
    
Your second clock is broken. The hour hand points at 2:30, but the minute hand points at x:57. –  Jake Sep 9 '13 at 8:15
    
@PSTikZ: Ah, I thought you meant that the second hand is decoupled from the minutes/hours. –  Jake Sep 9 '13 at 8:23
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.