% timing.sty: Ludwig May/Jens Leilich 10.12.91 % % Dieses Style-File erleichtert den Umgang mit dem Timing-Font. % % Es stellt Kommandos zur Positionierung von einzelnen Elementen % eines Timing-Diagramms in einer picture-Umgebung zur Verfuegung. % % % Folgende Kommandos sind verfuegbar: % % Erweiterte picture-Umgebung % \begin{timing}[Zeichensatz]{Randgroesse} % \end{timing} % Zeichensatz ist 1,2,1s,2s. Die Zahl gibt die Breite an, % s bedeutet schr„ge Flanken. 2 ist default. % % Zeile mit Timingdiagramm % \til{y-pos}{Zeichenkette} % % Label fuer Zeile % \tin{y-pos}{Zeichenkette} % % Bemerkung % \tnote{y-pos}{x-pos}{Zeichenkette} % % Pfeil nach rechts zeigend % \rarw{y-pos}{x-pos}{laenge}{Zeichenkette} % % Pfeil nach links zeigend % \larw{y-pos}{x-pos}{laenge}{Zeichenkette} % % Senkrechte Linie % \sline{y1-pos}{x-pos}{y2-pos} % % Zeitmarken als Argument fuer \til % \timingcounter{Markenabstand}{Startwert}{Endwert}{Intervall} % Zeitmarken als Argument fuer \til nach Unterbrechung % \conttimingcounter{Markenabstand}{Startwert}{Endwert}{Intervall} % % % Abstandsfaktor fuer einzelne Zeilen % \timescalefactor % % Evtl. n”tige Anpassung fuer Ausrichtung senkrechter Linien % \timadjust % % % Dieses Style-File und der dazugehoerige Zeichensatz wurde erstellt, % um moeglichst einfach ein paar Timingdiagramme in meine Studienarbeit % integrieren zu koennen. Da es in der vorliegenden Form meine % Erwartungen vollstaendig erfuellt hat, haben ich aus Zeitgruenden keine % grosse Ueberarbeitung durchgefuehrt. Vielleicht kann das jemand uebernehmen, % der von der ganzen Materie mehr Ahnung hat. Ein Problem ist z.B. die % ungenaue horizontale Ausrichtung der senkrechten Linien (ist irgendwie % Druckertreiber abhaengig, evtl. MAX_DRIFT des Treibers auf 0 setzen). % Da aber grosses Interesse an dem Style besteht, haben ich ihn mal in % Umlauf gegeben. Wenn jemand Verbesserungen durchfuehrt, waeren ich an % einer Rueckmeldung an folgende Adresse dankbar: % % Ludwig May % Friedrichstrasse 23b % 6100 Darmstadt % % Bitte keine Fragen stellen, ich habe fuer eine weitere Unterstuetzung % weder Zeit noch ausreichend Gelegenheit. % % Ludwig May % % Ich habe Font und Style weiterentwickelt zu Lehrzwecken, da ich % Elektrotechnik an BBS unterrichte. % Verbesserungsvorschl„ge und Lob ;-) k”nnen auch an mich gerichtet % werden. % Jens Leilich, C/O BBS Technik I, Franz-Zang-Str. 3--7, 67059 Ludwigshafen % Jens_Leilich @ lu.maus.de % \typeout{Timing Style, Ludwig May Jens Leilich .} % % % Alle benoetigten Counter, Dimensionen und Boxen definieren % % \newfont{\timon}{timing1 scaled 1000} \newfont{\timtw}{timing2 scaled 1000} \newfont{\timons}{timing1s scaled 1000} \newfont{\timtws}{timing2s scaled 1000} \newfont{\timbs}{cmr5 scaled 1000} \newcount\counttime \newdimen\timetmpdim \newdimen\timehdrdim \newcount\timetmpcnt \newcount\timearwcnt \newdimen\timeskipdim \newdimen\timewidthdim \newbox\timebox \def\timescalefactor{2} \def\timadjust{0.0pt} % % % Neue Umgebung definieren % % \def\timing{\@ifnextchar [{\@@timing}{\@@timing[2]}} \def\@@timing[#1]#2% { \expandafter\def\csname tim@@1\endcsname{\let\tim\timon} \expandafter\def\csname tim@@2\endcsname{\let\tim\timtw} \expandafter\def\csname tim@@1s\endcsname{\let\tim\timons} \expandafter\def\csname tim@@2s\endcsname{\let\tim\timtws} \def\tim{% \typeout{Timing font `#1' not defined, assumed 2. Use 1,2,1s,2s only!} \timtw \let\tim\timtw} \csname tim@@#1\endcsname \tim \timehdrdim=#2 \advance\timehdrdim by 1em % % % Lokale Befehle definieren % % % % Hilfroutine zum Zeichen von Pfeilen variabler Laenge % % \newcommand{\timatail}[1]{ \mbox{ \tim \counttime=2 \ifnum##1>1 \loop a% \ifnum\counttime<##1 \advance\counttime by 1 \repeat \fi }} % % % Hilfroutine zum Zeichen der Zeitmarkierung % % \newcommand{\lb}[2]{{\tim\makebox[##1em][c]{\timbs##2}}} % % % \timingcounter % % \newcommand{\timingcounter}[4]{ \mbox{ \tim \counttime=##1\divide\counttime by -2 \hskip\counttime em \hskip -1em \counttime=##2 \loop \lb{##1}{\number\counttime} \ifnum\counttime<##3 \advance\counttime by ##4 \repeat }} % % % \conttimingcounter % % \newcommand{\conttimingcounter}[4]{ \mbox{ \tim \hskip 0.5em \counttime=##2 \loop \lb{##1}{\number\counttime} \ifnum\counttime<##3 \advance\counttime by ##4 \repeat }} % % % \til % % \newcommand{\til}[2]{ \tim \timetmpdim=##1ex \timetmpdim=\timescalefactor\timetmpdim % % Maximale y-Groesse festhalten % \ifdim\timetmpdim>\timeskipdim \global\timeskipdim=\timetmpdim \fi \timetmpcnt=\timetmpdim \timetmpdim=\timehdrdim \advance\timetmpdim by -\timadjust \timearwcnt=\timetmpdim \setbox\timebox=\hbox{##2} % % Maximale x-Groesse festhalten % \ifdim\wd\timebox>\timewidthdim \global\timewidthdim=\wd\timebox \fi \put(\timearwcnt,-\timetmpcnt){\tim\makebox(0,0)[l]{\box\timebox}} %\put(\timearwcnt,-\timetmpcnt){\tim\makebox(0,0)[l]{##2}} } % % % \tin % % \newcommand{\tin}[2]{ \tim \timetmpdim=##1ex \timetmpdim=\timescalefactor\timetmpdim \timetmpcnt=\timetmpdim \put(0,-\timetmpcnt){\makebox(0,0)[lb]{\rm##2}} } % % % \tnote % % \newcommand{\tnote}[3]{ \tim \timetmpdim=##1ex \advance\timetmpdim by -0.3pt \timetmpdim=\timescalefactor\timetmpdim \timetmpcnt=\timetmpdim \timetmpdim=##2em \advance\timetmpdim by \timehdrdim \advance\timetmpdim by -1em \timearwcnt=\timetmpdim \put(\timearwcnt,-\timetmpcnt){\tim\makebox(0,0)[l]{\scriptsize\sf##3}} } % % % \larw % % \newcommand{\larw}[4]{ \tim \timetmpdim=##1ex \timetmpdim=\timescalefactor\timetmpdim \timetmpcnt=\timetmpdim \timetmpdim=##2em \advance\timetmpdim by \timehdrdim \timearwcnt=\timetmpdim \put(\timearwcnt,-\timetmpcnt)% {\makebox(0,0)[l]{\tiny\vbox{\tim\hbox{\hskip-1em\hbox to ##3em{\hss\timbs\strut##4\hfil}}\nointerlineskip\vskip-4pt\hbox{A\timatail{##3}}}}} } % % % \rarw % % \newcommand{\rarw}[4]{ \tim \timetmpdim=##1ex \timetmpdim=\timescalefactor\timetmpdim \timetmpcnt=\timetmpdim \timetmpdim=##2em \advance\timetmpdim by \timehdrdim \timearwcnt=\timetmpdim \put(\timearwcnt,-\timetmpcnt)% {\makebox(0,0)[l]{\tiny\vbox{\tim\hbox{\hskip-1em\hbox to ##3em{\hfil\timbs\strut##4\hss}}\nointerlineskip\vskip-4pt\hbox{\timatail{##3}P}}}} } % % % \sline % % \newcommand{\sline}[3]{ \tim \timetmpdim=##1ex \timetmpdim=\timescalefactor\timetmpdim \timetmpcnt=\timetmpdim \timetmpdim=##2em \advance\timetmpdim by \timehdrdim \advance\timetmpdim by -1em \timearwcnt=\timetmpdim \timetmpdim=##3ex \advance \timetmpdim by -##1ex \advance \timetmpdim by 0.09ex \timetmpdim=\timescalefactor\timetmpdim \counttime=\timetmpdim \put(\timearwcnt,-\timetmpcnt)% {\line(0,-1){\counttime}} } % % % Weitere Initialisierung % % \timeskipdim=0pt \timewidthdim=0pt \unitlength 1sp \begin{picture}(0,0) \linethickness{0.4pt} }% % % % Ende der Umgebung definieren % % \def\endtiming{ \global\advance\timeskipdim by 15pt \end{picture} % % Da picture(0,0) definiert wurde, wird jetzt die wirkliche Groesse durch % ein \rule freigehalten. % \timeskipdim=1.0\timeskipdim \timewidthdim=1.0\timewidthdim \advance\timewidthdim by \timehdrdim \rule{\timewidthdim}{0pt} \rule[-\timeskipdim]{0pt}{\timeskipdim} }