Seite 1 von 1
Zeitintervall auf Analoguhr mit Latex generieren?
Verfasst: Fr 15. Apr 2016, 14:48
von ckemmer
Hallo,
ich benötige für verschiedene Angaben von Zeitintervallen ("20 Minuten Zeit" oder "12 Minuten Zeit") eine grafische Darstellung etwa so, wie es ifsym mit \Interval für genau 20 Minuten liefert, also eine dargestellte Analoguhr mit ausgefülltem Bereich zwischen 0 und x Minuten, wobei x als natürliche Zahl übergeben wird.
Gibt es so etwas direkt in latex, damit ich nicht selbst zeichnen und Bilder einbinden muss? Ich habe nur die Pakete ifsym, analogclock und clock gefunden, die aber alle Analoguhren mit einer Uhrzeit anzeigen, nicht jedoch das ausgefüllte Intervall (wie bei einer "Eieruhr", die rückwärts läuft).
Kann jemand von euch helfen?
Danke!
Grafische Darstellung mit entsprechenden Paketen
Verfasst: Fr 15. Apr 2016, 19:27
von Stamm-
Was immer auch mit "direkt in LaTeX" gemeint sein soll gibt es so nicht. Da muss schon eine eigene Idee her. Du kannst ja einen Versuch mit »
PGF/TikZ« oder »
PSTricks« starten und dann an einem
Minimalbeispiel auftretende Probleme veranschaulichen.
Verfasst: Fr 15. Apr 2016, 19:51
von ckemmer
Hallo,
gemeint war präziser: "Existiert ein Paket, das ich übersehen habe, das das Gewünschte liefert".
Ich werde dann mal schauen, ob ich die Bilder anderweitig erstelle oder ob ich mich ausgehend von
http://tex.stackexchange.com/questions/ ... bered-face mal selbst versuche.
Verfasst: Sa 16. Apr 2016, 10:01
von iTob
Das ist eigentlich recht leicht zu implementieren:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{xcolor}
\usepackage{tikz}
\colorlet{clockDraw}{black}% Umrandung der Uhr
\colorlet{clockBG}{white}% Hintegrund des Ziffernblattes
\colorlet{clockFill}{red}% Farbe des Intevalls
\def\clockSize{1.3ex}% Größe der Uhr
\def\clockShift{-0.8ex}% vertikale Verschiebung der Uhr
\newcommand{\clock}[2][0]{%
\pgfmathsetmacro{\clockStart}{-360/60*#1+90}%
\pgfmathsetmacro{\clockDelta}{-360/60*#2}%
\tikz [baseline=\clockShift] {
\fill [clockBG] circle [radius=\clockSize];
\fill [clockFill] (0,0) -- (\clockStart:\clockSize)
arc [radius=\clockSize, start angle=\clockStart, delta angle=\clockDelta];
\draw [clockDraw] circle [radius=\clockSize];
}%
}
\begin{document}
\section{Das \clock{20}-Intervall}
Es ist größer als \clock{10} und kleiner als \clock{60}.
Erst \clock{10}, dann nochmal \clock[10]{15}.
\tiny\bigskip\noindent
Es ist größer als \clock{10} und kleiner als \clock{60}.
\end{document}
Ich habe erstmal drei neue Farben definiert, dann ist es übersichtlicher, wenn man später mal die Farben ändert. Außerdem setze ich die Größe und die vertikale Verschiebung der Uhr als Variablen mit einer schriftgrößenabhängigen Einheit (deswegen kann hier auch nicht \setlength benutzt werden).
Die eigentliche Uhr zeichnet \clock, wobei das Intervall als Argument angeben wird und mit einem optionalen Argument kann zusätzlich der Startpunkt definiert werden. Der Rest ist TikZ/PGF und sollte eigentlich einigermaßen selbsterklärend sein

wenn nicht: frag nach!
Viele Grüße
Tobi
PS: Es gibt jetzt keine Handhabung für Intervalle größer 60. Da sind die Kreise dann einfach komplett gefüllt …
Verfasst: Sa 16. Apr 2016, 20:21
von ckemmer
Vielen Dank! Das hilft mir sehr weiter!