diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex209/contrib/loggates/loggates.sty |
Initial commit
Diffstat (limited to 'macros/latex209/contrib/loggates/loggates.sty')
-rw-r--r-- | macros/latex209/contrib/loggates/loggates.sty | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/macros/latex209/contrib/loggates/loggates.sty b/macros/latex209/contrib/loggates/loggates.sty new file mode 100644 index 0000000000..7c5299182b --- /dev/null +++ b/macros/latex209/contrib/loggates/loggates.sty @@ -0,0 +1,139 @@ +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% author = "Nico Verwer", +%%% version = "1.1", +%%% date = "8 April 1992", +%%% filename = "loggates.sty", +%%% address = "Dept. of Computer Science +%%% Rijksuniversiteit te Utrecht +%%% P.O. box 80.089 +%%% 3508 TB Utrecht +%%% the Netherlands", +%%% telephone = "+31 30 533921", +%%% FAX = "+31 30 513791", +%%% email = "nico@cs.ruu.nl (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "TeX, LaTeX, logical gates symbols", +%%% supported = "yes", +%%% docstring = "This file accompanies the file loggates.mf +%%% which contains Metafont definitions of +%%% symbols for drawing digital circuit diagrams. +%%% It defines macros to draw all possible +%%% gates in all directions. +%%% If you use this file with plain TeX, you may +%%% want to call it loggates.tex. Since it uses @ +%%% as a character, it must be a style file in +%%% LaTeX. +%%% The next version of this file will include +%%% an interface with the XY-pic package for +%%% drawing diagrams.", +%%% } +%%% ==================================================================== +% +\font\loggates=loggates +% +\def\BusWidth{{\loggates\char0}} % '/' for bus width notation +% +% Defintions for gates. All the gates that may have more than one +% input (AND, NAND, OR, NOR, XOR, NXOR) may be followed by a single +% digit from 2 to 5, to indicate the number of inputs. +% On the OR-like gates, this will draw short input lines; for the +% AND-like gates it has no effect. +% +\def\ANDr{\gdef\@gate{\char1}\@NIN} % AND gate facing right +\def\ANDd{\gdef\@gate{\char2}\@NIN} % down +\def\ANDl{\gdef\@gate{\char3}\@NIN} % left +\def\ANDu{\gdef\@gate{\char4}\@NIN} % up +\def\NANDr{\gdef\@gate{\char5}\@NIN} % NAND gate facing right +\def\NANDd{\gdef\@gate{\char6}\@NIN} % etcetera... +\def\NANDl{\gdef\@gate{\char7}\@NIN} +\def\NANDu{\gdef\@gate{\char8}\@NIN} +\def\ORr{\gdef\@gate{\char9}\@INr} % OR gate +\def\ORd{\gdef\@gate{\char10}\@INd} +\def\ORl{\gdef\@gate{\char11}\@INl} +\def\ORu{\gdef\@gate{\char12}\@INu} +\def\NORr{\gdef\@gate{\char13}\@INr} % NOR gate +\def\NORd{\gdef\@gate{\char14}\@INd} +\def\NORl{\gdef\@gate{\char15}\@INl} +\def\NORu{\gdef\@gate{\char16}\@INu} +\def\BUFr{{\loggates\char17}} % Buffer +\def\BUFd{{\loggates\char18}} +\def\BUFl{{\loggates\char19}} +\def\BUFu{{\loggates\char20}} +\def\INVr{{\loggates\char21}} % Inverter +\def\INVd{{\loggates\char22}} +\def\INVl{{\loggates\char23}} +\def\INVu{{\loggates\char24}} +\def\XORr{\gdef\@gate{\char25}\@INr} % XOR gate +\def\XORd{\gdef\@gate{\char26}\@INd} +\def\XORl{\gdef\@gate{\char27}\@INl} +\def\XORu{\gdef\@gate{\char28}\@INu} +\def\NXORr{\gdef\@gate{\char29}\@INr} % NXOR gate, a.k.a. comparator +\def\NXORd{\gdef\@gate{\char30}\@INd} +\def\NXORl{\gdef\@gate{\char31}\@INl} +\def\NXORu{\gdef\@gate{\char32}\@INu} +% +% In order to connect input lines we define some skips. +% +\newskip\INmskip\setbox0=\hbox{{\loggates\char35}}\INmskip\ht0% +\def\deflgskip#1#2{\setbox0=\hbox{{\loggates\char#2}}% + \global\newskip#1\global#1\ht0% + \global\advance #1 by-\INmskip} +\deflgskip\INuskip{33} +\deflgskip\INlskip{34} +\deflgskip\INumskip{36} +\deflgskip\INlmskip{37} +\deflgskip\INmuskip{38} +\deflgskip\INmlskip{39} +\INmskip 0pt +% +% The following definitions are internal to loggates, and should not +% normally be used. +% +\def\@gobble#1{} %Not strictly necessary in LaTeX... +\def\@NIN{\futurelet\next\@@NIN} +\def\@@NIN{\let\@next\@gobble% + {\loggates\@gate}% + \ifx\next2\else\ifx\next3\else\ifx\next4\else\ifx\next5% + \else\let\@next\relax\fi\fi\fi\fi\@next} +\def\@INr{\futurelet\next\@@INr} +\def\@@INr{\let\@next\@gobble% + \ifx\next2{\loggates\char33\char34\@gate}% + \else\ifx\next3{\loggates\char33\char34\char35\@gate}% + \else\ifx\next4{\loggates\char33\char34\char38\char39\@gate}% + \else\ifx\next5{\loggates\char33\char34\char35\char36\char37\@gate}% + \else{\loggates\@gate}\let\@next\relax\fi\fi\fi\fi\@next} +\def\@INd{\futurelet\next\@@INd} +\def\@@INd{\let\@next\@gobble% + \def\@up##1{\setbox0=\hbox{\@gate}\raise\ht0\hbox{\loggates##1}}% + \ifx\next2% + \hbox{\loggates\@up{\char40\char41}\@gate}% + \else\ifx\next3% + \hbox{\loggates\@up{\char40\char41\char42}\@gate}% + \else\ifx\next4% + \hbox{\loggates\@up{\char40\char41\char45\char46}\@gate}% + \else\ifx\next5% + \hbox{\loggates\@up{\char40\char41\char42\char43\char44}\@gate}% + \else% + \hbox{\loggates\@gate}\let\@next\relax\fi\fi\fi\fi\@next} +\def\@INl{\futurelet\next\@@INl} +\def\@@INl{\let\@next\@gobble% + \def\@up##1{\setbox0=\hbox{\@gate}\raise\ht0\hbox{\loggates##1}}% + \ifx\next2% + \hbox{\loggates\@gate\@up{\char47\char48}}% + \else\ifx\next3% + \hbox{\loggates\@gate\@up{\char47\char48\char49}}% + \else\ifx\next4% + \hbox{\loggates\@gate\@up{\char47\char48\char52\char53}}% + \else\ifx\next5% + \hbox{\loggates\@gate\@up{\char47\char48\char49\char50\char51}}% + \else% + \hbox{\loggates\@gate}\let\@next\relax\fi\fi\fi\fi\@next} +\def\@INu{\futurelet\next\@@INu} +\def\@@INu{\let\@next\@gobble% + \ifx\next2{\loggates\@gate\char54\char55}% + \else\ifx\next3{\loggates\@gate\char54\char55\char56}% + \else\ifx\next4{\loggates\@gate\char54\char55\char59\char60}% + \else\ifx\next5{\loggates\@gate\char54\char55\char56\char57\char58}% + \else{\loggates\@gate}\let\@next\relax\fi\fi\fi\fi\@next} + |