diff options
author | Karl Berry <karl@freefriends.org> | 2020-12-21 22:02:51 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-12-21 22:02:51 +0000 |
commit | c95edccc8198456a8a1a43c7b2c70a02ca8d84ac (patch) | |
tree | 7b75eb11432c27bc72182e261983078fd196620a /Master/texmf-dist | |
parent | 88e74ca1539a00a016c46ca3ac678158efe5286e (diff) |
circuit-macros (21dec20)
git-svn-id: svn://tug.org/texlive/trunk@57189 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
101 files changed, 6755 insertions, 1215 deletions
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/CHANGES b/Master/texmf-dist/doc/latex/circuit-macros/CHANGES index 5427774e174..1f84acc33b1 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/CHANGES +++ b/Master/texmf-dist/doc/latex/circuit-macros/CHANGES @@ -1,6 +1,10 @@ CHANGES -Version 9.2.x: New macro ACsymbol, Proxim, Magn, options for mosfet, ground, +Version 9.4: Changes to examples and additional SVG examples. New + macros RightAngle, PerpTo, langle, ArcAngle, DCsymbol. Rewritten + arrester macro. Tweaked Equidist3, ground, antenna, NeedDpicTools. + Modified List of Macros. +Version 9.3: New macro ACsymbol, Proxim, Magn, options for mosfet, ground, microphone, consource. Bugfix for the source macro. Tweaked examples, macro svg_font. Added a short discussion of integrated circuits and connectors. Removed compression of the manual to restore broken diff --git a/Master/texmf-dist/doc/latex/circuit-macros/Copying b/Master/texmf-dist/doc/latex/circuit-macros/Copying index 30acd259ab5..1c8e4d1950e 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/Copying +++ b/Master/texmf-dist/doc/latex/circuit-macros/Copying @@ -1,4 +1,4 @@ -* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under * +* Circuit_macros Version 9.4, copyright (c) 2020 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/Master/texmf-dist/doc/latex/circuit-macros/INSTALL b/Master/texmf-dist/doc/latex/circuit-macros/INSTALL index 73ccc6bd3e9..5d841884b71 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/INSTALL +++ b/Master/texmf-dist/doc/latex/circuit-macros/INSTALL @@ -38,6 +38,10 @@ INSTALLATION: In case of difficulty, go to the examples directory, look at debug1.tex and debug2.m4, and follow instructions. +Installation on a Mac: + For a nice outline of how to install on a Mac, go to + https://www.hamish.science/2020/06/24/circuitmacros + TESTING: To test your installation, go to the examples directory (or copy the files Makefile, tst.tex, and any .m4 sources you might like to test diff --git a/Master/texmf-dist/doc/latex/circuit-macros/README b/Master/texmf-dist/doc/latex/circuit-macros/README index 982ea2a097a..1ae81ea52ef 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/README +++ b/Master/texmf-dist/doc/latex/circuit-macros/README @@ -1,5 +1,5 @@ -* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under * +* Circuit_macros Version 9.4, copyright (c) 2020 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * @@ -166,7 +166,7 @@ DPIC: older versions, see https://repology.org/project/dpic/badges The best advice is to obtain the newest version. - The dpic distribution includes a manual dpic-doc.pdf containing a summary + The dpic distribution includes dpic-doc.pdf, a manual containing a summary of the pic language and of features unique to dpic. EXAMPLES @@ -182,7 +182,7 @@ EXAMPLES The examples directory Makefile automates the generation of .ps, .eps, .png, and .pdf files for individual diagrams. Subdirectories of the examples directory are for testing metafont, metapost, pgf, psfrag, - pdf, and xfig examples. + and xfig examples. INTEGRATION WITH OTHER TOOLS: Installation and usage of the macros have evolved smewhat since the @@ -191,7 +191,7 @@ INTEGRATION WITH OTHER TOOLS: I simply added commands to the appropriate Makefiles. However, others have developed tools that simplify workflow for their circumstances. The following are representative but keep in mind that systems and - installations evolve ovr time: + installations evolve over time: A Python-based GUI called PyCirkuit is at https://pypi.org/project/pycirkuit/ and @@ -216,15 +216,18 @@ INTEGRATION WITH OTHER TOOLS: A KDE interface created by Matteo Agostinelli can be found at http://wwwu.uni-klu.ac.at/magostin/cirkuit.html. A git - repository of a newer version of cirkuit by Andrew G. for Linux - is at https://github.com/ag-ckt/cirkuit/tree/V0.5.0. There is - uncertainty about installation possibilities because of changes in - library dependencies. + repository of a newer version by Andrew G. for Linux is at + https://github.com/ag-ckt/cirkuit/tree/V0.5.0. There is uncertainty + about installation possibilities because of evolving library dependencies. A wiki offering examples and tips is at http://swwiki.e-dschungel.de/circuit_macros It is in German but Google translate works well on the page. + Another recent introduction is at + https://www.root.cz/clanky/publikovanie-elektrickych-schem-a-diagramov-pomocou-circuit-macros/ + It is in Czech but, again, Google translate works well. + LaTeX automation tools are discussed at, for example, http://tex.stackexchange.com/questions/64/tools-for-automating-document-compilation @@ -240,10 +243,12 @@ VARIATIONS needs and taste. They continue to evolve in my own library as I use them and as others send comments. No such collection can hope to include all possible circuit-related symbols, so you will probably - find yourself writing your own macros or adapting some of these. Be - careful to rename modified macros to avoid confusion. The learning - curve compares well to other packages, but there is no trivially easy - way to produce high-quality graphics. + find yourself writing your own macros or adapting some of these. + Be careful to rename modified macros to avoid confusion. The learning + curve compares well to other packages, but there is no trivially + easy way to produce high-quality graphics. (If a picture is worth + a thousand words, ask yourself how long it would take to write and + revise a thousand words.) See eschpic on Github for IEC-style electrical drawings. @@ -282,28 +287,23 @@ Postscript, CorelDraw, Adobe Illustrator: SVG output, Inkscape: Dpic -v produces svg output. If the result is to be directly - inserted into html, then as for Postscript output, the diagram source - file has to be adapted to remove any LaTeX formatting. The configuration - file svg.m4 contains macros that can assist. - - If SVG is the ultimate goal, then it may be advisable to use the tool - dvisvgm to convert dvi to svg. An alternative on some systems is to - produce pdf and then use pdf2svg, since the font selection and formatting - problems associated with direct production of svg are eliminated. + inserted into html, then as for Postscript output, the diagram + source file has to be adapted to remove any LaTeX formatting. The + configuration file svg.m4 contains macros that can assist. To avoid + this problem at the expense of an extra postprocessing step, + sophisticated text formatting and font selection can be retained + by first producing pdf output and then converting to SVG using, + say, pdf2svg (https://github.com/dawbarton/pdf2svg) or dvisvgm + (https://www.ctan.org/pkg/dvisvgm). SVG is the native file format for the Inkscape graphics editor. - Therefore, elements defined by these macros can be output by dpic -v - in svg format for later manipulation by Inkscape. A basic palette - of circuit elements for importing into Inkscape is found in - examples/svg/paletteSVG.m4. In the svg subdirectory, type - "make paletteSVG.svg", read the resulting file into Inkscape, and then - ungroup the elements as desired. You would probably wish to add to or - customize these elements for extensive use. - - Recent Inkscape versions can export graphics to eps or pdf format - and text to tex format, so that labels can be formatted by LaTeX and - overlaid on the graphics file. This process allows the use of Inkscape - to place and embellish circuit elements. + Therefore, elements defined by these macros can be output by dpic + -v in svg format for later manipulation by Inkscape. A very basic + palette of circuit elements for importing into Inkscape is found + in examples/svg/paletteSVG.m4. In the svg subdirectory, type "make + paletteSVG.svg", read the resulting file into Inkscape, and then ungroup + the elements as desired. You would probably wish to add to or customize + these elements for extensive use. Metafont: The file examples/mf/cct.mf is a Metafont source for a few variants of diff --git a/Master/texmf-dist/doc/latex/circuit-macros/darrow.m4 b/Master/texmf-dist/doc/latex/circuit-macros/darrow.m4 index c2742857af0..44da3b45da4 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/darrow.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/darrow.m4 @@ -1,7 +1,7 @@ divert(-1) darrow.m4 Macros for double lines and arrows -* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under * +* Circuit_macros Version 9.4, copyright (c) 2020 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * @@ -276,7 +276,6 @@ define(`darc',`[ C: (0,0) line thick linethick/2 \ from C+(rect_(r+dlthick/2-lthick/4,ae))-(X.x,X.y) to \ C+(rect_(r-dlthick/2+lthick/4,ae))-(X.x,X.y)') -# { "S" at S; "E" at E; "C" at C; "TS" at TS; "TE" at TE } rp_ang := ae+pi__/2 ] with ifelse(`$1',,.S at Here,.C at `$1') move to last [].E diff --git a/Master/texmf-dist/doc/latex/circuit-macros/doc/ACsymbol.m4 b/Master/texmf-dist/doc/latex/circuit-macros/doc/ACsymbol.m4 new file mode 100644 index 00000000000..114a0f18793 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/doc/ACsymbol.m4 @@ -0,0 +1,4 @@ +.PS +cct_init +ACsymbol +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/doc/AntennasMan.m4 b/Master/texmf-dist/doc/latex/circuit-macros/doc/AntennasMan.m4 index 6053cd2e3f0..a2bb3be5f0d 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/doc/AntennasMan.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/doc/AntennasMan.m4 @@ -31,9 +31,9 @@ sinclude(Circuit_macros.dim) s_box(T1) below rjust at A.T1 s_box(T2) below ljust at A.T2 s_box(`\tt (,{,}D)') at A.n above - A: antenna(at A.T+(elen_,0),,P) + A: antenna(at A.T+(elen_,0),dimen_*3/4,P) s_box(T) below at A.T - s_box(`\tt (,{,}P)') at A.n above + s_box(`\tt (,dimen\_*3/4,P)') at A.n above A: antenna(at A.T+(elen_,0),,F) s_box(T) below at A.T s_box(`\tt (,{,}F)') at A.n above diff --git a/Master/texmf-dist/doc/latex/circuit-macros/doc/ArrestersMan.m4 b/Master/texmf-dist/doc/latex/circuit-macros/doc/ArrestersMan.m4 new file mode 100644 index 00000000000..dc08e404298 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/doc/ArrestersMan.m4 @@ -0,0 +1,75 @@ +.PS +# ArrestersMan.m4 +cct_init + + sep = 0.2 + +R1: [ + arrester + {`"\tt arrester"' at last line.c+(0,-0.2)} + move sep + arrester(,G) + {`"\tt arrester(,G)"' at last line.c+(0,-0.2)} + move sep + arrester(,g) + {`"\tt ...(,g)"' at last line.c+(0,-0.2)} + move sep + arrester(,M) + {`"\tt \ldots(,M)"' at last line.c+(0,-0.2)} + move sep + arrester(,C) + {`"\tt \ldots(,C)"' at last line.c+(0,-0.2)} + move sep + arrester(,A) + {`"\tt \ldots(,A)"' at last line.c+(0,-0.2)} + ] + +R2: [ + arrester(,H) + {`"\tt \ldots(,H)"' at last line.c+(0,-0.2)} + move sep + arrester(,HR) + {`"\tt \ldots(,HR)"' at last line.c+(0,-0.2)} + move sep + arrester(,P) + {`"\tt \ldots(,P)"' at last line.c+(0,-0.2)} + move sep + arrester(,s) + {`"\tt \ldots(,s)"' at last line.c+(0,-0.2)} + move sep + arrester(,F) + {`"\tt \ldots(,F)"' at last line.c+(0,-0.2)} + move sep + arrester(,S) + {`"\tt \ldots(,S)"' at last line.c+(0,-0.2)} + + ] with .nw at R1.sw+(0,-0.2) + + define(`Dlabels', + `{ thinlines_ + arrow <- from A.A up 0.1 left 0.1; "\sl A" rjust + arrow <- from A.B up 0.1 right 0.1; "\sl B" ljust + arrow <- from A.G up 0.05 right 0.15; "\sl G" ljust + thicklines_ }') +[ + arrester(,E) + {`"\tt \ldots(,E)"' at last line.c+(0,-0.25)} + move sep + A: arrester(,DE) + {`"\tt \ldots(,DE)"' at last [].s+(0,-0.1)} + Dlabels + move sep*3 + A: arrester(,DS) + {`"\tt \ldots(,DS)"' at last [].s+(0,-0.1)} + Dlabels + move sep*3 + A: arrester(,DEL) + {`"\tt \ldots(,DEL)"' at last [].s+(0,-0.1)} + Dlabels + move sep*3 + A: arrester(,DSL) + {`"\tt \ldots(,DSL)"' at last [].s+(0,-0.1)} + Dlabels + ] with .nw at R2.sw+(0,-0.2) + +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/doc/CctTableMan.m4 b/Master/texmf-dist/doc/latex/circuit-macros/doc/CctTableMan.m4 index f7e47d0758e..221c62b7371 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/doc/CctTableMan.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/doc/CctTableMan.m4 @@ -85,6 +85,8 @@ vm = 0.28 } move down 0.25; right_ { {pvcell ; move;"`{\tt pvcell}'" ljust} + move right_ hm + {arrester ; move ;"`{\tt arrester}'" ljust} } .PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/doc/Circuit_macros.pdf b/Master/texmf-dist/doc/latex/circuit-macros/doc/Circuit_macros.pdf Binary files differindex 78a14a9ca91..6e50fe8ba6d 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/doc/Circuit_macros.pdf +++ b/Master/texmf-dist/doc/latex/circuit-macros/doc/Circuit_macros.pdf diff --git a/Master/texmf-dist/doc/latex/circuit-macros/doc/DCsymbol.m4 b/Master/texmf-dist/doc/latex/circuit-macros/doc/DCsymbol.m4 new file mode 100644 index 00000000000..5d66149410d --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/doc/DCsymbol.m4 @@ -0,0 +1,4 @@ +.PS +cct_init +DCsymbol +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/doc/GroundsMan.m4 b/Master/texmf-dist/doc/latex/circuit-macros/doc/GroundsMan.m4 index e93fadf33c2..a2aeba6e7fc 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/doc/GroundsMan.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/doc/GroundsMan.m4 @@ -1,5 +1,5 @@ .PS -# `Grounds.m4' +# GroundsMan.m4 cct_init sep = 0.65 @@ -22,7 +22,7 @@ D: B+(0,11bp__) "{\tt (,{,}E)}" at (GE,D)} -GS: ground(,,S) +GS: ground(,dimen_/2,S) move right sep GS90: [ground(,,S,90) ] with .n at Here move right sep from GS90.n @@ -36,7 +36,7 @@ GPA: ground(,T,PA) C: Here+(0,-0.5) E: C+(0,11bp__) - "{\tt (,{,}S)}" at (GS,C) + "{\tt (,dimen\_/2,S)}" at (GS,C) "{\tt (,{,}S,90)}" at (GS90,E) "{\tt (,{,}Q)}" at (GQ,C) "{\tt (,{,}L)}" at (GL,E) diff --git a/Master/texmf-dist/doc/latex/circuit-macros/doc/Makefile b/Master/texmf-dist/doc/latex/circuit-macros/doc/Makefile index 9e27cc0b27a..fb7ed9bc933 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/doc/Makefile +++ b/Master/texmf-dist/doc/latex/circuit-macros/doc/Makefile @@ -5,11 +5,12 @@ DOC = Circuit_macros DOCSRC = Circuit_macros.tex body.tex defines.tex PICTEX = \ - AmpTableMan.tex AntennasMan.tex AudioMan.tex Axes.tex \ + ACsymbol.tex \ + AmpTableMan.tex AntennasMan.tex ArrestersMan.tex AudioMan.tex Axes.tex \ Buffer.tex BigResistor.tex BipMan.tex \ CctTableMan.tex Composite.tex ConfigA.tex ConfigB.tex ConfigC.tex \ ConnMan.tex Corners.tex ContactMan.tex ContactsMan.tex \ - Dac.tex Darlington.tex DemultiplexerMan.tex DiodesMan.tex \ + Dac.tex Darlington.tex DCsymbol.tex DemultiplexerMan.tex DiodesMan.tex \ EmarrowsMan.tex FF.tex FlipFlop.tex Flowdiag.tex FusesMan.tex \ GroundsMan.tex HeadersMan.tex HybridPi.tex JackMan.tex LogicMan.tex \ Loop.tex MultiplexerMan.tex NPDTMan.tex NLGMan.tex NportMan.tex \ @@ -89,6 +90,11 @@ $(DOC).$(SFX): mode.tex citations $(PICTEX) @printf "\n No file $(DOC).$(SFX)\n\n" ; \ $(LATEX) $(DOC) ; bibtex $(DOC) ; fi +ACsymbol.tex DCsymbol.tex: + touch $(DOC).dim + $(M4) $(M4LIBS) $(DOC).dim $*.m4 > $*.pic + $(PRE) $(PIC) $*.pic | sed -e '/end{tikzpicture}/s/$$/%/' > $*.tex + citations: mode.tex $(DOC).bbl $(PICTEX) @printf "\n citations:\n\n" $(LATEX) $(DOC) ; bibtex $(DOC) diff --git a/Master/texmf-dist/doc/latex/circuit-macros/doc/Version.tex b/Master/texmf-dist/doc/latex/circuit-macros/doc/Version.tex index ca449b0a0bc..9d14ec204ed 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/doc/Version.tex +++ b/Master/texmf-dist/doc/latex/circuit-macros/doc/Version.tex @@ -1 +1 @@ -Version 9.3 +Version 9.4 diff --git a/Master/texmf-dist/doc/latex/circuit-macros/doc/body.tex b/Master/texmf-dist/doc/latex/circuit-macros/doc/body.tex index cbb2fdb0581..ac8db93ef50 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/doc/body.tex +++ b/Master/texmf-dist/doc/latex/circuit-macros/doc/body.tex @@ -92,7 +92,7 @@ The result is passed through a \pic interpreter to produce {\tt .tex} output that can be inserted into a {\tt .tex} document using the \verb|\input| command. -\begin{figure}[hbt] +\begin{figure}[ht] \pdftooltip{\input Flowdiag }{Flow diagram for the inclusion of figures} \caption{Inclusion of figures and macros in the \latex document. \label{Flowdiag}} @@ -193,7 +193,7 @@ A configuration file ({\tt pstricks.m4} and {\tt pgf.m4} in the above examples) is {\em always} the first file to be given to \Mfour. Put the following or its equivalent in the document body: \begin{verbatim} -\begin{figure}[hbt] +\begin{figure}[ht] \centering \input quick \caption{Customized caption for the figure.} @@ -218,7 +218,7 @@ to be read, thereby defining the macro {\tt cct\_init}. The diagram source file is then read and the circuit-element macros in {\tt libcct.m4} are defined during expansion of {\tt cct\_init}. -\begin{figure}[hbt] +\begin{figure}[ht] \input ConfigA \caption{The command {\tt m4 pstricks.m4 quick.m4 > quick.pic}. @@ -239,7 +239,7 @@ the commands are \noindent and the figure inclusion statements are as shown: \begin{verbatim} -\begin{figure}[hbt] +\begin{figure}[ht] \input quick \centerline{\box\graph} \caption{Customized caption for the figure.} @@ -470,7 +470,7 @@ The construction \noindent truncates the line at each end by {\tt x} (which may be negative) or, if {\tt x} is omitted, by -the current circle radius, which is convenient when A and B are +the current circle radius, a convenience when A and B are circular graph nodes, for example. Otherwise {\tt line from A to B chop x chop y} @@ -728,7 +728,11 @@ operating-system commands, \pic macros, and external file inclusion. There is a fundamental difference between the two-terminal elements, each of which is drawn along an invisible straight-line segment, and other elements, which are compound objects mentioned -in \SR{Compoundobjects:}. The two-terminal element macros follow a +in \SR{Compoundobjects:}. +% Specifying the straight-line segment requires four numbers, the coordinates +% of the start and end, or equivalent, but default values are used if +% not specified. +The two-terminal element macros follow a set of conventions described in this section, and other elements will be described in \SR{Composite:}. @@ -745,7 +749,7 @@ The first part of the source file for this figure is %as follows: on the left: -\begin{figure}[hbt] +\begin{figure}[ht] \parbox{2in}{\tt .PS\\ \hbox{}\quad cct\_init\\ \hbox{}\quad linewid = 2.0\\ \hbox{}\quad linethick\_(2.0)\\ R1: resistor} \raisebox{-0.3in}{\hbox{\input{BigResistor.tex}}} @@ -829,7 +833,8 @@ were added after the previously shown source: \subsection{The two-terminal elements\label{Twoterminal:}} The two-terminal elements are shown in \FRS{CctTable} % to~\REF{Diodes} and \FRS{Fuses} -to~\REF{Switches}. +%to~\REF{Switches}. +to~\REF{Arresters}. Several elements are included more than once to illustrate some of their arguments, which are listed in \SR{defines}. \enlargethispage{\baselineskip} @@ -846,12 +851,13 @@ If the argument is blank, the element is drawn from the current position in the current drawing direction along a default length. The other arguments produce variants of the default elements. -\begin{figure}[hbt] +\begin{figure}[ht] \input AmpTableMan \caption{Amplifier, delay, and integrator.} \label{AmpTable} \end{figure} +\pagebreak Thus, for example, \par {\tt resistor(up\_ 1.25,7)} @@ -862,7 +868,7 @@ vertices per side. The macro {\tt up\_} evaluates to {\tt up} but also resets the current directional parameters to point up. -\begin{figure}[hbt] +\begin{figure}[ht] \input SourcesMan % \ifpdf\vspace*{-0.5\baselineskip}\fi% \caption{Sources and source-like elements.} @@ -875,11 +881,16 @@ to draw a single cycle of a sinusoid or approximate sinusoid. As a convenience, the macro {\tt ACsymbol(at {\sl position, length, height,} [A]U|D|L|R|{\sl degrees})} is included as an interface to -the {\tt sinusoid} macro. For example to add the sumbol to an ebox: +the {\tt sinusoid} macro. For example to add the sumbol +(\input{ACsymbol.tex}) to an ebox: \par {\tt ebox; $\lbrace$\ ACsymbol(at last [],{,},dimen\_/8) $\rbrace$} -\begin{figure}[hbt] +\noindent +For direct current (\input{DCsymbol.tex}), there is also +{\tt DCsymbol(at {\sl position, length, height,} U|D|L|R|{\sl degrees})}. + +\begin{figure}[ht] \input DiodesMan \caption{The macro {\tt diode(\linespec,B|CR|D|L|LE[R]|P[R]|S|T|V|v|w|Z|{\sl chars},[R][E])}. @@ -923,6 +934,8 @@ The first argument of the macro \noindent is the name of a two-terminal element in quotes, followed by the element arguments. The element is drawn with reversed direction. + +\pagebreak Thus, \par {\tt diode(right\_ 0.4); reversed(`diode',right\_ 0.4)} @@ -930,11 +943,6 @@ Thus, \noindent draws two diodes to the right, but the second one points left. -\begin{figure}[bt] - \input EmarrowsMan - \caption{Radiation arrows: {\tt em\_arrows({\sl type, angle, length})}} - \label{Emarrows} - \end{figure} Similarly, the macro \par {\tt resized(}{\sl factor},`{\sl macro name}',{\sl macro arguments}{\tt )} @@ -949,12 +957,31 @@ by 1.8, for example {\tt resized(1.8,`diode',right\_ 0.4);} {\tt resized(1.8,`reversed',`diode',right\_ 0.4)} +\pagebreak +\FR{Arresters} shows a collection of surge-protection devices, or arresters, +of which the {\tt E} and {\tt S} types may be either 2-terminal or as +3-terminal (composite) elements described in \SR{Composite:}. +\begin{figure}[ht] + \input ArrestersMan + \caption{Variations of the {\tt arrester({\sl linespec, chars,} + {\sl wid}[{\tt :}{\sl arrowhead ht}], {\sl ht}[{\tt :}{\sl arrowhead wid})} + macro. Putting {\tt D} in argument 2 for the {\tt S} or {\tt E} + configuration creates a 3-terminal composite element + with terminals {\sl A, B}, and {\sl G.}} + \label{Arresters} + \end{figure} + \FR{Emarrows} contains radiation-effect arrows for embellishing two-terminal and other macros. The arrow stems are named {\sl A1}, {\sl A2}, and each pair is drawn in a \verb|[]| block, with the names {\sl Head} and {\sl Tail} defined to aid placement near another device. The second argument specifies +\begin{figure}[ht] + \input EmarrowsMan + \caption{Radiation arrows: {\tt em\_arrows({\sl type, angle, length})}} + \label{Emarrows} + \end{figure} absolute angle in degrees (default 135 degrees). The arrows are drawn relative to the diode direction by the {\tt LE} option in \FR{Diodes}. For absolute arrow directions, one can @@ -979,7 +1006,7 @@ thus, the following line draws the resistor in \FR{Variable}: \par {\tt resistor(down\_ dimen\_); variable(,uN)} -\begin{figure}[h!t] +\begin{figure}[ht] \vspace*{-\baselineskip} \input VariableMan \caption{Illustrating @@ -1011,7 +1038,7 @@ The macro \noindent draws an arrow from the start of the last-drawn two-terminal element {\sl frac} of the way toward the body. -\begin{figure}[h!t] +\begin{figure}[ht] % \ifpdf\vspace*{-0.5\baselineskip}\fi% \input currents \caption{Illustrating {\tt b\_current, larrow,} and {\tt rarrow}. @@ -1153,7 +1180,7 @@ The macro {\tt eleminit\_} in the two-terminal elements invokes to establish element length and direction. As shown in \FR{Oblique}, -\begin{figure}[h!b] +\begin{figure}[ht] \vspace{-\baselineskip} \parbox{4.5in}{\small \verbatiminput{Oblique.m4}}% \hfill\raise-0.7in\llap{\hbox{\input Oblique }}% @@ -1196,7 +1223,7 @@ makes some geometries particularly simple. Thus, \noindent draws three elements in series as shown in the top line of \FR{Series}. -\begin{figure}[h!t] +\begin{figure}[ht] \vspace{-\baselineskip} \input Series \caption{Three ways of drawing basic elements in series.} @@ -1247,7 +1274,7 @@ producing the left circuit in \FR{ParSeries}: line from L.end to C.end \end{verbatim} -\begin{figure}[h!t] +\begin{figure}[ht] % \vspace*{-\baselineskip} \input ParSeries \vspace*{-\baselineskip} @@ -1305,7 +1332,7 @@ first draws a resistor along the specified line, then adds arrows for taps at fractional positions along the body, with default or specified length. A negative length draws the arrow from the right of the current drawing direction. -\begin{figure}[h!t] +\begin{figure}[ht!] \input Potentiometers \caption{Default and multiple-tap potentiometer.} \label{Potentiometers} @@ -1317,7 +1344,7 @@ The macro {\tt $\ldots$)}, shown in \FR{Taps}, will add taps to the immediately preceding two-terminal element. -\begin{figure}[h!t] +\begin{figure}[ht] \input Taps \caption{Macros for adding taps to two-terminal elements.} \label{Taps} @@ -1338,7 +1365,17 @@ drawn elements. A few composite symbols derived from two-terminal elements are shown in \FR{Composite}. +\begin{figure}[h!b] + \vspace*{-0.5ex} +% \vspace*{-\baselineskip} + \input Composite + \vspace*{-0.5ex} + \caption{Composite elements {\tt KelvinR({\sl cycles},[R],{\sl cycle wid})} + and {\tt FTcap({\sl chars})} .} + \label{Composite} + \end{figure} +\enlargethispage{\baselineskip} The ground symbol is shown in \FR{Grounds}. The first argument specifies position; for example, the two lines shown have identical effect: @@ -1347,15 +1384,6 @@ have identical effect: \par ground(at (1.5,2)) } -\begin{figure}[h!t] - \vspace*{-0.5ex} - \input Composite - \vspace*{-0.5ex} - \caption{Composite elements {\tt KelvinR({\sl cycles},[R],{\sl cycle wid})} - and {\tt FTcap({\sl chars})} .} - \label{Composite} - \end{figure} - %\noindent The second argument truncates the stem, and the third defines the symbol type. @@ -1369,26 +1397,27 @@ macro and reset at the end using {\tt resetdir\_}. \input GroundsMan \caption{The {\tt ground( at }{\sl position}{\tt, - T, N|F|S|L|P[A]|E, U|D|L|R|{\sl degrees} )} + T|{\sl stem length}, N|F|S|L|P[A]|E, U|D|L|R|{\sl degrees} )} macro.} \label{Grounds} \end{figure} -The arguments of the macro -{\tt antenna( at }{\sl position}{\tt, - T, A|L|T|S|D|P|F, U|D|L|R|{\sl degrees} )} +The arguments of +{\tt antenna(at }{\sl position}{\tt, + T|{\sl stem length}, A|L|T|S|D|P|F, U|D|L|R|{\sl degrees})} shown in \FR{Antennas} are similar to those of {\tt ground}. -\begin{figure}[h!t] +\begin{figure}[h!] \input AntennasMan \caption{Antenna symbols, with macro arguments shown above and terminal names below.} \label{Antennas} \end{figure} -\pagebreak \FR{Opamp} illustrates the macro {\tt opamp({\sl\linespec, - label, + label, size, chars})\label{OPAMP}}. -\begin{figure}[h!t] +The element is enclosed in a block +containing the predefined internal locations shown. +\begin{figure}[ht] % \ifpdf\vspace*{-0.5\baselineskip}\fi% \input OpampMan \caption{Operational amplifiers. The {\tt P} option adds @@ -1396,8 +1425,6 @@ shown in \FR{Antennas} are similar to those of {\tt ground}. to place and rotate arbitrary text at {\tt In1} and {\tt In2}.} \label{Opamp} \end{figure} -The element is enclosed in a block -containing the predefined internal locations shown. These locations can be referenced in later commands, for example as ``{\tt last [].Out}.'' The first argument defines the direction and length of the opamp, but the @@ -1418,7 +1445,7 @@ using postprocessor commands (for example \PSTricks \verb|\rput|) as second and third arguments. The code in \FR{oax} places an opamp with three connections. -\begin{figure}[h!t] +\begin{figure}[h!b] \parbox{4in}{\small \verbatiminput{oaxbody.m4}}% \quad\raise-0.2in\hbox{\input oax }% % \vspace{-\baselineskip} @@ -1430,6 +1457,14 @@ The code in \FR{oax} places an opamp with three connections. \FR{Xform} shows variants of the transformer macro, which has predefined internal locations {\sl P1,} {\sl P2,} {\sl S1,} {\sl S2,} {\sl TP,} and {\sl TS.} +\begin{figure}[h!t] + \input XformMan + \caption{The {\tt transformer(\linespec,L|R,{\sl np},% +[A|P][W|L][D1|D2|D12|D21],{\sl ns})} + macro (drawing direction {\tt down}), showing predefined terminal + and centre-tap points.} + \label{Xform} + \end{figure} The first argument specifies the direction and distance from {\sl P1} to {\sl P2}, with position determined by the enclosing block as for opamps. The second @@ -1442,21 +1477,18 @@ if a {\tt P}, the core is dashed (powder); and if it contains a {\tt W}, wide windings are drawn. A {\tt D1} puts phase dots at the {\sl P1, S1} end, {\tt D2} at the {\sl P2, S2} ends, and {\tt D12} or {\tt D21} puts dots at opposite ends. -\begin{figure}[h!t] -% \ifpdf\vspace*{-\baselineskip}\fi% - \input XformMan -% \vspace{-\baselineskip} - \caption{The {\tt transformer(\linespec,L|R,{\sl np},% -[A|P][W|L][D1|D2|D12|D21],{\sl ns})} - macro (drawing direction {\tt down}), showing predefined terminal - and centre-tap points.} - \label{Xform} - \end{figure} -\pagebreak \FR{Audio} shows some audio devices, defined in {\tt []} blocks, with predefined internal locations as shown. -\begin{figure}[h!t] +The first argument specifies the device orientation. +Thus, +\par +{\tt S: speaker(U) with .In2 at Here} + +\noindent +places an upward-facing speaker with input {\sl In2} at the +current location. +\begin{figure}[ht] % \ifpdf\vspace*{-\baselineskip}\fi% \input AudioMan % \ifpdf\vspace*{-\baselineskip}\fi% @@ -1466,20 +1498,11 @@ with predefined internal locations as shown. earphone}, with their internally named positions and components.} \label{Audio} \end{figure} -The first argument specifies the device orientation. - -Thus, - -{\tt S: speaker(U) with .In2 at Here} - -\noindent -places an upward-facing speaker with input {\sl In2} at the -current location. The {\tt nport({\sl box specs {\tt[;} other commands{\tt]}, nw, nn, ne, ns, space ratio, pin lgth, style})} macro is shown in \FR{Nport}. -\begin{figure}[h!t] +\begin{figure}[ht] % \ifpdf\vspace*{-\baselineskip}\fi \input NportMan % \ifpdf\vspace*{-\baselineskip}\fi @@ -1520,7 +1543,6 @@ immediately after drawing it but within the enclosing block: If this trick were to be used extensively, then the following custom wrapper would save typing, add the labels, and pass all arguments to {\tt nport}: -\pagebreak \begin{verbatim} define(`nullor',`nport(`$1' @@ -1529,33 +1551,21 @@ define(`nullor',`nport(`$1' \end{verbatim} The above example and the related gyrator macro are illustrated in -\FR{NLG}. -% \ifpdf\vspace*{\baselineskip}\fi% -\begin{figure}[h!t] +\FR{NLG}.\hfill\break + +\begin{figure}[ht] \input NLGMan \caption{The {\tt nullor} example and the {\tt gyrator} macro are customizations of the {\tt nport} macro.} \label{NLG} \end{figure} -The double-throw switches shown in \FR{NPDT} are drawn in the -current drawing direction like the two-terminal elements, but are -composite elements that must be placed accordingly. -\begin{figure}[h!t] -% \ifpdf\vspace*{-0.5\baselineskip}\fi% - \input NPDTMan -% \ifpdf\vspace*{-0.5\baselineskip}\fi% - \caption{Multipole double-throw switches drawn by - {\tt NPDT({\sl npoles}, [R])}.} - \label{NPDT} - \end{figure} - \FR{Contact} shows the macro {\tt contact({\sl chars})}, which contains predefined locations {\sl P, C, O} for the armature and normally closed and normally open terminals. An {\tt I} in the first argument draws open circles for contacts. -\begin{figure}[h!t] +\begin{figure}[ht] % \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi% \input ContactMan \vspace{-1ex} @@ -1565,11 +1575,9 @@ An {\tt I} in the first argument draws open circles for contacts. \label{Contact} \end{figure} -\pagebreak The {\tt contacts({\sl poles, chars})} macro in \FR{Contacts} draws multiple contacts. -\begin{figure}[h!t] -% \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi% +\begin{figure}[ht] \input ContactsMan \vspace{-1ex} \caption{The {\tt contacts({\sl poles, chars})} @@ -1581,7 +1589,9 @@ For drawing relays, the macro {\tt relaycoil({\sl chars, wid, ht,} {\tt U|D|L|R|}{\sl degrees})} shown in \FR{relaycoil} provides a choice of connection points and actuator types. -\begin{figure}[h!t] + +\pagebreak +\begin{figure}[ht] % \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi% \input relaycoilMan \vspace{-1ex} @@ -1591,9 +1601,8 @@ actuator types. The {\tt relay({\sl poles, chars})} macro in \FR{Relay} defines coil terminals {\sl V1, V2} and contact -terminals {\sl P$_i$, C$_i$, O$_i$.} -\begin{figure}[h!t] -% \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi% +terminals {\sl P$_i$, C$_i$, O$_i$.} +\begin{figure}[ht] \input RelayMan \vspace{-1ex} \caption{The {\tt relay({\sl poles, chars})} @@ -1602,14 +1611,14 @@ terminals {\sl P$_i$, C$_i$, O$_i$.} \end{figure} The {\tt jack} and {\tt plug} macros and their defined points are - illustrated in \FR{Jack}. - The first argument of both macros establishes the drawing direction. -\begin{figure}[h!t] +illustrated in \FR{Jack}. +The first argument of both macros establishes the drawing direction. +\begin{figure}[h!] \input JackMan \vspace{-1ex} \caption{The {\tt jack(U|D|L|R|{\sl degrees}, {\sl chars})} - and {\tt plug(U|D|L|R|{\sl degrees},[2|3][R])} components - and their defined points.} + and {\tt plug(U|D|L|R|{\sl degrees},[2|3][R])} components + and their defined points.} \label{Jack} \end{figure} The second argument is a string of characters defining drawn components. @@ -1628,14 +1637,14 @@ A macro for drawing headers is in \FR{Headers}, and some experimental connectors are shown in \FR{Conn} and \FR{Pconn}. The {\tt tstrip} macro allows ``{\sl key}{\tt =}{\sl value}{\tt ;}'' arguments for width and height. -\begin{figure}[h!t] +\begin{figure}[ht] % \ifpdf\vspace*{-0.5\baselineskip}\fi% \input HeadersMan % \ifpdf{\vspace*{-0.5ex}}\fi% \caption{Macro {\tt Header(1|2, {\sl rows, wid, ht, type})}.} \label{Headers} \end{figure} -\begin{figure}[h!t] +\begin{figure}[ht] \input ConnMan % \ifpdf{\vspace*{-0.5ex}}\fi% \caption{Macros {\tt tstrip(R|L|U|D|{\sl degrees}, {\sl chars})}, @@ -1645,7 +1654,7 @@ for width and height. \label{Conn} % \ifpdf{\vspace*{-1ex}}\fi% \end{figure} -\begin{figure}[h!t] +\begin{figure}[ht] % \ifpdf{\vspace*{-1ex}}\fi% \input PconnMan % \ifpdf{\vspace*{-0.5ex}}\fi% @@ -1655,13 +1664,23 @@ for width and height. \label{Pconn} \end{figure} -\pagebreak +The double-throw switches shown in \FR{NPDT} are drawn in the +current drawing direction like the two-terminal elements, but are +composite elements that must be placed accordingly. +\begin{figure}[h!b] + \ifpdf{\vspace*{-1ex}}\fi% + \input NPDTMan + \caption{Multipole double-throw switches drawn by + {\tt NPDT({\sl npoles}, [R])}.} + \label{NPDT} + \end{figure} + A basic winding macro for magnetic-circuit sketches and similar figures is shown in \FR{Windings}. For simplicity, the complete spline is first drawn and then blanked in appropriate places using the background (core) color (\verb!lightgray! for example, default \verb!white!). -\begin{figure}[h!t] +\begin{figure}[h!b] \vspace*{-\baselineskip}% % \ifpdf\vspace*{-2\baselineskip}\else \vspace{-\baselineskip}\fi \input WindingsMan @@ -1679,7 +1698,7 @@ is first drawn and then blanked in appropriate places using the background which contains predefined internal locations {\sl E}, {\sl B}, {\sl C}. The first argument defines the distance and direction from {\sl E} -\begin{figure}[h!t] +\begin{figure}[ht] % \ifpdf\vspace*{-0.5\baselineskip}\fi% \input BipMan % \ifpdf\vspace*{-0.5\baselineskip}\fi% @@ -1694,7 +1713,7 @@ current drawing direction according to the second argument. Setting the third argument to {\tt P} creates a PNP device instead of NPN, and setting the fourth to {\tt E} draws an envelope around the device. \FR{Darlington} shows a composite macro with several optional internal elements. -\begin{figure}[h!t] +\begin{figure}[ht] \input Darlington \caption{Macro {\tt Darlington(L|R,[E][P][B1][E1|R1][E2|R2][D][Z])}, drawing direction {\tt up\_}.} @@ -1703,8 +1722,8 @@ fourth to {\tt E} draws an envelope around the device. The code fragment example in \FR{bitr} places a bipolar transistor, connects a ground to the emitter, and connects a resistor to the collector. -\begin{figure}[h!t] -\vspace*{-\baselineskip} +\begin{figure}[ht] +%\vspace*{-\baselineskip} \quad\quad\parbox{4in}{\small \verbatiminput{bitrbody.m4}}% \quad\raise-0.4in\hbox{\input bitr }% \vspace{-\baselineskip} @@ -1717,8 +1736,8 @@ the macro {\tt bi\_trans(\linespec, L|R, {\sl chars}, E)}, which draws the components of the transistor according to the characters in its third argument. For example, multiple emitters and collectors can be specified as shown in \FR{bitrans}. -\begin{figure}[h!t] -\vspace*{-0.5\baselineskip} +\begin{figure}[ht] +%\vspace*{-0.5\baselineskip} \input bi_trans \caption{The {\tt bi\_trans(\linespec,L|R,{\sl chars},E)} macro. The sub-elements are specified by the third argument. The substring @@ -1734,7 +1753,7 @@ and a thyristor macro with predefined internal locations {\sl G} and {\sl T1,} {\sl T2,} or {\sl A,} {\sl K} is in \FR{thyristor}. Except for the {\sl G} terminal, a thyristor (the {\tt IEC} variant excluded) -\begin{figure}[h!t] +\begin{figure}[ht] % \ifpdf\vspace*{-\baselineskip}\else\vspace*{-0.5\baselineskip}\fi% \input ujtMan % \ifpdf\vspace*{-0.5\baselineskip}\fi% @@ -1768,7 +1787,7 @@ draws the element from position {\sl A} to position {\sl B} with label Some FETs with predefined internal locations {\sl S,} {\sl D,} and {\sl G} are also included, with similar arguments to those of {\tt bi\_tr,} as shown in \FR{fet}. -\begin{figure}[h!t] +\begin{figure}[ht] % \ifpdf\vspace*{-\baselineskip}\fi% \input fetMan % \ifpdf\vspace*{-\baselineskip}\fi% @@ -1806,7 +1825,7 @@ the {\tt thyristor(\linespec, {\sl chars})} macro illustrated in \FR{thyristor} is derived from the diode and bipolar transistor macros. Another example is the {\tt tgate} macro shown in \FR{Tgate}, which also shows a pass transistor. -\begin{figure}[h!t] +\begin{figure}[ht] % \ifpdf\vspace*{-\baselineskip}\fi% \input TgateMan \caption{The {\tt tgate({\sl linespec,} [B][R|L])} element, derived from @@ -1824,7 +1843,7 @@ optional argument ``{\tt at} {\sl location}'', the line-thickness macros, the {\tt fill\_} macro, and {\tt crossover}, which is a useful if archaic method to show non-touching conductor crossovers, as in \FR{bistable}. -\begin{figure}[h!t] +\begin{figure}[ht] \input bistableMan % \vspace{-1ex} \caption{Bipolar transistor circuit, illustrating {\tt crossover} @@ -1936,7 +1955,7 @@ two-terminal element. Input locations retain their positions relative to the gate body regardless of gate orientation, as in \FR{FF}. -\begin{figure}[h!t] +\begin{figure}[ht] \vspace*{-\baselineskip} \parbox{4.75in}{\small \verbatiminput{FF.m4}}% \input FF @@ -1944,7 +1963,7 @@ regardless of gate orientation, as in \FR{FF}. \caption{$SR$ flip-flop.} \label{FF} \end{figure} -\begin{figure}[h!t] +\begin{figure}[ht] \input mplex \caption{Eight-input multiplexer, showing a gate with wings.} \label{exVIII} @@ -2018,7 +2037,7 @@ If the first argument is non-blank however, then the buffer is drawn along an invisible line like a two-terminal element, which is convenient sometimes but requires internal locations of the block to be referenced using {\tt last []}, as shown in \FR{Buffer}. -\begin{figure}[h!t] +\begin{figure}[ht] \input Buffer \caption{The {\tt BUFFER\_gate} and {\tt BUFFER\_gen} macros. The bottom two examples show how the gate can be drawn as a two-terminal @@ -2027,28 +2046,12 @@ but requires internal locations of the block to be referenced using \label{Buffer} \end{figure} -\FR{Multiplexer} shows a multiplexer block with variations, and - \FR{Demultiplexer} shows -the very similar demultiplexer. -\begin{figure}[h!t] - \input MultiplexerMan - \caption{The {\tt Mux({\sl input count}, {\sl label}, - [L][B|H|X][N[$n$]|S[$n$]][[N]OE],{\sl wid},{\sl ht})} macro.} - \label{Multiplexer} - \end{figure} -\begin{figure}[h!t] - \input DemultiplexerMan - \caption{The {\tt Demux({\sl input count}, {\sl label}, - [L][B|H|X][N[$n$]|S[$n$]][[N]OE],{\sl wid},{\sl ht})} macro.} - \label{Demultiplexer} - \end{figure} - \FR{FlipFlops} shows the macro {\tt FlipFlop(D|T|RS|JK, {\sl label, boxspec, pinlength})}, which is a wrapper for the more general macro {\tt FlipFlopX(}{\sl boxspec, label, leftpins, toppins, rightpins, bottompins, pinlength}{\tt )}. -\begin{figure}[h!t] +\begin{figure}[ht] \input FlipFlop \caption{The {\tt FlipFlop} and {\tt FlipFlopX} macros, with variations.} \label{FlipFlops} @@ -2070,27 +2073,45 @@ a label, use {\tt lg\_bartxt(}{\sl label}{\tt)}. The {\sl pinopts} are {\tt [L|M|I|O][N][E]} as for the \verb|lg_pin| macro. Optional argument 7 is the pin length in drawing units. +\pagebreak +\FR{Multiplexer} shows a multiplexer block with variations, and + \FR{Demultiplexer} shows +the very similar demultiplexer. +\begin{figure}[h!t] + \input MultiplexerMan + \caption{The {\tt Mux({\sl input count}, {\sl label}, + [L][B|H|X][N[$n$]|S[$n$]][[N]OE],{\sl wid},{\sl ht})} macro.} + \label{Multiplexer} + \end{figure} +\begin{figure}[h!t] + \input DemultiplexerMan + \caption{The {\tt Demux({\sl input count}, {\sl label}, + [L][B|H|X][N[$n$]|S[$n$]][[N]OE],{\sl wid},{\sl ht})} macro.} + \label{Demultiplexer} + \end{figure} + Customized gates can be defined simply. For example, the following code defines the custom flipflops in \FR{ShiftR}. +\begin{verbatim} +define(`customFF',`FlipFlopX(wid 10*L_unit ht FF_ht*L_unit,, + :S;NE:CK;:R, N:PR, :Q;;ifelse(`$1',1,:lg_bartxt(Q)), N:CLR) ') +\end{verbatim} \begin{figure}[h!t] \input ShiftRMan \caption{A 5-bit shift register.} \label{ShiftR} \end{figure} -\begin{verbatim} -define(`customFF',`FlipFlopX(wid 10*L_unit ht FF_ht*L_unit,, - :S;NE:CK;:R, N:PR, :Q;;ifelse(`$1',1,:lg_bartxt(Q)), N:CLR) ') -\end{verbatim} This definition makes use of macros \verb|L_unit| and \verb|FF_ht| that predefine default dimensions. -There are three pins on the right side; the centre pin is null and +There are three pins on the right; the centre pin is null and the bottom is null if the first macro argument is 1. +\pagebreak For hybrid applications, the \verb|dac| and \verb|adc| macros are illustrated in \FR{Dac}. The figure shows the default and predefined internal locations, the number of which can be specified as macro arguments. -\begin{figure}[h!t] +\begin{figure}[ht] % \ifpdf\vspace*{-\baselineskip}\fi% \input Dac % \ifpdf\vspace*{-\baselineskip}\fi% @@ -2145,7 +2166,7 @@ can be given to the \char96{}{\sl actions}\char39, {\sl value1, value2, $\ldots$})} which executes the given actions successively with - {\sl variable} = {\sl value1}, {\sl value2} $ldots$ and the + {\sl variable} = {\sl value1}, {\sl value2} $\ldots$ and the counter {\tt m4Lx} set to 1, 2, $\ldots$ as in the diagram. \xection{Element and diagram scaling\label{Scaling:}} @@ -2291,7 +2312,7 @@ A few examples will be given. Custom two-terminal elements can often be defined by writing a wrapper for an existing element. For example, an enclosed thermal switch can be defined as shown in \FR{Thermal}. -\begin{figure}[h!t] +\begin{figure}[ht] \parbox{4.2in}{\tt define(`thermalsw',\hfill\break \hbox{}\space`dswitch(`\$1',`\$2',WDdBTh)\hfill\break \hbox{}\space\space circle rad distance(M4T,last line.c) @@ -2360,7 +2381,7 @@ define(`hybrid_PI_BJT', `"$\mathrm{r_o}$"' at Ro.c+vec_(hunit/4,0) `$2' ] ') \end{verbatim} -\begin{figure}[h!t] +\begin{figure}[ht] \vspace*{-0.5ex} \input HybridPi \vspace*{-0.5ex} @@ -2368,10 +2389,10 @@ define(`hybrid_PI_BJT', \label{HybridPi} \end{figure} +%\enlargethispage{\baselineskip} \Example{4} A number of elements have arguments meant explicitly for customization. -\FR{Sinus} customizes the {\tt source} macro to show a cycle of a horizontal -sinusoid with adjustable phase given by argument 2 in degrees, +\FR{Sinus} customizes the {\tt source} macro to show a cycle of a horizontal sinusoid with adjustable phase given by argument 2 in degrees, as might be wanted for a 3-phase circuit: \begin{figure}[ht] \hfill\input Sinus @@ -2391,14 +2412,13 @@ $3,$4,$5)') \end{figure} \Example{5} -Repeated subcircuits might have different orientations -that -include only the element and its mirror image, for example, so the +Repeated subcircuits might appear only +as the subcircuit and its mirror image, for example, so the power of the \verb|vec_()| and \verb|rvec_()| macros is not required. Suppose that an optoisolator is to be drawn with left-right or right-left orientation as shown in \FR{Opto}. %\vspace*{-0.5em} -\begin{figure}[h!t] +\begin{figure}[h!b] \input Opto \caption{Showing {\tt opto} and {\tt opto(BR)} with defined labels.} \label{Opto} @@ -2423,6 +2443,7 @@ for readability; this usage is made possible by testing the argument string using the {\tt ifinstr()} macro rather than requiring an exact match. A draft of the macro follows, and the file {\tt Optoiso.m4} in the examples directory adds a third type option. + \begin{verbatim} # `opto([R|L][A|B])' define(`opto',`[{u = dimen_/2 @@ -2470,7 +2491,7 @@ F2: fbfilter(L,R,K_2,C_{23},R_3) with .In at F1.In ground(at F2.G) \end{verbatim} \vspace*{-0.5em} -\begin{figure}[h!t] +\begin{figure}[ht] \input fbfilter \caption{Showing the result of two invocations of the {\tt fbfilter} macro, with labels.} @@ -2546,8 +2567,8 @@ main document source is \latex{}ed to input the diagram and format the text, and also to write the text dimensions into a supplementary file. Then the diagram source is processed again, reading the required dimensions from the supplementary file and producing a diagram ready -for final \latex{}ing. This hackery is summarized below, with an example -in \FR{stringdim}. +for final \latex{}ing. +This hackery is summarized below, with an example in \FR{stringdim}. \begin{itemize} \item Put \verb|\usepackage{boxdims}| into the document source. \item Insert the following at the beginning of the diagram source, @@ -2558,9 +2579,9 @@ in \FR{stringdim}. typeset text of known size, or alternatively, invoke the macros \verb|\boxdims| and \verb|boxdim| described later. The argument of {\tt s\_box} need not be text exclusively; it can - be anything that produces a \TeX\ box. + be anything that produces a \TeX\ box, for example, \verb|\includegraphics|. \end{itemize} -\begin{figure}[h!t] +\begin{figure}[ht] \parbox{3.5in}{\small\tt.PS\\ gen\_init\\ sinclude(Circuit\_macros.dim)\\ @@ -2649,6 +2670,8 @@ for the second time: Here is a second small example. Suppose that the file {\tt tsbox.m4} contains the following: + +\pagebreak \begin{verbatim} \documentclass{article} \usepackage{boxdims,ifpstricks(pstricks,tikz)} @@ -2682,7 +2705,7 @@ Objects can be taylored to their attached text by invoking The small source file in \FR{boxdims}, for example, produces the box in the figure. %\vspace*{-\baselineskip}% -\begin{figure}[h!t] +\begin{figure}[ht] \parbox{4.2in}{\small \input eboxdims.verb }% \hfill\llap{\raise-0.35in\hbox{\input eboxdims }}% \vspace{-\baselineskip} @@ -2736,13 +2759,12 @@ More tricks can be played. The example \noindent shows a nice way of including eps graphics in a diagram. The included picture (named {\tt Picture} in the example) has known position and dimensions, which can be used to add vector graphics or text to the -picture. To aid in overlaying objects, the macro {\tt boxcoord(}{\sl -object name, x-fraction, y-fraction}{\tt)} evaluates to a position, -with {\tt boxcoord(}{\sl object name}{\tt,0,0)} at the lower left -corner of the object, and {\tt boxcoord(}{\sl object name}{\tt,1,1)} at -its upper right. +picture. To aid in overlaying objects, the macro +{\tt boxcoord(}{\sl object name, x-fraction, y-fraction}{\tt)} +evaluates to a position, with {\tt boxcoord(}{\sl object name}{\tt,0,0)} +at the lower left corner of the object, and {\tt boxcoord(}{\sl object +name}{\tt,1,1)} at its upper right. -\pagebreak \xection{\PSTricks and other tricks\label{Pstricks:}} This section applies only to a \pic processor (\dpic) that is capable of producing output compatible with @@ -2764,7 +2786,7 @@ which contains both horizontal text and text rotated $90^\circ$ along the vertical line. This rotation of text is also implemented by the macro {\tt rs\_box}, which is similar -to {\tt s\_box} but rotates its text argument by $90^\circ,$ a default angle +to {\tt s\_box} but rotates its argument by~$90^\circ,$ a default angle that can be changed by preceding invocation with \verb|define(`text_ang',|{\sl degrees}{\tt )}. The {\tt rs\_box} macro requires either \PSTricks or \TPGF and, like {\tt s\_box}, it calculates the @@ -2814,15 +2836,6 @@ macros such as {\tt rs\_box}, {\tt shade}, and {\tt rgbfill} mentioned previously can be used to hide code differences. \subsection{\Tikz\ with pic}\label{Tikzwithpic:} -%The line -% -%\vspace{\parsep} -%\noindent{\tt command "}{\sl string}{\tt "} -%\vspace{\parsep} -% -%\noindent -%allows arbitrary postprocessor code to be embedded in \pic output. However, -%one can also embed Arbitrary \pic output can be inserted into a {\tt \bsl{}tikzpicture} environment. The trick is to keep the \pic and \Tikz coordinate systems the same. @@ -2830,14 +2843,14 @@ The lines \vspace{\parsep} \noindent\verb|\begin{tikzpicture}[scale=2.54]|\\ -\noindent\verb|\end{tikzpicture}| +\noindent\verb|\end{tikzpicture}%| \vspace{\parsep} \noindent in the {\tt dpic -g} output must be changed to \vspace{\parsep} \noindent\verb|\begin{scope}[scale=2.54]|\\ -\noindent\verb|\end{scope}| +\noindent\verb|\end{scope}%| \vspace{\parsep} This is accomplished, for example, by adapting the {\tt \bsl{}mtotex} @@ -3010,6 +3023,7 @@ With raw \Postscript, \PDF, and \SVG output, the user is responsible for ensuring that the correct fonts are provided and for formatting the text. +\pagebreak Many thanks to the people who continue to send comments, questions, and, occasionally, bug fixes. What began as a tool for my own use changed into a hobby that has persisted, thanks to your help and advice. @@ -3181,6 +3195,8 @@ repaired by using an \Mfour loop: {\tt for\_(1,5,1,`s\_box(A[m4x]); move')} +Note that the loop index variable {\tt m4x} is automatically defined. + \item \bflistitem{Quotes}{quotes} Single quote characters are stripped in pairs by \Mfour, so the string @@ -3201,6 +3217,11 @@ repaired by using an \Mfour loop: not optimal or where the quotes could be omitted, and there are rare exceptions such as the {\tt parallel\_} macro. + To keep track of paired single quotes, parentheses ``{\tt (}, {\tt)},'' + braces ``\lbr, \rbr,'' and brackets ``{\tt [}, {\tt ]},'' use an editor + that highlights these pairs. For example, the vim editor highlights + single quotes with the command \verb|:set mps+=`:'|. + \item \bflistitem{Dollar signs}{dollarsigns} The $i$-th argument of an \Mfour macro is {\tt \$}$i,$ where $i$ is diff --git a/Master/texmf-dist/doc/latex/circuit-macros/doc/defines.tex b/Master/texmf-dist/doc/latex/circuit-macros/doc/defines.tex index cb3a1a5daeb..fdc1f85c352 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/doc/defines.tex +++ b/Master/texmf-dist/doc/latex/circuit-macros/doc/defines.tex @@ -8,11 +8,11 @@ % \newbox\Defbox -\newcommand{\macx}[2]{% - \phantomsection\pdfbookmark[subsection]{#1}{#2}#1} +%\newcommand{\macx}[2]{% +% \phantomsection\pdfbookmark[subsection]{#1}{#2}#1} \newcommand{\macrodef}[5]{%\begin{samepage}% -\phantomsection\pdfbookmark[subsection]{#1}{#2}% +\phantomsection\pdfbookmark[subsubsection]{#1}{#2}% \setbox\Defbox=\hbox{\tt #1#3}% \ifdim\wd\Defbox>\textwidth% \setbox\Defbox=\hbox{\parbox{\textwidth}{\tt #1#3}}\fi @@ -22,12 +22,26 @@ \hbox to \libwid{#4\hfill}\parbox[t]{\rightwid}% {\raggedright #5}% % \end{samepage}% - \vspace{\parsep}\\} + \vspace{\parsep}\\}% \newcommand{\seesect}[1]{ (\SR{#1})} +\newcommand{\Letter}[1]{\noindent% + \pdfbookmark[subsection]{#1}{#1}% + \hskip-2em\hbox to 2em{#1\label{#1}\hfill}\relax}% + +\newcommand{\LR}[1]{\hyperref[#1]{{#1}}\hskip1em} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \vspace{\abovedisplayskip} \noindent +\LR{A} \LR{B} \LR{C} \LR{D} \LR{E} \LR{F} \LR{G} \LR{H} \LR{I} \LR{J} +\LR{K} \LR{L} \LR{M} \LR{N} \LR{O} \LR{P} +\LR{R} \LR{S} \LR{T} \LR{U} \LR{V} \LR{W} \LR{X} +\\ + +\Letter{A}% \macrodef{above\_}{above_}{} {gen} {string position above relative to current direction} @@ -39,8 +53,8 @@ {cct} {draw an AC symbol ( 1-cycle sine wave); If arg 4 contains A, two arcs are drawn. The current drawing direction is default, otherwise Up, Down, - Left, Right, or at {\sl degrees} slant; e.g., - {\tt ebox; $\lbrace$ ACsymbol(at last [],{,}dimen\_/8) $\rbrace$} } + Left, Right, or at {\sl degrees} slant; \seesect{Twoterminal:} e.g.,\\ + {\tt ebox; $\lbrace$ACsymbol(at last [],{,}dimen\_/8)$\rbrace$}} \macrodef{adc}{adc}{({\sl width,height,nIn,nN,nOut,nS})} {cct} {ADC with defined width, height, and number of inputs {\tt In$i$}, @@ -107,6 +121,12 @@ {\sl modifiers}) } {gen} {arc with acute angle (obtuse if radius is negative), drawn in a [ ] block} +\macrodef{ArcAngle}{ArcAngle}{({\sl position, position, position, radius, + modifiers}) } + {gen} + {Arc angle symbol drawn ccw at arg2. Arg4 is the radius from arg2; + arg5 contains line attributes, e.g., {\tt thick linethick/2}} + \macrodef{arcd}{arcd}{({\sl center}, {\sl radius},{\sl start degrees},{\sl end degrees}) } {gen} @@ -139,6 +159,29 @@ radius},[dashed|dotted])} {gen} {line toward position 1 with rounded corner toward position 2} +\macrodef{arrester}{arrester}{(\linespec,{\sl chars}, + {\sl len}[:arrowhead ht], + {\sl ht}[:arrowhead wid] )} + {cct} +{ + {\sl Arg2 chars:} + {\tt G=} spark gap (default), + {\tt g=} general (dots), + {\tt E=} gas discharge, + {\tt S=} box enclosure, + {\tt C=} carbon block, + {\tt A=} electrolytic cell, + {\tt H=} horn gap, + {\tt P=} protective gap, + {\tt s=} sphere gap, + {\tt F=} film element, + {\tt M=} multigap. + {\sl Modifiers in arg2:} + {\tt R=} right orientation, + {\tt L=} left orientation, + {\tt D=} 3-terminal element for {\tt S, E} + only, with terminals {\sl A, B, G} + \seesect{Twoterminal:}} \macrodef{arrowline}{arrowline}{(\linespec)} {cct} {line (dotted, dashed permissible) with centred arrowhead @@ -176,6 +219,7 @@ Setting {\tt offset=}{\sl value} displaces the drawn input list in order to disambiguate the input connections when {\tt L} is used} +\Letter{B}% \macrodef{b\_}{b_}{} {gen} {blue color value} @@ -276,6 +320,7 @@ {cct} {buzzer, {\sl In1} to {\sl In3} defined, C=curved \seesect{Composite:}} +\Letter{C}% \macrodef{c\_fet}{c_fet}{(\linespec,L|R,P)} {cct} {left or right, plain or negated pin simplified MOSFET} @@ -387,6 +432,7 @@ \macrodef{csdim\_}{csdim_}{} {cct} {controlled-source width} +\Letter{D}% \macrodef{d\_fet}{d_fet}{(\linespec,L|R,P,S,E|S)} {cct} {left or right, N or P depletion MOSFET, normal or simplified, @@ -473,6 +519,14 @@ \macrodef{dcosine3D}{dcosine3D}{({\sl i,x,y,z})} {3D} {extract i-th entry of triple x,y,z} +\macrodef{DCsymbol}{DCsymbol}{(at {\sl position, len, ht,} + U|D|L|R|{\sl degrees}) } + {cct} + {A DC symbol (a dashed line below a solid line). + The current drawing direction is default, otherwise Up, Down, + Left, Right, or at {\sl degrees} slant; e.g., + {\tt source(up\_ dimen\_); $\lbrace$ DCsymbol(at last [],,,R) $\rbrace$} + \seesect{Twoterminal:} } \macrodef{delay\_rad\_}{delay_rad_}{} {cct} {delay radius} @@ -510,7 +564,7 @@ {difference of two triples} \macrodef{dimen\_}{dimen_}{} {cct} - {size parameter for circuit elements \seesect{Circuitscaling:}} + {size parameter for scaling circuit element bodies \seesect{Circuitscaling:}} \macrodef{dimension\_}{dimension_}{(\linespec,{\sl offset},{\sl label}, D|H|W|{\sl blank width},{\sl tic offset},{\sl arrowhead })} {gen} @@ -653,6 +707,7 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,% \macrodef{dturn}{dturn}{({\sl degrees ccw})} {darrow} {turn dline arg1 degrees left (ccw)} +\Letter{E}% \macrodef{E\_\_}{E__}{} {gen} {the constant $e$} @@ -692,14 +747,15 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,% \macrodef{endshade}{endshade}{} {gen} {end gray shading, see {\tt beginshade}} -\macrodef{Equidist3}{Equidist3}{({\sl Pos1, Pos2, Pos3, Result})} +\macrodef{Equidist3}{Equidist3}{({\sl Pos1, Pos2, Pos3, Result, distance})} {gen} {Calculates location named {\sl Result} equidistant from the first three positions, i.e.\ the centre of the circle passing through the three - positions} + positions. If arg5 is nonblank, it is equated to the radius.} \macrodef{expe}{expe}{} {gen} {exponential, base $e$} +\Letter{F}% \macrodef{f\_box}{f_box}{({\sl boxspecs},{\sl text},{\sl expr1},$\cdots$)} {gen} {like {\tt s\_box} but the text is overlaid on a box of identical size. @@ -778,6 +834,7 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,% {cct} {fuse symbol, type$=$ {\tt A|B|C|D|S|HB|HC|SB} or {\tt dA=D}\seesect{Twoterminal:}} +\Letter{G}% \macrodef{g\_}{g_}{} {gen} {green color value} @@ -809,10 +866,10 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,% \macrodef{grid\_}{grid_}{({\sl x},{\sl y})} {log} {absolute grid location} -\macrodef{ground}{ground}{(at {\sl location}, T, N|F|S|L|P[A]|E, U|D|L|R|{\sl - degrees})} +\macrodef{ground}{ground}{(at {\sl location}, T|{\sl stem length}, + N|F|S|L|P[A]|E, U|D|L|R|{\sl degrees})} {cct} - { ground, without stem for nonblank 2nd arg; + { ground, without stem for 2nd arg = T; {\tt N}=normal, {\tt F}=frame, {\tt S}=signal, {\tt L}=low-noise, {\tt P}=protective, {\tt PA}=protective alternate, @@ -828,6 +885,7 @@ B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|V|v|w|Z|chars,% {Gyrator two-port wrapper for {\tt nport}, {\tt N} omits pin dots; {\tt V} gives a vertical orientation \seesect{Composite:}} +\Letter{H}% \macrodef{H\_ht}{H_ht}{} {log} {hysteresis symbol dimension in {\tt L\_unit}s} @@ -867,6 +925,7 @@ n|e|s|w,{\sl length})} \macrodef{ht\_}{ht_}{} {gen} {height relative to current direction} +\Letter{I}% \macrodef{ifdpic}{ifdpic}{({\sl if true},{\sl if false})} {gen} {test if dpic has been specified as pic processor} @@ -942,6 +1001,7 @@ n|e|s|w,{\sl length})} along the line; {\tt P}= label only; {\tt N}=with {\tt NOT\_circle}; {\tt R}=circle to right of current direction } +\Letter{J}% \macrodef{j\_fet}{j_fet}{(\linespec,L|R,P,E)} {cct} {left or right, N or P JFET, without or with envelope @@ -952,10 +1012,12 @@ n|e|s|w,{\sl length})} one or more {\tt L[M][B]} for L and auxiliary contacts with make or break points; {\tt S[M][B]} for S and auxiliary contacts \seesect{Composite:}} +\Letter{K}% \macrodef{KelvinR}{KelvinR}{({\sl cycles},[R],{\sl cycle wid})} {cct} {IEEE resistor in a {\tt [ ]} block with Kelvin taps {\sl T1} and {\sl T2} \seesect{Composite:}} +\Letter{L}% \macrodef{L\_unit}{L_unit}{} {log} {logic-element grid size} @@ -1073,6 +1135,7 @@ n|e|s|w,{\sl length})} \macrodef{lthick}{lthick}{} {gen} {current line thickness in drawing units} +\Letter{M}% \macrodef{m4\_arrow}{m4_arrow}{(\linespec,{\sl ht},{\sl wid})} {gen} {arrow with adjustable head, filled when possible} @@ -1169,6 +1232,7 @@ n|e|s|w,{\sl length})} \macrodef{Mx\_pins}{Mx_pins}{} {log} {max number of gate inputs without wings} +\Letter{N}% \macrodef{n\_}{n_}{} {gen} {.n with respect to current direction} @@ -1254,6 +1318,7 @@ nw,nn,ne,ns,pin lgth,style, other commands})} Otherwise, arg1 can be a sequence of letters {\tt P|N} to define normal or negated inputs. \seesect{Logicgates:}} +\Letter{O}% \macrodef{opamp}{opamp}{(\linespec,{\sl label},{\sl label},{\sl size},{\sl chars}, other commands)} {cct} @@ -1283,6 +1348,7 @@ nw,nn,ne,ns,pin lgth,style, other commands})} \macrodef{OR\_rad}{OR_rad}{} {log} {radius of OR input face in {\tt L\_unit}s} +\Letter{P}% \macrodef{parallel\_}{parallel_}{(\char96{\sl elementspec}\char39,% \char96{\sl elementspec}\char39 $\ldots$)} {cct} @@ -1339,12 +1405,19 @@ nw,nn,ne,ns,pin lgth,style, other commands})} \macrodef{point\_}{point_}{({\sl angle})} {gen} {(radians) set direction cosines} +\macrodef{PerpTo}{PerpTo}{({\sl Pos1, Line, Point})} + {gen} + {{\sl Point} is the label for the point on {\sl Line} of the perpendicular + from {\sl Point} to {\sl Line}.} \macrodef{Point\_}{Point_}{({\sl integer})} {gen} {sets direction cosines in degrees \seesect{Placing:}} \macrodef{polar\_}{polar_}{({\sl x},{\sl y})} {gen} {rectangular-to polar conversion} +\macrodef{langle}{langle}{({\sl Start, End})} + {gen} + {Angle in radians from horizontal of the line from {\sl Start} to {\sl End}.} \macrodef{potentiometer}{potentiometer}{(\linespec,% {\sl cycles},{\sl fractional pos},{\sl length},$\cdots$)} {cct} @@ -1371,6 +1444,7 @@ nw,nn,ne,ns,pin lgth,style, other commands})} {cct} {pass transistor; {\tt L=} left orientation \seesect{Semiconductors:}} +\Letter{R}% \macrodef{r\_}{r_}{} {gen} {red color value} @@ -1450,9 +1524,12 @@ nw,nn,ne,ns,pin lgth,style, other commands})} {reverse polarity of 2-terminal element} \macrodef{rgbdraw}{rgbdraw}{({\sl color triple}, {\sl drawing commands})} {gen} - {color drawing for PSTricks, pgf, MetaPost, svg postprocessors; + {color drawing for PSTricks, pgf, MetaPost, SVG postprocessors; (color entries are 0 to 1 except for SVG entries which are 0 to 255), - see {\tt setrgb} \seesect{Semiconductors:}} + see {\tt setrgb} \seesect{Semiconductors:}. + Exceptionally, the color of + SVG arrows other than the default black has to be defined using + the {\tt outlined }{\sl string} and {\tt shaded }{\sl string} constructs.} \macrodef{rgbfill}{rgbfill}{({\sl color triple}, {\sl closed path})} {gen} {fill with arbitrary color (color entries are 0 to 1 except @@ -1470,6 +1547,11 @@ nw,nn,ne,ns,pin lgth,style, other commands})} \macrodef{right\_}{right_}{} {gen} {set current direction right \seesect{Placing:}} +\macrodef{RightAngle}{RightAngle}{({\sl Pos1, Pos2, Pos3, line len, + attributes})} + {gen} + {Draw a right-angle symbol at {\sl Pos2}, of size given by arg4. Arg5 = + line attributes, e.g., {\tt outlined "gray"}} \macrodef{rjust\_}{rjust_}{} {gen} {right justify with respect to current direction} @@ -1538,6 +1620,7 @@ nw,nn,ne,ns,pin lgth,style, other commands})} \macrodef{rvec\_}{rvec_}{({\sl x},{\sl y})} {gen} {location relative to current direction} +\Letter{S}% \macrodef{s\_}{s_}{} {gen} {.s with respect to current direction} @@ -1611,6 +1694,12 @@ nw,nn,ne,ns,pin lgth,style, other commands})} {gen} {define colour for lines and text, optionally named (default {\tt lcspec}); svg values are integers from 0 to 255\seesect{Semiconductors:}} +\macrodef{setkey\_}{setkey_}{({\sl string, key, default,}[N])} + {gen} + {Key-value definition. The string contains semicolon-separated terms + of the form {\sl key}{\tt =}{\sl value}. Then macro {\tt m4{\sl key}} + is defined using {\tt pushdef} to be {\tt ({\sl value})} but if arg4 is + nonbland, the parentheses are omitted.} \macrodef{setview}{setview}{({\sl azimuth degrees},{\sl elevation degrees})} {3D} {set projection viewpoint} @@ -1784,6 +1873,7 @@ nw,nn,ne,ns,pin lgth,style, other commands})} if arg4=B (button switch): arg3 = O{\tt|}C O=normally open, C=normally closed, if arg4=D: arg3 = same as for dswitch \seesect{Twoterminal:}} +\Letter{T}% \macrodef{ta\_xy}{ta_xy}{({\sl x, y})} {cct} {macro-internal coordinates adjusted for {\tt L|R}} @@ -1901,6 +1991,7 @@ nw,nn,ne,ns,pin lgth,style, other commands})} \macrodef{twopi\_}{twopi_}{} {gen} {$2\pi$} +\Letter{U}% \macrodef{ujt}{ujt}{(\linespec,R,P,E)} {cct} {unijunction transistor, right, P-channel, envelope @@ -1914,6 +2005,7 @@ nw,nn,ne,ns,pin lgth,style, other commands})} \macrodef{up\_}{up_}{} {gen} {set current direction up \seesect{Placing:}} +\Letter{V}% \macrodef{variable}{variable}{(`{\sl element}', {\tt [A|P|L|[u]N|[u]NN][C|S]},{\sl angle},{\sl length})} {cct} @@ -1961,6 +2053,7 @@ nw,nn,ne,ns,pin lgth,style, other commands})} {gen} {{\tt Vsum\_(A,B)} evaluates to {\tt A+B} with dpic, {\tt A+(B.x,B.y)} with gpic} +\Letter{W}% \macrodef{w\_}{w_}{} {gen} {.w with respect to current direction} @@ -1984,6 +2077,7 @@ nw,nn,ne,ns,pin lgth,style, other commands})} \macrodef{XOR\_off}{XOR_off}{} {log} {XOR and NXOR offset of input face} +\Letter{X}% \macrodef{xtal}{xtal}{(\linespec)} {cct} {quartz crystal\seesect{Twoterminal:}} diff --git a/Master/texmf-dist/doc/latex/circuit-macros/dpictools.pic b/Master/texmf-dist/doc/latex/circuit-macros/dpictools.pic index 8f39057417e..008360f9a45 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/dpictools.pic +++ b/Master/texmf-dist/doc/latex/circuit-macros/dpictools.pic @@ -3,7 +3,7 @@ # m4 macro NeedDpicTools or the pic statement copy "HOMELIB_/dpictools.pic" # when HOMELIB_ is defined or, generically, copy "<path>dpictools.pic" -# Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under # +# Circuit_macros Version 9.4, copyright (c) 2020 J. D. Aplevich under # # the LaTeX Project Public Licence in file Licence.txt. The files of # # this distribution may be redistributed or modified provided that this # # copyright notice is included and provided that modifications are clearly # diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/ASME_Y14-5.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/ASME_Y14-5.m4 new file mode 100644 index 00000000000..fbcf8eb0032 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/ASME_Y14-5.m4 @@ -0,0 +1,168 @@ +divert(-1) +# `datumarrow(linespec,wid,ht)' +define(`datumarrow',`line `$1' + M4_E: last line.end + datum_ht = ifelse(`$3',,`textht',`$3') + M4_P: vperp(last line,(datum_ht*2/sqrt(3))) + M4_X: datum_ht/lin_leng(last line) between M4_E and last line.start + {ifsvg(,`m4fshade(m4fill,')line from M4_E to M4_E+M4_P/2 dnl + then to M4_X then to M4_E-M4_P/2 then to M4_E ifsvg(`fill_(0)',`)')}') + +# `Y14_frame( arg1, arg2, ... ) + Each arg is a ;-separated sequence of 1 or more of + "string"[ wid val], + "(letter)", + or tolerance symbol. + The term "(letter)" expands to the circled letter. + The frame contains as many boxes as arguments.' + `Symbol definitions from ASME Y14.5 Appendix C' +define(`Y14_frameht',`textht*2') +define(`Y14_defaultwid',`textht*2') +# +define(`Y14_frame',`[ tmpthick = linethick; thicklines_ + right_; B:[ Y14_fram_($@) ] + box wid B.wid ht Y14_frameht at B + linethick = tmpthick ]') +define(`Y14_fram_',`ifelse(`$1',,, +`stacksplit_(`Y14',`$1',;) stackreverse_(`Y14') + Bx: [stackdo_(`Y14', + `[ifelse(index(Y14,`"('),0, + `circle diam textht*5/3 + patsubst(Y14,`"(\(.\))"',`"\1"') ht textht*0.8 at last circle', + index(Y14,`"'),0, + `Y14 ifinstr(Y14,`wid ',,`wid textht*2/3*(len(Y14)-2)')', + `Y14')] + move right max(last [].wid+textht/2,Y14_defaultwid) with .c at last []; ')] + ifelse(`$2',,,`{ line up Y14_frameht with .c at Here }') + Y14_fram_(shift($@))') ') + +# Each symbol definition has an abbreviated version +define(`Y14_straightness', +`line right textht*2 ') +define(`Y14_str_',`Y14_straightness($@)') + +define(`Y14_flatness', +`line right textht*3/4 then down textht left textht/2 \ + then left textht*3/2 then up textht right textht/2 \ + then right textht*3/4 ') +define(`Y14_fla_',`Y14_flatness($@)') + +define(`Y14_circularity',`circle diam textht*3/2 ') +define(`Y14_cir_',`Y14_circularity($@)') + +define(`Y14_cylindricity', +`circle diam textht + Y14_C: last circle + Y14_R: (Rect_(last circle.rad,-30)) + Y14_A: (Rect_(textht,60)) + line from Y14_C+Y14_R+Y14_A to Y14_C+Y14_R-Y14_A/2 + line from Y14_C-Y14_R-Y14_A to Y14_C-Y14_R+Y14_A/2 ') +define(`Y14_cyl_',`Y14_cylindricity($@)') + +define(`Y14_lineprofile',`arc from (textht,0) to (-textht,0) with .c at Here ') +define(`Y14_lin_',`Y14_lineprofile($@)') + +define(`Y14_surfaceprofile', +`arc from (textht,0) to (-textht,0) with .c at Here + line from last arc.start to last arc.end ') +define(`Y14_sur_',`Y14_surfaceprofile($@)') + +define(`Y14_perpendicularity', +`line from (-textht,0) to (textht,0) + line from (0,0) to (0,textht*3/2) ') +define(`Y14_per_',`Y14_perpendicularity($@)') + +define(`Y14_angularity', +`line from (textht*3/2,0) to (0,0) then to (textht*3/2,textht*sqrt(3)/2) ') +define(`Y14_ang_',`Y14_angularity($@)') + +define(`Y14_parallelism', +`line up textht*3/2*sqrt(3)/2 right textht*3/4 + move right textht*0.6 + line down textht*3/2*sqrt(3)/2 left textht*3/4 ') +define(`Y14_par_',`Y14_parallelism($@)') + +define(`Y14_symmetry', dnl obsolete! +`line from (-textht/2,0) to (textht/2,0) + line from (-textht/3,textht/4) to (textht/3,textht/4) + line from (-textht/3,-textht/4) to (textht/3,-textht/4) ') +define(`Y14_sym_',`Y14_symmetry($@)') + +define(`Y14_position', +`circle diam textht + line up textht*3/2 with .c at last circle + line right textht*3/2 with .c at last circle ') +define(`Y14_pos_',`Y14_position($@)') + +define(`Y14_concentricity', dnl obsolete! +`circle diam textht + circle diam textht/2 at last circle ') +define(`Y14_con_',`Y14_concentricity($@)') + +define(`Y14_circularrunout', +`arrow ht textht*0.8 wid textht*0.6 up textht*3/2 right textht*3/2 ') +define(`Y14_cir_',`Y14_circularrunout($@)') + +define(`Y14_totalrunout', +`arrow <-> ht textht*0.8 wid textht*0.6 \ + down textht*3/2 left textht*3/2 then right textht*1.1 \ + then up textht*3/2 right textht*3/2 ') +define(`Y14_tot_',`Y14_totalrunout($@)') + +define(`Y14_diameter', +`circle diam textht + line up textht*3/2 right textht*3/4 with .c at last circle') +define(`Y14_dia_',`Y14_diameter($@)') + +# The following are not Y14.5 but go well with them: + + `r_box(angle,pos,string) + Rotated text on a white background + (requires pstricks)' +define(`r_box', + `ifpstricks(`M4tmp: ifelse(`$2',,Here,`$2') + command sprintf("\rput{%g}(%g,%g){",`$1',crl(M4tmp.x),crl(M4tmp.y)) + f_box(`$3') at Orig + command "}%"')') +define(`crl',`int(`($1)'/scale*1000000)/1000000') + + `r_dimen(linespec,offset,label,tic offset,<->,pos) + dimension_ with rotated text on white background' +define(`r_dimen', + `M4tmp: dimension_(`$1',`$2',,,`$4',`$5') + r_box(rp_ang*rtod_,ifelse(`$6',,M4tmp+vec_(0,`$2'),`$6'),`$3')') + + `ctrline(linespec,cycle len) + Centerline' +define(`cdashl',0.1*scale) +define(`cgapl',0.03*scale) +define(`ctrline',`rpoint_(ifelse(`$1',,`to rvec_(linewid,0)',`$1')) + define(`m4h',ifelse(`$2',,1*scale,`$2'))dnl + m4n = int(rp_len/2/(m4h))*2+1 + for i=1 to m4n do { + line to rvec_(rp_len/m4n/2-cdashl/2-cgapl,0) + move to rvec_(cgapl,0); line to rvec_(cdashl,0); move to rvec_(cgapl,0) + line to rvec_(rp_len/m4n/2-cdashl/2-cgapl,0) } ') + + `ctrarcr(pos,radius,startang,endang,len) + Arc cr centerline' +define(`ctrarcr',`dnl + define(`m5h',ifelse(`$5',,1*scale,`$5'))dnl + rp_len = abs((`$2')*(`$4'-(`$3'))) + m5n = int(rp_len/2/(m5h))*2+1 + m5a = (rp_len/m5n/2-cdashl/2-cgapl)/(`$2') + m5s = cdashl/(`$2') + m5sa = `$3' + for m4irr=1 to m5n do { + arc from `$1'+(rect_(`$2',m5sa)) to `$1'+(rect_(`$2',m5sa+m5a)) \ + with .c at `$1' + m5sa = m5sa+m5a+cgapl/(`$2') + arc from `$1'+(rect_(`$2',m5sa)) to `$1'+(rect_(`$2',m5sa+m5s)) \ + with .c at `$1' + m5sa = m5sa+m5s+cgapl/(`$2') + arc from `$1'+(rect_(`$2',m5sa)) to `$1'+(rect_(`$2',m5sa+m5a)) \ + with .c at `$1' + m5sa = m5sa+m5a + } ') + +divert(0)dnl diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Antennas.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Antennas.m4 index 6053cd2e3f0..a2bb3be5f0d 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/Antennas.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Antennas.m4 @@ -31,9 +31,9 @@ sinclude(Circuit_macros.dim) s_box(T1) below rjust at A.T1 s_box(T2) below ljust at A.T2 s_box(`\tt (,{,}D)') at A.n above - A: antenna(at A.T+(elen_,0),,P) + A: antenna(at A.T+(elen_,0),dimen_*3/4,P) s_box(T) below at A.T - s_box(`\tt (,{,}P)') at A.n above + s_box(`\tt (,dimen\_*3/4,P)') at A.n above A: antenna(at A.T+(elen_,0),,F) s_box(T) below at A.T s_box(`\tt (,{,}F)') at A.n above diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Attention.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Attention.m4 new file mode 100644 index 00000000000..7f0b7127c7a --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Attention.m4 @@ -0,0 +1,41 @@ +.PS +# Attention.m4 +gen_init +scale = 2.54 +linethick = 0.2 + +define dot2 { (($1).x*($2).x + ($1).y*($2).y) } + + nlines = 128 + nr = 50 + innerrad = 1 + outerrad = 8 + diff = outerrad - innerrad +B: box wid outerrad*2 ht outerrad*2 outline "red" shaded "red" +C: circle rad outerrad at B + circle rad innerrad at C shaded "black" + P[0]: C+(innerrad,0) + t = 0 + for i=1 to nr do { + r = innerrad+i/nr*diff + t = t + i/nr*(-pi_/2)/nr + P[i]: C+(rect_(r,t)) + } + dth = twopi_/nlines + R: (cos(dth),-sin(dth)) + S: (sin(dth),cos(dth)) + for j = 0 to nlines-1 do { + for i=0 to nr do { + X: P[i]-C + Q[nr-i]: (dot2(R,X),dot2(S,X)) + C + } + shade(j%2, + fitcurve(P,nr) + line from P[nr] to Q[0] + fitcurve(Q,nr) + line from Q[nr] to P[0] + ) + for i=0 to nr do { P[i]: Q[nr-i] } + } + +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Autoencoder.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Autoencoder.m4 new file mode 100644 index 00000000000..92a81ac9509 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Autoencoder.m4 @@ -0,0 +1,82 @@ +.PS +# Masked_Autoencoder.m4 +gen_init +NeedDpicTools + + circlerad = 0.2 + circlesep = 0.5 + rowsep = 0.9 + arrowht = arrowht*0.8 + arrowwid = arrowwid*1.4 + linethick = 1 + +define plan { + m = 0 + for i=1 to 4 do { + for j=1 to ncircles[i] do { + exec sprintf("C[i,j]: circle thick 1.6 at Here \"\large\sf $%g\"",m+j) + if i>1 then { + if "$1"=="" then { + for k=1 to ncircles[i-1] do { arrow from C[i,j] to C[i-1,k] chop } } + } + if j!=ncircles[i] then { move right_ circlesep from C[i,j] } + } + m += ncircles[i] + case(i, + move to C[1,1]+(-circlesep/2,-rowsep), + move to C[2,1]+(0,-rowsep), + move to C[3,1]+(circlesep/2,-rowsep), ) + } + } + gridsiz = 0.78/4 +define grid { [ SW: 0,0 + for i=1 to $1 do { + move to (0,(0.5-i)*gridsiz) + exec sprintf("fv = $%g",2+i) + for j=1 to $2 do { fl = 1-(int(fv / 2^(j-1)) % 2) + box wid gridsiz ht gridsiz outlined "gray" shaded rgbstring(fl,fl,fl) } + } ]} +define cxt { + m = 1 + for i=2 to 4 do { + for j=1 to ncircles[i] do { + exec sprintf("narrows = $%g",m) + for k=1 to narrows do { + exec sprintf("cnum = $%g",m+k) + arrow from C[i,j] to C[i-1,cnum] chop + } + m += narrows+1 + } } } + + array(ncircles,3,4,4,3) + plan() + for j=1 to 3 do { + sprintf("$\hat{x}_%g$",j) at C[1,j].n above + sprintf("$x_%g$",j) at C[4,j].s+(0,-2bp__) below + } + "V" at 0.5 between C[2,1].w and C[1,1].w + "W$^2$" at 0.5 between C[3,1].w and C[2,1].w + "W$^1$" at 0.5 between C[3,1].w and C[4,1].w + +GV: grid(3,4,0,15,6) with .w at C[2,4]+(circlerad*2,rowsep/2) + "$=\hbox{M}^{\hbox{V}}$" at GV.e ljust +G2: grid(4,4,13,0,0,13) with .w at (GV.w,C[3,4]+(circlerad*2,rowsep/2)) + "$=\hbox{M}^{\hbox{V}^2}$" at G2.e ljust +G1: grid(4,3,1,5,1,1) with .w at (GV.w,C[4,3]+(circlerad*2,rowsep/2)) + "$=\hbox{M}^{\hbox{V}^1}$" at G1.e ljust + + move to (GV.x+3*circlesep,C[1,1].y) + plan(3,1,2,1,2,2,1,2,1,2,2,3,1,2) + for i=2 to 4 do { + rgbdraw(0.5,0.5,0.5, + cxt(2,1,3,0,0,2,1,3, 0,4,1,2,3,4,0,0, 0,4,1,2,3,4,0) ) + cxt(0,1,1,1,1,0, 2,2,3,0,2,2,3,2,2,3, 0,0,3,1,3,4) + } + for j=1 to 3 do { sprintf("$x_%g$",j) at C[4,j].s+(0,-2bp__) below } + arrow dotted from C[1,2].n up circlesep/2; "$p(x_2)$" above + "$p(x_3|x_2)$" at (C[1,3]+(circlesep/2,0),last "") above + arrow dotted from C[1,3] to last "".s chop circlerad chop textoffset + "$p(x_1|x_2,x_3)$" at (C[1,1]+(-circlesep/2,0),last "") above + arrow dotted from C[1,1] to last "".s chop circlerad chop textoffset + +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/CctTable.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/CctTable.m4 index f7e47d0758e..443c398b46c 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/CctTable.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/CctTable.m4 @@ -85,6 +85,9 @@ vm = 0.28 } move down 0.25; right_ { {pvcell ; move;"`{\tt pvcell}'" ljust} + move right_ hm + {arrester ; move ;"`{\tt arrester}'" ljust} } + .PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Chuck.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Chuck.m4 index 152d4b87db1..2e36626c5b7 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/Chuck.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Chuck.m4 @@ -1,53 +1,28 @@ .PS -threeD_init s_init(Views) sinclude(tst.dim) -# # Chuck.m4 +threeD_init s_init(Views) sinclude(tst.dim) # +################################################################# divert(-1) - `Dimensioning for diagrams - dimension_(linespec,vert offset, - label,blank width,tic offset,<-|->,R)' -define(`dimension_',`rpoint_(`$1') ; { - define(`m4h',`(rp_len ifelse((`$4'),(),,`-($4)'))')dnl - ifelse((`$2'),(),,`if (`$2') != 0 then { - {move to rvec_(0, ifelse(`$5',,`sign($2)*3.6bp__',`$5')) - line to rvec_(0,`$2')} - {move to rvec_(rp_len,ifelse(`$5',,`sign($2)*3.6bp__',`$5')) - line to rvec_(0,`$2')} - move to rvec_(0,`$2') }') - if m4h > 2*arrowht then { - { line ifelse(`$6',,<-,index($6,<),0,<-) to rvec_(m4h/2,0) - ifelse((`$4'),(),,`move to rvec_(($4),0)') - line ifelse(`$6',,->,eval(index($6,>)>0),1,->) to rvec_(m4h/2,0) } - } else { - { arrow from rvec_(-arrowht*1.5,0) to Here - arrow from rvec_(rp_len+arrowht*1.5,0) to rvec_(rp_len,0) } - } - define(`m4txt',`ifelse(`$7',, - `ifelse(index(`$3',"),0,`$3',"`$3'")', - `ifdef(`pstricks_',`sprintf("\rput{%g}(0,0){`$3'}",rp_ang*rtod_)',`"$3"')')') - ifelse(`$3',,,`m4txt at rvec_(rp_len/2,0)') - }') -define(`rottxt', - `ifdef(`pstricks_',`sprintf("\rput{%g}(0,0){`$2'}",`$1')')') - `rotate(angle,at pos, objects at origin)' -define(`rotate', - `ifdef(`pstricks_',`M4tmp: "" ifelse(`$2',,Here,`$2') - sprintf("\rput{%g}(%g,%g){`$3'}",`$1',M4tmp.x/scale,M4tmp.y/scale)')') - `r_box(angle,pos,string)' -define(`crl',`int(`($1)'/scale*1000000)/1000000') + `r_box(angle,pos,string) + Rotated text on a white background + (requires pstricks)' define(`r_box', - `ifdef(`pstricks_',`M4tmp: ifelse(`$2',,Here,`$2') + `ifpstricks(`M4tmp: ifelse(`$2',,Here,`$2') command sprintf("\rput{%g}(%g,%g){",`$1',crl(M4tmp.x),crl(M4tmp.y)) - w_box(`$3') at Orig + f_box(`$3') at Orig command "}%"')') - `r_dimen(linespec,offset,label,tic offset,<->,pos)' +define(`crl',`int(`($1)'/scale*1000000)/1000000') + + `r_dimen(linespec,offset,label,tic offset,<->,pos) + dimension_ with rotated text on white background' define(`r_dimen', `M4tmp: dimension_(`$1',`$2',,,`$4',`$5') r_box(rp_ang*rtod_,ifelse(`$6',,M4tmp+vec_(0,`$2'),`$6'),`$3')') - `ctrline(linespec,len)' + `ctrline(linespec,len) + Centerline' define(`cdashl',0.1*scale) define(`cgapl',0.03*scale) define(`ctrline',`rpoint_(ifelse(`$1',,`to rvec_(linewid,0)',`$1')) @@ -58,7 +33,8 @@ define(`ctrline',`rpoint_(ifelse(`$1',,`to rvec_(linewid,0)',`$1')) move to rvec_(cgapl,0); line to rvec_(cdashl,0); move to rvec_(cgapl,0) line thick dimensionth to rvec_(rp_len/m4n/2-cdashl/2-cgapl,0) } ') - `ctrarcr(pos,radius,startang,endang,len)' + `ctrarcr(pos,radius,startang,endang,len) + Arc cr centerline' define(`ctrarcr',`dnl define(`m5h',ifelse(`$5',,1*scale,`$5'))dnl rp_len = abs((`$2')*(`$4'-(`$3'))) @@ -79,6 +55,7 @@ define(`ctrarcr',`dnl } ') divert(0)dnl +################################################################# scale = 25.4*2 tic = 3.6bp__ @@ -90,9 +67,9 @@ command "{\sf" #include(Lettering.m4) #Letter_init -define(`visible',`linethick_(visibleth)') -define(`hidden',`linethick_(hiddenth)') -define(`dimension',`linethick_(dimensionth) +define(`visible_thick',`linethick_(visibleth)') +define(`hidden_thick',`linethick_(hiddenth)') +define(`dimension_thick',`linethick_(dimensionth) arrowwid = 1.5*arrowwid; arrowht = 1.5*arrowht; ') d1 = 230 @@ -104,7 +81,7 @@ d3 = 140 hiddenth = dimensionth Orig: Here -visible +visible_thick D3: circle diam d3 at Orig D2: circle diam d2 at Orig @@ -115,42 +92,32 @@ visible X1: rect_(rr,thet) P1: rect_(rr+r,thet) -dimension +dimension_thick cross(at (P1.x,-P1.y)) cross(at (-P1.x,P1.y)) # Top outer visible line -visible -# arc ccw from (-P1.x,h) to (-X1.x,X1.y) rad r with .c at (-P1.x,P1.y) - arcs = atan2(P1.x-X1.x,P1.y-X1.y) - n = 0 - nn = 8 - for i = 0 to nn do {P[n]:(-P1.x,P1.y)+(rect_(r,-twopi_/4+i/nn*arcs)); n=n+1} - for i = 1 to nn do {P[n]:Orig+(rect_(rr,pi_-thet-i/nn/2*(pi_-2*thet))); n=n+1} - n = n-1 - for i = 1 to n do { P[n+i]:(-P[n-i].x,P[n-i].y) } - fitcurve(P,2*n) -# top arc -# arc cw to X1 rad rr with .c at Orig -# arc ccw from X1 to (P1.x,h) rad 4 with .c at P1 +visible_thick +# top arcs + arc ccw from (-P1.x,h) to (-X1.x,X1.y) with .c at (-P1.x,P1.y) + arc cw to X1 with .c at Orig + arc ccw from X1 to (P1.x,h) with .c at P1 # right end line from (P1.x,h) to (305/2,h) then to (305/2,32/2) then left 40-3 arc ccw rad 3 line down 32-2*3 arc ccw rad 3 -dimension { +dimension_thick { r_dimen(up 32 with .c at (305/2-5,0),0,32) arrow <- up 8 right 8 then right 4 from last arc.sw "3$\,$R" ljust r_dimen(up h*2 at (305/2,0),-10,110) -}; visible +}; visible_thick line right 40-3 then to (305/2,-h) then to (P1.x,-h) -# arc ccw to (X1.x,-X1.y) rad r with .c at P1.x,-P1.y -# bottom arc - for i = 0 to 2*n do { P[i]: (-P[2*n-i].x,-P[i].y) } - fitcurve(P,2*n) -# arc cw to (-X1.x,-X1.y) rad rr with .c at Orig -# arc ccw to (-P1.x,-h) rad r with .c at (-P1.x,-P1.y) +# bottom arcs + arc ccw to (X1.x,-X1.y) with .c at P1.x,-P1.y + arc cw to (-X1.x,-X1.y) with .c at Orig + arc ccw to (-P1.x,-h) with .c at (-P1.x,-P1.y) # left end line from (-P1.x,-h) to (-305/2,-h) then to (-305/2,-25/2) then right 25 down; arc ccw rad 3 @@ -163,7 +130,7 @@ dimension { arc ccw rad 3 line to (-305/2,25/2) then to (-305/2,h) then to (-P1.x,h) -dimension +dimension_thick # centre ctrline(right 305-30 with .c at Orig,60) ctrline(up d1+10 with .c at Orig,) @@ -172,7 +139,7 @@ dimension Q: line invis from BX.n to BX.s; R: line invis from BX.se up 10 left 10 X: Intersect_(Q,R) line <-> from BX.se to X then to (X.x,-X.y) then to BX.nw - r_box(90,BX,`3$\,$R') + r_box(90,BX,```3$\,$R''') # Drill centres D[1]: 35,sqrt(85^2-35^2) @@ -185,41 +152,42 @@ dimension ctrline(from D[2] to D[4] chop 15) ctrline(to rvec_(2*15,0)) ctrline(from D[2]+vec_(-15,0) to D[2]+vec_(15,0)) -visible +visible_thick for i=1 to 4 do { circle diam 16 at D[i] for j = 0 to 7 do { arcr(D[i],23/2,j/8*twopi_,(j+3/4)/8*twopi_) ccw } } -hidden +hidden_thick for s=-1 to 1 by 2 do { - line dashed from (-305/2,s*h) to (305/2,s*h) - line dashed from (-305/2,s*30.6) to (305/2,s*30.6) - line dashed from (-305/2,s*21.1) to (305/2,s*21.1) - line dashed from (-305/2+25+2,s*21.1) to (305/2,s*21.1) - line dashed dashwid/2 from (-305/2+25,s*25/2) down -s*(40/2-25/2-2); - if s<0 then { arc dashed dashwid/4 ccw rad 2 } else { up; arc dashed dashwid/4 cw rad 2 } - line dashed to ((305/2,0),Here) - for k = -1 to 1 by 2 do { - move to (k*305/2,s*(30.6+10)) - { dashline(from Here+(0,s*9.5/2) right -k*16,,dashwid/2) - dashline(right -k*9.5/2/2 up -s*9.5/2,,dashwid/3) - dashline(left -k*9.5/2/2 up -s*9.5/2,,dashwid/3) - dashline(left -k*16,,dashwid/2) - dashline(from Here+(-k*16,0) up s*9.5,,dashwid/2.5) } - { dashline(from Here+(0,s*11/2) right -k*36.5,,dashwid/2) - dashline(right -k*11/2/2 up -s*11/2,,dashwid/3) - dashline(left -k*11/2/2 up -s*11/2,,dashwid/3) - dashline(left -k*36.5,,dashwid/2) - dashline(from Here+(-k*36.5,0) up s*11,,dashwid/2.5) } - { dashline(from Here+(0,s*13/2) right -k*32,,dashwid/2) - dashline(down s*13,,dashwid/2) - dashline(left -k*32,,dashwid/2) } - ctrline(right -k*20 chop -3 chop 0); ctrline(right -k*20 chop 0 chop -3) + line dashed from (-305/2,s*h) to (305/2,s*h) + line dashed from (-305/2,s*30.6) to (305/2,s*30.6) + line dashed from (-305/2,s*21.1) to (305/2,s*21.1) + line dashed from (-305/2+25+2,s*21.1) to (305/2,s*21.1) + line dashed dashwid/2 from (-305/2+25,s*25/2) down -s*(40/2-25/2-2); + if s<0 then { arc dashed dashwid/4 ccw rad 2 } \ + else { up; arc dashed dashwid/4 cw rad 2 } + line dashed to ((305/2,0),Here) + for k = -1 to 1 by 2 do { + move to (k*305/2,s*(30.6+10)) + { dashline(from Here+(0,s*9.5/2) right -k*16,,dashwid/2) + dashline(right -k*9.5/2/2 up -s*9.5/2,,dashwid/3) + dashline(left -k*9.5/2/2 up -s*9.5/2,,dashwid/3) + dashline(left -k*16,,dashwid/2) + dashline(from Here+(-k*16,0) up s*9.5,,dashwid/2.5) } + { dashline(from Here+(0,s*11/2) right -k*36.5,,dashwid/2) + dashline(right -k*11/2/2 up -s*11/2,,dashwid/3) + dashline(left -k*11/2/2 up -s*11/2,,dashwid/3) + dashline(left -k*36.5,,dashwid/2) + dashline(from Here+(-k*36.5,0) up s*11,,dashwid/2.5) } + { dashline(from Here+(0,s*13/2) right -k*32,,dashwid/2) + dashline(down s*13,,dashwid/2) + dashline(left -k*32,,dashwid/2) } + ctrline(right -k*20 chop -3 chop 0); ctrline(right -k*20 chop 0 chop -3) + } } - } -dimension +dimension_thick # bottom dimension_(from (-305/2,-h) to (305/2,-h),-(rr*1.1-h),"305",20pt__) # outer radii @@ -233,7 +201,7 @@ dimension r_dimen(from (Rect_(d3/2,180-12)) to (Rect_(d3/2,-12)),,140,,,(Rect_(25,-12))) # bolt hole placement diameter - r_dimen(from Orig to (Rect_(85,-43)),,`85$\,$R',,->,(Rect_(20,-43))) + r_dimen(from Orig to (Rect_(85,-43)),,``85$\,$R'',,->,(Rect_(20,-43))) # left slot r_dimen(from (-305/2+6,-25/2) up 25,0,25) r_dimen(from (-305/2,-26) right 40,0,40) @@ -256,8 +224,8 @@ dimension # arrow <- down 30 left 30 from D[3] chop 16/2 chop 0 then left 5 # "16 DRILL 23 CBORE" rjust "4 HOLES" rjust - arrow <- from (-305/2,30.6+10+2) up 5 left 5 then up 13 - s_box(SEE (A)) with .sw at Here+(-5pt__,2pt__) +# arrow <- from (-305/2,30.6+10+2) up 5 left 5 then up 13 +# s_box(SEE (A)) with .sw at Here+(-5pt__,2pt__) command "}%" .PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Conn.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Conn.m4 index 204ad5d96a4..1e5fd5781a6 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/Conn.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Conn.m4 @@ -59,9 +59,9 @@ Y: [ B: [ tbox(V_2) { `"\tt tbox(V\_2)"' at last [].sw below ljust } - tbox(V_1,,,<) with .sw at last [].se+(0.75,0) + tbox(V_1,,,<) with .sw at last [].se+(1.25,0) { `"\tt tbox(V\_1,{,},<)"' at last [].s below } - tbox(V_1,,,<>) with .sw at last [].se+(0.75,0) + tbox(V_1,,,<>) with .sw at last [].se+(1.25,0) { `"\tt tbox(V\_1,{,},<>)"' at last [].s below } ] with .nw at T.sw+(0,-0.2) diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Connectors.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Connectors.m4 index 5c3207c17da..64ed3e6854c 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/Connectors.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Connectors.m4 @@ -3,22 +3,26 @@ log_init include(ics.m4) + ifelse(ifpgf(T)`'ifpstricks(T)`'ifpsfrag(T),T,`command "{\small\sf"') # ArduinoUno -# "{\sf Arduino Uno Rev 3}" at last [].Connector.s below Ar: ArduinoLeonardo #with .sw at last [].se+(0.25,0) - "{\sf Arduino Leonardo}" at last [].Connector.s below RPI: RPi with .sw at last [].se+(0.25,0) - "{\sf Raspberry Pi 4 GPIO}" at last [].GPIO.s below HD: HDMI_micro with .nw at last [].ne+(0.25,0.5) - "\sf Micro" rjust at HD.Base.sw+(-2bp__,10bp__) "\sf HDMI" rjust S: USB_C_Socket with .sw at (HD.e.x+0.25,RPI.s.y) - "\sf USB-C Socket" at S.Base.s below - "\sf B12" at S.B12.end above ljust - "\sf B1" at S.B1.end above ljust - "\sf A1" at S.A1.end above rjust - "\sf A12" at S.A12.end above rjust + + ifelse(ifpgf(T)`'ifpstricks(T)`'ifpsfrag(T),T,`command "}"') + + "{\sf Arduino Leonardo}" at Ar.Connector.s below + "{\sf Raspberry Pi 4 GPIO}" at RPI.GPIO.s below + "\sf Micro" rjust at HD.Base.sw+(-2bp__,0) "\sf HDMI" rjust + + "\sf USB-C Socket" at S.Base.s below + "\sf B12" at S.B12.end above ljust + "\sf B1" at S.B1.end above ljust + "\sf A1" at S.A1.end above rjust + "\sf A12" at S.A12.end above rjust .PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Coxeter.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Coxeter.m4 new file mode 100644 index 00000000000..4d186f9dbe6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Coxeter.m4 @@ -0,0 +1,38 @@ +.PS +# Coxeter.m4 +darrow_init + + customlinethick = 1.5 + + linethick = customlinethick + define(`dotrad_',`(3/2*linethick pt__)') + + Orig: (0,0) + for i=0 to 4 do { P[i]: dot(at (i*linewid,0)) } + line from Orig to P[4] + P[-1]: dot(at (Rect_(linewid, 120))); line to Orig + P[-2]: dot(at (Rect_(linewid,-120))); line to Orig + + Pa: dot(at P[4]+(linewid,0)); "$a$" at last [].n above + arrow from P[4] to Pa chop linewid/4 + Pd: dot(at Pa+(linewid,0)); "$d$" at last [].w rjust + Pe: dot(at Pd+(linewid,0)); "$e$" at last [].n above + Pf: dot(at Pe+(linewid,0)); "$f$" at last [].n above + Pb: dot(at Pd+(Rect_(linewid,120))); "$b$" at last [].w rjust + Pc: dot(at Pd+(Rect_(linewid,-120))); "$c$" at last [].w rjust + line from Pb to Pd then to Pc + line from Pd to Pf + + define(`customarc', + `pushdef(`dfillcolor',`0.7,0.7,0.7') linethick_(0.4); dnl + Darc(`$1',linewid, (`$2')*dtor_, (`$3')*dtor_, + thick=linewid/6; wid=linewid*0.3; ht=linewid/6; ends=<->)dnl + linethick_(customlinethick); popdef(`dfillcolor')') + + customarc((linewid,-linewid/3), 25,155); "$d$" at (linewid,linewid*2/3) + customarc((2*linewid,-linewid/3), 25,155); "$e$" at (2*linewid,linewid*2/3) + customarc((3*linewid,-linewid/3), 25,155); "$f$" at (3*linewid,linewid*2/3) + customarc(Orig,130,230); "$a$" at (Rect_(linewid,180)) + customarc(Orig, 10,110); "$b$" at (Rect_(linewid, 60)) + customarc(Orig,-110,-10); "$c$" at (Rect_(linewid,-60)) +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Flow.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Flow.m4 index f4fa766f1a9..f0f8a842f0b 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/Flow.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Flow.m4 @@ -3,19 +3,41 @@ gen_init ifdef(`FlowchartDefs_',,`include(FlowchartDefs.m4)') -# Could use xcolor with option dvipsnames but define color here for portability: define(`Thistle',`rgbstring(0.85,0.75,0.85)')dnl define(`RubineRed',`rgbstring(0.81,0,0.35)')dnl define(`YellowGreen',`rgbstring(0.68,1,0.18)')dnl define(`SeaGreen',`rgbstring(0.13,0.70,0.67)')dnl define(`Goldenrod',`rgbstring(0.85,0.65,0.13)')dnl +define(`Beaublue',`rgbstring(0.74,0.83,0.9)')dnl +define(`Celadon',`rgbstring(0.67,0.88,0.69)')dnl linethick_(1.0) arrowwid = 0.05 arrowht = 0.1 - fillval = 0.8 - down - + fillval = 0.9 + maxpsht = 20 + +define(`shad',`shaded rgbstring(0.9,0.8,0.7)') +define(`Below',`with .nw at last [].sw+(0,-0.25)') +TL: Here +Simple: [ + Fbox("\tt F{}box",,shad) + Ftest("\tt F{}test",,shad) Below + Fdata("\tt F{}data") Below + Fprep("\tt F{}prep",) Below + Fkeying("\tt F{}keying") Below + Fkeyboard("\tt F{}keyboard") Below + Fdocument("\tt F{}document",,shaded rgbstring(0.9,0.8,0.7)) Below + Fdelay("\tt F{}delay",,shaded Beaublue) Below + Fdisplay("\tt F{}display",,shaded Celadon) Below + Fstored("\tt F{}stored",,shaded Thistle) Below + Fconnect(,,shaded Thistle) Below + Fconnect("45",wid boxwid ht boxht:45,shaded Thistle) \ + with .w at last [].e+(boxht/8,0) + "\tt F{}connect" at last [].nw + (0,boxht/6) + ] with .nw at TL+(0.1,0); move from Simple.nw to TL +#showbox_ +Complex: [ Case: Fcase(, "Test 1",[Fbox("Task 1",, shaded Thistle); W:last [].W; N:last [].N arrow down linewid/3 from last [].S @@ -28,35 +50,32 @@ Case: Fcase(, "\sl .N" at Case.N rjust above; "\sl .S" at Case.S rjust below "\sl .E" at Case.E ljust; "\sl .W" at Case.W rjust - "\sl Case statement" below at Case.s+(0,-0.2) - move to Case.nw+(-12bp__,10bp__) + "\tt F{}case" below at Case.s #+(0,-0.1) Whiledo: Fwhiledo("$i < n$",,,Fbox("Task"),"T" above ljust at Test.E) \ with .nw at Case.ne+(0.25,0) "\sl .N" at Whiledo.N rjust; "\sl .S" at Whiledo.S rjust below "\sl .E" at Whiledo.E ljust; "\sl .W" at Whiledo.W rjust - "\sl While-do" below at Whiledo.s+(0,-0.2) + "\tt F{}whiledo" below at Whiledo.s Repeatuntil: Frepeatuntil("$n \geq 5$",,,Fbox("Task"), - "T" at Test.E above ljust) with .nw at Whiledo.sw + (0.25,-1) + "T" at Test.E above ljust) with .nw at Whiledo.sw + (0.25,-0.5) "\sl .N" at Repeatuntil.N rjust above; "\sl .S" at Repeatuntil.S rjust below "\sl .E" at Repeatuntil.E ljust; "\sl .W" at Repeatuntil.W rjust - "\sl Repeat-until" below at Repeatuntil.s+(0,-0.2) + "\tt F{}repeatuntil" below at Repeatuntil.se +(-0.0,0.2) Ifthenelse: Fifthenelse("$A<B$",,, Fbox("False"), Fbox("True",ht fboxht*1.2 wid fboxwid)dnl - ) with .nw at Repeatuntil.sw +(0.5,-0.5) + ) with .nw at Repeatuntil.sw +(-0.5,-0.3) "\sl .N" at Ifthenelse.N rjust above; "\sl .S" at Ifthenelse.S below rjust - "\sl .E" at Ifthenelse.E ljust; "\sl .W" at Ifthenelse.W rjust - "\sl If-then-else" below at Ifthenelse.s+(0,-0.3) \ - "\sl (the True and False tasks are optional)" + "\sl .E" wid 12bp__ at Ifthenelse.E ljust; "\sl .W" at Ifthenelse.W rjust + "\tt F{}ifthenelse" below at Ifthenelse.s+(0,-0.15) -# Compound statement: -[ right +Compound: [ right ellipse shaded YellowGreen "Start" arrow right linewid/2 @@ -71,9 +90,12 @@ Ifthenelse: Fifthenelse("$A<B$",,, "T" at Test.E above ljust), "T" at Test.E above ljust) with .N at Here - A: arrow down 0.25 from last [].S ] with .nw at Case.sw + (-12bp__,-0.7) + A: arrow down 0.25 from last [].S ] with .nw at Case.sw + (-12bp__,-0.3) + + "\sl Compound statements" at last [].A.end+(0.1,0) ljust above - "\sl Compound statement" below at last [].A.end + ] with .nw at Simple.ne+(0.1,0) +#showbox_ Example: [ fillvalue = 0.8; awid = linewid/2; right_ Start: ellipse wid boxwid/2 ht boxwid/3 shaded "green" @@ -99,10 +121,12 @@ Example: [ fillvalue = 0.8; awid = linewid/2; right_ arrow from RT.E to (B3.S,RT.E) then to B3.S B4: Fbox(`"Extra\c{c}\~ao"') with .S at B3.N+(0,awid) arrow from B3.N to B4.S - arrow right_ awid from B4.E +# arrow right_ awid from B4.E + arrow up_ awid from B4.N B5: Fbox(`"Conclus\~ao"') - ellipse wid boxwid/2 ht boxwid/3 shaded "red" at (B5.S,Start) - arrow down_ awid from B5.S to last ellipse.n -] with .nw at last [].sw+(0,-fboxht) + arrow up_ awid from B5.N + ellipse wid boxwid/2 ht boxwid/3 shaded "red" # at (B5.S,Start) +# arrow down_ awid from B5.S to last ellipse.n +] with .nw at last [].Compound.sw+(0,2.5*fboxht) .PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/FlowchartDefs.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/FlowchartDefs.m4 index bb039338da8..2e5c3ade9e7 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/FlowchartDefs.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/FlowchartDefs.m4 @@ -1,8 +1,9 @@ divert(-1) + Google flowchart display symbol FlowchartDefs.m4 `Some experimental flow-chart macros. - In the following, every subchart is in - [] brackets, with .N, .S, .E and .W + In the following, every block (subchart) is + in [] brackets, with .N, .S, .E and .W internally defined. Follow this convention if you create compound constructs. @@ -19,18 +20,17 @@ divert(-1) define(`FlowchartDefs_') - `Default sizes:' + `Default sizes:' define(`fboxwid',linewid*2) define(`fboxht',linewid*0.75) define(`farrowht',linewid*0.5) - `Fbox( "text", wid expr ht expr, - attributes ) The basic task box: arg1 may - be 1 or more label strings. Attributes - include box line and fill specs. - To adjust the box size to the size of - the typeset text, see the \boxdims macro - in the manual. Example: + `Fbox( "text", wid expr ht expr, attributes ) + The basic task box: arg1 may be 1 or more + text strings. Attributes include box + line and fill specs. To adjust the box + size to the size of the typeset text, see + the \boxdims macro in the manual. Example: Fbox("$x < 1$",, shaded rgbstring(0.46,0.53,0.63))' define(`Fbox',`[ boxwid = fboxwid; boxht = fboxht @@ -38,26 +38,149 @@ define(`Fbox',`[ boxwid = fboxwid; boxht = fboxht N: Box.n; S:Box.s; E:Box.e; W: Box.w `$4']') - `If-then + `Fdelay("text",wid expr ht expr,attributes)' +define(`Fdelay',`[ boxwid = fboxwid; boxht = fboxht + Box: box invis `$2' + N: Box.n; S: Box.s; E: Box.e; W: Box.w + arc from Box.se-(Box.ht/2,0) to Box.ne-(Box.ht/2,0) \ + with .c at Box.e-(Box.ht/2,0) `$3' + line to Box.nw to Box.sw to Box.se-(Box.ht/2,0) `$3' + ifelse(`$1',,,`$1' at Box) + `$4']') + + `Fdisplay("text",wid expr ht expr,attributes)' +define(`Fdisplay',`[ boxwid = fboxwid; boxht = fboxht + Box: box invis `$2' + N: Box.n; S: Box.s; E: Box.e; W: Box.w + NE: Box.ne-(Box.ht/4,0); SE: (NE,Box.s) + NW: Box.nw+(Box.ht/2,0); SW: (NW,Box.s) + ifelse(`$3',,,` + box wid NE.x-NW.x ht Box.ht with .ne at NE `$3' invis + line from W to NW then to SW then to W `$3' invis ') + arc from SE to NE with .c at E-(Box.ht*2/3,0) `$3' + line to NW `$3' + arc from NW to W with .c at (NW,Box)+(Box.ht/4,-Box.ht/4) `$3' + arc from W to SW with .c at (NW,Box)+(Box.ht/4,Box.ht/4) `$3' + line to SE `$3' + ifelse(`$1',,,`$1' at Box) + `$4']') + + `Fstored("text",wid expr ht expr,attributes)' +define(`Fstored',`[ boxwid = fboxwid; boxht = fboxht + Box: box invis `$2' + r = Box.ht*7/8; d = r - sqrt(r^2-(Box.ht/2)^2) + N: Box.n; S: Box.s; E: Box.e-(d,0); W: Box.w + NW: Box.nw+(d,0); SW: (NW,Box.s); NE: Box.ne; SE: Box.se + ifelse(`$3',,,` + box wid NE.x-NW.x ht Box.ht with .nw at NW `$3' invis ') + arc from NW to SW with .c at Box.w+(r,0) `$3'; round + line to SE; round + arc cw to NE with .c at E+(r,0) fill_(1); round + line to NW `$3'; round + ifelse(`$1',,,`$1' at Box) + `$4']') + + `Fconnect("text", + wid expr ht expr[:U|D|L|R|angle], attributes)' +define(`Fconnect',`[ boxht = fboxht; boxwid = boxht + define(`m4wh',`m4Leftstr(`$2')')dnl + define(`m4wid',`patsubst(patsubst(m4wh, ht .*),^wid ,)')dnl + ifelse(m4wid,,`define(`m4wid',boxwid)')dnl + define(`m4ht',`patsubst(m4wh,.* *ht *,)')dnl + ifelse(m4ht,,`define(`m4ht',boxht)')dnl + define(`m4cpt',`m4Rightstr(`$2')')dnl + setdir_(ifelse(m4cpt,,`ifdef(`m4a_',rp_ang*rtod_,0)',m4cpt)) +# {Box: [lbox(m4wid,m4ht,invis)]} + W: Here; NW: vec_(0,m4ht/2); N: vec_(m4wid/2,m4ht/2); NE: vec_(m4wid,m4ht/2) + SW: vec_(0,-m4ht/2); S: vec_(m4wid/2,-m4ht/2); SE: vec_(m4wid,-m4ht/2) + E: vec_(m4wid,0); C: 3/8 between W and E + line from 1/2 between NW and N \ + to NW to SW to S to E to N to 1/2 between NW and N `$3' + ifelse(`$1',,,`$1' at C) + `$4'; resetdir_ ]') + + `Fdata("text",wid expr ht expr, + xslant,attributes)' +define(`Fdata',`[ boxwid = fboxwid; boxht = fboxht + Box: box invis `$2' + xs = ifelse(`$3',,fboxht/6,`($3)/2') + NE: Box.ne+(xs,0); SE: Box.se-(xs,0) + NW: Box.nw+(xs,0); SW: Box.sw-(xs,0) + N: Box.n; E: Box.e; S: Box.s; W: Box.w + line from N to NE then to SE then to SW then to NW then to N \ + ifelse(`$4',,`fill_(fillval)',`$4') + ifelse(`$1',,,`$1' at Box) + `$5']') + + `Fprep("text",wid expr ht expr,attributes)' +define(`Fprep',`[ boxwid = fboxwid; boxht = fboxht + Box: box invis `$2' + NE: Box.ne-(fboxht/4,0); E: Box.e; SE: (NE,Box.s); N: Box.n + NW: Box.nw+(fboxht/4,0); W: Box.w; SW: (NW,Box.s); S: Box.s + line from N to NE to E to SE to SW to W to NW to N \ + ifelse(`$3',,`fill_(fillval)',`$3') + ifelse(`$1',,,`$1' at Box) + `$4']') + + `Fkeyboard("text",wid expr ht expr,attributes)' +define(`Fkeyboard',`[ boxwid = fboxwid; boxht = fboxht + Box: box invis `$2' + NW: Box.nw-(0,min(Box.ht/4,Box.wid/16)); W: Box.w; SW: Box.sw; S: Box.s + NE: Box.ne+(0,min(Box.ht/4,Box.wid/16)); E: Box.e; SE: Box.se; N: 0.5 between NW and NE + line from N to NE to SE to SW to NW to N ifelse(`$3',,`fill_(fillval)',`$3') + ifelse(`$1',,,`$1' at Box) + `$4']') + + `Fdocument("text",wid expr ht expr,attributes)' +define(`Fdocument',`[ boxwid = fboxwid; boxht = fboxht + Box: box invis `$2'; Q: move from Box.sw to Box.se + NE: Box.ne; E: Box.e; SE: Box.se-(0,Box.ht/4); N: Box.n + NW: Box.nw; W: Box.w; SW: Box.sw-(0,Box.ht/4); S: Box.s-(0,Box.ht/4) + line from SE to NE to NW to SW `$3' + arc to S with .c at (0.5 between SW and S) + (0,Box.ht) `$3' + arc to SE with .c at (0.5 between S and SE) -(0,Box.ht) cw \ + ifelse(`$3',,,``$3' shaded rgbstring(1,1,1)') + ifelse(`$1',,,`$1' at Box) + `$4']') + + `Fkeying("text",wid expr ht expr,attributes)' +define(`Fkeying',`[ boxwid = fboxwid; boxht = fboxht + Box: box `$2' invis + hsq = (Box.wid/2)^2-(Box.ht/2)^2 + if hsq > 0 then { d = Box.wid/2-sqrt(hsq) } else { d = 0 } + W: Box.w; NW: Box.nw+(d,0); N: Box.n; NE: Box.ne-(d,0) + E: Box.e; SE: Box.se-(d,0); S: Box.s; SW: Box.sw+(d,0) + if hsq >= 0 then { x = 0 } else { x = sqrt(-hsq) } + box wid NE.x-NW.x ht N.y-S.y `$3' invis at Box + arc from SE to NE with .c at Box - (x,0) `$3'; round(,,`$3') + line to NW `$3'; round(,,`$3') + arc to SW with .c at Box + (x,0) `$3'; round(,,`$3') + line to SE `$3'; round(,,`$3') + ifelse(`$1',,,`$1' at Box) + `$4']') + + `If-then Ftest( "text", wid expr ht expr, attributes )' define(`Ftest',`[boxwid = fboxwid*0.8; boxht = fboxht*1.4 Box: box ifelse(`$2',,,`$2') invis N: Box.n; S: Box.s; E: Box.e; W: Box.w - line from 0.5 between last box.n and last box.e \ - to last box.e then to last box.s then to last box.w then to last box.n \ - then to 0.5 between last box.n and last box.e \ + line from 0.5 between last box.n and last box.e to last box.e to last box.s \ + to last box.w to last box.n to 0.5 between last box.n and last box.e \ ifelse(`$3',,`fill_(fillval)',`$3') ifelse(`$1',,,`$1' at Box) `$4']') - `case statement - Fcase(wid expr ht expr, - "Test string 1",task, ..., - "Test string n",task)' - `arg1 adjusts the size of the tests - A task is a flow subchart with internal names .E and .S defined - The test blocks are labeled Test1, Test2, ... and the tasks are - labeled Task1, Task2, ... ' + `Fcase: case statement + Fcase(wid expr ht expr, + "Test string 1"[:attributes],task, ..., + "Test string n"[:attributes],task )' + `arg1 adjusts the size of the tests + The optional attributes for each string apply + to the Ftest containing the string. + The Ftest blocks are labeled Test1, Test2, ... + A task is a flow subchart with internal + names .E and .S defined. The tasks are + labeled Task1, Task2, ... ' define(`Fcase',`[ down; S: Here; sx = S.x Fcaseloop_(1,$@) ifelse(`$2',,`E:S; W:S; N:S', @@ -66,7 +189,8 @@ define(`Fcase',`[ down; S: Here; sx = S.x arrow from E to (E,S) then to S ]') define(`Fcaseloop_',`ifelse(`$3',,, - `Test`$1': Ftest(`$3',`$2') with .N at S + `Test`$1': Ftest(patsubst(`$3',":.*,"),`$2', + ifinstr(`$3',":,`patsubst(`$3',.*":,)')) with .N at S Task`$1': `$4' with .nw at Test`$1'.E+(linewid/2,min(Test`$1'.ht,fboxht)/2) arrow right linewid/4 from Test`$1'.E \ then down Test`$1'.E.y-Task`$1'.W.y then to Task`$1'.W @@ -76,11 +200,12 @@ define(`Fcase',`[ down; S: Here; sx = S.x Fcaseloop_(incr($1),`$2',shift(shift(shift(shift($@)))))')') define(`Fcasearrow_',`ifelse(`$3',,, `arrow from Task`$1'.E to (E,Task`$1'.E) - Fcasearrow_(incr($1),`$2',shift(shift(shift(shift($@)))))')') + Fcasearrow_(incr($1),,shift(shift(shift(shift($@)))))')') - `while statement with explicit test - Fwhiledo("test text", wid x ht y, attributes, task spec ) - The task structure is given label Task ' + `while statement with explicit test + Fwhiledo("test text", wid x ht y, + attributes, task spec ) + The task structure is given label Task ' define(`Fwhiledo',`[ down Test: Ftest(`$1',`$2',`$3') arrow right linewid/2 from Test.E @@ -92,24 +217,26 @@ define(`Fwhiledo',`[ down arrow to Test.n `$5']') - `repeat statement with explicit test - Frepeatuntil("test",wid x ht y,attributes, task spec ) - The task structure is given label Task ' + `repeat statement with explicit test + Frepeatuntil("test",wid x ht y, + attributes, task spec ) + The task structure is given label Task ' define(`Frepeatuntil',`[ N: Here Task: ifelse(`$4',,Here,`$4' with .N at N) W: Task.W - arrow down linewid/3 + arrow from Task.S down linewid/3 Test: Ftest(`$1',`$2',`$3') E: Task.E+(linewid/2+max(0,Test.e.x-Task.e.x),0) arrow from Test.e to (E,Test) then to E then to Task.E S: Test.S `$5']') - `if-then-else - Fifthenelse( "test", wid x ht y, attributes, - left tasks, right tasks) - The left task structure is given label Ltask and the right - task structure is given label Rtask ' + `if-then-else + Fifthenelse( "test", wid x ht y, attributes, + left tasks, right tasks) + The left task structure is given label + Ltask and the right task structure is + given label Rtask ' define(`Fifthenelse',`[ Test: Ftest(`$1',`$2',`$3') N: Test.N Ltask: ifelse(`$4',,`Test.S; W:Test.W; LS:Ltask', diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Geometry.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Geometry.m4 new file mode 100644 index 00000000000..ae0a661012d --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Geometry.m4 @@ -0,0 +1,46 @@ +.PS +# Geometry.m4 +gen_init + scale = 5/4 + + A: Here; "A" at A above + B: A+(-1,-3.5); "B" at B below rjust + C: B+(4.6,0); "C" at C below ljust + AB: line from A to B + BC: line from B to C + CA: line from C to A + + PerpTo(A,BC,L); "L" at L below + AL: line from A to L; RightAngle(A,L,C) + + angleLAC = atan2(C.x-L.x,A.y-L.y) + S: move from A to (sin(angleLAC/2),-cos(angleLAC/2)) + AW: line from A to Intersect_(S,BC) + W: Here; "W" at W below rjust + + PerpTo(C,AB,N); "N" at N above rjust + CN: line from C to N; RightAngle(C,N,B) + + PerpTo(B,CA,M); "M" at M above + CM: line from B to M; RightAngle(B,M,C) + + H: Intersect_(CN,AL); "H" at H +(4bp__,10bp__) + + thinlines_ + Equidist3(B,L,N,CC1,c1rad); C1: circle rad c1rad at CC1 + Equidist3(B,W,N,CC2,c2rad); C2: circle rad c2rad at CC2 + Equidist3(B,C,N,CC3,c3rad); C3: circle rad c3rad at CC3 + Equidist3(W,C,M,CC4,c4rad); C4: circle rad c4rad at CC4 + thicklines_ + + Z: LCintersect(AW,CC2,C2.rad); "Z" at Z+(-5bp__,-5bp__) + HZ: move from H to Z + Y: LCintersect(HZ,CC4,C4.rad,R); "Y" at Y above + X: LCintersect(HZ,CC2,C2.rad); "X" at X above rjust + + Loopover_(`P',`dot(at P)',X,Y,Z) + + line dashed from X to Y chop -linewid/2 + RightAngle(A,Z,Y) + +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Grounds.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Grounds.m4 index e93fadf33c2..84427ac8dc9 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/Grounds.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Grounds.m4 @@ -1,5 +1,5 @@ .PS -# `Grounds.m4' +# Grounds.m4 cct_init sep = 0.65 @@ -22,7 +22,7 @@ D: B+(0,11bp__) "{\tt (,{,}E)}" at (GE,D)} -GS: ground(,,S) +GS: ground(,dimen_/2,S) move right sep GS90: [ground(,,S,90) ] with .n at Here move right sep from GS90.n @@ -36,7 +36,7 @@ GPA: ground(,T,PA) C: Here+(0,-0.5) E: C+(0,11bp__) - "{\tt (,{,}S)}" at (GS,C) + "{\tt (,dimen\_/2,S)}" at (GS,C) "{\tt (,{,}S,90)}" at (GS90,E) "{\tt (,{,}Q)}" at (GQ,C) "{\tt (,{,}L)}" at (GL,E) diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Heathkit.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Heathkit.m4 index 8d3ec5ad001..4127c8287e2 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/Heathkit.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Heathkit.m4 @@ -5,9 +5,13 @@ cct_init maxpswid = 11 maxpsht = 8.5 -# Set small text size - iflatex(`ifpsfrag(`textht = 7.5bp__; textoffset = 0.5bp__', - `latexcommand({\tiny\sf)') ') +# Set small text size: tikz-pgf changes +# text offset for globally-defined tiny font +# so we define tsf() to set size locally + iflatex(`ifpsfrag(`define(`tsf',"`$1'") dnl + textht = 7.5bp__; textoffset = 0.5bp__', + `define(`tsf',`"\tiny\sf `$1'"')')', + `define(`tsf',"`$1'")') # Grid parameters picwid = 8.5 @@ -52,32 +56,32 @@ ifdpic(` # Circuit board Board: box dashed thick 2 wid 58*g ht 55*g with .se at L1.end+(-7*g,-2*g) P: box invis wid 12*g ht 4*g with .s at Board.sw+(26*g,0) - { "POWER SUPPLY" ljust "CIRCUIT BOARD" ljust at P.w+(g,0) } + { tsf(POWER SUPPLY) ljust tsf(CIRCUIT BOARD) ljust at P.w+(g,0) } line dashed thick 2 from P.sw to P.nw; line dashed thick 2 to P.ne line dashed thick 2 to P.se -define Pad { P`$1': box fill_(1) "$1" } +define Pad { P`$1': box fill_(1) tsf($1) } # Board connections on the right Pad(1) at (Board.e,L1.end) - line from P1.e to L1.end "RED" above + line from P1.e to L1.end tsf(RED) above Pad(2) at (Board.e,L1.start) - line from P2.e to L1.start "RED" above + line from P2.e to L1.start tsf(RED) above Pad(3) at (Board.e,L2.end) - GRN1: line left 4*g from L2.start "GRN" above ; ground - GRN2: line from P3.e to L2.end "GRN" above + GRN1: line left 4*g from L2.start tsf(GRN) above ; ground + GRN2: line from P3.e to L2.end tsf(GRN) above spline <-> from GRN2.end+(-g,0) up 2.5*g right 0.5*g then up 5*g left g \ then up 2.5*g right 0.5*g - box invis fill_(1) wid 3*g ht g "\SI{6}{VAC}" at L2.c-(2*g,0) + box invis fill_(1) wid 3*g ht g tsf(6 VAC) at L2.c-(2*g,0) Pad(4) at P3-(0,3*g) - line right_ 3*g from P4.e "BRN" above + line right_ 3*g from P4.e tsf(BRN) above arrow down_ 2*g ht arrowht*2/3 - "TO DIAL" "LAMPS" at Here+(0,-g)below + tsf(TO DIAL) tsf(LAMPS) at Here+(0,-g)below Pad(5) at (Board.e,L3.end) - line from P5.e to L3.end "BLU" above + line from P5.e to L3.end tsf(BLU) above Pad(7) at (Board.e,L3.start) - line from P7.e to L3.start "BLU" above + line from P7.e to L3.start tsf(BLU) above Pad(6) at 0.5 between P5 and P7 - line from P6.e to L3.c "BLU-YEL" above + line from P6.e to L3.c tsf(BLU-YEL) above # Power wiring, plug, switch define(`socket',`[ @@ -88,19 +92,19 @@ define(`socket',`[ line from Outer.e to R.e ] ') - BLK: line from L4.end to (int(L4.end.x/g+8)*g,L4.end.y) "BLK" below ; dot + BLK: line from L4.end to (int(L4.end.x/g+8)*g,L4.end.y) tsf(BLK) below ; dot b = lin_leng(BLK) - BLKYEL: line from L4.start right_ b "BLK-YEL" above ; dot - BLKGRN: line from L5.end right_ b "BLK-GRN" below ; dot - BLKRED: line from L5.start right_ b "BLK-RED" above ; dot + BLKYEL: line from L4.start right_ b tsf(BLK-YEL) above ; dot + BLKGRN: line from L5.end right_ b tsf(BLK-GRN) below ; dot + BLKRED: line from L5.start right_ b tsf(BLK-RED) above ; dot line right_ g; PL: dot line from BLKYEL.end right g then to Here+(0,-g) fuse(down_ 3*g,D) - rlabel(,"\SI{3}{\ampere} FUSE" rjust "SLOW BLOW") + rlabel(,tsf(3 A FUSE) rjust tsf(SLOW BLOW)) line to (Here.x,int(Here.y/g)*g-g); dot Sckt1: socket at Here+(5*g,0) - line from Sckt1.w to (PL,Sckt1); A: dot; "A" rjust - line from Sckt1.e right_ lin_leng(last line); B: dot; "B" ljust + line from Sckt1.w to (PL,Sckt1); A: dot; tsf(A) rjust + line from Sckt1.e right_ lin_leng(last line); B: dot; tsf(B) ljust Sckt2: socket at (Sckt1,P1+(0,6*g)) line from Sckt2.w to (A,Sckt2); dot line from Sckt2.e to (B,Sckt2); dot @@ -117,22 +121,22 @@ define(`plug',`[ w = dimen_*2/3; q = 0.25*w line from T2 to (T2,F.c)-(0,2*g) ]') PP: plug with .F.c at Sckt3+(0,-8*g) - "\SI{120}{VAC}" ljust "\SI{50/60}{\hertz}" ljust at PP.e + tsf(120 VAC) ljust tsf(50/60 Hz) ljust at PP.e define(`pwrswitch',`[ right; circlerad = 1.75*g/2 - C1: circle "1" - C4: circle "4" - C2: circle "2" with .n at C1.s+(0,-C1.rad) - C5: circle "5" - C3: circle "3" with .n at C2.s+(0,-C1.rad) - C6: circle "6" + C1: circle tsf(1) + C4: circle tsf(4) + C2: circle tsf(2) with .n at C1.s+(0,-C1.rad) + C5: circle tsf(5) + C3: circle tsf(3) with .n at C2.s+(0,-C1.rad) + C6: circle tsf(6) hatchbox(wid g ht C2.n.y-C3.s.y,0.05) with .w at 0.5 between C5.e and C6.e ]') Psw: pwrswitch with .C4.e at Sckt1+(0,-4*g) - "POWER" at Psw.w+(-2*g,0) rjust + tsf(POWER) at Psw.w+(-2*g,0) rjust arrow up Psw.ht/2 at Psw.e+(1.5*g,0) - "ON" above; "OFF" at last arrow.start below + tsf(ON) above; tsf(OFF) at last arrow.start below line from Psw.C1.w to (A,Psw.C1) then to A line from Psw.C2.w to (A,Psw.C2); contline to (Here,PP.T1) then to PP.T1 line from PP.T2 to (B,PP.T2) then to (B,L4.end) then to L4.end @@ -140,12 +144,12 @@ define(`pwrswitch',`[ right; circlerad = 1.75*g/2 # Bottom connections Pad(25) at Board.se+(-3*g,0) - R516: resistor(down_ 6*g from P25.s); rlabel(,"R516" rjust "22"); ground(,T) + R516: resistor(down_ 6*g from P25.s); rlabel(,tsf(R516) rjust tsf(22)); ground(,T) dot(at P25.s+(0,-g)); line right_ 5*g - reversed(`source',down_ 4*g,B); llabel(,"No 49" ljust "HI" ljust "TEMP") + reversed(`source',down_ 4*g,B); llabel(,tsf(No 49) ljust tsf(HI) ljust tsf(TEMP)) line to (P25,Here); dot t = linethick; linethick_(0.4) - arrow <- from P25.s+(0,-g/2) right_ 2*g up_ g/4; "BRN" ljust; linethick_(t) + arrow <- from P25.s+(0,-g/2) right_ 2*g up_ g/4; tsf(BRN) ljust; linethick_(t) Pad(24) at P25+(-4*g,0) line from P24.s to (P24,R516.end); ground(,T) @@ -153,28 +157,28 @@ define(`pwrswitch',`[ right; circlerad = 1.75*g/2 line from P23.s to (P23,R516.end); ground(,T) Pad(22) at Board.sw+(0,3*g) - R514: resistor(right_ 8*g from P22.e); llabel(,"R514") - rlabel(,"\SI{680}{\kilo{}}") + R514: resistor(right_ 8*g from P22.e); llabel(,tsf(R514)) + rlabel(,tsf(680 k)) dot; { ground } line to (P23,Here) then to P23.n # Diode bridge BE: dot(at (P24,L1.c)) d1h = lin_leng(L1)/2 - diode(left_ d1h up_ d1h); rlabel(,,"D508") + diode(left_ d1h up_ d1h); rlabel(,,tsf(D508)) BN: dot - diode(left_ d1h down_ d1h); rlabel("D506") + diode(left_ d1h down_ d1h); rlabel(tsf(D506)) BW: dot - diode(from BE left_ d1h down_ d1h); llabel(,,"D509") + diode(from BE left_ d1h down_ d1h); llabel(,,tsf(D509)) BS: dot - diode(left_ d1h up_ d1h); llabel(D507) - capacitor(down_ from BN to BS,C); llabel("C507",,\num{.22}) + diode(left_ d1h up_ d1h); llabel(tsf(D507)) + capacitor(down_ from BN to BS,C); llabel(tsf(C507),,tsf(.22)) line from BE to P24.n line from BN to P2.w line from BS to P1.w spline <-> from (BE.x+2*g,BS.y) \ up d1h/2 right g/2 then up d1h left g then up d1h/2 right g/2 - box invis fill_(1) ht 2*g wid 2*g "57" "VAC" at last spline.c + box invis fill_(1) ht 2*g wid 2*g tsf(57) tsf(VAC) at last spline.c # Left board connections Pad(21) at (Board.w,BW); line from P21.e to BW @@ -184,41 +188,40 @@ define(`pwrswitch',`[ right; circlerad = 1.75*g/2 # Transistor with circles define(`hbi_tr',`[ linewid = linewid*4/4.16 Q: bi_tr(`$1',`$2',`$3',E) - E: circle rad m4_xyU at 5/4 between Q.A1 and Q.E "E" - B: circle rad m4_xyU at 5/4 between Q.A1 and Q.B "B" - C: circle rad m4_xyU at 5/4 between Q.A1 and Q.C "C" + E: circle rad m4_xyU at 5/4 between Q.A1 and Q.E tsf(E) + B: circle rad m4_xyU at 5/4 between Q.A1 and Q.B tsf(B) + C: circle rad m4_xyU at 5/4 between Q.A1 and Q.C tsf(C) ]') # Interior circuits line from P6.w left 2*g; ground line from P5.w left 4*g; dot - { C504: capacitor(down_ 4*g,C); llabel("C504",,\num{.22}); ground(,T) } - D504: diode(left_ 5*g); rlabel(,"D504"); dot + { C504: capacitor(down_ 4*g,C); llabel(tsf(C504),,tsf(.22)); ground(,T) } + D504: diode(left_ 5*g); rlabel(,tsf(D504)); dot { C505: capacitor(down_ to (Here,C504.end),C+L) - rlabel("C505",\num{100},\SI{75}{\volt}); ground(,T) } + rlabel(tsf(C505),tsf(100),tsf(75 V)); ground(,T) } line right_ to (Here,P7); dot - { D503: reversed(`diode',to (D504.start,Here)); llabel(,"D503") + { D503: reversed(`diode',to (D504.start,Here)); llabel(,tsf(D503)) line to P7.w } d3 = lin_leng(L3) spline <-> from C504.start+(g/2,0) \ up d3/4 right g/4 then up d3*2/4 left g/2 then up d3/4 right g/4 - box invis fill_(1) ht g wid 4*g "\SI{100}{VAC}" \ - at last spline.c+(-g,0) + box invis fill_(1) ht g wid 4*g tsf(100 VAC) at last spline.c+(-g,0) down_ Q503: hbi_tr(,R,P) with .E at (C505,P3) line from Q503.C.e to (P25,Q503.C) then to P25.n line from Q503.B.s to (Q503.B.x,Q503.E.y-4*g) - R513: resistor(down_ 5*g); llabel(,"R513" ljust "1500"); ground(,T) + R513: resistor(down_ 5*g); llabel(,tsf(R513) ljust tsf(1500)); ground(,T) line from P19.e to (BW-(2*g,0),P19) then up Q503.E.y-P19.y+2*g - R511: resistor(right_ 5*g); llabel(,"R511"); rlabel(,\num{470}); + R511: resistor(right_ 5*g); llabel(,tsf(R511)); rlabel(,tsf(470)); line to (Q503.E,Here) then to Q503.E.n line from P20.e to (BW,P20) then up R513.end.y-P20.y resistor(up_ lin_leng(R513)) - rlabel(,"R512" ljust "5600" ljust "\SI{1}{\watt}") + rlabel(,tsf(R512) ljust tsf(5600) ljust tsf(1 W)) line to (Here,Q503.B) then to Q503.B.w - "Q503" "S2091 HI TEMP" "CONTROL" at Q503.E+(1.5*g,4*g) - D505: reversed(`diode',right_ from Q503.E.e to (C504,Q503.E)); llabel(,"D505") + tsf(Q503) tsf(S2091 HI TEMP) tsf(CONTROL) at Q503.E+(1.5*g,4*g) + D505: reversed(`diode',right_ from Q503.E.e to (C504,Q503.E)); llabel(,tsf(D505)) line to P3.w line from P4.w left_ 2*g then up P3.y-P4.y; dot @@ -226,23 +229,23 @@ define(`hbi_tr',`[ linewid = linewid*4/4.16 { Pad(8) at (Here,Board.n) } { line to P8.s } R505: resistor(down_ to (Here,P6)) - llabel(,"R505" ljust "\SI{12}{\kilo{}}"); dot + llabel(,tsf(R505) ljust tsf(12 k)); dot { C503: capacitor(down_ to (Here,C505.end),C+L) - rlabel(,"C503" rjust "100" rjust "\SI{70}{\volt}") + rlabel(,tsf(C503) rjust tsf(100) rjust tsf(70 V)) ground(,T) } right_ Q502: hbi_tr(,R) with .B at (R511.start,Here) line from Q502.C.e to R505.start line from Q502.B.e to R505.end R504: resistor(down_ from Q502.B.s to (Q502.B,C505.end)) - rlabel(,"R504" rjust "\SI{51}{\kilo{}}"); ground(,T) - "Q502" "TA7311" "REGULATOR" "CONTROL" at Q502.C+(-1*g,3.5*g) + rlabel(,tsf(R504) rjust tsf(51 k)); ground(,T) + tsf(Q502) tsf(TA7311) tsf(REGULATOR) tsf(CONTROL) at Q502.C+(-1*g,3.5*g) Pad(9) at (Q502.E,Board.n) line from Q502.E.n to P9.s Pad(10) at (Q502.B-(9*g,0),Board.n) R502: resistor(left_ from Q502.E.w to (P10,Q502.E)) - rlabel(,"R502"); llabel(,\num{150}); dot + rlabel(,tsf(R502)); llabel(,tsf(150)); dot Pad(11) at (Board.w,Q502.E) Pad(14) at P11+(0,2.5*g) @@ -257,7 +260,7 @@ define(`hbi_tr',`[ linewid = linewid*4/4.16 line from Q501.B.s to P9.n line from Q501.C.e to (P8,Q501.C) then to P8.n line from Q501.E.w to (P10,Q501.E) then to P10.n - "Q501" "2N3055" "REGULATOR" at Q501.n+(0,2*g) + tsf(Q501) tsf(2N3055) tsf(REGULATOR) at Q501.n+(0,2*g) line from P14.e to (P10,P14); dot Pad(17) at (Board.w,R511) @@ -270,84 +273,81 @@ define(`hbi_tr',`[ linewid = linewid*4/4.16 line from P17.e to Q504.E.w line from Q504.B.s to (Q504.B,R513.start) R508:resistor(down_ to (Here,R513.end)) - llabel(,"R508" ljust "680"); ground(,T) + llabel(,tsf(R508) ljust tsf(680)); ground(,T) dot(at (P10,P15)) { line to P10.s } { resistor(down_ 5*g) llabel(, - "R510" ljust "225" ljust "\SI{10}{\watt}" ljust "\SI{5}{\hbox{\%}}") + tsf(R510) ljust tsf(225) ljust tsf(10 W) ljust tsf(5 \%)) line to Q504.C.n } - R503:resistor(left_ 10*g); rlabel(,"R503") - { "290" "\SI{10}{\watt} \SI{5}{\hbox{\%}}" at last [].s+(0,-1.3*g) } + R503:resistor(left_ 10*g); rlabel(,tsf(R503)) + { tsf(290) tsf(10 W 5 \%) at last [].s+(0,-1.3*g) } dot line to (Here,Q504.B) - resistor(right_ to Q504.B.w); llabel(,"R507"); rlabel(,\num{100}) + resistor(right_ to Q504.B.w); llabel(,tsf(R507)); rlabel(,tsf(100)) line from P15.e to R503.end -# "Q504" "40409" "REGULATOR" at Q504.C+(3.5*g,3*g) - "Q504" "40409" "REGULATOR" at Q504.n+(-2*g,3*g) - resistor(left_ from R502.end to (R503.end,P11)); rlabel(,"R501") - {"390" "\SI{5}{\watt} \SI{5}{\hbox{\%}}" at last [].s+(0,-1.3*g)} + tsf(Q504) tsf(40409) tsf(REGULATOR) at Q504.n+(-2*g,3*g) + resistor(left_ from R502.end to (R503.end,P11)); rlabel(,tsf(R501)) + {tsf(390) tsf(5 W 5 \%) at last [].s+(0,-1.3*g)} line to P11.e - resistor(right_ from P16.e to (R514.end,P16)); llabel(,"R506") - rlabel(,\num{82}) + resistor(right_ from P16.e to (R514.end,P16)); llabel(,tsf(R506)) + rlabel(,tsf(82)) line down P16.y-P17.y; dot dot(at (R514.end,P11)) - C501: capacitor(down_ 6*g,C+); llabel("C501") - {"100" ljust "\SI{30}{\volt}" ljust at last [].s+(0,-g) below } + C501: capacitor(down_ 6*g,C+); llabel(tsf(C501)) + {tsf(100) ljust tsf(30 V) ljust at last [].s+(0,-g) below } ground(,T) dot(at (Here.x+4*g,P11.y)) - ZD501: reversed(`diode',down_ lin_leng(C501),Z); llabel("ZD501"); ground(,T) + ZD501: reversed(`diode',down_ lin_leng(C501),Z); llabel(tsf(ZD501)); ground(,T) dot(at (R514.end,P15)) - C502: capacitor(down_ 6*g,C+); llabel("C502") - {"100" ljust "\SI{30}{\volt}" ljust at last [].s+(0,-g) below } + C502: capacitor(down_ 6*g,C+); llabel(tsf(C502)) + {tsf(100) ljust tsf(30 V) ljust at last [].s+(0,-g) below } ground(,T) dot(at (Here.x+4*g,P15.y)) - ZD502: reversed(`diode',down_ lin_leng(C502),Z); llabel("ZD502"); ground(,T) + ZD502: reversed(`diode',down_ lin_leng(C502),Z); llabel(tsf(ZD502)); ground(,T) line from (C502,P17) to (C502,R508.start+(0,g)) - C506: capacitor(down_ to (Here,R508.end),C+); llabel("C506") - {"100" ljust "\SI{30}{\volt}" ljust at last [].s+(0,-g) below } + C506: capacitor(down_ to (Here,R508.end),C+); llabel(tsf(C506)) + {tsf(100) ljust tsf(30 V) ljust at last [].s+(0,-g) below } ground(,T) # Left-side boxes boxwid = 10*g boxht = 5*g - line left 3*g from P22.w "GRY" above - line left 3*g from P19.w "VIOL" above + line left 3*g from P22.w tsf(GRY) above + line left 3*g from P19.w tsf(VIOL) above box with .e at (Here,0.5 between P19 and P22) \ - "\shortstack[l]{TO SIGNAL\\ METER\\ CIRCUIT}" + tsf(\shortstack[l]{TO SIGNAL\\ METER\\ CIRCUIT}) - line left 8*g from P21.w "RED TO C508" above - line left 8*g from P20.w "VIOL" above + line left 8*g from P21.w tsf(RED TO C508) above + line left 8*g from P20.w tsf(VIOL) above - line left 3*g from P17.w "RED" above - line left 3*g from P18.w "WHT-" "RED" above + line left 3*g from P17.w tsf(RED) above + line left 3*g from P18.w tsf(WHT-) tsf(RED) above box with .e at (Here,0.5 between P17 and P18) \ - "\shortstack[l]{\SI{12.7}{\volt} SOURCE\\ TO MULTIPLEX}" + tsf(\shortstack[l]{12.7 V SOURCE\\ TO MULTIPLEX}) - line left 3*g from P16.w "WHT" above + line left 3*g from P16.w tsf(WHT) above box with .se at Here+(0,-g) \ - "\shortstack[l]{\SI{12}{\volt} SOURCE\\ TO FM TUNER\\ SOURCE SWITCH}" + tsf(\shortstack[l]{12 V SOURCE\\ TO FM TUNER\\ SOURCE SWITCH}) - line left 3*g from P15.w "ORG" above + line left 3*g from P15.w tsf(ORG) above box ht 3*g with .e at Here \ - "\shortstack[l]{\SI{15}{\volt} SOURCE\\ TO FM TUNER}" + tsf(\shortstack[l]{15 V SOURCE\\ TO FM TUNER}) - line left 3*g from P13.w "BLU" above - line left 3*g from P12.w " WHT-" "RED" - line left 3*g from P11.w "RED" above + line left 3*g from P13.w tsf(BLU) above + line left 3*g from P12.w tsf( WHT-) tsf(RED) + line left 3*g from P11.w tsf(RED) above box ht 6*g with .e at (Here,P12) \ - "\shortstack[l]{\SI{27}{\volt} SOURCE\\ TO CONTROL\\ PREAMP AND\\ PWR\ - AMPLIFIER}" + tsf(\shortstack[l]{27 V SOURCE\\ TO CONTROL\\ PREAMP AND\\ PWR\ + AMPLIFIER}) line left 3*g from P14.w - { "WHT-" "GRY-" "GRN" at last line.c+(0,2*g) } + { tsf(WHT-) tsf(GRY-) tsf(GRN) at last line.c+(0,2*g) } box with .se at Here+(0,-g) \ - "\shortstack[l]{\SI{50}{\volt} SOURCE\\ TO PHONO\\ PREAMP}" - - iflatex(`ifpsfrag(,`latexcommand(})')') + tsf(\shortstack[l]{50 V SOURCE\\ TO PHONO\\ PREAMP}) .PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Lyap.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Lyap.m4 new file mode 100644 index 00000000000..a1b40a8ad03 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Lyap.m4 @@ -0,0 +1,159 @@ +.PS +# Lyap.m4 +threeD_init +scale = 1/1.2 + +viewaz = 30 +viewel = 18 +setview(viewaz,viewel) + +Origin: project(0,0,0) +# Components of view vector W +w1 = view3D1 +w2 = view3D2 +w3 = view3D3 +# Shape factor of the ellipse on the xy plane +q = Cos(40) + +# cost function +h = 0.5 +c = 1 +# The projected ellipse is (x/q)^2 + y^2 = c. +# The cost is v = c+h +define(`vs',``$2'*q*cos(`$1'),`$2'*sin(`$1')') +define(`vp',`vs(`$1',`$2'),0') +define(`vx',`sum3D(vp(`$1',`$2'),0,0,h+(`$2')^2)') + +# The gradient of v is (2x/q, 2y, -1) and the line +# separating front and back is W^T * grad(v) = 0 +# This line intersects the projected ellipse at +# x1,y1 and x2,y2 + ap = w2^2*q^2/w1^2+1 + bp = -w2*w3*q^2/w1^2 + cp = w3^2*q^2/4/w1^2-c + m = sqrt(bp^2-4*ap*cp) + y1 = (-bp+m)/ap/2 ; x1 = (w3-2*y1*w2)*q/2/w1 + y2 = (-bp-m)/ap/2 ; x2 = (w3-2*y2*w2)*q/2/w1 + t1 = atan2(y1,x1) + t2 = atan2(y2,x2) + theta1 = min(t1,t2) + theta2 = max(t1,t2) + +# tangent curve + nT = 11 + for i = 0 to nT do { + y = y1 + (y2-y1)/nT*i + theta = atan2(y,(w3-2*y*w2)*q/2/w1) + r = y/sin(theta) + T[i]: project(vx(theta,r)) + } + +# front and back parts of the top curve + n = 12 + for i = 0 to n do { + theta = theta1 + (theta2-theta1)/n*i + F[i]: project(vx(theta,c)) + Fp[i]: project(vp(theta,c)) + } + for i = 0 to n do { + theta = theta2 + (theta1+twopi_-theta2)/n*i + B[i]: project(vx(theta,c)) + Bp[i]: project(vp(theta,c)) + } + +# trajectory +rotations = 1.55 +nx = 7 +thetas = 75*dtor_ +thetaf = thetas - rotations*twopi_ +rx = c*0.9 +beta = exp(log(.5)/20) + +define(`defX',` rx = `$5' ; np = np-1 + ts = `$1' ; tf = `$2' + for i = 0 to `$3' do { + tha = ts + (tf-ts)*i/(`$3') + for thx = tha to -twopi_ by twopi_ do {} + `$4'[i]: project(vx(thx,rx)) + Xp[np]: project(vp(thx,rx)) + np = np+1 + rx = beta*rx + }') + +np = 1 +defX(thetas,theta1,nx,X1,rx) +defX(theta1,theta2-twopi_,nx,X2,rx/beta) +defX(theta2-twopi_,theta1-twopi_,nx,X3,rx/beta) +defX(theta1-twopi_,thetaf,5,X4,rx/beta) + +# First draw the inside back +# B is the back curve +# T is the outline +ifpstricks(` +\psset{gradbegin=lightgray,gradend=darkgray,gradlines=1000} +\pscustom[fillstyle=gradient,gradmidpoint=0.7]{ + fitcurve(B,n) + for i = 0 to nT do {TT[i]: T[nT-i] } + fitcurve(TT,nT) +\relax} ', +` fitcurve(B,n) + for i = 0 to nT do {TT[i]: T[nT-i] } + fitcurve(TT,nT) ') + +# Centre axis +thinlines_ +line from Origin to project(0,0,h) +# F[0] is the leftmost point of the front curve +line from F[0] to Fp[0] +# F[n] is the rightmost point of the front curve +line from F[n] to Fp[n] +thicklines_ + +# Now draw the outside front +ifpstricks(` +\newgray{gray1}{0.9}% +\newgray{gray2}{0.4}% +\psset{gradbegin=gray1,gradend=gray2,gradlines=1000} +\pscustom[linewidth=0pt,fillstyle=gradient,gradmidpoint=0.99]{ + fitcurve(F,n) + fitcurve(T,nT) +\relax} ', +` shade(1,fitcurve(F,n) + fitcurve(T,nT)) ') +# T is the limit curve of visibility + fitcurve(T,nT) +# F is the top front + fitcurve(F,n) +# Front and back projections of the top on xy + fitcurve(Fp,n) + fitcurve(Bp,n) + +# The trajectory in pieces, to allow dashed parts + fitcurve(X1,nx) + fitcurve(X2,nx,dotted 0.025) + fitcurve(X3,nx) + fitcurve(X4,3,dotted 0.015) + arca(from X4[4] to X4[2],ccw,0.3,<-) + +# Projected trajectory + np = np-2 + fitcurve(Xp,np-1) + arca(from Xp[np] to Xp[np-2],ccw,0.18,<-) + "$X(t)$" at Xp[np]-(2bp__,0) ljust + +# Axes and vertical lines +thinlines_ + line from X1[0] to Xp[0] +arrow from Origin to project(1.5,0,0) +"$x_1$" rjust below +arrow from Origin to project(0,1.5,0) +"$x_2$" ljust +line dashed from project(0,0,h) to F[n/2] chop 0 chop arrowht/4 +arrow from F[n/2] to project(0,0,2) +"$v(X)$" ljust + +"`${0}$'" at Origin+(0,1 pt__) below +"$\Omega$" at project(0,0.9*c,0) above +"`$v(X) = c$'" at (project(vp(100*dtor_,c)))+(2bp__,0) above ljust + +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/MC.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/MC.m4 index d76016c6e4b..260a567aad6 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/MC.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/MC.m4 @@ -36,45 +36,46 @@ MC: [ ] Three: [ + gapht = 4*dimen_ dv = dimen_*0.6 - dh = dimen_ + dh = dimen_*5/6 define(`swfet',`mosfet(`$1',,dMEDSuBQPy)') define(`swpair',`[ up_ BS: swfet(up_ dimen_); { "`$1'" at BS.D-(0,2bp__) rjust } - L: line up_ 3*dimen_ from BS.D + L: line up_ gapht-2*dimen_ from BS.D TS: swfet(up_ dimen_) with .S at Here; { "`$2'" at TS.S+(0,2bp__) rjust } T: TS.D B: BS.S C: L.c ]') - V1: gap(up_ 5*dimen_,1,A); { "$V_1$" at last arrow.c rjust } - line right_ dh/2 + V1: gap(up_ gapht,1,A); { "$V_1$" at last arrow.c rjust } + line right_ dimen_/2 { C1: capacitor(down_ to (Here,V1.start)); llabel(C_1) } for_(1,3,1,` - line right_ dh ifelse(m4x,1,,*5/4) + line right_ dimen_ ifelse(m4x,1,,*5/4) {SP1`'m4x: swpair(S1`'eval(m4x+3),S1`'m4x) with .T at Here dot(at last [].C + (0,(2-m4x)*dh)) - line right_ (3-m4x)*dh*5/4 + line right_ (3-m4x)*dimen_*5/4 + dimen_/4 inductor(right_ dimen_,L); llabel(,L_{1\char`'eval(64+m4x)}) - line down_ (2-m4x)*dimen_*2/3 + line down_ (2-m4x)*dh*2/3 pushdef(`dimen_',dimen_*1.2) inductor(right_ dimen_*3/4) popdef(`dimen_') - line down_ (2-m4x)*dimen_/3 + line down_ (2-m4x)*dh/3 M: move right_ dimen_/8 - line up_ (2-m4x)*dimen_/3 + line up_ (2-m4x)*dh/3 pushdef(`dimen_',dimen_*1.2) inductor(right_ dimen_*3/4) popdef(`dimen_') - line up_ (2-m4x)*dimen_*2/3 + line up_ (2-m4x)*dh*2/3 inductor(right_ dimen_,L); llabel(,L_{2\char`'eval(64+m4x)}) - line right_ dimen_/8+(m4x-1)*dh*5/4 + line right_ dimen_/8+(m4x-1)*dh*5/4 + dimen_/4 dot SP2`'m4x: swpair(S2`'eval(m4x+3),S2`'m4x) with .C at Here+(0,(m4x-2)*dh) } ') - "$T_r$" at M.c+(0,dimen_/2) + "$T_r$" at M.c+(0,dimen_*2/3) line from V1.start to SP13.B line from SP21.B to SP23.B+(dh*3/4,0) { C2: capacitor(up_ to (Here,V1.end)); llabel(,,C_2) } - line right_ dh/2 - gap(up_ 5*dimen_,1,A); { "$V_2$" at last arrow.c ljust } + line right_ dimen_/2 + gap(up_ gapht,1,A); { "$V_2$" at last arrow.c ljust } line to SP21.T chop dotrad_ chop 0 ] with .nw at MC.sw+(0,-0.2) diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Makefile b/Master/texmf-dist/doc/latex/circuit-macros/examples/Makefile index d729596a17d..cd0500c40c5 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/Makefile +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Makefile @@ -5,10 +5,11 @@ # Type "make <diag>.ps" to make a postscript file from <diag>.m4 # It may be necessary to type "make clean" before this or any of the following: # Type "make <diag>.eps" to make an .eps file from <diag>.m4 +# Type "make <diag>.svg" to make an .svg file from <diag>.m4 using pdf2svg # The following require ImageMagick convert: # Type "make <diag>.png" to make a .png file from <diag>.m4 # Type "make <diag>.tif" to make a .tif file from <diag>.m4 -# Type "make <diag>.svg" to make a .svg file from <diag>.m4 +# # See also: the svg subdirectory for generating svg directly. # # To test the file test.m4, type "make tst" if boxdims is used, otherwise @@ -28,9 +29,9 @@ LIBDIR = .. # The dpic processor: PIC = dpic -p #PIC = $$HOME/dpic/build/p2c/ftp/dpic -p -#PIC = $$HOME/dpic/dev/p2c/ftp/dpic -p +#PIC = $$HOME/dpic/pa*dev/p2c/ftp/dpic -p #PIC = $$HOME/dpic/bison/dpic -p -#PIC = $$HOME/dpic/bdev/dpic -p +#PIC = $$HOME/dpic/bi*v/dpic -p CONFIGFILE = pstricks.m4 @@ -66,21 +67,21 @@ PICS = \ ex09.tex ex10.tex ex11.tex ex12.tex ex15.tex ex16.tex ex17.tex ex18.tex \ ex21.tex exp.tex fet.tex Flow.tex Fuses.tex GrayCode.tex graysurf.tex \ Grounds.tex Headers.tex Heathkit.tex I2L.tex Incleps.tex Jack.tex \ - lcct.tex Logic.tex Loglog.tex MC.tex Mixer.tex MotorControl.tex \ + lcct.tex Lyap.tex Logic.tex Loglog.tex MC.tex Mixer.tex MotorControl.tex \ Multiplexer.tex NLG.tex NPDT.tex Nport.tex Opamp.tex Optoiso.tex \ Pconn.tex PushPull.tex pwrsupply.tex Quantum.tex quick.tex random.tex \ Rectifiers.tex recycle.tex relaycoil.tex Relay.tex rose.tex Rotbox.tex \ Schottky.tex sfg.tex shapes.tex ShiftR.tex Sierpinski.tex Sixpole.tex \ Sources.tex SQUID.tex Switches.tex \ - Tgate.tex Three.tex thyristor.tex Timer.tex \ + Tgate.tex Three.tex thyristor.tex \ TTLnand.tex Ttree.tex Tubediags.tex ujt.tex Variable.tex Windings.tex \ worm.tex Xform.tex XOR.tex # Files that have to be processed twice: -BOXDIMS = ex09.tex Crow.tex Incleps.tex Loglog.tex Opamp.tex random.tex \ - Ttree.tex Windings.tex -BOXPICS = ex09.pic Crow.pic Incleps.pic Loglog.pic Opamp.pic random.pic \ - Ttree.pic Windings.pic +BOXDIMS = ex09.tex Crow.tex Incleps.tex Lyap.tex Loglog.tex Opamp.tex \ + random.tex Ttree.tex Windings.tex +BOXPICS = ex09.pic Crow.pic Incleps.pic Lyap.pic Loglog.pic Opamp.pic \ + random.pic Ttree.pic Windings.pic DVIPSOPTS = -Ppdf -G0 -t letter DVIPSOPTS = -G0 -t letter @@ -91,6 +92,18 @@ BS = tr '|' '\134' # Might be needed (change latex commands to $(LTX) ) # LTX = latex --shell-escape +LTXFILE=printf "|documentclass[11pt]{article}\n\ +|usepackage{times,pstricks,boxdims,graphicx,pst-grad,pst-slpe}\n\ +|usepackage{siunitx}\n\ +|setlength{|textwidth}{28cm}|setlength{|textheight}{28cm}\n\ +|setlength{|oddsidemargin}{0pt}|setlength{|evensidemargin}{0pt}\n\ +|setlength{|hoffset}{-1cm}\n\ +|pagestyle{empty}|thispagestyle{empty}\n\ +|newbox|graph\n\ +|begin{document}\n\ +|noindent|input{"$*".tex}\n\ +|end{document}\n" | $(BS) + .SUFFIXES: .ps .dvi .tex .m4 .pic .eps .png .pdf .svg .tif .gif .dvi.ps: dvips $(DVIPSOPTS) $* -o $*.ps @@ -106,25 +119,25 @@ BS = tr '|' '\134' @if test -n "$(DIMFILE)" ; then touch $(DIMFILE) ; fi $(M4) $(M4LIBS) $(DIMFILE) $*.m4 > $*.pic .m4.dvi: - make $*.tex - printf "|documentclass[11pt]{article}\n\ -|usepackage{times,pstricks,boxdims,graphicx,pst-grad,pst-slpe}\n\ -|usepackage{siunitx}\n\ -|setlength{|textwidth}{28cm}|setlength{|textheight}{28cm}\n\ -|setlength{|oddsidemargin}{0pt}|setlength{|evensidemargin}{0pt}\n\ -|setlength{|hoffset}{-1cm}\n\ -|pagestyle{empty}|thispagestyle{empty}\n\ -|newbox|graph\n\ -|begin{document}\n\ -|noindent|input{"$*".tex}\n\ -|end{document}\n" | $(BS) > F_$*.tex - latex F_$* + @if test -n "$(DIMFILE)" ; then touch $(DIMFILE) ; fi ; touch F_$*.dim + $(M4) $(M4LIBS) $(DIMFILE) F_$*.dim $*.m4 | sed -e '/^ *$$/d' \ + | $(PIC) > $*.tex + $(LTXFILE) > F_$*.tex + latex --quiet F_$* touch F_$*.dim $(DIMFILE) ; rm -f $*.tex $*.pic ; make $*.tex - latex F_$* + latex --quiet F_$* touch F_$*.dim $(DIMFILE) ; rm -f $*.tex $*.pic ; make $*.tex - latex F_$* + latex --quiet F_$* .m4.eps: - make $*.dvi + @if test -n "$(DIMFILE)" ; then touch $(DIMFILE) ; fi ; touch F_$*.dim + $(M4) $(M4LIBS) $(DIMFILE) F_$*.dim $*.m4 | sed -e '/^ *$$/d' \ + | $(PIC) > $*.tex + $(LTXFILE) > F_$*.tex + latex --quiet F_$* + touch F_$*.dim $(DIMFILE) ; rm -f $*.tex $*.pic ; make $*.tex + latex --quiet F_$* + touch F_$*.dim $(DIMFILE) ; rm -f $*.tex $*.pic ; make $*.tex + latex --quiet F_$* dvips F_$* -T128cm,28cm -o $*.ps # dvips -Ppdf F_$* -T128cm,28cm -o $*.ps # Recent changes to PSTricks(?) have clashed with the use of TeXtoEPS @@ -140,9 +153,9 @@ BS = tr '|' '\134' make $*.tex && mv $*.tex test.tex; latex tst dvips $(DVIPSOPTS) tst -o $*.ps chmod 644 $*.ps -.m4.svg: - make $*.eps - convert $(EPSOPTS) $*.eps $*.svg +#.m4.svg: +# make $*.eps +# convert $(EPSOPTS) $*.eps $*.svg .m4.png: make $*.eps convert $(PNGOPTS) $*.eps $*.png @@ -161,11 +174,24 @@ BS = tr '|' '\134' $(PIC) -g $*.pic > test.tex sed -e '/^\\usepackage.*graphicx/s/^.*$$/\\usepackage{tikz}/' \ -e '/pstricks/d' tst.tex > F_$*.tex - pdflatex F_$* + pdflatex --quiet F_$* + $(M4) pgf.m4 F_$*.dim $*.m4 > $*.pic + $(PIC) -g $*.pic > test.tex + pdflatex --quiet F_$* + mv F_$*.pdf $*.pdf +.m4.svg: + touch F_$*.dim + $(M4) pgf.m4 F_$*.dim $*.m4 > $*.pic + $(PIC) -g $*.pic > test.tex + sed -e '/^\\usepackage.*graphicx/s/^.*$$/\\usepackage{tikz}/' \ + -e '/pstricks/d' tst.tex > F_$*.tex + pdflatex --quiet F_$* $(M4) pgf.m4 F_$*.dim $*.m4 > $*.pic $(PIC) -g $*.pic > test.tex - pdflatex F_$* + pdflatex --quiet F_$* mv F_$*.pdf $*.pdf + pdf2svg $*.pdf $*.svg + rm -f $*.pdf $*.pic F_$** ######################################################################### @@ -237,7 +263,7 @@ clobber: clean do (if test -d $$dir ; then cd $$dir; make clobber; fi) ; done rm -f *.warn rm -f examples.pdf - rm -rf index.html html basenames *.png* dist zips htmlfiles svgfiles + rm -rf index.html html basenames *.png* dist zips htmlfiles rm -rf $(TMP)/Cir* $(ECETMP)/Cir* $(ECEDIR) if test -f Incl.pdf ; then \ mv Incl.pdf Incl.pdx; rm -f *.pdf; mv Incl.pdx Incl.pdf ; fi @@ -249,7 +275,7 @@ clobber: clean clean: @printf "\n examples clean:\n" rm -f core boxdims.tar.gz pics - rm -f *.dvi *.aux *.log *.toc *.blg *.eps *.tif *.epsi eps *-mfpic* + rm -f *.dvi *.aux *.log *.toc *.blg *.eps *.tif *.epsi eps *-mfpic* *.svg rm -f fig*.tex $(PICS) *.roff *.int *.pic gpic.m4 test.tex xxx* *.fig rm -f *.dim *.bak *.frs *.frp $(RPICS) rotate.ps tst.ps *.bbl *-pics.ps rm -f *.tfm *[0-9]pk *.png *.1 *.gif diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/PushPull.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/PushPull.m4 index 24669faf294..d9545616bfc 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/PushPull.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/PushPull.m4 @@ -21,13 +21,13 @@ define(`Xform21', T1: Xform21 line left_ del from T1.L3.end; corner; ground(,,F) line left_ 2*del from T1.L3.start - In: dot(,,1); { "RF" wid 12bp__ at In.n above } + In: dot(,,1); { "\small RF" wid 12bp__ at In.n above } up_ Q1: mosfet(,,dBSDFQM1,E) with .G0 at T1.T+(2*dimen_+del/2,dimen_) - { "3N200" at last [].n above } + { "\small 3N200" at last [].n above } line from T1.L2.end to (T1.L2.end,Q1.G0) then to Q1.G0 Q2: mosfet(,,dBSDFQM1,E) with .G0 at (Q1.G0.x,T1.T.y-dimen_) - { "3N200" at last [].n above } + { "\small 3N200" at last [].n above } line from T1.L1.start to (T1.L1.start,Q2.G0) then to Q2.G0 resistor(right_ dimen_ from T1.T); llabel(,\SI{330}{\Omega}); Tx:dot @@ -63,7 +63,7 @@ define(`Xform21', line right_ del from T2.L3.start; corner capacitor(down_ dimen_,C); llabel(\SI{1000}{pF}); ground(,T,F) line right_ 2*del from T2.L3.end - Out: dot(,,1); { "IF" wid 12bp__ at Out.n above }; move right_ 0.3 + Out: dot(,,1); { "\small IF" wid 12bp__ at Out.n above }; move right_ 0.3 line from T2.L1.start to (T2.L1,Q1.D) then to Q1.D line from T2.L2.end to (T2.L2.end,Q2.D) then to Q2.D @@ -83,7 +83,7 @@ define(`Xform21', dot(at Q3.B+(del,0)) line up_ (TL.y+Q3.C.y)/2 - Here.y+del/4 then left_ Here.x-TL.x reversed(`capacitor',left_ dimen_,C); llabel(,\SI{1500}{pF}) - Osc: dot(,,1); { "Osc" above at Osc.n } + Osc: dot(,,1); { "\small Osc" above at Osc.n } line from Q3.B to (Vc,Q3.B) line from Q3.C to (Q3.C,TL); dot diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Timer.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Timer.m4 deleted file mode 100644 index a5db32c800b..00000000000 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/Timer.m4 +++ /dev/null @@ -1,52 +0,0 @@ -.PS -# Timer.m4 -cct_init -iflatex(`latexcommand({\small\sf)') - -define(`ic555',`[Chip: box ht boxwid wid boxwid "555" - P7: "7" ljust at 1/6<Chip.sw,Chip.nw> - P6: "6" ljust at 1/2<Chip.sw,Chip.nw> - P2: "2" ljust at 5/6<Chip.sw,Chip.nw> - P4: "4" below at 1/3<Chip.nw,Chip.ne> - P8: "8" below at 2/3<Chip.nw,Chip.ne> - P3: "3" rjust at Chip.e - P1: "1" above at Chip.s - ]') - - define(`elen_',`linewid') -Vs: dot - down_ - variable(`resistor(,E); llabel(,\SI{1}{M})') - resistor(,E); llabel(,\SI{100}{\kilo{}}) - capacitor(,E); llabel(\SI{220}{\micro{}}) -Zero: dot - - dot(at Vs+(elen_*4/3,0)) - resistor(,E); llabel(,\SI{33}{\kilo{}}) - line to (Here,Zero) chop 0 chop elen_ -C2: capacitor; llabel(\SI{0.1}{\micro{}}) - dot - -IC1: ic555 with .P7 at C2.start + (elen_,0) - line from IC1.P4 to (IC1.P4,Vs); dot - line from IC1.P8 to (IC1.P8,Vs); dot - line from IC1.P1 to (IC1.P1,Zero); dot - line from IC1.P2 to (C2,IC1.P2); dot - crossover(from IC1.P7 to (Zero,IC1.P7),R,C2); dot - line from IC1.P6 left elen_/2 then down IC1.P6.y-IC1.P7.y; dot - line from IC1.P3 right elen_*2/3 -R: dot - line right_ elen_/3 -B: buzzer(,,C) with .In3 at Here - line from B.In1 to (R,B.In1) - reversed(`diode',to (Here,Vs),LE); "red" at last line.c+(elen_/2,0) - resistor(down_ elen_ from R,E); llabel(,\num{470}) - diode(to (Here,Zero),LE); {"green" at last line.c+(elen_*2/3,0)} - line to Zero chop 0 chop -elen_ - line up_ (Vs.y-Here.y)/3 - battery(up_ (Vs.y-Here.y)/3); rlabel(,,\SI{9}{V}) - switch(to (Here,Vs),,D) - line to (R,Vs) - -iflatex(`latexcommand(})') -.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Variable.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/Variable.m4 index e52e30913d1..72573f38ccb 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/Variable.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Variable.m4 @@ -3,11 +3,11 @@ cct_init define(`elen_',dimen_); down_ -[ { variable(`resistor',A) }; {"A" at last line.end below}; move right - { variable(`resistor',N) }; {"N" at last line.end below}; move right - { variable(`resistor',uN) }; {"uN" at last line.end below}; move right - { variable(`resistor',NN) }; {"uN" at last line.end below}; move right - { variable(`resistor',uNN) }; {"uNN" at last line.end below}; #; move right +[ { variable(`resistor',A) }; {"\tt A" at last line.end below}; move right + { variable(`resistor',N) }; {"\tt N" at last line.end below}; move right + { variable(`resistor',uN) }; {"\tt uN" at last line.end below}; move right + { variable(`resistor',NN) }; {"\tt NN" at last line.end below}; move right + { variable(`resistor',uNN) }; {"\tt uNN" at last line.end below}; ] [ skp = 0.4 diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/ex01.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/ex01.m4 index a5bcef47abd..e672fccc364 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/ex01.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/ex01.m4 @@ -1,6 +1,56 @@ .PS -# ex01.m4 +# Timer.m4 cct_init +iflatex(`latexcommand({\small\sf)') + +define(`ic555',`[Chip: box ht boxwid wid boxwid "555" + P7: "7" ljust at 1/6<Chip.sw,Chip.nw> + P6: "6" ljust at 1/2<Chip.sw,Chip.nw> + P2: "2" ljust at 5/6<Chip.sw,Chip.nw> + P4: "4" below at 1/3<Chip.nw,Chip.ne> + P8: "8" below at 2/3<Chip.nw,Chip.ne> + P3: "3" rjust at Chip.e + P1: "1" above at Chip.s + ]') + +Timer: [ + define(`elen_',`linewid') +Vs: dot + down_ + variable(`resistor(,E); llabel(,\SI{1}{M})') + resistor(,E); llabel(,\SI{100}{\kilo{}}) + capacitor(,E); llabel(\SI{220}{\micro{}}) +Zero: dot + + dot(at Vs+(elen_*4/3,0)) + resistor(,E); llabel(,\SI{33}{\kilo{}}) + line to (Here,Zero) chop 0 chop elen_ +C2: capacitor; llabel(\SI{0.1}{\micro{}}) + dot + +IC1: ic555 with .P7 at C2.start + (elen_,0) + line from IC1.P4 to (IC1.P4,Vs); dot + line from IC1.P8 to (IC1.P8,Vs); dot + line from IC1.P1 to (IC1.P1,Zero); dot + line from IC1.P2 to (C2,IC1.P2); dot + crossover(from IC1.P7 to (Zero,IC1.P7),R,C2); dot + line from IC1.P6 left elen_/2 then down IC1.P6.y-IC1.P7.y; dot + line from IC1.P3 right elen_*2/3 +R: dot + line right_ elen_/3 +B: buzzer(,,C) with .In3 at Here + line from B.In1 to (R,B.In1) + reversed(`diode',to (Here,Vs),LE); "red" at last line.c+(elen_/2,0) + resistor(down_ elen_ from R,E); llabel(,\num{470}) + diode(to (Here,Zero),LE); {"green" at last line.c+(elen_*2/3,0)} + line to Zero chop 0 chop -elen_ + line up_ (Vs.y-Here.y)/3 + battery(up_ (Vs.y-Here.y)/3); rlabel(,,\SI{9}{V}) + switch(to (Here,Vs),,D) + line to (R,Vs) +] +Ex01: [ +# ex01.m4 linewid = linewid*1.5 # let's make the circuit elements bigger than usual define(`elen_',linewid) # but not longer del = elen_/4 # a spacing parameter @@ -18,4 +68,7 @@ cct_init arcd(last []+(4pt__,0),del,30,330) <- ; "$i_2$" at last arc arcd(Vin.c+(4*del,0),2*del,30,330) <- ; "$i_1$" at last arc + ] with .sw at Timer.se+(0.5,0) + +iflatex(`latexcommand(}%)') .PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/ex09.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/ex09.m4 index a5ee6f11095..036ee00ccf7 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/ex09.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/ex09.m4 @@ -132,4 +132,5 @@ T: C+(-0.45*sk,-1.0*sk) ] with .nw at 1st [].ne+(0.8*sk,0) + .PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.pdf b/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.pdf Binary files differindex d59436e0a36..a2f15a2c9a7 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.pdf +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.pdf diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.tex b/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.tex index e2f90fc5857..720e78861fc 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.tex +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.tex @@ -35,7 +35,7 @@ This document duplicates a few diagrams from the manual Circuit\_macros.pdf. There are also a few files in the examples directory that are not included in this document. To process - {\sl file}.m4, type, for example, "make {\sl file}.pdf." + {\sl file}.m4, for example, type "make {\sl file}.pdf." % Some of the boundaries of what macros and the pic language can do are % tested toward the end of the following examples. diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/files.tex b/Master/texmf-dist/doc/latex/circuit-macros/examples/files.tex index 334c7657f6d..f320c34f9c2 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/files.tex +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/files.tex @@ -195,11 +195,9 @@ } \bfig{ - \centerline{\getpic{ex01}\quad - \getpic{Timer}} + \centerline{\getpic{ex01}} \caption{Two simple labeled circuits - \src{ex01.m4}% - \src{Timer.m4}.} + \src{ex01.m4}.} } \bfig{ @@ -457,7 +455,7 @@ The function tree is drawn, then a row or column of inputs, then the connections. The default result is on the left, a custom element at the top, and a tree of gates only is shown - on the right. + on the right. THe lower examples illustrate the L, R, and V options.) \src{Alogix.m4}.} } @@ -554,7 +552,7 @@ \bfig{ \centerline{\getpic{random}} - \caption{Testing random numbers + \caption{Testing random number generation \src{random.m4}.} } @@ -586,6 +584,12 @@ } \bfig{ + \centerline{\getpic{Lyap}} + \caption{Illustrating a Lyapunov function + \src{Lyap.m4}.} + } + +\bfig{ \centerline{\getpic{csc}} \caption{Conestoga Sailing Club (illustrating the filling of arbitrary shapes) diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/ics.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/ics.m4 index 15e0f05bb8e..c07cb61ea28 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/ics.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/ics.m4 @@ -118,7 +118,6 @@ define(`ArduinoUno',`[ define(`m4bwid',`ifelse(`$1',,`24*L_unit',`$1')')dnl define(`m4bht',`ifelse(`$2',,`20*lg_pinsep',`$2')')dnl # - command "{\small\sf" Connector: box wid m4bwid ht m4bht # plen = ifelse(`$4',,`2*L_unit',`$4') @@ -135,7 +134,6 @@ Loopover_(`x',`ifelse(x,nul,, SCL, SDA, AREF, GND, D13, D12, \char126 D11, \char126 D10, \char126 D9, D8, nul, D7, \char126 D6, \char126 D5, D4, \char126 D3, D2, TX D1, RX D0) # - command "}" `$4'] ') `ArduinoLeonardo( wid,ht,pinlen )' @@ -143,7 +141,6 @@ define(`ArduinoLeonardo',`[ define(`m4bwid',`ifelse(`$1',,`24*L_unit',`$1')')dnl define(`m4bht',`ifelse(`$2',,`20*lg_pinsep',`$2')')dnl # - command "{\small\sf" Connector: box wid m4bwid ht m4bht # plen = ifelse(`$4',,`2*L_unit',`$4') @@ -161,7 +158,6 @@ Loopover_(`x',`ifelse(x,nul,, \char126 D13, D12, \char126 D11, \char126 D10, \char126 D9, D8, nul, D7, \char126 D6, \char126 D5, D4, \char126 D3, D2, TX D1, RX D0) # - command "}" `$4'] ') `RPi( wid,ht,pinlen )' @@ -169,7 +165,6 @@ define(`RPi',`[ define(`m4bwid',`ifelse(`$1',,`34*L_unit',`$1')')dnl define(`m4bht',`ifelse(`$2',,`21*lg_pinsep',`$2')')dnl # - command "{\small\sf" GPIO: box wid m4bwid ht m4bht plen = ifelse(`$4',,`6*L_unit',`$4') # @@ -212,14 +207,12 @@ Loopover_(`x',`ifelse(x,nul,,`A_RightGPIO(m4Lx,patsubst(x,;,`,'))')', ;GND, 16;, 20;, 21; ) # - command "}" `$4'] ') `USB_C_Socket( wid, ht, pinlen )' define(`USB_C_Socket',`[ define(`m4bwid',`ifelse(`$1',,`18*L_unit',`$1')')dnl define(`m4bht',`ifelse(`$2',,`14*lg_pinsep',`$2')')dnl - command "{\small\sf" # Base: box wid m4bwid ht m4bht rad 5/3*lg_pinsep plen = ifelse(`$4',,`6*L_unit',`$4') @@ -235,14 +228,12 @@ define(`USB_C_Socket',`[ {"x" rjust at last line.start}', GND, TX1$+$, TX1$-$, VBUS, CC1, D$+$, D$-$, SBU1, VBUS, RX2$-$, RX2$+$, GND) # - command "}" `$4']') `HDMI_micro( wid, ht, pinlen )' define(`HDMI_micro',`[ define(`m4bwid',`ifelse(`$1',,`16*L_unit',`$1')')dnl define(`m4bht',`ifelse(`$2',,`20*lg_pinsep+m4bwid*2/3',`$2')')dnl - command "{\small\sf" # Base:[line up m4bht/2 then right m4bwid*2/3 \ then right m4bwid/3 down m4bwid/3 \ @@ -269,7 +260,6 @@ define(`HDMI_micro',`[ r_text(22) at last line.c+(-5bp__,0) r_text(SH3) at last line.start + (0, 10bp__) # - command "}" `$4']') divert(0)dnl diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/mf/cct.mf b/Master/texmf-dist/doc/latex/circuit-macros/examples/mf/cct.mf index 7134b617a09..e28b40c9f90 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/mf/cct.mf +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/mf/cct.mf @@ -1,5 +1,5 @@ % cct.mf, generated by Mfpic, v1.10 2012/12/03, -% from TeX source "font" on 2020/05/01 at 17:17 +% from TeX source "font" on 2020/12/20 at 17:40 numeric mfpicversion; mfpicversion := 110; if unknown mode: mode := localfont; fi if unknown mag: mag := 1000/1000; fi diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/mpost/Makefile b/Master/texmf-dist/doc/latex/circuit-macros/examples/mpost/Makefile index 2b8099c34d9..18bb0ad5761 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/mpost/Makefile +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/mpost/Makefile @@ -27,7 +27,7 @@ FIGS = Adder.1 Alogix.1 ABlogix.1 Antennas.1 AmpTable.1 Audio.1 \ Decoder.1 Demultiplexer.1 Dini.1 Diodes.1 Drive.1 \ Emarrows.1 Flow.1 Fuses.1 \ GrayCode.1 Grounds.1 Headers.1 Heathkit.1 I2L.1 Inclpdf.1 Jack.1 \ - Logic.1 Loglog.1 MC.1 Mixer.1 MotorControl.1 Multiplexer.1 \ + Lyap.1 Logic.1 Loglog.1 MC.1 Mixer.1 MotorControl.1 Multiplexer.1 \ NLG.1 NPDT.1 Nport.1 \ Opamp.1 Optoiso.1 Pconn.1 PushPull.1 Quantum.1 \ Rectifiers.1 Relay.1 relaycoil.1 Rotbox.1 \ diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/Makefile b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/Makefile new file mode 100644 index 00000000000..b2132e1ee89 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/Makefile @@ -0,0 +1,92 @@ +LIBDIR = $$HOME/lib +M4LIBS = svg.m4 SVGconfig.m4 +M4LIBS = svg.m4 + +# To process a single file, copy it to test.m4 and type "make tst" +# to produce tstSVG.html + +DPIC = dpic +#DPIC = $$HOME/dpic/build/p2c/ftp/dpic +#DPIC = ../../../dpic/build/p2c/ftp/dpic +#DPIC = ../../../dpic/bison/dpic +#DPIC = ../../../dpic/bdev/dpic + +# To test the Windows executable. Change these as needed for the operating +# system. NOTE: AntiqueClockSVG.m4 and Connectors.m4 use awk and sed which +# do not work at present with the Windows version. +# M4LIBS = svg.m4 windows.m4 +# DPIC = ../../../dpic/bison/distsrc/Windows/dpic + +.SUFFIXES: .pic .svg .m4 +.pic.svg: + $(DPIC) -v $*.pic > $*.svg + grep '<\!-- width' $*.svg | sed -e 's%<\!-- *%%' -e 's% *-->%%' > $*.siz +.m4.svg: + m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' > $*.pic + $(DPIC) -v $*.pic > $*.svg + grep '<\!-- width' $*.svg | sed -e 's%<\!-- *%%' -e 's% *-->%%' > $*.siz + +PAGES = examples_1.svg + +examplesSVG.html: examplesSVG.htmx pages + Version=`sed -e 's/Version //' $(LIBDIR)/doc/Version.tex` ; \ + sed -e 's/Version XXX/Version '$$Version'/' examplesSVG.htmx \ + | m4 > examplesSVG.html + +pages: + (cd .. ; make ) + cp ../examples.pdf . + pdf2svg examples.pdf + touch pages + +SED = sed -e '/^\%/d' +TEST = test +tst: + if test -f test.pic; then printf "\n\nUsage: make clean tst\n\n"; exit 1; fi + m4 $(M4LIBS) test.m4 | $(SED) > test.pic + $(DPIC) -v $(TEST).pic > $(TEST).svg + m4 $(M4LIBS) $(TEST).m4 | $(SED) > $(TEST).pic + $(DPIC) -v $(TEST).pic > $(TEST).svg + grep '<\!-- width' $(TEST).svg | sed -e 's%<\!-- *%%' -e 's% *-->%%' \ + > $(TEST).siz + make tstSVG.html + +test.pic: + if test -f test.pic ; then echo "Usage: make clean tst" ; fi + m4 $(M4LIBS) test.m4 | $(SED) > test.pic + m4 $(M4LIBS) test.m4 | $(SED) > test.pic + +tstSVG.html: tstSVG.htmx $(TEST).svg + Version=`sed -e 's/Version //' $(LIBDIR)/doc/Version.tex` ; \ + sed -e 's/Version XXX/Version '$$Version'/' \ + -e 's/XXXXX/'$(TEST)'/g' \ + tstSVG.htmx | m4 > tstSVG.html +# cp tstSVG.html $(TEST) $$HOME/public_html/svg + +xst: Incleps.png + +AntiqueClockSVG.svg ConnectorsSVG.svg: + m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' > $*.pic + $(DPIC) -v $*.pic > $*.svg + m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' > $*.pic + $(DPIC) -v $*.pic > $*.svg + grep '<\!-- width' $*.svg | sed -e 's%<\!-- *%%' -e 's% *-->%%' > $*.siz + +InclepsSVG.svg: InclepsSVG.m4 + m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' > $*.pic + $(DPIC) -v $*.pic > $*.svg + $(DPIC) -v $*.pic > $*.svg + +Incleps.png: + (cd ..; make Incleps.png); cp ../Incleps.png . + +clean: + @printf "\n svg clean:\n" + rm -f *.svg *.dim *.ps *log *.siz *.pic examplesSVG.html Incleps.png + rm -f tstSVG.html copy_tmp__ + rm -f pages + @printf "\n" + +clobber: clean + (cd dev; make clobber) + rm -f test.m4 diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/F_test.tex b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/F_test.tex new file mode 100644 index 00000000000..68098bbf3ab --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/F_test.tex @@ -0,0 +1,5 @@ +\documentclass[crop,tikz,multi=false]{standalone} +\usepackage{boxdims,siunitx,amssymb} +\begin{document} +\input test.tex +\end{document} diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/Makefile b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/Makefile new file mode 100644 index 00000000000..cdc126d8bd8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/Makefile @@ -0,0 +1,81 @@ +LIBDIR = $$HOME/lib +M4LIBS = pgf.m4 +M4 = m4 + +# To process a single file, copy it to test.m4 and type "make tst" +# to produce tstSVG.html + +DPIC = dpic +#DPIC = $$HOME/dpic/build/p2c/ftp/dpic +#DPIC = $$HOME/dpic/build/p2c/ftp/dpic +#DPIC = $$HOME/dpic/bison/dpic +#DPIC = $$HOME/dpic/bdev/dpic + +.SUFFIXES: .pic .svg .m4 .pdf +.pic.svg: + $(DPIC) -v $*.pic > $*.svg + grep '<\!-- width' $*.svg | sed -e 's%<\!-- *%%' -e 's% *-->%%' > $*.siz +.m4.svg: + touch F_$*.dim + $(M4) pgf.m4 F_$*.dim $*.m4 > $*.pic + $(DPIC) -g $*.pic >> $*.tex + echo "\documentclass[crop,tikz,multi=false]{standalone}" > F_$*.tex + echo "\usepackage{boxdims,siunitx,amssymb}" >> F_$*.tex + echo "\begin{document}" >> F_$*.tex + echo "\input $*.tex" >> F_$*.tex + echo "\end{document}" >> F_$*.tex + pdflatex --quiet F_$* + $(M4) pgf.m4 F_$*.dim $*.m4 > $*.pic + $(DPIC) -g $*.pic >> $*.tex + pdflatex --quiet F_$* + pdf2svg F_$*.pdf $*.svg + rm -f F_$** +.m4.pdf: + touch F_$*.dim + $(M4) pgf.m4 F_$*.dim $*.m4 > $*.pic + $(DPIC) -g $*.pic >> $*.tex + echo "\documentclass[crop,tikz,multi=false]{standalone}" > F_$*.tex + echo "\usepackage{boxdims,siunitx,amssymb}" >> F_$*.tex + echo "\begin{document}" >> F_$*.tex + echo "\input $*.tex" >> F_$*.tex + echo "\end{document}" >> F_$*.tex + pdflatex --quiet F_$* + $(M4) pgf.m4 F_$*.dim $*.m4 > $*.pic + $(DPIC) -g $*.pic >> $*.tex + pdflatex --quiet F_$* + mv F_$*.pdf $*.pdf + +examplesSVG.html: examplesSVG.htmx pages + Version=`sed -e 's/Version //' $(LIBDIR)/doc/Version.tex` ; \ + sed -e 's/Version XXX/Version '$$Version'/' examplesSVG.htmx \ + | m4 > examplesSVG.html + +SED = sed -e '/^\%/d' +TEST = test +tst: + if test -f test.pic; then printf "\n\nUsage: make clean tst\n\n"; exit 1; fi + m4 $(M4LIBS) test.m4 | $(SED) > test.pic + $(DPIC) -v $(TEST).pic > $(TEST).svg + m4 $(M4LIBS) $(TEST).m4 | $(SED) > $(TEST).pic + $(DPIC) -v $(TEST).pic > $(TEST).svg + grep '<\!-- width' $(TEST).svg | sed -e 's%<\!-- *%%' -e 's% *-->%%' \ + > $(TEST).siz + make tstSVG.html + +tstSVG.html: tstSVG.htmx $(TEST).svg + Version=`sed -e 's/Version //' $(LIBDIR)/doc/Version.tex` ; \ + sed -e 's/Version XXX/Version '$$Version'/' \ + -e 's/XXXXX/'$(TEST)'/g' \ + tstSVG.htmx | m4 > tstSVG.html +# cp tstSVG.html $(TEST) $$HOME/public_html/svg + +clean: + @printf "\n svg clean:\n" + rm -f *.svg *.dim *.ps *log *.siz *.pic examplesSVG.html Incleps.png + rm -f tstSVG.html copy_tmp__ + rm -f pages + @printf "\n" + +clobber: clean + (cd dev; make clobber) + rm -f test.m4 diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/test-1.svg b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/test-1.svg new file mode 100644 index 00000000000..7c48b506b43 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/test-1.svg @@ -0,0 +1,162 @@ +<?xml version='1.0' encoding='UTF-8'?>
+<!-- This file was generated by dvisvgm 2.6.3 -->
+<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='337.972pt' height='139.358pt' viewBox='0 -139.358 337.972 139.358'>
+<g id='page1'>
+<g transform='matrix(1 0 0 -1 0 0)'>
+<path d='M14.37648 26.83561C13.78867 26.447172 13.44992 26.237797 12.46398 26.237797C11.02929 26.237797 10.13304 27.73217 10.13304 29.16655C10.13304 30.52123 10.95961 32.08498 12.48367 32.08498C13.19117 32.08498 13.6393 31.91592 14.18711 31.56717L14.32648 32.38405C13.89836 32.59311 13.13117 32.7228 12.49367 32.7228C10.65086 32.7228 9.236483 31.16873 9.236483 29.07686C9.236483 27.50311 10.4218 25.590297 12.49367 25.590297C13.41023 25.590297 13.78867 25.749672 14.43617 26.148109L14.37648 26.83561Z'/>
+<path d='M7.0763 92.0121H6.19974L3.600049 85.098973H4.33692L5.10411 87.13116H8.00286L8.75974 85.098973H9.6763L7.0763 92.0121ZM7.78349 87.68897H5.31317L5.96067 89.49179C6.17005 90.0796 6.4788 90.92616 6.54849 91.29491H6.55849C6.57817 91.15554 6.64817 90.90647 6.87724 90.24897L7.78349 87.68897ZM14.5152 88.34647C14.5152 89.13335 14.4755 90.0596 14.0571 90.86647C13.6486 91.61366 12.96146 91.85272 12.45333 91.85272C11.86552 91.85272 11.16833 91.58366 10.75989 90.6971C10.43114 89.96991 10.38145 89.14335 10.38145 88.34647C10.38145 87.55929 10.42114 86.8321 10.72021 86.10491C11.11864 85.148661 11.87552 84.879911 12.44333 84.879911C13.17052 84.879911 13.798 85.288348 14.1168 85.975536C14.4158 86.62304 14.5152 87.28054 14.5152 88.34647ZM12.45333 85.487411C11.93521 85.487411 11.52708 85.865848 11.32771 86.58335C11.16833 87.15085 11.15833 87.68897 11.15833 88.46585C11.15833 89.09335 11.15833 89.69116 11.32771 90.23897C11.38739 90.42835 11.63646 91.24491 12.44333 91.24491C13.22021 91.24491 13.4793 90.48804 13.549 90.30866C13.7383 89.75085 13.7383 89.08335 13.7383 88.46585C13.7383 87.80835 13.7383 87.18085 13.559 86.55335C13.29989 85.646786 12.77208 85.487411 12.45333 85.487411Z'/>
+<path d='M7.0763 113.61213H6.19974L3.600049 106.699004H4.33692L5.10411 108.73119H8.00286L8.75974 106.699004H9.6763L7.0763 113.61213ZM7.78349 109.289H5.31317L5.96067 111.09182C6.17005 111.67963 6.4788 112.52619 6.54849 112.89494H6.55849C6.57817 112.75557 6.64817 112.5065 6.87724 111.849L7.78349 109.289ZM12.94145 113.45275H12.74208C12.15458 112.84494 11.32771 112.81525 10.84958 112.79525V112.21744C11.17833 112.22744 11.65645 112.24744 12.15458 112.4565V107.276817H10.90927V106.699004H14.1865V107.276817H12.94145V113.45275Z'/>
+<path d='M7.0763 135.21314H6.19974L3.600049 128.300016H4.33692L5.10411 130.3322H8.00286L8.75974 128.300016H9.6763L7.0763 135.21314ZM7.78349 130.89002H5.31317L5.96067 132.69283C6.17005 133.28064 6.4788 134.1272 6.54849 134.49595H6.55849C6.57817 134.35658 6.64817 134.10752 6.87724 133.45002L7.78349 130.89002ZM11.69614 130.17283L10.46114 128.937516V128.300016H14.4355V129.007203H12.62271C12.50302 129.007203 12.38364 128.997203 12.26396 128.997203H11.17833C11.49708 129.276266 12.25395 130.02345 12.56302 130.3122C12.75208 130.49158 13.26021 130.9097 13.4496 131.08908C13.8977 131.53752 14.4355 132.06533 14.4355 132.9122C14.4355 134.05752 13.6286 135.05377 12.31396 135.05377C11.17833 135.05377 10.62052 134.27689 10.38145 133.42002C10.50083 133.25064 10.55083 133.19095 10.57052 133.16095C10.59052 133.14127 10.6902 133.01158 10.78989 132.8722C10.98895 133.63908 11.26802 134.41627 12.17427 134.41627C13.11083 134.41627 13.6186 133.66908 13.6186 132.8922C13.6186 132.04533 13.05114 131.47752 12.46333 130.88002L11.69614 130.17283Z'/>
+<path d='M16.464844 131.762H43.4648' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M56.0625 131.762L43.4648 124.5586V138.961L56.0625 131.762' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M61.4648 131.762C61.4648 133.254 60.2539 134.461 58.7617 134.461C57.2695 134.461 56.0625 133.254 56.0625 131.762S57.2695 129.0586 58.7617 129.0586C60.2539 129.0586 61.4648 130.27 61.4648 131.762Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M61.4648 131.762H79.4648' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M97.4648 131.762L84.8633 124.5586V138.961L97.4648 131.762' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M84.8672 131.762C84.8672 133.254 83.6563 134.461 82.1641 134.461S79.4609 133.254 79.4609 131.762S80.6719 129.0586 82.1641 129.0586S84.8672 130.27 84.8672 131.762Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M16.464844 110.1602H43.4648' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M56.0625 110.1602L43.4648 102.9609V117.3594L56.0625 110.1602' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M61.4648 110.1602C61.4648 111.6523 60.2539 112.8594 58.7617 112.8594C57.2695 112.8594 56.0625 111.6523 56.0625 110.1602C56.0625 108.668 57.2695 107.457 58.7617 107.457C60.2539 107.457 61.4648 108.668 61.4648 110.1602Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M61.4648 110.1602H79.4648' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M97.4648 110.1602L84.8633 102.9609V117.3594L97.4648 110.1602' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M84.8672 110.1602C84.8672 111.6523 83.6563 112.8594 82.1641 112.8594S79.4609 111.6523 79.4609 110.1602C79.4609 108.668 80.6719 107.457 82.1641 107.457S84.8672 108.668 84.8672 110.1602Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M16.464844 88.5586H43.4648' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M56.0625 88.5586L43.4648 81.3594V95.7617L56.0625 88.5586' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M61.4648 88.5586C61.4648 90.0508 60.2539 91.2617 58.7617 91.2617C57.2695 91.2617 56.0625 90.0508 56.0625 88.5586C56.0625 87.0664 57.2695 85.8594 58.7617 85.8594C60.2539 85.8594 61.4648 87.0664 61.4648 88.5586Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M61.4648 88.5586H79.4648' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M97.4648 88.5586L84.8633 81.3594V95.7617L97.4648 88.5586' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M84.8672 88.5586C84.8672 90.0508 83.6563 91.2617 82.1641 91.2617S79.4609 90.0508 79.4609 88.5586C79.4609 87.0664 80.6719 85.8594 82.1641 85.8594S84.8672 87.0664 84.8672 88.5586Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M58.7617 29.160156L46.1641 21.95703V36.35937L58.7617 29.160156' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M39.2617 77.7578H30.4648' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M30.7891 77.918C34.1055 71.0508 34.1328 63.0469 30.8633 56.1602' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M30.4648 56.1602H39.2617' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M39.2617 77.7578C46.4961 77.7578 53.0625 73.5391 56.0625 66.957' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M39.2617 56.1602C46.4961 56.1602 53.0625 60.3789 56.0625 66.957' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M61.4648 66.957C61.4648 68.4492 60.2539 69.6602 58.7617 69.6602C57.2695 69.6602 56.0625 68.4492 56.0625 66.957C56.0625 65.4687 57.2695 64.2578 58.7617 64.2578C60.2539 64.2578 61.4648 65.4687 61.4648 66.957Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M84.4648 56.1602H75.6641' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M75.9883 56.3164C79.3047 49.4492 79.332 41.4492 76.0625 34.55859' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M75.6641 34.55859H84.4648' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M84.4648 56.1602C91.6953 56.1602 98.2617 51.9375 101.2656 45.3594' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M84.4648 34.55859C91.6953 34.55859 98.2617 38.78125 101.2656 45.3594' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M106.6641 45.3594C106.6641 46.8516 105.457 48.0625 103.9648 48.0625C102.4727 48.0625 101.2617 46.8516 101.2617 45.3594C101.2617 43.8672 102.4727 42.6602 103.9648 42.6602C105.457 42.6602 106.6641 43.8672 106.6641 45.3594Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M202.066 112.8594H187.664V134.461H202.066' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M202.066 134.461C208.027 134.461 212.867 129.625 212.867 123.6602C212.867 117.6953 208.027 112.8594 202.066 112.8594' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M202.066 42.6602H187.664V64.2578H202.066' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M202.066 64.2578C208.027 64.2578 212.867 59.4258 212.867 53.457C212.867 47.4961 208.027 42.6602 202.066 42.6602' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M245.266 58.8594H230.867V80.4609H245.266' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M245.266 80.4609C251.23 80.4609 256.066 75.625 256.066 69.6602C256.066 63.6953 251.23 58.8594 245.266 58.8594' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M280.621 129.0586H271.82' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M272.145 129.219C275.461 122.3477 275.488 114.3516 272.219 107.4609' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M271.82 107.4609H280.621' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M280.621 129.0586C287.852 129.0586 294.418 124.8398 297.418 118.2617' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M280.621 107.4609C287.852 107.4609 294.418 111.6797 297.418 118.2617' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M302.82 118.2617C302.82 119.75 301.613 120.9609 300.121 120.9609C298.629 120.9609 297.418 119.75 297.418 118.2617C297.418 116.7695 298.629 115.5586 300.121 115.5586C301.613 115.5586 302.82 116.7695 302.82 118.2617Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M280.621 69.6602H271.82' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M272.145 69.8164C275.461 62.9492 275.488 54.9492 272.219 48.0586' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M271.82 48.0586H280.621' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M280.621 69.6602C287.852 69.6602 294.418 65.4375 297.418 58.8594' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M280.621 48.0586C287.852 48.0586 294.418 52.2812 297.418 58.8594' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M302.82 58.8594C302.82 60.3516 301.613 61.5625 300.121 61.5625C298.629 61.5625 297.418 60.3516 297.418 58.8594C297.418 57.3672 298.629 56.1602 300.121 56.1602C301.613 56.1602 302.82 57.3672 302.82 58.8594Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M139.52534 9.38724C139.56534 9.59661 139.57503 9.6963 139.77441 9.73599C139.86409 9.75599 140.14284 9.75599 140.32222 9.75599C141.48784 9.75599 141.84628 9.58661 141.84628 8.59036C141.84628 8.32161 141.82628 8.08255 141.79659 7.82349H142.04566L142.23472 10.06474H136.14847L135.58066 7.82349H135.82972C136.25816 9.36755 136.35784 9.75599 137.95159 9.75599C138.10097 9.75599 138.33003 9.75599 138.38972 9.74599C138.59909 9.72599 138.64878 9.6963 138.64878 9.54661C138.64878 9.46692 138.62878 9.37755 138.61878 9.29786L137.74222 4.078174C137.69253 3.759424 137.66253 3.629736 136.60659 3.629736H136.22816L136.17847 3.320986C136.42753 3.340986 136.86566 3.340986 137.11472 3.340986L138.07097 3.350986C138.52909 3.350986 139.54534 3.350986 139.95378 3.320986L140.00347 3.629736H139.62503C138.77816 3.629736 138.61878 3.709424 138.61878 3.928486C138.61878 3.938486 138.61878 3.978486 138.63878 4.087861L139.52534 9.38724Z'/>
+<path d='M145.9198 5.85099C145.9198 6.95692 145.1426 7.78349 144.06698 7.78349C142.6523 7.78349 141.4373 6.39911 141.4373 5.07411C141.4373 4.038174 142.19417 3.211299 143.3098 3.211299C144.6348 3.211299 145.9198 4.40661 145.9198 5.85099ZM143.3498 3.460361C143.07073 3.460361 142.23417 3.560049 142.23417 4.75536C142.23417 5.12411 142.36355 6.21974 142.6723 6.72786C143.16042 7.52474 143.85761 7.56442 144.02698 7.56442C144.34573 7.56442 145.1526 7.41505 145.1526 6.29942C145.1526 6.07036 145.0729 4.99442 144.7245 4.33692C144.41542 3.769111 143.86761 3.460361 143.3498 3.460361Z'/>
+<path d='M154.2178 5.85099C154.2178 6.95692 153.4407 7.78349 152.365 7.78349C150.9503 7.78349 149.7353 6.39911 149.7353 5.07411C149.7353 4.038174 150.4922 3.211299 151.6078 3.211299C152.9328 3.211299 154.2178 4.40661 154.2178 5.85099ZM151.6478 3.460361C151.3688 3.460361 150.5322 3.560049 150.5322 4.75536C150.5322 5.12411 150.6616 6.21974 150.9703 6.72786C151.4585 7.52474 152.1557 7.56442 152.325 7.56442C152.6438 7.56442 153.4507 7.41505 153.4507 6.29942C153.4507 6.07036 153.371 4.99442 153.0225 4.33692C152.7135 3.769111 152.1657 3.460361 151.6478 3.460361ZM156.5094 7.30536H157.9338C157.9538 7.40505 157.9638 7.51474 157.9838 7.61442H156.5594L156.8582 9.44724H156.6091C156.4497 8.51067 155.9219 7.55442 155.0053 7.52474L154.9753 7.30536H155.8122L155.3638 4.58599C155.3341 4.40661 155.3341 4.38692 155.3341 4.257236C155.3341 3.290986 156.141 3.211299 156.4397 3.211299C156.9078 3.211299 157.2166 3.520361 157.396 3.858799C157.5753 4.167549 157.5953 4.297236 157.7247 5.12411H157.4757C157.3563 4.39692 157.3363 4.257236 157.2069 3.998486C157.1272 3.848799 156.8978 3.460361 156.5194 3.460361C156.101 3.460361 156.0016 3.848799 156.0016 4.137861C156.0016 4.247236 156.0113 4.287236 156.0213 4.35692L156.5094 7.30536ZM163.0535 6.33911C163.0835 6.51849 163.0835 6.54849 163.0835 6.70786C163.0835 7.46474 162.5954 7.7238 161.9079 7.7238C161.0614 7.7238 160.5332 7.1163 160.3342 6.78755L160.3242 6.79755L160.902 10.23411L159.6467 10.13442C159.627 10.13442 159.4776 10.12442 159.4676 10.11442C159.4376 10.09474 159.3979 9.84567 159.3979 9.81567C159.9654 9.81567 160.1051 9.76599 160.1051 9.49692C160.1051 9.48692 160.1051 9.41724 160.0751 9.23786L159.2085 4.058174C159.1489 3.679736 159.1089 3.629736 158.3717 3.629736H158.3617L158.312 3.320986C158.6507 3.330986 159.1785 3.350986 159.4376 3.350986C159.6867 3.350986 160.2245 3.330986 160.5432 3.320986L160.6029 3.629736C160.1051 3.629736 159.876 3.629736 159.876 3.878799C159.876 3.908799 159.9457 4.287236 159.9754 4.4863C160.0451 4.92474 160.1151 5.36317 160.1948 5.8013C160.2445 6.13005 160.3342 6.60817 160.8223 7.0763C161.121 7.34536 161.4995 7.50474 161.8282 7.50474C162.2167 7.50474 162.416 7.30536 162.416 6.83724C162.416 6.68786 162.396 6.57817 162.3064 6.00067L161.9676 4.008174C161.9079 3.629736 161.7485 3.629736 161.141 3.629736H161.131L161.0814 3.320986C161.4198 3.330986 161.9479 3.350986 162.207 3.350986C162.4557 3.350986 162.9939 3.330986 163.3126 3.320986L163.3723 3.629736C162.8742 3.629736 162.6451 3.629736 162.6451 3.878799C162.6451 3.918799 162.6551 3.978486 162.6651 4.028174L163.0535 6.33911ZM167.7918 5.62192C168.0309 5.62192 168.0509 5.62192 168.0806 5.8113C168.1106 6.03036 168.1106 6.18974 168.1106 6.24974C168.1106 7.42505 167.3237 7.78349 166.6065 7.78349C165.2615 7.78349 164.1359 6.4388 164.1359 5.1338C164.1359 4.018174 164.9528 3.211299 165.9987 3.211299C167.224 3.211299 167.8515 4.34692 167.8515 4.5163C167.8515 4.5563 167.8315 4.62599 167.7421 4.62599C167.6621 4.62599 167.6425 4.58599 167.5925 4.4863C167.1143 3.570049 166.3275 3.460361 166.0584 3.460361C165.6003 3.460361 164.9331 3.749424 164.9331 4.82505C164.9331 5.12411 164.9928 5.47255 165.0225 5.62192H167.7918ZM165.0625 5.8313C165.4112 7.41505 166.3575 7.56442 166.5965 7.56442C167.4631 7.56442 167.4631 6.58817 167.4631 6.38911C167.4631 6.17005 167.4531 6.10005 167.4134 5.8313H165.0625ZM170.187 6.68786L170.3564 7.7238L169.141 7.63411C168.9617 7.62411 168.952 7.60442 168.942 7.55442C168.942 7.52474 168.902 7.32536 168.902 7.30536C169.4698 7.30536 169.6092 7.25567 169.6092 6.98661C169.6092 6.97661 169.6092 6.90692 169.5795 6.72786L169.131 4.058174C169.0714 3.679736 169.0317 3.629736 168.2945 3.629736H168.2845L168.2348 3.320986C168.6332 3.330986 169.0914 3.350986 169.3801 3.350986C169.4401 3.350986 170.3167 3.340986 170.6354 3.320986C170.6551 3.420674 170.6651 3.530049 170.6851 3.629736H170.4957C169.8882 3.629736 169.7685 3.689424 169.7685 3.908799C169.7685 4.048174 170.0873 5.8113 170.1373 6.01036C170.3067 6.56849 170.7151 7.50474 171.6214 7.50474V7.49474C171.462 7.42505 171.3526 7.24567 171.3526 7.04661C171.3526 6.74755 171.6017 6.67786 171.731 6.67786C171.9801 6.67786 172.2192 6.87724 172.2192 7.17599C172.2192 7.49474 171.9501 7.7238 171.5617 7.7238C170.9242 7.7238 170.436 7.19599 170.197 6.67786L170.187 6.68786Z'/>
+<path d='M178.0887 10.23411L176.8334 10.13442C176.8137 10.13442 176.664 10.12442 176.6543 10.11442C176.6243 10.09474 176.5843 9.84567 176.5843 9.81567C177.1521 9.81567 177.2918 9.76599 177.2918 9.49692C177.2918 9.48692 177.2918 9.41724 177.2618 9.23786L176.3953 4.058174C176.3353 3.679736 176.2956 3.629736 175.5584 3.629736H175.5484L175.4987 3.320986C175.8275 3.330986 176.3553 3.350986 176.6043 3.350986C176.8434 3.350986 177.3415 3.330986 177.7 3.320986L177.76 3.629736C177.2618 3.629736 177.0328 3.629736 177.0328 3.878799C177.0328 3.918799 177.0428 3.978486 177.0528 4.028174L178.0887 10.23411ZM182.8385 4.76536C182.7985 4.5063 182.7288 4.087861 182.6991 3.998486C182.6194 3.699424 182.43 3.570049 182.2807 3.570049C182.0616 3.570049 181.9916 3.789111 181.9916 3.978486C181.9916 4.078174 182.0813 4.56599 182.1013 4.69567C182.161 5.01442 182.3903 6.30942 182.3903 6.52849C182.3903 7.28567 181.7128 7.78349 180.876 7.78349C179.87 7.78349 179.1925 7.13599 179.1925 6.57817C179.1925 6.40911 179.2922 6.18974 179.601 6.18974C179.89 6.18974 180.1191 6.4288 180.1191 6.70786C180.1191 6.96692 179.9397 7.0963 179.7007 7.1063C180.0094 7.45474 180.5472 7.56442 180.8463 7.56442C181.4141 7.56442 181.7128 7.0963 181.7128 6.59817C181.7128 6.49849 181.6432 5.96067 181.6032 5.93067C181.5835 5.92099 181.5635 5.92099 181.3344 5.91099C179.6907 5.85099 178.5053 5.06411 178.5053 4.137861C178.5053 3.370674 179.4716 3.211299 179.9497 3.211299C180.8363 3.211299 181.3044 3.908799 181.3841 4.048174C181.3841 3.360986 181.8125 3.261299 182.0216 3.261299C182.3107 3.261299 182.8685 3.460361 182.9878 4.187549C183.0178 4.317236 183.0278 4.39692 183.0875 4.76536H182.8385ZM181.4338 4.81505C181.3841 4.5163 181.3344 4.207549 180.9557 3.839111C180.7166 3.600049 180.3682 3.430674 180.0194 3.430674C179.591 3.430674 179.2722 3.709424 179.2722 4.117861C179.2722 4.127861 179.2722 5.61192 181.5835 5.71161L181.4338 4.81505ZM185.3094 7.30536H186.7338C186.7538 7.40505 186.7638 7.51474 186.7838 7.61442H185.3594L185.6582 9.44724H185.4091C185.2497 8.51067 184.7219 7.55442 183.8053 7.52474L183.7753 7.30536H184.6122L184.1638 4.58599C184.1341 4.40661 184.1341 4.38692 184.1341 4.257236C184.1341 3.290986 184.941 3.211299 185.2397 3.211299C185.7078 3.211299 186.0166 3.520361 186.196 3.858799C186.3753 4.167549 186.3953 4.297236 186.5247 5.12411H186.2757C186.1563 4.39692 186.1363 4.257236 186.0069 3.998486C185.9272 3.848799 185.6978 3.460361 185.3194 3.460361C184.901 3.460361 184.8016 3.848799 184.8016 4.137861C184.8016 4.247236 184.8113 4.287236 184.8213 4.35692L185.3094 7.30536ZM191.0267 7.16599C190.5089 7.14599 190.4589 6.73755 190.4589 6.63817C190.4589 6.4688 190.5585 6.24974 190.8673 6.24974C191.1164 6.24974 191.3954 6.4388 191.3954 6.83724C191.3954 7.48474 190.6782 7.78349 190.0207 7.78349C188.656 7.78349 187.4607 6.4788 187.4607 5.09411C187.4607 3.958486 188.2776 3.211299 189.2735 3.211299C190.6082 3.211299 191.1164 4.41661 191.1164 4.5063C191.1164 4.58599 191.0467 4.60599 190.997 4.60599C190.9173 4.60599 190.9073 4.58599 190.8473 4.46661C190.5189 3.789111 189.951 3.460361 189.3732 3.460361C188.8851 3.460361 188.2676 3.809111 188.2676 4.88505C188.2676 6.22974 188.9848 7.53474 190.0207 7.53474C190.1601 7.53474 190.7379 7.51474 191.0267 7.16599Z'/>
+<path d='M196.0042 6.33911C196.0342 6.51849 196.0342 6.54849 196.0342 6.70786C196.0342 7.46474 195.546 7.7238 194.8585 7.7238C194.012 7.7238 193.4839 7.1163 193.2848 6.78755L193.2748 6.79755L193.8526 10.23411L192.5973 10.13442C192.5776 10.13442 192.4282 10.12442 192.4182 10.11442C192.3882 10.09474 192.3485 9.84567 192.3485 9.81567C192.916 9.81567 193.0557 9.76599 193.0557 9.49692C193.0557 9.48692 193.0557 9.41724 193.0257 9.23786L192.1592 4.058174C192.0995 3.679736 192.0595 3.629736 191.3223 3.629736H191.3123L191.2626 3.320986C191.6014 3.330986 192.1292 3.350986 192.3882 3.350986C192.6373 3.350986 193.1751 3.330986 193.4939 3.320986L193.5535 3.629736C193.0557 3.629736 192.8267 3.629736 192.8267 3.878799C192.8267 3.908799 192.8964 4.287236 192.926 4.4863C192.9957 4.92474 193.0657 5.36317 193.1454 5.8013C193.1951 6.13005 193.2848 6.60817 193.7729 7.0763C194.0717 7.34536 194.4501 7.50474 194.7789 7.50474C195.1673 7.50474 195.3667 7.30536 195.3667 6.83724C195.3667 6.68786 195.3467 6.57817 195.257 6.00067L194.9182 4.008174C194.8585 3.629736 194.6992 3.629736 194.0917 3.629736H194.0817L194.032 3.320986C194.3704 3.330986 194.8985 3.350986 195.1576 3.350986C195.4064 3.350986 195.9445 3.330986 196.2632 3.320986L196.3229 3.629736C195.8248 3.629736 195.5957 3.629736 195.5957 3.878799C195.5957 3.918799 195.6057 3.978486 195.6157 4.028174L196.0042 6.33911ZM200.7425 5.62192C200.9815 5.62192 201.0015 5.62192 201.0312 5.8113C201.0612 6.03036 201.0612 6.18974 201.0612 6.24974C201.0612 7.42505 200.2743 7.78349 199.5571 7.78349C198.2121 7.78349 197.0865 6.4388 197.0865 5.1338C197.0865 4.018174 197.9034 3.211299 198.9493 3.211299C200.1746 3.211299 200.8021 4.34692 200.8021 4.5163C200.8021 4.5563 200.7821 4.62599 200.6928 4.62599C200.6128 4.62599 200.5931 4.58599 200.5431 4.4863C200.065 3.570049 199.2781 3.460361 199.009 3.460361C198.5509 3.460361 197.8837 3.749424 197.8837 4.82505C197.8837 5.12411 197.9434 5.47255 197.9731 5.62192H200.7425ZM198.0131 5.8313C198.3618 7.41505 199.3081 7.56442 199.5471 7.56442C200.4137 7.56442 200.4137 6.58817 200.4137 6.38911C200.4137 6.17005 200.4037 6.10005 200.364 5.8313H198.0131ZM204.9507 7.53474C204.9704 7.62411 204.9704 7.64411 204.9704 7.67411C204.9704 7.7338 204.9407 7.78349 204.861 7.78349C204.821 7.78349 204.801 7.78349 204.6517 7.65411C204.5323 7.56442 204.5223 7.56442 204.4526 7.50474C204.1239 7.78349 203.6854 7.78349 203.556 7.78349C202.1317 7.78349 201.7629 6.88724 201.7629 6.40911C201.7629 6.07036 201.9223 5.8413 202.1217 5.67192C202.3907 5.44286 202.6895 5.38286 203.1576 5.29317C203.5957 5.2038 204.1935 5.08411 204.1935 4.47661C204.1935 4.137861 203.9445 3.430674 202.8885 3.430674C202.4004 3.430674 201.8129 3.600049 201.7529 4.80536C201.7432 4.96474 201.7432 5.01442 201.6235 5.01442C201.5239 5.01442 201.5139 4.98442 201.4842 4.80536L201.2551 3.470361C201.2351 3.380674 201.2351 3.360986 201.2351 3.320986C201.2351 3.251299 201.2748 3.211299 201.3448 3.211299C201.3945 3.211299 201.4045 3.221299 201.6135 3.420674C201.6732 3.470361 201.8129 3.600049 201.8626 3.649736C202.1217 3.310986 202.5001 3.211299 202.8885 3.211299C204.3429 3.211299 204.7214 4.267236 204.7214 4.78536C204.7214 5.1638 204.562 5.41286 204.3829 5.58224C204.0939 5.88099 203.8351 5.93067 203.297 6.03036C202.8489 6.12005 202.291 6.22974 202.291 6.72786C202.291 6.73755 202.291 7.59442 203.556 7.59442C203.7454 7.59442 204.5323 7.59442 204.5323 6.68786C204.5323 6.55849 204.5123 6.4288 204.5123 6.39911C204.5123 6.30942 204.602 6.29942 204.632 6.29942C204.7414 6.29942 204.7514 6.35911 204.7814 6.52849L204.9507 7.53474Z'/>
+<path d='M32.7109 72.3594H16.464844' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M8.704212 75.81309V68.899969H11.3239C13.01734 68.899969 14.37202 70.41403 14.37202 72.29684C14.37202 74.22934 13.02734 75.81309 11.31421 75.81309H8.704212ZM9.56077 69.457781V75.25528H11.08484C12.47952 75.25528 13.51546 74.04997 13.51546 72.29684C13.51546 70.60341 12.47952 69.457781 11.08484 69.457781H9.56077Z'/>
+<path d='M32.7109 61.5586H16.464844' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M14.10396 61.37616V61.98397H10.81678V64.3446H12.19146C12.31115 64.3446 12.43053 64.3346 12.55021 64.3346H14.37303V64.9821H9.930214V58.098973H14.5124V58.806161H13.2574C13.13771 58.806161 13.01834 58.796161 12.89865 58.796161H10.81678V61.37616H14.10396Z'/>
+<path d='M25.14844 61.5586C25.14844 62.3555 24.50391 63 23.71094 63C22.91406 63 22.26953 62.3555 22.26953 61.5586C22.26953 60.7656 22.91406 60.1211 23.71094 60.1211C24.50391 60.1211 25.14844 60.7656 25.14844 61.5586Z'/>
+<path d='M25.14844 61.5586C25.14844 62.3555 24.50391 63 23.71094 63C22.91406 63 22.26953 62.3555 22.26953 61.5586C22.26953 60.7656 22.91406 60.1211 23.71094 60.1211C24.50391 60.1211 25.14844 60.7656 25.14844 61.5586Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M23.71094 61.5586V39.957H77.9102' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M16.464844 29.160156H46.1641' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M71.9023 131.762C71.9023 132.555 71.2578 133.199 70.4648 133.199C69.668 133.199 69.0234 132.555 69.0234 131.762C69.0234 130.965 69.668 130.32 70.4648 130.32C71.2578 130.32 71.9023 130.965 71.9023 131.762Z'/>
+<path d='M71.9023 131.762C71.9023 132.555 71.2578 133.199 70.4648 133.199C69.668 133.199 69.0234 132.555 69.0234 131.762C69.0234 130.965 69.668 130.32 70.4648 130.32C71.2578 130.32 71.9023 130.965 71.9023 131.762Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M70.4648 131.762V120.9609' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M70.4648 120.9609H133.664' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M131.863 21.95703L133.664 14.7578L135.465 21.95703Z'/>
+<path d='M131.863 21.95703L133.664 14.7578L135.465 21.95703Z' stroke='#000' fill='none' stroke-width='0.5' stroke-miterlimit='10'/>
+<path d='M133.664 120.9609V16.4062' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M71.9023 110.1602C71.9023 110.9531 71.2578 111.6016 70.4648 111.6016C69.668 111.6016 69.0234 110.9531 69.0234 110.1602C69.0234 109.3633 69.668 108.7188 70.4648 108.7188C71.2578 108.7188 71.9023 109.3633 71.9023 110.1602Z'/>
+<path d='M71.9023 110.1602C71.9023 110.9531 71.2578 111.6016 70.4648 111.6016C69.668 111.6016 69.0234 110.9531 69.0234 110.1602C69.0234 109.3633 69.668 108.7188 70.4648 108.7188C71.2578 108.7188 71.9023 109.3633 71.9023 110.1602Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M70.4648 110.1602V99.3594' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M70.4648 99.3594H124.664' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M122.863 21.95703L124.664 14.7578L126.465 21.95703Z'/>
+<path d='M122.863 21.95703L124.664 14.7578L126.465 21.95703Z' stroke='#000' fill='none' stroke-width='0.5' stroke-miterlimit='10'/>
+<path d='M124.664 99.3594V16.4062' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M71.9023 88.5586C71.9023 89.3555 71.2578 90 70.4648 90C69.668 90 69.0234 89.3555 69.0234 88.5586C69.0234 87.7656 69.668 87.1211 70.4648 87.1211C71.2578 87.1211 71.9023 87.7656 71.9023 88.5586Z'/>
+<path d='M71.9023 88.5586C71.9023 89.3555 71.2578 90 70.4648 90C69.668 90 69.0234 89.3555 69.0234 88.5586C69.0234 87.7656 69.668 87.1211 70.4648 87.1211C71.2578 87.1211 71.9023 87.7656 71.9023 88.5586Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M70.4648 88.5586V77.7578' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M70.4648 77.7578H115.6641' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M113.8633 21.95703L115.6641 14.7578L117.465 21.95703Z'/>
+<path d='M113.8633 21.95703L115.6641 14.7578L117.465 21.95703Z' stroke='#000' fill='none' stroke-width='0.5' stroke-miterlimit='10'/>
+<path d='M115.6641 77.7578V16.4062' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M71.9023 67.0391C71.9023 67.832 71.2578 68.4766 70.4648 68.4766C69.668 68.4766 69.0234 67.832 69.0234 67.0391C69.0234 66.2422 69.668 65.5977 70.4648 65.5977C71.2578 65.5977 71.9023 66.2422 71.9023 67.0391Z'/>
+<path d='M71.9023 67.0391C71.9023 67.832 71.2578 68.4766 70.4648 68.4766C69.668 68.4766 69.0234 67.832 69.0234 67.0391C69.0234 66.2422 69.668 65.5977 70.4648 65.5977C71.2578 65.5977 71.9023 66.2422 71.9023 67.0391Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M70.4648 67.0391V50.7578H77.9102' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M187.664 131.762H151.664' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M149.863 21.95703L151.664 14.7578L153.465 21.95703Z'/>
+<path d='M149.863 21.95703L151.664 14.7578L153.465 21.95703Z' stroke='#000' fill='none' stroke-width='0.5' stroke-miterlimit='10'/>
+<path d='M151.664 131.762V16.4062' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M187.664 126.3594H160.664' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M158.863 21.95703L160.664 14.7578L162.465 21.95703Z'/>
+<path d='M158.863 21.95703L160.664 14.7578L162.465 21.95703Z' stroke='#000' fill='none' stroke-width='0.5' stroke-miterlimit='10'/>
+<path d='M160.664 126.3594V16.4062' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M187.664 120.9609H169.664' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M167.863 21.95703L169.664 14.7578L171.465 21.95703Z'/>
+<path d='M167.863 21.95703L169.664 14.7578L171.465 21.95703Z' stroke='#000' fill='none' stroke-width='0.5' stroke-miterlimit='10'/>
+<path d='M169.664 120.9609V16.4062' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M187.664 115.5586H178.664' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M176.863 21.95703L178.664 14.7578L180.465 21.95703Z'/>
+<path d='M176.863 21.95703L178.664 14.7578L180.465 21.95703Z' stroke='#000' fill='none' stroke-width='0.5' stroke-miterlimit='10'/>
+<path d='M178.664 115.5586V16.4062' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M97.4648 131.762H151.664' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M153.105 131.762C153.105 132.555 152.461 133.199 151.664 133.199S150.223 132.555 150.223 131.762C150.223 130.965 150.867 130.32 151.664 130.32S153.105 130.965 153.105 131.762Z'/>
+<path d='M153.105 131.762C153.105 132.555 152.461 133.199 151.664 133.199S150.223 132.555 150.223 131.762C150.223 130.965 150.867 130.32 151.664 130.32S153.105 130.965 153.105 131.762Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M97.4648 110.1602H160.664' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M162.105 110.1602C162.105 110.9531 161.461 111.6016 160.664 111.6016S159.223 110.9531 159.223 110.1602C159.223 109.3633 159.867 108.7188 160.664 108.7188S162.105 109.3633 162.105 110.1602Z'/>
+<path d='M162.105 110.1602C162.105 110.9531 161.461 111.6016 160.664 111.6016S159.223 110.9531 159.223 110.1602C159.223 109.3633 159.867 108.7188 160.664 108.7188S162.105 109.3633 162.105 110.1602Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M97.4648 88.5586H169.664' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M171.105 88.5586C171.105 89.3555 170.461 90 169.664 90C168.871 90 168.223 89.3555 168.223 88.5586C168.223 87.7656 168.871 87.1211 169.664 87.1211C170.461 87.1211 171.105 87.7656 171.105 88.5586Z'/>
+<path d='M171.105 88.5586C171.105 89.3555 170.461 90 169.664 90C168.871 90 168.223 89.3555 168.223 88.5586C168.223 87.7656 168.871 87.1211 169.664 87.1211C170.461 87.1211 171.105 87.7656 171.105 88.5586Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M61.4648 66.957L178.664 67.0391' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M180.105 67.0391C180.105 67.832 179.461 68.4766 178.664 68.4766C177.871 68.4766 177.227 67.832 177.227 67.0391C177.227 66.2422 177.871 65.5977 178.664 65.5977C179.461 65.5977 180.105 66.2422 180.105 67.0391Z'/>
+<path d='M180.105 67.0391C180.105 67.832 179.461 68.4766 178.664 68.4766C177.871 68.4766 177.227 67.832 177.227 67.0391C177.227 66.2422 177.871 65.5977 178.664 65.5977C179.461 65.5977 180.105 66.2422 180.105 67.0391Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M187.664 61.5586H151.664' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M153.105 61.5586C153.105 62.3555 152.461 63 151.664 63S150.223 62.3555 150.223 61.5586C150.223 60.7656 150.867 60.1211 151.664 60.1211S153.105 60.7656 153.105 61.5586Z'/>
+<path d='M153.105 61.5586C153.105 62.3555 152.461 63 151.664 63S150.223 62.3555 150.223 61.5586C150.223 60.7656 150.867 60.1211 151.664 60.1211S153.105 60.7656 153.105 61.5586Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M187.664 56.1602H160.664' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M162.105 56.1602C162.105 56.9531 161.461 57.5977 160.664 57.5977S159.223 56.9531 159.223 56.1602C159.223 55.3633 159.867 54.7187 160.664 54.7187S162.105 55.3633 162.105 56.1602Z'/>
+<path d='M162.105 56.1602C162.105 56.9531 161.461 57.5977 160.664 57.5977S159.223 56.9531 159.223 56.1602C159.223 55.3633 159.867 54.7187 160.664 54.7187S162.105 55.3633 162.105 56.1602Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M187.664 50.7578H169.664' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M171.105 50.7578C171.105 51.5547 170.461 52.1992 169.664 52.1992C168.871 52.1992 168.223 51.5547 168.223 50.7578C168.223 49.9648 168.871 49.3203 169.664 49.3203C170.461 49.3203 171.105 49.9648 171.105 50.7578Z'/>
+<path d='M171.105 50.7578C171.105 51.5547 170.461 52.1992 169.664 52.1992C168.871 52.1992 168.223 51.5547 168.223 50.7578C168.223 49.9648 168.871 49.3203 169.664 49.3203C170.461 49.3203 171.105 49.9648 171.105 50.7578Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M106.6641 45.3594H187.664' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M144.105 45.3594C144.105 46.1562 143.461 46.8008 142.664 46.8008C141.867 46.8008 141.223 46.1562 141.223 45.3594C141.223 44.5625 141.867 43.918 142.664 43.918C143.461 43.918 144.105 44.5625 144.105 45.3594Z'/>
+<path d='M144.105 45.3594C144.105 46.1562 143.461 46.8008 142.664 46.8008C141.867 46.8008 141.223 46.1562 141.223 45.3594C141.223 44.5625 141.867 43.918 142.664 43.918C143.461 43.918 144.105 44.5625 144.105 45.3594Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M140.863 21.95703L142.664 14.7578L144.465 21.95703Z'/>
+<path d='M140.863 21.95703L142.664 14.7578L144.465 21.95703Z' stroke='#000' fill='none' stroke-width='0.5' stroke-miterlimit='10'/>
+<path d='M142.664 45.3594V16.4062' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M212.867 123.6602H274.066' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M302.82 118.2617H311.82' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M313.262 118.2617C313.262 119.0547 312.617 119.6992 311.82 119.6992C311.023 119.6992 310.379 119.0547 310.379 118.2617C310.379 117.4648 311.023 116.8203 311.82 116.8203C312.617 116.8203 313.262 117.4648 313.262 118.2617Z'/>
+<path d='M313.262 118.2617C313.262 119.0547 312.617 119.6992 311.82 119.6992C311.023 119.6992 310.379 119.0547 310.379 118.2617C310.379 117.4648 311.023 116.8203 311.82 116.8203C312.617 116.8203 313.262 117.4648 313.262 118.2617Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M311.82 118.2617H320.82' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M327.64537 115.750748C328.731 116.59731 329.09975 117.81262 329.09975 118.85856C329.09975 120.95044 327.65537 122.55418 326.00162 122.55418C324.30819 122.55418 322.893811 120.93044 322.893811 118.85856C322.893811 116.74669 324.36819 115.202935 325.99162 115.202935C326.151 115.202935 326.51975 115.212935 326.94819 115.381998L327.80475 114.177H328.83069L327.64537 115.750748ZM326.55944 115.930123C326.54975 115.930123 326.29069 115.840435 326.00162 115.840435C324.82631 115.840435 323.75037 117.00575 323.75037 118.85856C323.75037 120.72137 324.83631 121.91669 325.99162 121.91669C327.18725 121.91669 328.24287 120.70137 328.24287 118.85856C328.24287 118.21106 328.1235 117.12544 327.22694 116.30856L326.44006 117.3545H325.5535L326.55944 115.930123ZM331.98037 121.24919C332.10006 121.24919 332.21944 121.25918 332.3391 121.25918H333.5444C332.07006 119.63575 331.1835 117.64325 331.1835 115.31231H332.02037C332.02037 118.30075 333.4447 120.43262 334.2216 121.30919V121.95669H330.08787V121.24919H331.98037Z'/>
+<path d='M311.82 118.2617V100.2617L221.867 84.0586' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M221.867 84.0586V75.0586H230.867' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M274.066 112.8594H221.867' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M221.867 112.8594V103.8594L311.82 76.8594' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M311.82 76.8594V58.9375L302.82 58.8594' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M256.066 69.6602H265.066' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M265.066 69.6602V64.2578H274.066' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M212.867 53.457H274.066' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M230.867 64.2578H221.867' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M220.066 21.95703L221.867 14.7578L223.664 21.95703Z'/>
+<path d='M220.066 21.95703L221.867 14.7578L223.664 21.95703Z' stroke='#000' fill='none' stroke-width='0.5' stroke-miterlimit='10'/>
+<path d='M221.867 64.2578V16.4062' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M223.305 29.160156C223.305 29.953125 222.66 30.59766 221.867 30.59766C221.07 30.59766 220.426 29.953125 220.426 29.160156C220.426 28.363281 221.07 27.71875 221.867 27.71875C222.66 27.71875 223.305 28.363281 223.305 29.160156Z'/>
+<path d='M223.305 29.160156C223.305 29.953125 222.66 30.59766 221.867 30.59766C221.07 30.59766 220.426 29.953125 220.426 29.160156C220.426 28.363281 221.07 27.71875 221.867 27.71875C222.66 27.71875 223.305 28.363281 223.305 29.160156Z' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+<path d='M221.867 29.160156H58.7617' stroke='#000' fill='none' stroke-width='0.8' stroke-miterlimit='10'/>
+</g>
+</g>
+</svg>
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/test.pdf b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/test.pdf Binary files differnew file mode 100644 index 00000000000..05af7c12631 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/test.pdf diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/test.pic b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/test.pic new file mode 100644 index 00000000000..d035baa113d --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/test.pic @@ -0,0 +1,383 @@ +.PS +# ex08.m4 +# log_init Version 9.3: TikZ PGF m4 macro settings. + +# log_init begin + # gen_init Version 9.3: TikZ PGF m4 macro settings. + + + define rpoint__ { + rp_wid = last line.end.x-last line.start.x + rp_ht = last line.end.y-last line.start.y + rp_len = sqrt(abs((rp_wid)^2+(rp_ht)^2)); move to last line.start + rp_ang = atan2(rp_ht,rp_wid) } + + rtod_ = 57.295779513082323; dtor_ = 0.017453292519943295 + twopi_ = 6.2831853071795862; pi_ = (twopi_/2) + rp_ang = 0; right + + + linethick = 0.8 + arrowwid = 0.05*scale; arrowht = 0.1*scale + + + # gen_init end + + +# log_init end + + + + +# Input labels +C: (0,0); "\sf C " rjust at C +DE: C+(0,((linewid/10))*((2*3)*7/4)) +A0: DE+(0,((linewid/10))*(4*3/2)); "\sf A0 " rjust at A0 +A1: A0+(0,((linewid/10))*(4*3/2)); "\sf A1 " rjust at A1 +A2: A1+(0,((linewid/10))*(4*3/2)); "\sf A2 " rjust at A2 + move to (-0.2,0) # Lettering within the global object + +# Buffer strings + line right 3*(linewid/10)*5/2 from A2 + B1: [Tm: line from (((linewid/10))*(3.5),0) \ + to (0,((linewid/10))*(-4/2)) \ + then to (0,((linewid/10))*(4/2)) \ + then to (((linewid/10))*(3.5),0) + Tc: (((linewid/10))*(3.5/2),0) + NE: (((linewid/10))*(3.5/2),((linewid/10))*(4/4)) + SE: (((linewid/10))*(3.5/2),((linewid/10))*(-4/4)) + Out: (((linewid/10))*(3.5+(3/2)),0) + N_Out: circle diam (3/2)*(linewid/10) \ + at (((linewid/10))*(3.5+((3/2)/2)),0) + In1: (0,0) + C: (((linewid/10))*(3.5/3),0) + + + + ]; line right 2*(linewid/10)*5/2 + T1: last line.c + B2: [Tm: line from (((linewid/10))*(3.5),0) \ + to (0,((linewid/10))*(-4/2)) \ + then to (0,((linewid/10))*(4/2)) \ + then to (((linewid/10))*(3.5),0) + Tc: (((linewid/10))*(3.5/2),0) + In1: (((linewid/10))*(-(3/2)),0) + N_In1: circle diam (3/2)*(linewid/10) \ + at (((linewid/10))*(-((3/2)/2)),0) + NE: (((linewid/10))*(3.5/2),((linewid/10))*(4/4)) + SE: (((linewid/10))*(3.5/2),((linewid/10))*(-4/4)) + Out: (((linewid/10))*(3.5),0) + C: (((linewid/10))*(3.5/3),0) + + + + ] + line right 3*(linewid/10)*5/2 from A1 + B3: [Tm: line from (((linewid/10))*(3.5),0) \ + to (0,((linewid/10))*(-4/2)) \ + then to (0,((linewid/10))*(4/2)) \ + then to (((linewid/10))*(3.5),0) + Tc: (((linewid/10))*(3.5/2),0) + NE: (((linewid/10))*(3.5/2),((linewid/10))*(4/4)) + SE: (((linewid/10))*(3.5/2),((linewid/10))*(-4/4)) + Out: (((linewid/10))*(3.5+(3/2)),0) + N_Out: circle diam (3/2)*(linewid/10) \ + at (((linewid/10))*(3.5+((3/2)/2)),0) + In1: (0,0) + C: (((linewid/10))*(3.5/3),0) + + + + ]; line right 2*(linewid/10)*5/2 + T2: last line.c + B4: [Tm: line from (((linewid/10))*(3.5),0) \ + to (0,((linewid/10))*(-4/2)) \ + then to (0,((linewid/10))*(4/2)) \ + then to (((linewid/10))*(3.5),0) + Tc: (((linewid/10))*(3.5/2),0) + In1: (((linewid/10))*(-(3/2)),0) + N_In1: circle diam (3/2)*(linewid/10) \ + at (((linewid/10))*(-((3/2)/2)),0) + NE: (((linewid/10))*(3.5/2),((linewid/10))*(4/4)) + SE: (((linewid/10))*(3.5/2),((linewid/10))*(-4/4)) + Out: (((linewid/10))*(3.5),0) + C: (((linewid/10))*(3.5/3),0) + + + + ] + line right 3*(linewid/10)*5/2 from A0 + B5: [Tm: line from (((linewid/10))*(3.5),0) \ + to (0,((linewid/10))*(-4/2)) \ + then to (0,((linewid/10))*(4/2)) \ + then to (((linewid/10))*(3.5),0) + Tc: (((linewid/10))*(3.5/2),0) + NE: (((linewid/10))*(3.5/2),((linewid/10))*(4/4)) + SE: (((linewid/10))*(3.5/2),((linewid/10))*(-4/4)) + Out: (((linewid/10))*(3.5+(3/2)),0) + N_Out: circle diam (3/2)*(linewid/10) \ + at (((linewid/10))*(3.5+((3/2)/2)),0) + In1: (0,0) + C: (((linewid/10))*(3.5/3),0) + + + + ]; line right 2*(linewid/10)*5/2 + T3: last line.c + B6: [Tm: line from (((linewid/10))*(3.5),0) \ + to (0,((linewid/10))*(-4/2)) \ + then to (0,((linewid/10))*(4/2)) \ + then to (((linewid/10))*(3.5),0) + Tc: (((linewid/10))*(3.5/2),0) + In1: (((linewid/10))*(-(3/2)),0) + N_In1: circle diam (3/2)*(linewid/10) \ + at (((linewid/10))*(-((3/2)/2)),0) + NE: (((linewid/10))*(3.5/2),((linewid/10))*(4/4)) + SE: (((linewid/10))*(3.5/2),((linewid/10))*(-4/4)) + Out: (((linewid/10))*(3.5),0) + C: (((linewid/10))*(3.5/3),0) + + + + ] + + +B7: [Tm: line from (((linewid/10))*(3.5),0) \ + to (0,((linewid/10))*(-4/2)) \ + then to (0,((linewid/10))*(4/2)) \ + then to (((linewid/10))*(3.5),0) + Tc: (((linewid/10))*(3.5/2),0) + NE: (((linewid/10))*(3.5/2),((linewid/10))*(4/4)) + SE: (((linewid/10))*(3.5/2),((linewid/10))*(-4/4)) + Out: (((linewid/10))*(3.5),0) + In1: (0,0) + C: (((linewid/10))*(3.5/3),0) + + + + ] at (B1,C) + +G1: [ Bt: line from (((linewid/10))*(0+7/3),((linewid/10))*((2*3)/2)) \ + to (0,((linewid/10))*((2*3)/2)) chop 0 chop -(linethick *(scale/72)/2) + ArcB: arc cw to (0,((linewid/10))*(-(2*3)/2)) \ + with .c at (((linewid/10))*(0-sqrt((7*(2*3)/((2*3)))^2-((2*3)/2)^2)),0) + Bb: line to (((linewid/10))*(0+7/3),((linewid/10))*(-(2*3)/2)) chop -(linethick *(scale/72)/2) chop 0 + ArcN: arc cw from (((linewid/10))*(0+7/3),((linewid/10))*((2*3)/2)) \ + to (((linewid/10))*(0+7),0) \ + with .c at (((linewid/10))*(0+7/3),((linewid/10))*(-((7*2/3)^2-((2*3)/2)^2)/((2*3)))) + ArcS: arc ccw from (((linewid/10))*(0+7/3),((linewid/10))*(-(2*3)/2)) \ + to (((linewid/10))*(0+7),0) \ + with .c at (((linewid/10))*(0+7/3),((linewid/10))*(((7*2/3)^2-((2*3)/2)^2)/((2*3)))) + NE: (((linewid/10))*(0+7/3),((linewid/10))*(-((7*2/3)^2-((2*3)/2)^2)/((2*3))))+(((linewid/10))*(((2*3)/2+((7*2/3)^2-((2*3)/2)^2)/((2*3)))*(cos((60)*dtor_))),((linewid/10))*(((2*3)/2+((7*2/3)^2-((2*3)/2)^2)/((2*3)))*(sin((60)*dtor_)))) + SE: (((linewid/10))*(0+7/3),((linewid/10))*(((7*2/3)^2-((2*3)/2)^2)/((2*3))))+(((linewid/10))*(((2*3)/2+((7*2/3)^2-((2*3)/2)^2)/((2*3)))*(cos((-60)*dtor_))),((linewid/10))*(((2*3)/2+((7*2/3)^2-((2*3)/2)^2)/((2*3)))*(sin((-60)*dtor_)))) + N_Out: circle diam (3/2)*(linewid/10) \ + at (((linewid/10))*(0+7+((3/2)/2)),0) + Out: (((linewid/10))*(0+7+(3/2)),0) + In1: (((linewid/10))*(-sqrt((7*(2*3)/((2*3)))^2-((2*3)/2)^2)+sqrt((7*(2*3)/((2*3)))^2-((2*3)/2/min(2,6-1)*(2+1-2*1))^2)),((linewid/10))*((2*3)/2/min(2,6-1)*(2+1-2*1))) + + In2: (((linewid/10))*(-sqrt((7*(2*3)/((2*3)))^2-((2*3)/2)^2)+sqrt((7*(2*3)/((2*3)))^2-((2*3)/2/min(2,6-1)*(2+1-2*2))^2)),((linewid/10))*((2*3)/2/min(2,6-1)*(2+1-2*2))) + + + + C: (((linewid/10))*(0+7/2),0) + ] with .Out at (B1.Out,DE) +G2: [ Bt: line from (((linewid/10))*(0+7/3),((linewid/10))*((2*3)/2)) \ + to (0,((linewid/10))*((2*3)/2)) chop 0 chop -(linethick *(scale/72)/2) + ArcB: arc cw to (0,((linewid/10))*(-(2*3)/2)) \ + with .c at (((linewid/10))*(0-sqrt((7*(2*3)/((2*3)))^2-((2*3)/2)^2)),0) + Bb: line to (((linewid/10))*(0+7/3),((linewid/10))*(-(2*3)/2)) chop -(linethick *(scale/72)/2) chop 0 + ArcN: arc cw from (((linewid/10))*(0+7/3),((linewid/10))*((2*3)/2)) \ + to (((linewid/10))*(0+7),0) \ + with .c at (((linewid/10))*(0+7/3),((linewid/10))*(-((7*2/3)^2-((2*3)/2)^2)/((2*3)))) + ArcS: arc ccw from (((linewid/10))*(0+7/3),((linewid/10))*(-(2*3)/2)) \ + to (((linewid/10))*(0+7),0) \ + with .c at (((linewid/10))*(0+7/3),((linewid/10))*(((7*2/3)^2-((2*3)/2)^2)/((2*3)))) + NE: (((linewid/10))*(0+7/3),((linewid/10))*(-((7*2/3)^2-((2*3)/2)^2)/((2*3))))+(((linewid/10))*(((2*3)/2+((7*2/3)^2-((2*3)/2)^2)/((2*3)))*(cos((60)*dtor_))),((linewid/10))*(((2*3)/2+((7*2/3)^2-((2*3)/2)^2)/((2*3)))*(sin((60)*dtor_)))) + SE: (((linewid/10))*(0+7/3),((linewid/10))*(((7*2/3)^2-((2*3)/2)^2)/((2*3))))+(((linewid/10))*(((2*3)/2+((7*2/3)^2-((2*3)/2)^2)/((2*3)))*(cos((-60)*dtor_))),((linewid/10))*(((2*3)/2+((7*2/3)^2-((2*3)/2)^2)/((2*3)))*(sin((-60)*dtor_)))) + N_Out: circle diam (3/2)*(linewid/10) \ + at (((linewid/10))*(0+7+((3/2)/2)),0) + Out: (((linewid/10))*(0+7+(3/2)),0) + In1: (((linewid/10))*(-sqrt((7*(2*3)/((2*3)))^2-((2*3)/2)^2)+sqrt((7*(2*3)/((2*3)))^2-((2*3)/2/min(2,6-1)*(2+1-2*1))^2)),((linewid/10))*((2*3)/2/min(2,6-1)*(2+1-2*1))) + + In2: (((linewid/10))*(-sqrt((7*(2*3)/((2*3)))^2-((2*3)/2)^2)+sqrt((7*(2*3)/((2*3)))^2-((2*3)/2/min(2,6-1)*(2+1-2*2))^2)),((linewid/10))*((2*3)/2/min(2,6-1)*(2+1-2*2))) + + + + C: (((linewid/10))*(0+7/2),0) + ] at (B2+(((linewid/10))*(((3/2)/2)),0),G1-(0,((linewid/10))*((2*3)))) +G3: [ Bm: line from (((linewid/10))*(7-(2*3)/2),((linewid/10))*(-(2*3)/2)) \ + to (0,((linewid/10))*(-(2*3)/2)) \ + then to (0,((linewid/10))*((2*3)/2)) then \ + to (((linewid/10))*(7-(2*3)/2),((linewid/10))*((2*3)/2)) + Arc: arc cw rad (2*3)/2 \ + to Here+(0,((linewid/10))*(-(2*3))) \ + with .c at Here+(0,((linewid/10))*(-(2*3)/2)) + NE: (((linewid/10))*(7-(2*3)/2),0)+(((linewid/10))*(((2*3)/2)*(cos((45)*dtor_))),((linewid/10))*(((2*3)/2)*(sin((45)*dtor_)))) + SE: (((linewid/10))*(7-(2*3)/2),0)+(((linewid/10))*(((2*3)/2)*(cos((-45)*dtor_))),((linewid/10))*(((2*3)/2)*(sin((-45)*dtor_)))) + Out: (((linewid/10))*(7),0) + + In1: (0,((linewid/10))*((2*3)/min(4,6-1)*((4+1)/2-1))) + In2: (0,((linewid/10))*((2*3)/min(4,6-1)*((4+1)/2-2))) + In3: (0,((linewid/10))*((2*3)/min(4,6-1)*((4+1)/2-3))) + In4: (0,((linewid/10))*((2*3)/min(4,6-1)*((4+1)/2-4))) + + C: (((linewid/10))*(7/2),0) + ] with .In1 at (G2.Out+(9*(linewid/10)*5/2,0),A2) +G5: [ Bm: line from (((linewid/10))*(7-(2*3)/2),((linewid/10))*(-(2*3)/2)) \ + to (0,((linewid/10))*(-(2*3)/2)) \ + then to (0,((linewid/10))*((2*3)/2)) then \ + to (((linewid/10))*(7-(2*3)/2),((linewid/10))*((2*3)/2)) + Arc: arc cw rad (2*3)/2 \ + to Here+(0,((linewid/10))*(-(2*3))) \ + with .c at Here+(0,((linewid/10))*(-(2*3)/2)) + NE: (((linewid/10))*(7-(2*3)/2),0)+(((linewid/10))*(((2*3)/2)*(cos((45)*dtor_))),((linewid/10))*(((2*3)/2)*(sin((45)*dtor_)))) + SE: (((linewid/10))*(7-(2*3)/2),0)+(((linewid/10))*(((2*3)/2)*(cos((-45)*dtor_))),((linewid/10))*(((2*3)/2)*(sin((-45)*dtor_)))) + Out: (((linewid/10))*(7),0) + + In1: (0,((linewid/10))*((2*3)/min(4,6-1)*((4+1)/2-1))) + In2: (0,((linewid/10))*((2*3)/min(4,6-1)*((4+1)/2-2))) + In3: (0,((linewid/10))*((2*3)/min(4,6-1)*((4+1)/2-3))) + In4: (0,((linewid/10))*((2*3)/min(4,6-1)*((4+1)/2-4))) + + C: (((linewid/10))*(7/2),0) + ] with .In4 at (G3.In1,G2.Out) +G6: [ Bm: line from (((linewid/10))*(7-(2*3)/2),((linewid/10))*(-(2*3)/2)) \ + to (0,((linewid/10))*(-(2*3)/2)) \ + then to (0,((linewid/10))*((2*3)/2)) then \ + to (((linewid/10))*(7-(2*3)/2),((linewid/10))*((2*3)/2)) + Arc: arc cw rad (2*3)/2 \ + to Here+(0,((linewid/10))*(-(2*3))) \ + with .c at Here+(0,((linewid/10))*(-(2*3)/2)) + NE: (((linewid/10))*(7-(2*3)/2),0)+(((linewid/10))*(((2*3)/2)*(cos((45)*dtor_))),((linewid/10))*(((2*3)/2)*(sin((45)*dtor_)))) + SE: (((linewid/10))*(7-(2*3)/2),0)+(((linewid/10))*(((2*3)/2)*(cos((-45)*dtor_))),((linewid/10))*(((2*3)/2)*(sin((-45)*dtor_)))) + Out: (((linewid/10))*(7),0) + + In1: (0,((linewid/10))*((2*3)/min(2,6-1)*((2+1)/2-1))) + In2: (0,((linewid/10))*((2*3)/min(2,6-1)*((2+1)/2-2))) + + C: (((linewid/10))*(7/2),0) + ] at G5+(((linewid/10))*(7),((linewid/10))*((2*3)*3/4))+((linewid/10)*5/2*2,0) +G4: [ Bt: line from (((linewid/10))*(0+7/3),((linewid/10))*((2*3)/2)) \ + to (0,((linewid/10))*((2*3)/2)) chop 0 chop -(linethick *(scale/72)/2) + ArcB: arc cw to (0,((linewid/10))*(-(2*3)/2)) \ + with .c at (((linewid/10))*(0-sqrt((7*(2*3)/((2*3)))^2-((2*3)/2)^2)),0) + Bb: line to (((linewid/10))*(0+7/3),((linewid/10))*(-(2*3)/2)) chop -(linethick *(scale/72)/2) chop 0 + ArcN: arc cw from (((linewid/10))*(0+7/3),((linewid/10))*((2*3)/2)) \ + to (((linewid/10))*(0+7),0) \ + with .c at (((linewid/10))*(0+7/3),((linewid/10))*(-((7*2/3)^2-((2*3)/2)^2)/((2*3)))) + ArcS: arc ccw from (((linewid/10))*(0+7/3),((linewid/10))*(-(2*3)/2)) \ + to (((linewid/10))*(0+7),0) \ + with .c at (((linewid/10))*(0+7/3),((linewid/10))*(((7*2/3)^2-((2*3)/2)^2)/((2*3)))) + NE: (((linewid/10))*(0+7/3),((linewid/10))*(-((7*2/3)^2-((2*3)/2)^2)/((2*3))))+(((linewid/10))*(((2*3)/2+((7*2/3)^2-((2*3)/2)^2)/((2*3)))*(cos((60)*dtor_))),((linewid/10))*(((2*3)/2+((7*2/3)^2-((2*3)/2)^2)/((2*3)))*(sin((60)*dtor_)))) + SE: (((linewid/10))*(0+7/3),((linewid/10))*(((7*2/3)^2-((2*3)/2)^2)/((2*3))))+(((linewid/10))*(((2*3)/2+((7*2/3)^2-((2*3)/2)^2)/((2*3)))*(cos((-60)*dtor_))),((linewid/10))*(((2*3)/2+((7*2/3)^2-((2*3)/2)^2)/((2*3)))*(sin((-60)*dtor_)))) + N_Out: circle diam (3/2)*(linewid/10) \ + at (((linewid/10))*(0+7+((3/2)/2)),0) + Out: (((linewid/10))*(0+7+(3/2)),0) + In1: (((linewid/10))*(-sqrt((7*(2*3)/((2*3)))^2-((2*3)/2)^2)+sqrt((7*(2*3)/((2*3)))^2-((2*3)/2/min(2,6-1)*(2+1-2*1))^2)),((linewid/10))*((2*3)/2/min(2,6-1)*(2+1-2*1))) + + In2: (((linewid/10))*(-sqrt((7*(2*3)/((2*3)))^2-((2*3)/2)^2)+sqrt((7*(2*3)/((2*3)))^2-((2*3)/2/min(2,6-1)*(2+1-2*2))^2)),((linewid/10))*((2*3)/2/min(2,6-1)*(2+1-2*2))) + + + + C: (((linewid/10))*(0+7/2),0) + ] with .In1 at (G6.Out,G3)+(2*(linewid/10)*5/2,0) +G7: [ Bt: line from (((linewid/10))*(0+7/3),((linewid/10))*((2*3)/2)) \ + to (0,((linewid/10))*((2*3)/2)) chop 0 chop -(linethick *(scale/72)/2) + ArcB: arc cw to (0,((linewid/10))*(-(2*3)/2)) \ + with .c at (((linewid/10))*(0-sqrt((7*(2*3)/((2*3)))^2-((2*3)/2)^2)),0) + Bb: line to (((linewid/10))*(0+7/3),((linewid/10))*(-(2*3)/2)) chop -(linethick *(scale/72)/2) chop 0 + ArcN: arc cw from (((linewid/10))*(0+7/3),((linewid/10))*((2*3)/2)) \ + to (((linewid/10))*(0+7),0) \ + with .c at (((linewid/10))*(0+7/3),((linewid/10))*(-((7*2/3)^2-((2*3)/2)^2)/((2*3)))) + ArcS: arc ccw from (((linewid/10))*(0+7/3),((linewid/10))*(-(2*3)/2)) \ + to (((linewid/10))*(0+7),0) \ + with .c at (((linewid/10))*(0+7/3),((linewid/10))*(((7*2/3)^2-((2*3)/2)^2)/((2*3)))) + NE: (((linewid/10))*(0+7/3),((linewid/10))*(-((7*2/3)^2-((2*3)/2)^2)/((2*3))))+(((linewid/10))*(((2*3)/2+((7*2/3)^2-((2*3)/2)^2)/((2*3)))*(cos((60)*dtor_))),((linewid/10))*(((2*3)/2+((7*2/3)^2-((2*3)/2)^2)/((2*3)))*(sin((60)*dtor_)))) + SE: (((linewid/10))*(0+7/3),((linewid/10))*(((7*2/3)^2-((2*3)/2)^2)/((2*3))))+(((linewid/10))*(((2*3)/2+((7*2/3)^2-((2*3)/2)^2)/((2*3)))*(cos((-60)*dtor_))),((linewid/10))*(((2*3)/2+((7*2/3)^2-((2*3)/2)^2)/((2*3)))*(sin((-60)*dtor_)))) + N_Out: circle diam (3/2)*(linewid/10) \ + at (((linewid/10))*(0+7+((3/2)/2)),0) + Out: (((linewid/10))*(0+7+(3/2)),0) + In1: (((linewid/10))*(-sqrt((7*(2*3)/((2*3)))^2-((2*3)/2)^2)+sqrt((7*(2*3)/((2*3)))^2-((2*3)/2/min(2,6-1)*(2+1-2*1))^2)),((linewid/10))*((2*3)/2/min(2,6-1)*(2+1-2*1))) + + In2: (((linewid/10))*(-sqrt((7*(2*3)/((2*3)))^2-((2*3)/2)^2)+sqrt((7*(2*3)/((2*3)))^2-((2*3)/2/min(2,6-1)*(2+1-2*2))^2)),((linewid/10))*((2*3)/2/min(2,6-1)*(2+1-2*2))) + + + + C: (((linewid/10))*(0+7/2),0) + ] with .In2 at (G4.In2,G5.Out) + +# Output to other latches +TOL: (G2.Out,C)+(4*(linewid/10)*5/2,-4*(linewid/10)) + move to TOL+(3*(linewid/10)*5/2,-(linewid/10)*5/2/3) ; {move down 0.15} + "\sf {\sl To other latches}" below + +# Remaining input lines + line from G1.In1 to (DE,G1.In1); "\sf D " rjust + line from G1.In2 to (DE,G1.In2); "\sf E " rjust + [ circle rad (0.04*linewid) fill 0 ] with .c at G1.In2-((linewid/10)*5/2,0) + move to last [].c; line to (Here,G2.In2) then to G2.In2 + line from C to B7.In1 + +# Connect Bi, and connect to output bus + [ circle rad (0.04*linewid) fill 0 ] with .c at T1.c + move to last [].c ; line down (A2.y-A1.y)/2 + line to (TOL-(1*(linewid/10)*5/2,0),Here) ; arrow to (Here,TOL) + [ circle rad (0.04*linewid) fill 0 ] with .c at T2.c + move to last [].c ; line down (A2.y-A1.y)/2 + line to (TOL-(2*(linewid/10)*5/2,0),Here) ; arrow to (Here,TOL) + [ circle rad (0.04*linewid) fill 0 ] with .c at T3.c + move to last [].c ; line down (A2.y-A1.y)/2 + line to (TOL-(3*(linewid/10)*5/2,0),Here) ; arrow to (Here,TOL) + + +# G1 to G2 + [ circle rad (0.04*linewid) fill 0 ] with .c at (T1.c,G1) + move to last [].c; line to (Here,G2.In1) then to G2.In1 + +# Upper And inputs to output bus + line left 4*(linewid/10)*5/2 from G3.In1 + arrow to (Here,TOL) + line left 3*(linewid/10)*5/2 from G3.In2 + arrow to (Here,TOL) + line left 2*(linewid/10)*5/2 from G3.In3 + arrow to (Here,TOL) + line left 1*(linewid/10)*5/2 from G3.In4 + arrow to (Here,TOL) + + + line from B2.Out to (G3.In1,B2)-(4*(linewid/10)*5/2,0) ; [ circle rad (0.04*linewid) fill 0 ] with .c at Here + move to last [].c + line from B4.Out to (G3.In2,B4)-(3*(linewid/10)*5/2,0) ; [ circle rad (0.04*linewid) fill 0 ] with .c at Here + move to last [].c + line from B6.Out to (G3.In3,B6)-(2*(linewid/10)*5/2,0) ; [ circle rad (0.04*linewid) fill 0 ] with .c at Here + move to last [].c + line from G1.Out to (G3.In4,G1)-((linewid/10)*5/2,0) ; [ circle rad (0.04*linewid) fill 0 ] with .c at Here + move to last [].c + +# Lower And inputs + line left 4*(linewid/10)*5/2 from G5.In1 ; [ circle rad (0.04*linewid) fill 0 ] with .c at Here + move to last [].c + line left 3*(linewid/10)*5/2 from G5.In2 ; [ circle rad (0.04*linewid) fill 0 ] with .c at Here + move to last [].c + line left 2*(linewid/10)*5/2 from G5.In3 ; [ circle rad (0.04*linewid) fill 0 ] with .c at Here + move to last [].c + line from G2.Out to G5.In4 ; [ circle rad (0.04*linewid) fill 0 ] with .c at (TOL,Here) + move to last [].c ; arrow to (Here,TOL) + +# Fix up G4, G6, G7 + line from G3.Out to G4.In1 + line right (linewid/10)*5/2 from G4.Out + {[ circle rad (0.04*linewid) fill 0 ] with .c at Here + move to last [].c; line right (linewid/10)*5/2 ; "\sf Q7" ljust; move right 0.2 } # letters in object + line down 2*(linewid/10)*5/2 then to G6.In1+(-(linewid/10)*5/2,(linewid/10)*5/2) + line to (Here,G6.In1) then to G6.In1 + line from G4.In2 to (G6.In1+(-(linewid/10)*5/2,0),G4.In2) + line down (linewid/10)*5/2 then to G7.Out+((linewid/10)*5/2,2*(linewid/10)*5/2) + line to (Here,G7) then to G7.Out + line from G6.Out right (linewid/10)*5/2 ; line to (Here,G7.In1) then to G7.In1 + line from G5.Out to G7.In2 + line left (linewid/10)*5/2 from G6.In2 ; arrow to (Here,TOL) + [ circle rad (0.04*linewid) fill 0 ] with .c at (Here,C) + move to last [].c ; line to B7.Out + +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/test.svg b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/test.svg new file mode 100644 index 00000000000..a9c554efdce --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/test.svg @@ -0,0 +1,239 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="337.972pt" height="139.358pt" viewBox="0 0 337.972 139.358" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 5.796875 -1.140625 C 5.21875 -0.75 4.875 -0.53125 3.890625 -0.53125 C 2.453125 -0.53125 1.5625 -2.03125 1.5625 -3.46875 C 1.5625 -4.828125 2.375 -6.390625 3.90625 -6.390625 C 4.609375 -6.390625 5.0625 -6.21875 5.609375 -5.875 L 5.75 -6.6875 C 5.328125 -6.890625 4.5625 -7.03125 3.921875 -7.03125 C 2.078125 -7.03125 0.65625 -5.46875 0.65625 -3.375 C 0.65625 -1.796875 1.84375 0.109375 3.921875 0.109375 C 4.828125 0.109375 5.21875 -0.046875 5.859375 -0.453125 Z M 5.796875 -1.140625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 3.765625 -6.921875 L 2.875 -6.921875 L 0.28125 0 L 1.015625 0 L 1.78125 -2.03125 L 4.6875 -2.03125 L 5.4375 0 L 6.359375 0 Z M 4.46875 -2.59375 L 2 -2.59375 L 2.640625 -4.390625 C 2.84375 -4.984375 3.15625 -5.828125 3.234375 -6.203125 C 3.265625 -6.0625 3.328125 -5.8125 3.5625 -5.15625 Z M 4.46875 -2.59375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 4.5625 -3.25 C 4.5625 -4.03125 4.515625 -4.96875 4.09375 -5.765625 C 3.6875 -6.515625 3 -6.765625 2.5 -6.765625 C 1.90625 -6.765625 1.203125 -6.484375 0.796875 -5.609375 C 0.46875 -4.875 0.421875 -4.046875 0.421875 -3.25 C 0.421875 -2.46875 0.453125 -1.734375 0.75 -1 C 1.15625 -0.046875 1.90625 0.21875 2.484375 0.21875 C 3.203125 0.21875 3.84375 -0.1875 4.15625 -0.875 C 4.453125 -1.53125 4.5625 -2.1875 4.5625 -3.25 Z M 2.5 -0.390625 C 1.96875 -0.390625 1.5625 -0.765625 1.359375 -1.484375 C 1.203125 -2.046875 1.203125 -2.59375 1.203125 -3.375 C 1.203125 -4 1.203125 -4.59375 1.359375 -5.140625 C 1.421875 -5.328125 1.671875 -6.15625 2.484375 -6.15625 C 3.265625 -6.15625 3.515625 -5.390625 3.59375 -5.21875 C 3.78125 -4.65625 3.78125 -3.984375 3.78125 -3.375 C 3.78125 -2.71875 3.78125 -2.078125 3.59375 -1.453125 C 3.34375 -0.546875 2.8125 -0.390625 2.5 -0.390625 Z M 2.5 -0.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 2.984375 -6.765625 L 2.78125 -6.765625 C 2.1875 -6.15625 1.359375 -6.125 0.890625 -6.09375 L 0.890625 -5.515625 C 1.21875 -5.53125 1.6875 -5.546875 2.1875 -5.765625 L 2.1875 -0.578125 L 0.953125 -0.578125 L 0.953125 0 L 4.234375 0 L 4.234375 -0.578125 L 2.984375 -0.578125 Z M 2.984375 -6.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 1.734375 -1.875 L 0.5 -0.640625 L 0.5 0 L 4.46875 0 L 4.46875 -0.703125 L 2.65625 -0.703125 C 2.546875 -0.703125 2.421875 -0.703125 2.296875 -0.703125 L 1.21875 -0.703125 C 1.53125 -0.984375 2.296875 -1.71875 2.609375 -2.015625 C 2.796875 -2.1875 3.296875 -2.609375 3.484375 -2.796875 C 3.9375 -3.234375 4.46875 -3.765625 4.46875 -4.609375 C 4.46875 -5.765625 3.671875 -6.765625 2.359375 -6.765625 C 1.21875 -6.765625 0.65625 -5.984375 0.421875 -5.125 C 0.53125 -4.953125 0.59375 -4.890625 0.609375 -4.859375 C 0.625 -4.84375 0.734375 -4.71875 0.828125 -4.578125 C 1.03125 -5.34375 1.3125 -6.125 2.21875 -6.125 C 3.15625 -6.125 3.65625 -5.375 3.65625 -4.59375 C 3.65625 -3.75 3.09375 -3.1875 2.5 -2.578125 Z M 1.734375 -1.875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 0.953125 -6.921875 L 0.953125 0 L 3.578125 0 C 5.28125 0 6.625 -1.515625 6.625 -3.40625 C 6.625 -5.328125 5.28125 -6.921875 3.5625 -6.921875 Z M 1.8125 -0.5625 L 1.8125 -6.359375 L 3.34375 -6.359375 C 4.734375 -6.359375 5.765625 -5.15625 5.765625 -3.40625 C 5.765625 -1.703125 4.734375 -0.5625 3.34375 -0.5625 Z M 1.8125 -0.5625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 5.109375 -3.28125 L 5.109375 -3.890625 L 1.828125 -3.890625 L 1.828125 -6.25 L 3.203125 -6.25 C 3.3125 -6.25 3.4375 -6.234375 3.5625 -6.234375 L 5.390625 -6.234375 L 5.390625 -6.890625 L 0.9375 -6.890625 L 0.9375 0 L 5.515625 0 L 5.515625 -0.703125 L 4.265625 -0.703125 C 4.140625 -0.703125 4.03125 -0.703125 3.90625 -0.703125 L 1.828125 -0.703125 L 1.828125 -3.28125 Z M 5.109375 -3.28125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 5.3125 -0.328125 C 6.40625 -1.171875 6.765625 -2.390625 6.765625 -3.4375 C 6.765625 -5.53125 5.328125 -7.140625 3.671875 -7.140625 C 1.96875 -7.140625 0.5625 -5.515625 0.5625 -3.4375 C 0.5625 -1.328125 2.03125 0.21875 3.65625 0.21875 C 3.8125 0.21875 4.1875 0.203125 4.609375 0.046875 L 5.46875 1.25 L 6.5 1.25 Z M 4.234375 -0.515625 C 4.21875 -0.515625 3.953125 -0.421875 3.671875 -0.421875 C 2.5 -0.421875 1.421875 -1.578125 1.421875 -3.4375 C 1.421875 -5.296875 2.5 -6.5 3.65625 -6.5 C 4.859375 -6.5 5.90625 -5.28125 5.90625 -3.4375 C 5.90625 -2.796875 5.796875 -1.703125 4.890625 -0.890625 L 4.109375 -1.9375 L 3.21875 -1.9375 Z M 4.234375 -0.515625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 2.3125 -5.828125 C 2.4375 -5.828125 2.546875 -5.84375 2.671875 -5.84375 L 3.875 -5.84375 C 2.40625 -4.21875 1.515625 -2.21875 1.515625 0.109375 L 2.359375 0.109375 C 2.359375 -2.875 3.78125 -5.015625 4.5625 -5.890625 L 4.5625 -6.546875 L 0.421875 -6.546875 L 0.421875 -5.828125 Z M 2.3125 -5.828125 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M 5.046875 -6.078125 C 5.09375 -6.28125 5.109375 -6.375 5.296875 -6.421875 C 5.390625 -6.4375 5.671875 -6.4375 5.859375 -6.4375 C 7.015625 -6.4375 7.375 -6.265625 7.375 -5.28125 C 7.375 -5 7.359375 -4.765625 7.328125 -4.5 L 7.578125 -4.5 L 7.765625 -6.75 L 1.671875 -6.75 L 1.109375 -4.5 L 1.359375 -4.5 C 1.78125 -6.046875 1.890625 -6.4375 3.484375 -6.4375 C 3.625 -6.4375 3.859375 -6.4375 3.921875 -6.4375 C 4.125 -6.40625 4.171875 -6.375 4.171875 -6.234375 C 4.171875 -6.15625 4.15625 -6.0625 4.140625 -5.984375 L 3.265625 -0.75 C 3.21875 -0.4375 3.1875 -0.3125 2.140625 -0.3125 L 1.75 -0.3125 L 1.703125 0 C 1.953125 -0.015625 2.390625 -0.015625 2.640625 -0.015625 L 3.59375 -0.03125 C 4.0625 -0.03125 5.078125 -0.03125 5.484375 0 L 5.53125 -0.3125 L 5.15625 -0.3125 C 4.3125 -0.3125 4.140625 -0.390625 4.140625 -0.609375 C 4.140625 -0.625 4.140625 -0.65625 4.171875 -0.765625 Z M 5.046875 -6.078125 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 5.078125 -2.53125 C 5.078125 -3.640625 4.3125 -4.46875 3.234375 -4.46875 C 1.8125 -4.46875 0.59375 -3.078125 0.59375 -1.75 C 0.59375 -0.71875 1.359375 0.109375 2.46875 0.109375 C 3.796875 0.109375 5.078125 -1.09375 5.078125 -2.53125 Z M 2.515625 -0.140625 C 2.234375 -0.140625 1.390625 -0.234375 1.390625 -1.4375 C 1.390625 -1.796875 1.53125 -2.90625 1.828125 -3.40625 C 2.328125 -4.203125 3.015625 -4.25 3.1875 -4.25 C 3.515625 -4.25 4.3125 -4.09375 4.3125 -2.984375 C 4.3125 -2.75 4.234375 -1.671875 3.890625 -1.015625 C 3.578125 -0.453125 3.03125 -0.140625 2.515625 -0.140625 Z M 2.515625 -0.140625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M 2.390625 -3.984375 L 3.8125 -3.984375 C 3.84375 -4.09375 3.84375 -4.203125 3.875 -4.296875 L 2.4375 -4.296875 L 2.734375 -6.125 L 2.5 -6.125 C 2.328125 -5.1875 1.796875 -4.234375 0.890625 -4.203125 L 0.859375 -3.984375 L 1.6875 -3.984375 L 1.25 -1.265625 C 1.21875 -1.09375 1.21875 -1.0625 1.21875 -0.9375 C 1.21875 0.03125 2.03125 0.109375 2.328125 0.109375 C 2.796875 0.109375 3.09375 -0.203125 3.28125 -0.53125 C 3.453125 -0.84375 3.484375 -0.984375 3.609375 -1.796875 L 3.359375 -1.796875 C 3.234375 -1.078125 3.21875 -0.9375 3.09375 -0.671875 C 3.015625 -0.53125 2.78125 -0.140625 2.40625 -0.140625 C 1.984375 -0.140625 1.890625 -0.53125 1.890625 -0.8125 C 1.890625 -0.921875 1.890625 -0.96875 1.90625 -1.03125 Z M 2.390625 -3.984375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 5.0625 -3.015625 C 5.09375 -3.203125 5.09375 -3.234375 5.09375 -3.390625 C 5.09375 -4.140625 4.609375 -4.40625 3.921875 -4.40625 C 3.078125 -4.40625 2.546875 -3.796875 2.34375 -3.46875 L 2.328125 -3.484375 L 2.90625 -6.921875 L 1.65625 -6.8125 C 1.640625 -6.8125 1.484375 -6.8125 1.46875 -6.796875 C 1.453125 -6.78125 1.40625 -6.53125 1.40625 -6.5 C 1.96875 -6.5 2.109375 -6.453125 2.109375 -6.1875 C 2.109375 -6.171875 2.109375 -6.09375 2.078125 -5.921875 L 1.21875 -0.734375 C 1.15625 -0.359375 1.109375 -0.3125 0.375 -0.3125 L 0.3125 0 C 0.65625 -0.015625 1.1875 -0.03125 1.453125 -0.03125 C 1.6875 -0.03125 2.234375 -0.015625 2.546875 0 L 2.609375 -0.3125 C 2.109375 -0.3125 1.890625 -0.3125 1.890625 -0.5625 C 1.890625 -0.59375 1.953125 -0.96875 1.984375 -1.171875 C 2.046875 -1.609375 2.125 -2.046875 2.203125 -2.484375 C 2.25 -2.8125 2.34375 -3.296875 2.828125 -3.765625 C 3.125 -4.03125 3.515625 -4.1875 3.84375 -4.1875 C 4.234375 -4.1875 4.421875 -3.984375 4.421875 -3.515625 C 4.421875 -3.375 4.40625 -3.265625 4.3125 -2.6875 L 3.984375 -0.6875 C 3.921875 -0.3125 3.765625 -0.3125 3.15625 -0.3125 L 3.140625 -0.3125 L 3.09375 0 C 3.421875 -0.015625 3.953125 -0.03125 4.21875 -0.03125 C 4.46875 -0.03125 5 -0.015625 5.328125 0 L 5.390625 -0.3125 C 4.890625 -0.3125 4.65625 -0.3125 4.65625 -0.5625 C 4.65625 -0.59375 4.671875 -0.65625 4.671875 -0.703125 Z M 5.0625 -3.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M 4.265625 -2.296875 C 4.5 -2.296875 4.53125 -2.296875 4.5625 -2.5 C 4.578125 -2.71875 4.578125 -2.875 4.578125 -2.9375 C 4.578125 -4.109375 3.796875 -4.46875 3.078125 -4.46875 C 1.734375 -4.46875 0.609375 -3.125 0.609375 -1.8125 C 0.609375 -0.703125 1.421875 0.109375 2.46875 0.109375 C 3.703125 0.109375 4.328125 -1.03125 4.328125 -1.203125 C 4.328125 -1.234375 4.3125 -1.3125 4.21875 -1.3125 C 4.140625 -1.3125 4.109375 -1.265625 4.0625 -1.171875 C 3.59375 -0.25 2.796875 -0.140625 2.53125 -0.140625 C 2.078125 -0.140625 1.40625 -0.421875 1.40625 -1.5 C 1.40625 -1.796875 1.46875 -2.15625 1.5 -2.296875 Z M 1.53125 -2.515625 C 1.890625 -4.09375 2.828125 -4.25 3.078125 -4.25 C 3.9375 -4.25 3.9375 -3.265625 3.9375 -3.078125 C 3.9375 -2.84375 3.921875 -2.78125 3.890625 -2.515625 Z M 1.53125 -2.515625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M 2.234375 -3.375 L 2.40625 -4.40625 L 1.1875 -4.3125 C 1 -4.3125 1 -4.28125 0.984375 -4.234375 C 0.984375 -4.203125 0.953125 -4 0.953125 -3.984375 C 1.515625 -3.984375 1.65625 -3.9375 1.65625 -3.671875 C 1.65625 -3.65625 1.65625 -3.59375 1.625 -3.40625 L 1.171875 -0.734375 C 1.109375 -0.359375 1.078125 -0.3125 0.34375 -0.3125 L 0.328125 -0.3125 L 0.28125 0 C 0.671875 -0.015625 1.140625 -0.03125 1.421875 -0.03125 C 1.484375 -0.03125 2.359375 -0.015625 2.6875 0 C 2.703125 -0.09375 2.71875 -0.203125 2.734375 -0.3125 L 2.546875 -0.3125 C 1.9375 -0.3125 1.8125 -0.375 1.8125 -0.59375 C 1.8125 -0.734375 2.140625 -2.5 2.1875 -2.6875 C 2.359375 -3.25 2.765625 -4.1875 3.671875 -4.1875 L 3.671875 -4.171875 C 3.515625 -4.109375 3.40625 -3.921875 3.40625 -3.734375 C 3.40625 -3.421875 3.65625 -3.359375 3.78125 -3.359375 C 4.03125 -3.359375 4.265625 -3.5625 4.265625 -3.859375 C 4.265625 -4.171875 4 -4.40625 3.609375 -4.40625 C 2.96875 -4.40625 2.484375 -3.875 2.25 -3.359375 Z M 2.234375 -3.375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 2.921875 -6.921875 L 1.671875 -6.8125 C 1.640625 -6.8125 1.5 -6.8125 1.484375 -6.796875 C 1.453125 -6.78125 1.421875 -6.53125 1.421875 -6.5 C 1.984375 -6.5 2.125 -6.453125 2.125 -6.1875 C 2.125 -6.171875 2.125 -6.09375 2.09375 -5.921875 L 1.21875 -0.734375 C 1.171875 -0.359375 1.125 -0.3125 0.390625 -0.3125 L 0.375 -0.3125 L 0.328125 0 C 0.65625 -0.015625 1.1875 -0.03125 1.4375 -0.03125 C 1.671875 -0.03125 2.171875 -0.015625 2.53125 0 L 2.59375 -0.3125 C 2.09375 -0.3125 1.859375 -0.3125 1.859375 -0.5625 C 1.859375 -0.59375 1.875 -0.65625 1.890625 -0.703125 Z M 2.921875 -6.921875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 4.90625 -1.453125 C 4.859375 -1.1875 4.796875 -0.765625 4.765625 -0.671875 C 4.6875 -0.375 4.5 -0.25 4.34375 -0.25 C 4.125 -0.25 4.0625 -0.46875 4.0625 -0.65625 C 4.0625 -0.75 4.140625 -1.25 4.171875 -1.375 C 4.234375 -1.6875 4.453125 -2.984375 4.453125 -3.203125 C 4.453125 -3.96875 3.78125 -4.46875 2.9375 -4.46875 C 1.9375 -4.46875 1.25 -3.8125 1.25 -3.265625 C 1.25 -3.09375 1.359375 -2.875 1.671875 -2.875 C 1.953125 -2.875 2.1875 -3.109375 2.1875 -3.390625 C 2.1875 -3.65625 2 -3.78125 1.765625 -3.78125 C 2.078125 -4.140625 2.609375 -4.25 2.90625 -4.25 C 3.484375 -4.25 3.78125 -3.78125 3.78125 -3.28125 C 3.78125 -3.1875 3.703125 -2.640625 3.671875 -2.609375 C 3.65625 -2.609375 3.625 -2.609375 3.40625 -2.59375 C 1.75 -2.53125 0.5625 -1.75 0.5625 -0.8125 C 0.5625 -0.046875 1.53125 0.109375 2.015625 0.109375 C 2.90625 0.109375 3.375 -0.59375 3.453125 -0.734375 C 3.453125 -0.046875 3.875 0.0625 4.09375 0.0625 C 4.375 0.0625 4.9375 -0.140625 5.046875 -0.875 C 5.078125 -1 5.09375 -1.078125 5.15625 -1.453125 Z M 3.5 -1.5 C 3.453125 -1.203125 3.40625 -0.890625 3.015625 -0.515625 C 2.78125 -0.28125 2.4375 -0.109375 2.078125 -0.109375 C 1.65625 -0.109375 1.328125 -0.390625 1.328125 -0.796875 C 1.328125 -0.8125 1.328125 -2.296875 3.65625 -2.390625 Z M 3.5 -1.5 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M 4.234375 -3.84375 C 3.71875 -3.828125 3.671875 -3.421875 3.671875 -3.3125 C 3.671875 -3.15625 3.765625 -2.9375 4.078125 -2.9375 C 4.328125 -2.9375 4.609375 -3.125 4.609375 -3.515625 C 4.609375 -4.171875 3.890625 -4.46875 3.234375 -4.46875 C 1.859375 -4.46875 0.671875 -3.15625 0.671875 -1.78125 C 0.671875 -0.640625 1.484375 0.109375 2.484375 0.109375 C 3.8125 0.109375 4.328125 -1.09375 4.328125 -1.1875 C 4.328125 -1.265625 4.25 -1.28125 4.203125 -1.28125 C 4.125 -1.28125 4.109375 -1.265625 4.0625 -1.140625 C 3.734375 -0.46875 3.15625 -0.140625 2.578125 -0.140625 C 2.09375 -0.140625 1.46875 -0.484375 1.46875 -1.5625 C 1.46875 -2.90625 2.1875 -4.21875 3.234375 -4.21875 C 3.375 -4.21875 3.953125 -4.203125 4.234375 -3.84375 Z M 4.234375 -3.84375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 4.046875 -4.21875 C 4.0625 -4.3125 4.0625 -4.328125 4.0625 -4.359375 C 4.0625 -4.421875 4.03125 -4.46875 3.953125 -4.46875 C 3.921875 -4.46875 3.890625 -4.46875 3.75 -4.34375 C 3.625 -4.25 3.625 -4.25 3.546875 -4.1875 C 3.21875 -4.46875 2.78125 -4.46875 2.65625 -4.46875 C 1.21875 -4.46875 0.859375 -3.5625 0.859375 -3.09375 C 0.859375 -2.75 1.015625 -2.515625 1.21875 -2.359375 C 1.484375 -2.125 1.78125 -2.0625 2.25 -1.96875 C 2.6875 -1.890625 3.296875 -1.765625 3.296875 -1.15625 C 3.296875 -0.8125 3.046875 -0.109375 1.984375 -0.109375 C 1.5 -0.109375 0.90625 -0.28125 0.84375 -1.484375 C 0.84375 -1.640625 0.84375 -1.6875 0.71875 -1.6875 C 0.625 -1.6875 0.609375 -1.671875 0.578125 -1.484375 L 0.34375 -0.15625 C 0.328125 -0.0625 0.328125 -0.046875 0.328125 0 C 0.328125 0.0625 0.375 0.109375 0.4375 0.109375 C 0.484375 0.109375 0.5 0.09375 0.703125 -0.09375 C 0.765625 -0.15625 0.90625 -0.28125 0.953125 -0.328125 C 1.21875 0.015625 1.59375 0.109375 1.984375 0.109375 C 3.4375 0.109375 3.8125 -0.953125 3.8125 -1.46875 C 3.8125 -1.84375 3.65625 -2.09375 3.484375 -2.265625 C 3.1875 -2.5625 2.9375 -2.609375 2.390625 -2.71875 C 1.9375 -2.796875 1.390625 -2.90625 1.390625 -3.40625 C 1.390625 -3.421875 1.390625 -4.28125 2.65625 -4.28125 C 2.84375 -4.28125 3.625 -4.28125 3.625 -3.375 C 3.625 -3.234375 3.609375 -3.109375 3.609375 -3.078125 C 3.609375 -2.984375 3.703125 -2.984375 3.734375 -2.984375 C 3.84375 -2.984375 3.84375 -3.046875 3.875 -3.203125 Z M 4.046875 -4.21875 "/> +</symbol> +</g> +</defs> +<g id="surface1"> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="8.579" y="113.658"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="3.321" y="54.259"/> + <use xlink:href="#glyph0-3" x="9.963065" y="54.259"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="3.321" y="32.659"/> + <use xlink:href="#glyph0-4" x="9.963065" y="32.659"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="3.321" y="11.058"/> + <use xlink:href="#glyph0-5" x="9.963065" y="11.058"/> +</g> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.00184375 102.601344 L 27.001844 102.601344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 39.5995 102.601344 L 27.001844 95.402125 L 27.001844 109.800563 L 39.5995 102.601344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 45.001844 102.601344 C 45.001844 104.093531 43.790906 105.300563 42.298719 105.300563 C 40.806531 105.300563 39.5995 104.093531 39.5995 102.601344 C 39.5995 101.109156 40.806531 99.898219 42.298719 99.898219 C 43.790906 99.898219 45.001844 101.109156 45.001844 102.601344 Z M 45.001844 102.601344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 45.001844 102.601344 L 63.001844 102.601344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 81.001844 102.601344 L 68.400281 95.402125 L 68.400281 109.800563 L 81.001844 102.601344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 68.404188 102.601344 C 68.404188 104.093531 67.19325 105.300563 65.701063 105.300563 C 64.208875 105.300563 62.997938 104.093531 62.997938 102.601344 C 62.997938 101.109156 64.208875 99.898219 65.701063 99.898219 C 67.19325 99.898219 68.404188 101.109156 68.404188 102.601344 Z M 68.404188 102.601344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.00184375 80.999781 L 27.001844 80.999781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 39.5995 80.999781 L 27.001844 73.800563 L 27.001844 88.202906 L 39.5995 80.999781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 45.001844 80.999781 C 45.001844 82.491969 43.790906 83.702906 42.298719 83.702906 C 40.806531 83.702906 39.5995 82.491969 39.5995 80.999781 C 39.5995 79.507594 40.806531 78.300563 42.298719 78.300563 C 43.790906 78.300563 45.001844 79.507594 45.001844 80.999781 Z M 45.001844 80.999781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 45.001844 80.999781 L 63.001844 80.999781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 81.001844 80.999781 L 68.400281 73.800563 L 68.400281 88.202906 L 81.001844 80.999781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 68.404188 80.999781 C 68.404188 82.491969 67.19325 83.702906 65.701063 83.702906 C 64.208875 83.702906 62.997938 82.491969 62.997938 80.999781 C 62.997938 79.507594 64.208875 78.300563 65.701063 78.300563 C 67.19325 78.300563 68.404188 79.507594 68.404188 80.999781 Z M 68.404188 80.999781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.00184375 59.402125 L 27.001844 59.402125 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 39.5995 59.402125 L 27.001844 52.199 L 27.001844 66.601344 L 39.5995 59.402125 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 45.001844 59.402125 C 45.001844 60.890406 43.790906 62.101344 42.298719 62.101344 C 40.806531 62.101344 39.5995 60.890406 39.5995 59.402125 C 39.5995 57.909938 40.806531 56.699 42.298719 56.699 C 43.790906 56.699 45.001844 57.909938 45.001844 59.402125 Z M 45.001844 59.402125 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 45.001844 59.402125 L 63.001844 59.402125 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 81.001844 59.402125 L 68.400281 52.199 L 68.400281 66.601344 L 81.001844 59.402125 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 68.404188 59.402125 C 68.404188 60.890406 67.19325 62.101344 65.701063 62.101344 C 64.208875 62.101344 62.997938 60.890406 62.997938 59.402125 C 62.997938 57.909938 64.208875 56.699 65.701063 56.699 C 67.19325 56.699 68.404188 57.909938 68.404188 59.402125 Z M 68.404188 59.402125 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 42.298719 -0.00021875 L 29.701063 -7.199437 L 29.701063 7.199 L 42.298719 -0.00021875 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 22.798719 48.601344 L 14.001844 48.601344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 14.326063 48.757594 C 17.642469 41.890406 17.669813 33.890406 14.400281 26.999781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 14.001844 26.999781 L 22.798719 26.999781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 22.798719 48.601344 C 30.033094 48.601344 36.5995 44.378688 39.5995 37.800563 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 22.798719 26.999781 C 30.033094 26.999781 36.5995 31.222438 39.5995 37.800563 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 45.001844 37.800563 C 45.001844 39.29275 43.790906 40.499781 42.298719 40.499781 C 40.806531 40.499781 39.5995 39.29275 39.5995 37.800563 C 39.5995 36.308375 40.806531 35.097438 42.298719 35.097438 C 43.790906 35.097438 45.001844 36.308375 45.001844 37.800563 Z M 45.001844 37.800563 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 68.001844 26.999781 L 59.201063 26.999781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.525281 27.156031 C 62.841688 20.288844 62.869031 12.288844 59.5995 5.398219 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.201063 5.398219 L 68.001844 5.398219 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 68.001844 26.999781 C 75.232313 26.999781 81.798719 22.781031 84.802625 16.199 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 68.001844 5.398219 C 75.232313 5.398219 81.798719 9.620875 84.802625 16.199 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 90.201063 16.199 C 90.201063 17.691188 88.994031 18.902125 87.501844 18.902125 C 86.009656 18.902125 84.798719 17.691188 84.798719 16.199 C 84.798719 14.706813 86.009656 13.499781 87.501844 13.499781 C 88.994031 13.499781 90.201063 14.706813 90.201063 16.199 Z M 90.201063 16.199 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 185.603406 83.702906 L 171.201063 83.702906 L 171.201063 105.300563 L 185.603406 105.300563 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 185.603406 105.300563 C 191.564344 105.300563 196.404188 100.464625 196.404188 94.499781 C 196.404188 88.534938 191.564344 83.702906 185.603406 83.702906 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 185.603406 13.499781 L 171.201063 13.499781 L 171.201063 35.101344 L 185.603406 35.101344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 185.603406 35.101344 C 191.564344 35.101344 196.404188 30.265406 196.404188 24.300563 C 196.404188 18.335719 191.564344 13.499781 185.603406 13.499781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 228.802625 29.699 L 214.404188 29.699 L 214.404188 51.300563 L 228.802625 51.300563 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 228.802625 51.300563 C 234.767469 51.300563 239.603406 46.464625 239.603406 40.499781 C 239.603406 34.534938 234.767469 29.699 228.802625 29.699 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 264.158094 99.902125 L 255.357313 99.902125 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 255.681531 100.058375 C 258.997937 93.191188 259.025281 85.191188 255.75575 78.300563 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 255.357313 78.300563 L 264.158094 78.300563 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 264.158094 99.902125 C 271.388562 99.902125 277.954969 95.679469 280.954969 89.101344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 264.158094 78.300563 C 271.388562 78.300563 277.954969 82.523219 280.954969 89.101344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 286.357312 89.101344 C 286.357312 90.593531 285.150281 91.800563 283.658094 91.800563 C 282.165906 91.800563 280.954969 90.593531 280.954969 89.101344 C 280.954969 87.609156 282.165906 86.398219 283.658094 86.398219 C 285.150281 86.398219 286.357312 87.609156 286.357312 89.101344 Z M 286.357312 89.101344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 264.158094 40.499781 L 255.357313 40.499781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 255.681531 40.656031 C 258.997937 33.788844 259.025281 25.788844 255.75575 18.898219 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 255.357313 18.898219 L 264.158094 18.898219 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 264.158094 40.499781 C 271.388562 40.499781 277.954969 36.281031 280.954969 29.699 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 264.158094 18.898219 C 271.388562 18.898219 277.954969 23.120875 280.954969 29.699 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 286.357312 29.699 C 286.357312 31.191188 285.150281 32.402125 283.658094 32.402125 C 282.165906 32.402125 280.954969 31.191188 280.954969 29.699 C 280.954969 28.210719 282.165906 26.999781 283.658094 26.999781 C 285.150281 26.999781 286.357312 28.210719 286.357312 29.699 Z M 286.357312 29.699 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="134.475" y="136.037"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-2" x="140.843094" y="136.037"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-2" x="149.14194" y="136.037"/> + <use xlink:href="#glyph1-3" x="154.12324" y="136.037"/> + <use xlink:href="#glyph1-4" x="157.997695" y="136.037"/> + <use xlink:href="#glyph1-5" x="163.532915" y="136.037"/> + <use xlink:href="#glyph1-6" x="167.960295" y="136.037"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="175.180191" y="136.037"/> + <use xlink:href="#glyph1-8" x="177.947801" y="136.037"/> + <use xlink:href="#glyph1-3" x="182.929101" y="136.037"/> + <use xlink:href="#glyph1-9" x="186.803557" y="136.037"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-4" x="190.961946" y="136.037"/> + <use xlink:href="#glyph1-5" x="196.497166" y="136.037"/> + <use xlink:href="#glyph1-10" x="200.924546" y="136.037"/> +</g> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 16.247938 43.199 L 0.00184375 43.199 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-6" x="7.748" y="70.458"/> +</g> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 16.247938 32.398219 L 0.00184375 32.398219 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="8.994" y="81.259"/> +</g> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 8.685438 32.398219 C 8.685438 33.195094 8.040906 33.839625 7.247938 33.839625 C 6.451063 33.839625 5.806531 33.195094 5.806531 32.398219 C 5.806531 31.60525 6.451063 30.960719 7.247938 30.960719 C 8.040906 30.960719 8.685438 31.60525 8.685438 32.398219 Z M 8.685438 32.398219 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 7.247938 32.398219 L 7.247938 10.800563 L 61.447156 10.800563 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 0.00184375 -0.00021875 L 29.701063 -0.00021875 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 55.439344 102.601344 C 55.439344 103.398219 54.794813 104.04275 54.001844 104.04275 C 53.204969 104.04275 52.560438 103.398219 52.560438 102.601344 C 52.560438 101.804469 53.204969 101.159938 54.001844 101.159938 C 54.794813 101.159938 55.439344 101.804469 55.439344 102.601344 Z M 55.439344 102.601344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 54.001844 102.601344 L 54.001844 91.800563 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 54.001844 91.800563 L 117.201063 91.800563 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.12;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 115.400281 -7.199437 L 117.201063 -14.398656 L 119.001844 -7.199437 Z M 115.400281 -7.199437 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 117.201063 91.800563 L 117.201063 -12.750219 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 55.439344 80.999781 C 55.439344 81.796656 54.794813 82.441188 54.001844 82.441188 C 53.204969 82.441188 52.560438 81.796656 52.560438 80.999781 C 52.560438 80.206813 53.204969 79.562281 54.001844 79.562281 C 54.794813 79.562281 55.439344 80.206813 55.439344 80.999781 Z M 55.439344 80.999781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 54.001844 80.999781 L 54.001844 70.202906 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 54.001844 70.202906 L 108.201063 70.202906 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.12;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 106.400281 -7.199437 L 108.201063 -14.398656 L 110.001844 -7.199437 Z M 106.400281 -7.199437 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 108.201063 70.202906 L 108.201063 -12.750219 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 55.439344 59.402125 C 55.439344 60.195094 54.794813 60.839625 54.001844 60.839625 C 53.204969 60.839625 52.560438 60.195094 52.560438 59.402125 C 52.560438 58.60525 53.204969 57.960719 54.001844 57.960719 C 54.794813 57.960719 55.439344 58.60525 55.439344 59.402125 Z M 55.439344 59.402125 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 54.001844 59.402125 L 54.001844 48.601344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 54.001844 48.601344 L 99.201063 48.601344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.12;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 97.400281 -7.199437 L 99.201063 -14.398656 L 101.001844 -7.199437 Z M 97.400281 -7.199437 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 99.201063 48.601344 L 99.201063 -12.750219 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 55.439344 37.878688 C 55.439344 38.675563 54.794813 39.320094 54.001844 39.320094 C 53.204969 39.320094 52.560438 38.675563 52.560438 37.878688 C 52.560438 37.081813 53.204969 36.437281 54.001844 36.437281 C 54.794813 36.437281 55.439344 37.081813 55.439344 37.878688 Z M 55.439344 37.878688 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 54.001844 37.878688 L 54.001844 21.601344 L 61.447156 21.601344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 171.201063 102.601344 L 135.201063 102.601344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.12;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 133.400281 -7.199437 L 135.201063 -14.398656 L 137.001844 -7.199437 Z M 133.400281 -7.199437 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 135.201063 102.601344 L 135.201063 -12.750219 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 171.201063 97.202906 L 144.201063 97.202906 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.12;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 142.400281 -7.199437 L 144.201063 -14.398656 L 146.001844 -7.199437 Z M 142.400281 -7.199437 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 144.201063 97.202906 L 144.201063 -12.750219 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 171.201063 91.800563 L 153.201063 91.800563 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.12;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 151.400281 -7.199437 L 153.201063 -14.398656 L 155.001844 -7.199437 Z M 151.400281 -7.199437 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 153.201063 91.800563 L 153.201063 -12.750219 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 171.201063 86.402125 L 162.201063 86.402125 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.12;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 160.400281 -7.199437 L 162.201063 -14.398656 L 164.001844 -7.199437 Z M 160.400281 -7.199437 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 162.201063 86.402125 L 162.201063 -12.750219 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 81.001844 102.601344 L 135.201063 102.601344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 136.642469 102.601344 C 136.642469 103.398219 135.997938 104.04275 135.201063 104.04275 C 134.404188 104.04275 133.759656 103.398219 133.759656 102.601344 C 133.759656 101.804469 134.404188 101.159938 135.201063 101.159938 C 135.997938 101.159938 136.642469 101.804469 136.642469 102.601344 Z M 136.642469 102.601344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 81.001844 80.999781 L 144.201063 80.999781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 145.642469 80.999781 C 145.642469 81.796656 144.997938 82.441188 144.201063 82.441188 C 143.404188 82.441188 142.759656 81.796656 142.759656 80.999781 C 142.759656 80.206813 143.404188 79.562281 144.201063 79.562281 C 144.997938 79.562281 145.642469 80.206813 145.642469 80.999781 Z M 145.642469 80.999781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 81.001844 59.402125 L 153.201063 59.402125 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 154.642469 59.402125 C 154.642469 60.195094 153.997938 60.839625 153.201063 60.839625 C 152.408094 60.839625 151.759656 60.195094 151.759656 59.402125 C 151.759656 58.60525 152.408094 57.960719 153.201063 57.960719 C 153.997938 57.960719 154.642469 58.60525 154.642469 59.402125 Z M 154.642469 59.402125 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 45.001844 37.800563 L 162.201063 37.878688 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 163.642469 37.878688 C 163.642469 38.675563 162.997938 39.320094 162.201063 39.320094 C 161.408094 39.320094 160.763563 38.675563 160.763563 37.878688 C 160.763563 37.081813 161.408094 36.437281 162.201063 36.437281 C 162.997938 36.437281 163.642469 37.081813 163.642469 37.878688 Z M 163.642469 37.878688 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 171.201063 32.398219 L 135.201063 32.398219 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 136.642469 32.398219 C 136.642469 33.195094 135.997938 33.839625 135.201063 33.839625 C 134.404188 33.839625 133.759656 33.195094 133.759656 32.398219 C 133.759656 31.60525 134.404188 30.960719 135.201063 30.960719 C 135.997938 30.960719 136.642469 31.60525 136.642469 32.398219 Z M 136.642469 32.398219 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 171.201063 26.999781 L 144.201063 26.999781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 145.642469 26.999781 C 145.642469 27.796656 144.997938 28.441188 144.201063 28.441188 C 143.404188 28.441188 142.759656 27.796656 142.759656 26.999781 C 142.759656 26.206813 143.404188 25.558375 144.201063 25.558375 C 144.997938 25.558375 145.642469 26.206813 145.642469 26.999781 Z M 145.642469 26.999781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 171.201063 21.601344 L 153.201063 21.601344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 154.642469 21.601344 C 154.642469 22.394313 153.997938 23.038844 153.201063 23.038844 C 152.408094 23.038844 151.759656 22.394313 151.759656 21.601344 C 151.759656 20.804469 152.408094 20.159938 153.201063 20.159938 C 153.997938 20.159938 154.642469 20.804469 154.642469 21.601344 Z M 154.642469 21.601344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 90.201063 16.199 L 171.201063 16.199 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 127.642469 16.199 C 127.642469 16.995875 126.997938 17.640406 126.201063 17.640406 C 125.404188 17.640406 124.759656 16.995875 124.759656 16.199 C 124.759656 15.406031 125.404188 14.7615 126.201063 14.7615 C 126.997938 14.7615 127.642469 15.406031 127.642469 16.199 Z M 127.642469 16.199 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.12;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 124.400281 -7.199437 L 126.201063 -14.398656 L 128.001844 -7.199437 Z M 124.400281 -7.199437 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 126.201063 16.199 L 126.201063 -12.750219 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 196.404188 94.499781 L 257.603406 94.499781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 286.357312 89.101344 L 295.357312 89.101344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 296.798719 89.101344 C 296.798719 89.898219 296.154187 90.54275 295.357312 90.54275 C 294.560437 90.54275 293.915906 89.898219 293.915906 89.101344 C 293.915906 88.304469 294.560437 87.659938 295.357312 87.659938 C 296.154187 87.659938 296.798719 88.304469 296.798719 89.101344 Z M 296.798719 89.101344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 295.357312 89.101344 L 304.357312 89.101344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="322.336" y="23.936"/> + <use xlink:href="#glyph0-9" x="329.66947" y="23.936"/> +</g> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 295.357312 89.101344 L 295.357312 71.101344 L 205.404188 54.902125 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 205.404188 54.902125 L 205.404188 45.902125 L 214.404188 45.902125 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 257.603406 83.702906 L 205.404188 83.702906 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 205.404188 83.702906 L 205.404188 74.702906 L 295.357312 47.699 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 295.357312 47.699 L 295.357312 29.777125 L 286.357312 29.699 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 239.603406 40.499781 L 248.603406 40.499781 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 248.603406 40.499781 L 248.603406 35.101344 L 257.603406 35.101344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 196.404188 24.300563 L 257.603406 24.300563 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 214.404188 35.101344 L 205.404188 35.101344 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.12;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 203.603406 -7.199437 L 205.404188 -14.398656 L 207.201063 -7.199437 Z M 203.603406 -7.199437 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 205.404188 35.101344 L 205.404188 -12.750219 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 206.841688 -0.00021875 C 206.841688 0.796656 206.197156 1.441188 205.404188 1.441188 C 204.607313 1.441188 203.962781 0.796656 203.962781 -0.00021875 C 203.962781 -0.797094 204.607313 -1.441625 205.404188 -1.441625 C 206.197156 -1.441625 206.841688 -0.797094 206.841688 -0.00021875 Z M 206.841688 -0.00021875 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +<path style="fill:none;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 205.404188 -0.00021875 L 42.298719 -0.00021875 " transform="matrix(1,0,0,-1,16.463,110.199)"/> +</g> +</svg> diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/test.tex b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/test.tex new file mode 100644 index 00000000000..e4361f70333 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/test.tex @@ -0,0 +1,1136 @@ +\begin{tikzpicture}[scale=2.54] +% dpic version 2020.06.01 option -g for TikZ and PGF 1.01 +\ifx\dpiclw\undefined\newdimen\dpiclw\fi +\global\def\dpicdraw{\draw[line width=\dpiclw]} +\global\def\dpicstop{;} +\dpiclw=0.8bp +\dpiclw=0.8bp +\draw (0,0) node[left=-2bp]{\sf C }; +\draw (0,0.825) node[left=-2bp]{\sf A0 }; +\draw (0,1.125) node[left=-2bp]{\sf A1 }; +\draw (0,1.425) node[left=-2bp]{\sf A2 }; +\dpicdraw (0,1.425) + --(0.375,1.425)\dpicstop +\dpicdraw (0.55,1.425) + --(0.375,1.325) + --(0.375,1.525) + --(0.55,1.425)\dpicstop +\dpicdraw (0.5875,1.425) circle (0.014764in)\dpicstop +\dpicdraw (0.625,1.425) + --(0.875,1.425)\dpicstop +\dpicdraw (1.125,1.425) + --(0.95,1.325) + --(0.95,1.525) + --(1.125,1.425)\dpicstop +\dpicdraw (0.9125,1.425) circle (0.014764in)\dpicstop +\dpicdraw (0,1.125) + --(0.375,1.125)\dpicstop +\dpicdraw (0.55,1.125) + --(0.375,1.025) + --(0.375,1.225) + --(0.55,1.125)\dpicstop +\dpicdraw (0.5875,1.125) circle (0.014764in)\dpicstop +\dpicdraw (0.625,1.125) + --(0.875,1.125)\dpicstop +\dpicdraw (1.125,1.125) + --(0.95,1.025) + --(0.95,1.225) + --(1.125,1.125)\dpicstop +\dpicdraw (0.9125,1.125) circle (0.014764in)\dpicstop +\dpicdraw (0,0.825) + --(0.375,0.825)\dpicstop +\dpicdraw (0.55,0.825) + --(0.375,0.725) + --(0.375,0.925) + --(0.55,0.825)\dpicstop +\dpicdraw (0.5875,0.825) circle (0.014764in)\dpicstop +\dpicdraw (0.625,0.825) + --(0.875,0.825)\dpicstop +\dpicdraw (1.125,0.825) + --(0.95,0.725) + --(0.95,0.925) + --(1.125,0.825)\dpicstop +\dpicdraw (0.9125,0.825) circle (0.014764in)\dpicstop +\dpicdraw (0.5875,0) + --(0.4125,-0.1) + --(0.4125,0.1) + --(0.5875,0)\dpicstop +\dpicdraw (0.316667,0.675) + --(0.194444,0.675)\dpicstop +\dpicdraw (0.198957,0.677179) + ..controls (0.245009,0.581799) and (0.245392,0.470695) + ..(0.2,0.375)\dpicstop +\dpicdraw (0.194444,0.375) + --(0.316667,0.375)\dpicstop +\dpicdraw (0.316667,0.675) + ..controls (0.417105,0.675) and (0.508302,0.616374) + ..(0.55,0.525)\dpicstop +\dpicdraw (0.316667,0.375) + ..controls (0.417105,0.375) and (0.508302,0.433626) + ..(0.55,0.525)\dpicstop +\dpicdraw (0.5875,0.525) circle (0.014764in)\dpicstop +\dpicdraw (0.944444,0.375) + --(0.822222,0.375)\dpicstop +\dpicdraw (0.826735,0.377179) + ..controls (0.872787,0.281799) and (0.87317,0.170695) + ..(0.827778,0.075)\dpicstop +\dpicdraw (0.822222,0.075) + --(0.944444,0.075)\dpicstop +\dpicdraw (0.944444,0.375) + ..controls (1.044883,0.375) and (1.136079,0.316374) + ..(1.177778,0.225)\dpicstop +\dpicdraw (0.944444,0.075) + ..controls (1.044883,0.075) and (1.136079,0.133626) + ..(1.177778,0.225)\dpicstop +\dpicdraw (1.215278,0.225) circle (0.014764in)\dpicstop +\dpicdraw (2.577778,1.1625) + --(2.377778,1.1625) + --(2.377778,1.4625) + --(2.577778,1.4625)\dpicstop +\dpicdraw (2.577778,1.4625) + ..controls (2.66062,1.4625) and (2.727778,1.395343) + ..(2.727778,1.3125) + ..controls (2.727778,1.229657) and (2.66062,1.1625) + ..(2.577778,1.1625)\dpicstop +\dpicdraw (2.577778,0.1875) + --(2.377778,0.1875) + --(2.377778,0.4875) + --(2.577778,0.4875)\dpicstop +\dpicdraw (2.577778,0.4875) + ..controls (2.66062,0.4875) and (2.727778,0.420343) + ..(2.727778,0.3375) + ..controls (2.727778,0.254657) and (2.66062,0.1875) + ..(2.577778,0.1875)\dpicstop +\dpicdraw (3.177778,0.4125) + --(2.977778,0.4125) + --(2.977778,0.7125) + --(3.177778,0.7125)\dpicstop +\dpicdraw (3.177778,0.7125) + ..controls (3.26062,0.7125) and (3.327778,0.645343) + ..(3.327778,0.5625) + ..controls (3.327778,0.479657) and (3.26062,0.4125) + ..(3.177778,0.4125)\dpicstop +\dpicdraw (3.668802,1.3875) + --(3.54658,1.3875)\dpicstop +\dpicdraw (3.551093,1.389679) + ..controls (3.597145,1.294299) and (3.597528,1.183195) + ..(3.552136,1.0875)\dpicstop +\dpicdraw (3.54658,1.0875) + --(3.668802,1.0875)\dpicstop +\dpicdraw (3.668802,1.3875) + ..controls (3.769241,1.3875) and (3.860437,1.328874) + ..(3.902136,1.2375)\dpicstop +\dpicdraw (3.668802,1.0875) + ..controls (3.769241,1.0875) and (3.860437,1.146126) + ..(3.902136,1.2375)\dpicstop +\dpicdraw (3.939636,1.2375) circle (0.014764in)\dpicstop +\dpicdraw (3.668802,0.5625) + --(3.54658,0.5625)\dpicstop +\dpicdraw (3.551093,0.564679) + ..controls (3.597145,0.469299) and (3.597528,0.358195) + ..(3.552136,0.2625)\dpicstop +\dpicdraw (3.54658,0.2625) + --(3.668802,0.2625)\dpicstop +\dpicdraw (3.668802,0.5625) + ..controls (3.769241,0.5625) and (3.860437,0.503874) + ..(3.902136,0.4125)\dpicstop +\dpicdraw (3.668802,0.2625) + ..controls (3.769241,0.2625) and (3.860437,0.321126) + ..(3.902136,0.4125)\dpicstop +\dpicdraw (3.939636,0.4125) circle (0.014764in)\dpicstop +\draw (2.127778,-0.241667) node[below=-2bp]{\sf {\sl To other latches}}; +\dpicdraw (0.225642,0.6) + --(0,0.6)\dpicstop +\draw (0,0.6) node[left=-2bp]{\sf D }; +\dpicdraw (0.225642,0.45) + --(0,0.45)\dpicstop +\draw (0,0.45) node[left=-2bp]{\sf E }; +\dpicdraw[fill=black](0.100642,0.45) circle (0.007874in)\dpicstop +\dpicdraw (0.100642,0.45) + --(0.100642,0.15) + --(0.85342,0.15)\dpicstop +\dpicdraw (0,0) + --(0.4125,0)\dpicstop +\dpicdraw[fill=black](0.75,1.425) circle (0.007874in)\dpicstop +\dpicdraw (0.75,1.425) + --(0.75,1.275)\dpicstop +\dpicdraw (0.75,1.275) + --(1.627778,1.275)\dpicstop +\filldraw[line width=0bp](1.602778,-0.1) + --(1.627778,-0.2) + --(1.652778,-0.1) --cycle\dpicstop +\dpicdraw (1.627778,1.275) + --(1.627778,-0.177094)\dpicstop +\dpicdraw[fill=black](0.75,1.125) circle (0.007874in)\dpicstop +\dpicdraw (0.75,1.125) + --(0.75,0.975)\dpicstop +\dpicdraw (0.75,0.975) + --(1.502778,0.975)\dpicstop +\filldraw[line width=0bp](1.477778,-0.1) + --(1.502778,-0.2) + --(1.527778,-0.1) --cycle\dpicstop +\dpicdraw (1.502778,0.975) + --(1.502778,-0.177094)\dpicstop +\dpicdraw[fill=black](0.75,0.825) circle (0.007874in)\dpicstop +\dpicdraw (0.75,0.825) + --(0.75,0.675)\dpicstop +\dpicdraw (0.75,0.675) + --(1.377778,0.675)\dpicstop +\filldraw[line width=0bp](1.352778,-0.1) + --(1.377778,-0.2) + --(1.402778,-0.1) --cycle\dpicstop +\dpicdraw (1.377778,0.675) + --(1.377778,-0.177094)\dpicstop +\dpicdraw[fill=black](0.75,0.526089) circle (0.007874in)\dpicstop +\dpicdraw (0.75,0.526089) + --(0.75,0.3) + --(0.85342,0.3)\dpicstop +\dpicdraw (2.377778,1.425) + --(1.877778,1.425)\dpicstop +\filldraw[line width=0bp](1.852778,-0.1) + --(1.877778,-0.2) + --(1.902778,-0.1) --cycle\dpicstop +\dpicdraw (1.877778,1.425) + --(1.877778,-0.177094)\dpicstop +\dpicdraw (2.377778,1.35) + --(2.002778,1.35)\dpicstop +\filldraw[line width=0bp](1.977778,-0.1) + --(2.002778,-0.2) + --(2.027778,-0.1) --cycle\dpicstop +\dpicdraw (2.002778,1.35) + --(2.002778,-0.177094)\dpicstop +\dpicdraw (2.377778,1.275) + --(2.127778,1.275)\dpicstop +\filldraw[line width=0bp](2.102778,-0.1) + --(2.127778,-0.2) + --(2.152778,-0.1) --cycle\dpicstop +\dpicdraw (2.127778,1.275) + --(2.127778,-0.177094)\dpicstop +\dpicdraw (2.377778,1.2) + --(2.252778,1.2)\dpicstop +\filldraw[line width=0bp](2.227778,-0.1) + --(2.252778,-0.2) + --(2.277778,-0.1) --cycle\dpicstop +\dpicdraw (2.252778,1.2) + --(2.252778,-0.177094)\dpicstop +\dpicdraw (1.125,1.425) + --(1.877778,1.425)\dpicstop +\dpicdraw[fill=black](1.877778,1.425) circle (0.007874in)\dpicstop +\dpicdraw (1.125,1.125) + --(2.002778,1.125)\dpicstop +\dpicdraw[fill=black](2.002778,1.125) circle (0.007874in)\dpicstop +\dpicdraw (1.125,0.825) + --(2.127778,0.825)\dpicstop +\dpicdraw[fill=black](2.127778,0.825) circle (0.007874in)\dpicstop +\dpicdraw (0.625,0.525) + --(2.252778,0.526089)\dpicstop +\dpicdraw[fill=black](2.252778,0.526089) circle (0.007874in)\dpicstop +\dpicdraw (2.377778,0.45) + --(1.877778,0.45)\dpicstop +\dpicdraw[fill=black](1.877778,0.45) circle (0.007874in)\dpicstop +\dpicdraw (2.377778,0.375) + --(2.002778,0.375)\dpicstop +\dpicdraw[fill=black](2.002778,0.375) circle (0.007874in)\dpicstop +\dpicdraw (2.377778,0.3) + --(2.127778,0.3)\dpicstop +\dpicdraw[fill=black](2.127778,0.3) circle (0.007874in)\dpicstop +\dpicdraw (1.252778,0.225) + --(2.377778,0.225)\dpicstop +\dpicdraw[fill=black](1.752778,0.225) circle (0.007874in)\dpicstop +\filldraw[line width=0bp](1.727778,-0.1) + --(1.752778,-0.2) + --(1.777778,-0.1) --cycle\dpicstop +\dpicdraw (1.752778,0.225) + --(1.752778,-0.177094)\dpicstop +\dpicdraw (2.727778,1.3125) + --(3.577778,1.3125)\dpicstop +\dpicdraw (3.977136,1.2375) + --(4.102136,1.2375)\dpicstop +\dpicdraw[fill=black](4.102136,1.2375) circle (0.007874in)\dpicstop +\dpicdraw (4.102136,1.2375) + --(4.227136,1.2375)\dpicstop +\draw (4.227136,1.2375) node[right=-2bp]{\sf Q7}; +\dpicdraw (4.102136,1.2375) + --(4.102136,0.9875) + --(2.852778,0.7625)\dpicstop +\dpicdraw (2.852778,0.7625) + --(2.852778,0.6375) + --(2.977778,0.6375)\dpicstop +\dpicdraw (3.577778,1.1625) + --(2.852778,1.1625)\dpicstop +\dpicdraw (2.852778,1.1625) + --(2.852778,1.0375) + --(4.102136,0.6625)\dpicstop +\dpicdraw (4.102136,0.6625) + --(4.102136,0.413589) + --(3.977136,0.4125)\dpicstop +\dpicdraw (3.327778,0.5625) + --(3.452778,0.5625)\dpicstop +\dpicdraw (3.452778,0.5625) + --(3.452778,0.4875) + --(3.577778,0.4875)\dpicstop +\dpicdraw (2.727778,0.3375) + --(3.577778,0.3375)\dpicstop +\dpicdraw (2.977778,0.4875) + --(2.852778,0.4875)\dpicstop +\filldraw[line width=0bp](2.827778,-0.1) + --(2.852778,-0.2) + --(2.877778,-0.1) --cycle\dpicstop +\dpicdraw (2.852778,0.4875) + --(2.852778,-0.177094)\dpicstop +\dpicdraw[fill=black](2.852778,0) circle (0.007874in)\dpicstop +\dpicdraw (2.852778,0) + --(0.5875,0)\dpicstop +\end{tikzpicture} +\begin{tikzpicture}[scale=2.54] +% dpic version 2020.06.01 option -g for TikZ and PGF 1.01 +\ifx\dpiclw\undefined\newdimen\dpiclw\fi +\global\def\dpicdraw{\draw[line width=\dpiclw]} +\global\def\dpicstop{;} +\dpiclw=0.8bp +\dpiclw=0.8bp +\draw (0,0) node[left=-2bp]{\sf C }; +\draw (0,0.825) node[left=-2bp]{\sf A0 }; +\draw (0,1.125) node[left=-2bp]{\sf A1 }; +\draw (0,1.425) node[left=-2bp]{\sf A2 }; +\dpicdraw (0,1.425) + --(0.375,1.425)\dpicstop +\dpicdraw (0.55,1.425) + --(0.375,1.325) + --(0.375,1.525) + --(0.55,1.425)\dpicstop +\dpicdraw (0.5875,1.425) circle (0.014764in)\dpicstop +\dpicdraw (0.625,1.425) + --(0.875,1.425)\dpicstop +\dpicdraw (1.125,1.425) + --(0.95,1.325) + --(0.95,1.525) + --(1.125,1.425)\dpicstop +\dpicdraw (0.9125,1.425) circle (0.014764in)\dpicstop +\dpicdraw (0,1.125) + --(0.375,1.125)\dpicstop +\dpicdraw (0.55,1.125) + --(0.375,1.025) + --(0.375,1.225) + --(0.55,1.125)\dpicstop +\dpicdraw (0.5875,1.125) circle (0.014764in)\dpicstop +\dpicdraw (0.625,1.125) + --(0.875,1.125)\dpicstop +\dpicdraw (1.125,1.125) + --(0.95,1.025) + --(0.95,1.225) + --(1.125,1.125)\dpicstop +\dpicdraw (0.9125,1.125) circle (0.014764in)\dpicstop +\dpicdraw (0,0.825) + --(0.375,0.825)\dpicstop +\dpicdraw (0.55,0.825) + --(0.375,0.725) + --(0.375,0.925) + --(0.55,0.825)\dpicstop +\dpicdraw (0.5875,0.825) circle (0.014764in)\dpicstop +\dpicdraw (0.625,0.825) + --(0.875,0.825)\dpicstop +\dpicdraw (1.125,0.825) + --(0.95,0.725) + --(0.95,0.925) + --(1.125,0.825)\dpicstop +\dpicdraw (0.9125,0.825) circle (0.014764in)\dpicstop +\dpicdraw (0.5875,0) + --(0.4125,-0.1) + --(0.4125,0.1) + --(0.5875,0)\dpicstop +\dpicdraw (0.316667,0.675) + --(0.194444,0.675)\dpicstop +\dpicdraw (0.198957,0.677179) + ..controls (0.245009,0.581799) and (0.245392,0.470695) + ..(0.2,0.375)\dpicstop +\dpicdraw (0.194444,0.375) + --(0.316667,0.375)\dpicstop +\dpicdraw (0.316667,0.675) + ..controls (0.417105,0.675) and (0.508302,0.616374) + ..(0.55,0.525)\dpicstop +\dpicdraw (0.316667,0.375) + ..controls (0.417105,0.375) and (0.508302,0.433626) + ..(0.55,0.525)\dpicstop +\dpicdraw (0.5875,0.525) circle (0.014764in)\dpicstop +\dpicdraw (0.944444,0.375) + --(0.822222,0.375)\dpicstop +\dpicdraw (0.826735,0.377179) + ..controls (0.872787,0.281799) and (0.87317,0.170695) + ..(0.827778,0.075)\dpicstop +\dpicdraw (0.822222,0.075) + --(0.944444,0.075)\dpicstop +\dpicdraw (0.944444,0.375) + ..controls (1.044883,0.375) and (1.136079,0.316374) + ..(1.177778,0.225)\dpicstop +\dpicdraw (0.944444,0.075) + ..controls (1.044883,0.075) and (1.136079,0.133626) + ..(1.177778,0.225)\dpicstop +\dpicdraw (1.215278,0.225) circle (0.014764in)\dpicstop +\dpicdraw (2.577778,1.1625) + --(2.377778,1.1625) + --(2.377778,1.4625) + --(2.577778,1.4625)\dpicstop +\dpicdraw (2.577778,1.4625) + ..controls (2.66062,1.4625) and (2.727778,1.395343) + ..(2.727778,1.3125) + ..controls (2.727778,1.229657) and (2.66062,1.1625) + ..(2.577778,1.1625)\dpicstop +\dpicdraw (2.577778,0.1875) + --(2.377778,0.1875) + --(2.377778,0.4875) + --(2.577778,0.4875)\dpicstop +\dpicdraw (2.577778,0.4875) + ..controls (2.66062,0.4875) and (2.727778,0.420343) + ..(2.727778,0.3375) + ..controls (2.727778,0.254657) and (2.66062,0.1875) + ..(2.577778,0.1875)\dpicstop +\dpicdraw (3.177778,0.4125) + --(2.977778,0.4125) + --(2.977778,0.7125) + --(3.177778,0.7125)\dpicstop +\dpicdraw (3.177778,0.7125) + ..controls (3.26062,0.7125) and (3.327778,0.645343) + ..(3.327778,0.5625) + ..controls (3.327778,0.479657) and (3.26062,0.4125) + ..(3.177778,0.4125)\dpicstop +\dpicdraw (3.668802,1.3875) + --(3.54658,1.3875)\dpicstop +\dpicdraw (3.551093,1.389679) + ..controls (3.597145,1.294299) and (3.597528,1.183195) + ..(3.552136,1.0875)\dpicstop +\dpicdraw (3.54658,1.0875) + --(3.668802,1.0875)\dpicstop +\dpicdraw (3.668802,1.3875) + ..controls (3.769241,1.3875) and (3.860437,1.328874) + ..(3.902136,1.2375)\dpicstop +\dpicdraw (3.668802,1.0875) + ..controls (3.769241,1.0875) and (3.860437,1.146126) + ..(3.902136,1.2375)\dpicstop +\dpicdraw (3.939636,1.2375) circle (0.014764in)\dpicstop +\dpicdraw (3.668802,0.5625) + --(3.54658,0.5625)\dpicstop +\dpicdraw (3.551093,0.564679) + ..controls (3.597145,0.469299) and (3.597528,0.358195) + ..(3.552136,0.2625)\dpicstop +\dpicdraw (3.54658,0.2625) + --(3.668802,0.2625)\dpicstop +\dpicdraw (3.668802,0.5625) + ..controls (3.769241,0.5625) and (3.860437,0.503874) + ..(3.902136,0.4125)\dpicstop +\dpicdraw (3.668802,0.2625) + ..controls (3.769241,0.2625) and (3.860437,0.321126) + ..(3.902136,0.4125)\dpicstop +\dpicdraw (3.939636,0.4125) circle (0.014764in)\dpicstop +\draw (2.127778,-0.241667) node[below=-2bp]{\sf {\sl To other latches}}; +\dpicdraw (0.225642,0.6) + --(0,0.6)\dpicstop +\draw (0,0.6) node[left=-2bp]{\sf D }; +\dpicdraw (0.225642,0.45) + --(0,0.45)\dpicstop +\draw (0,0.45) node[left=-2bp]{\sf E }; +\dpicdraw[fill=black](0.100642,0.45) circle (0.007874in)\dpicstop +\dpicdraw (0.100642,0.45) + --(0.100642,0.15) + --(0.85342,0.15)\dpicstop +\dpicdraw (0,0) + --(0.4125,0)\dpicstop +\dpicdraw[fill=black](0.75,1.425) circle (0.007874in)\dpicstop +\dpicdraw (0.75,1.425) + --(0.75,1.275)\dpicstop +\dpicdraw (0.75,1.275) + --(1.627778,1.275)\dpicstop +\filldraw[line width=0bp](1.602778,-0.1) + --(1.627778,-0.2) + --(1.652778,-0.1) --cycle\dpicstop +\dpicdraw (1.627778,1.275) + --(1.627778,-0.177094)\dpicstop +\dpicdraw[fill=black](0.75,1.125) circle (0.007874in)\dpicstop +\dpicdraw (0.75,1.125) + --(0.75,0.975)\dpicstop +\dpicdraw (0.75,0.975) + --(1.502778,0.975)\dpicstop +\filldraw[line width=0bp](1.477778,-0.1) + --(1.502778,-0.2) + --(1.527778,-0.1) --cycle\dpicstop +\dpicdraw (1.502778,0.975) + --(1.502778,-0.177094)\dpicstop +\dpicdraw[fill=black](0.75,0.825) circle (0.007874in)\dpicstop +\dpicdraw (0.75,0.825) + --(0.75,0.675)\dpicstop +\dpicdraw (0.75,0.675) + --(1.377778,0.675)\dpicstop +\filldraw[line width=0bp](1.352778,-0.1) + --(1.377778,-0.2) + --(1.402778,-0.1) --cycle\dpicstop +\dpicdraw (1.377778,0.675) + --(1.377778,-0.177094)\dpicstop +\dpicdraw[fill=black](0.75,0.526089) circle (0.007874in)\dpicstop +\dpicdraw (0.75,0.526089) + --(0.75,0.3) + --(0.85342,0.3)\dpicstop +\dpicdraw (2.377778,1.425) + --(1.877778,1.425)\dpicstop +\filldraw[line width=0bp](1.852778,-0.1) + --(1.877778,-0.2) + --(1.902778,-0.1) --cycle\dpicstop +\dpicdraw (1.877778,1.425) + --(1.877778,-0.177094)\dpicstop +\dpicdraw (2.377778,1.35) + --(2.002778,1.35)\dpicstop +\filldraw[line width=0bp](1.977778,-0.1) + --(2.002778,-0.2) + --(2.027778,-0.1) --cycle\dpicstop +\dpicdraw (2.002778,1.35) + --(2.002778,-0.177094)\dpicstop +\dpicdraw (2.377778,1.275) + --(2.127778,1.275)\dpicstop +\filldraw[line width=0bp](2.102778,-0.1) + --(2.127778,-0.2) + --(2.152778,-0.1) --cycle\dpicstop +\dpicdraw (2.127778,1.275) + --(2.127778,-0.177094)\dpicstop +\dpicdraw (2.377778,1.2) + --(2.252778,1.2)\dpicstop +\filldraw[line width=0bp](2.227778,-0.1) + --(2.252778,-0.2) + --(2.277778,-0.1) --cycle\dpicstop +\dpicdraw (2.252778,1.2) + --(2.252778,-0.177094)\dpicstop +\dpicdraw (1.125,1.425) + --(1.877778,1.425)\dpicstop +\dpicdraw[fill=black](1.877778,1.425) circle (0.007874in)\dpicstop +\dpicdraw (1.125,1.125) + --(2.002778,1.125)\dpicstop +\dpicdraw[fill=black](2.002778,1.125) circle (0.007874in)\dpicstop +\dpicdraw (1.125,0.825) + --(2.127778,0.825)\dpicstop +\dpicdraw[fill=black](2.127778,0.825) circle (0.007874in)\dpicstop +\dpicdraw (0.625,0.525) + --(2.252778,0.526089)\dpicstop +\dpicdraw[fill=black](2.252778,0.526089) circle (0.007874in)\dpicstop +\dpicdraw (2.377778,0.45) + --(1.877778,0.45)\dpicstop +\dpicdraw[fill=black](1.877778,0.45) circle (0.007874in)\dpicstop +\dpicdraw (2.377778,0.375) + --(2.002778,0.375)\dpicstop +\dpicdraw[fill=black](2.002778,0.375) circle (0.007874in)\dpicstop +\dpicdraw (2.377778,0.3) + --(2.127778,0.3)\dpicstop +\dpicdraw[fill=black](2.127778,0.3) circle (0.007874in)\dpicstop +\dpicdraw (1.252778,0.225) + --(2.377778,0.225)\dpicstop +\dpicdraw[fill=black](1.752778,0.225) circle (0.007874in)\dpicstop +\filldraw[line width=0bp](1.727778,-0.1) + --(1.752778,-0.2) + --(1.777778,-0.1) --cycle\dpicstop +\dpicdraw (1.752778,0.225) + --(1.752778,-0.177094)\dpicstop +\dpicdraw (2.727778,1.3125) + --(3.577778,1.3125)\dpicstop +\dpicdraw (3.977136,1.2375) + --(4.102136,1.2375)\dpicstop +\dpicdraw[fill=black](4.102136,1.2375) circle (0.007874in)\dpicstop +\dpicdraw (4.102136,1.2375) + --(4.227136,1.2375)\dpicstop +\draw (4.227136,1.2375) node[right=-2bp]{\sf Q7}; +\dpicdraw (4.102136,1.2375) + --(4.102136,0.9875) + --(2.852778,0.7625)\dpicstop +\dpicdraw (2.852778,0.7625) + --(2.852778,0.6375) + --(2.977778,0.6375)\dpicstop +\dpicdraw (3.577778,1.1625) + --(2.852778,1.1625)\dpicstop +\dpicdraw (2.852778,1.1625) + --(2.852778,1.0375) + --(4.102136,0.6625)\dpicstop +\dpicdraw (4.102136,0.6625) + --(4.102136,0.413589) + --(3.977136,0.4125)\dpicstop +\dpicdraw (3.327778,0.5625) + --(3.452778,0.5625)\dpicstop +\dpicdraw (3.452778,0.5625) + --(3.452778,0.4875) + --(3.577778,0.4875)\dpicstop +\dpicdraw (2.727778,0.3375) + --(3.577778,0.3375)\dpicstop +\dpicdraw (2.977778,0.4875) + --(2.852778,0.4875)\dpicstop +\filldraw[line width=0bp](2.827778,-0.1) + --(2.852778,-0.2) + --(2.877778,-0.1) --cycle\dpicstop +\dpicdraw (2.852778,0.4875) + --(2.852778,-0.177094)\dpicstop +\dpicdraw[fill=black](2.852778,0) circle (0.007874in)\dpicstop +\dpicdraw (2.852778,0) + --(0.5875,0)\dpicstop +\end{tikzpicture} +\begin{tikzpicture}[scale=2.54] +% dpic version 2020.06.01 option -g for TikZ and PGF 1.01 +\ifx\dpiclw\undefined\newdimen\dpiclw\fi +\global\def\dpicdraw{\draw[line width=\dpiclw]} +\global\def\dpicstop{;} +\dpiclw=0.8bp +\dpiclw=0.8bp +\draw (0,0) node[left=-2bp]{\sf C }; +\draw (0,0.825) node[left=-2bp]{\sf A0 }; +\draw (0,1.125) node[left=-2bp]{\sf A1 }; +\draw (0,1.425) node[left=-2bp]{\sf A2 }; +\dpicdraw (0,1.425) + --(0.375,1.425)\dpicstop +\dpicdraw (0.55,1.425) + --(0.375,1.325) + --(0.375,1.525) + --(0.55,1.425)\dpicstop +\dpicdraw (0.5875,1.425) circle (0.014764in)\dpicstop +\dpicdraw (0.625,1.425) + --(0.875,1.425)\dpicstop +\dpicdraw (1.125,1.425) + --(0.95,1.325) + --(0.95,1.525) + --(1.125,1.425)\dpicstop +\dpicdraw (0.9125,1.425) circle (0.014764in)\dpicstop +\dpicdraw (0,1.125) + --(0.375,1.125)\dpicstop +\dpicdraw (0.55,1.125) + --(0.375,1.025) + --(0.375,1.225) + --(0.55,1.125)\dpicstop +\dpicdraw (0.5875,1.125) circle (0.014764in)\dpicstop +\dpicdraw (0.625,1.125) + --(0.875,1.125)\dpicstop +\dpicdraw (1.125,1.125) + --(0.95,1.025) + --(0.95,1.225) + --(1.125,1.125)\dpicstop +\dpicdraw (0.9125,1.125) circle (0.014764in)\dpicstop +\dpicdraw (0,0.825) + --(0.375,0.825)\dpicstop +\dpicdraw (0.55,0.825) + --(0.375,0.725) + --(0.375,0.925) + --(0.55,0.825)\dpicstop +\dpicdraw (0.5875,0.825) circle (0.014764in)\dpicstop +\dpicdraw (0.625,0.825) + --(0.875,0.825)\dpicstop +\dpicdraw (1.125,0.825) + --(0.95,0.725) + --(0.95,0.925) + --(1.125,0.825)\dpicstop +\dpicdraw (0.9125,0.825) circle (0.014764in)\dpicstop +\dpicdraw (0.5875,0) + --(0.4125,-0.1) + --(0.4125,0.1) + --(0.5875,0)\dpicstop +\dpicdraw (0.316667,0.675) + --(0.194444,0.675)\dpicstop +\dpicdraw (0.198957,0.677179) + ..controls (0.245009,0.581799) and (0.245392,0.470695) + ..(0.2,0.375)\dpicstop +\dpicdraw (0.194444,0.375) + --(0.316667,0.375)\dpicstop +\dpicdraw (0.316667,0.675) + ..controls (0.417105,0.675) and (0.508302,0.616374) + ..(0.55,0.525)\dpicstop +\dpicdraw (0.316667,0.375) + ..controls (0.417105,0.375) and (0.508302,0.433626) + ..(0.55,0.525)\dpicstop +\dpicdraw (0.5875,0.525) circle (0.014764in)\dpicstop +\dpicdraw (0.944444,0.375) + --(0.822222,0.375)\dpicstop +\dpicdraw (0.826735,0.377179) + ..controls (0.872787,0.281799) and (0.87317,0.170695) + ..(0.827778,0.075)\dpicstop +\dpicdraw (0.822222,0.075) + --(0.944444,0.075)\dpicstop +\dpicdraw (0.944444,0.375) + ..controls (1.044883,0.375) and (1.136079,0.316374) + ..(1.177778,0.225)\dpicstop +\dpicdraw (0.944444,0.075) + ..controls (1.044883,0.075) and (1.136079,0.133626) + ..(1.177778,0.225)\dpicstop +\dpicdraw (1.215278,0.225) circle (0.014764in)\dpicstop +\dpicdraw (2.577778,1.1625) + --(2.377778,1.1625) + --(2.377778,1.4625) + --(2.577778,1.4625)\dpicstop +\dpicdraw (2.577778,1.4625) + ..controls (2.66062,1.4625) and (2.727778,1.395343) + ..(2.727778,1.3125) + ..controls (2.727778,1.229657) and (2.66062,1.1625) + ..(2.577778,1.1625)\dpicstop +\dpicdraw (2.577778,0.1875) + --(2.377778,0.1875) + --(2.377778,0.4875) + --(2.577778,0.4875)\dpicstop +\dpicdraw (2.577778,0.4875) + ..controls (2.66062,0.4875) and (2.727778,0.420343) + ..(2.727778,0.3375) + ..controls (2.727778,0.254657) and (2.66062,0.1875) + ..(2.577778,0.1875)\dpicstop +\dpicdraw (3.177778,0.4125) + --(2.977778,0.4125) + --(2.977778,0.7125) + --(3.177778,0.7125)\dpicstop +\dpicdraw (3.177778,0.7125) + ..controls (3.26062,0.7125) and (3.327778,0.645343) + ..(3.327778,0.5625) + ..controls (3.327778,0.479657) and (3.26062,0.4125) + ..(3.177778,0.4125)\dpicstop +\dpicdraw (3.668802,1.3875) + --(3.54658,1.3875)\dpicstop +\dpicdraw (3.551093,1.389679) + ..controls (3.597145,1.294299) and (3.597528,1.183195) + ..(3.552136,1.0875)\dpicstop +\dpicdraw (3.54658,1.0875) + --(3.668802,1.0875)\dpicstop +\dpicdraw (3.668802,1.3875) + ..controls (3.769241,1.3875) and (3.860437,1.328874) + ..(3.902136,1.2375)\dpicstop +\dpicdraw (3.668802,1.0875) + ..controls (3.769241,1.0875) and (3.860437,1.146126) + ..(3.902136,1.2375)\dpicstop +\dpicdraw (3.939636,1.2375) circle (0.014764in)\dpicstop +\dpicdraw (3.668802,0.5625) + --(3.54658,0.5625)\dpicstop +\dpicdraw (3.551093,0.564679) + ..controls (3.597145,0.469299) and (3.597528,0.358195) + ..(3.552136,0.2625)\dpicstop +\dpicdraw (3.54658,0.2625) + --(3.668802,0.2625)\dpicstop +\dpicdraw (3.668802,0.5625) + ..controls (3.769241,0.5625) and (3.860437,0.503874) + ..(3.902136,0.4125)\dpicstop +\dpicdraw (3.668802,0.2625) + ..controls (3.769241,0.2625) and (3.860437,0.321126) + ..(3.902136,0.4125)\dpicstop +\dpicdraw (3.939636,0.4125) circle (0.014764in)\dpicstop +\draw (2.127778,-0.241667) node[below=-2bp]{\sf {\sl To other latches}}; +\dpicdraw (0.225642,0.6) + --(0,0.6)\dpicstop +\draw (0,0.6) node[left=-2bp]{\sf D }; +\dpicdraw (0.225642,0.45) + --(0,0.45)\dpicstop +\draw (0,0.45) node[left=-2bp]{\sf E }; +\dpicdraw[fill=black](0.100642,0.45) circle (0.007874in)\dpicstop +\dpicdraw (0.100642,0.45) + --(0.100642,0.15) + --(0.85342,0.15)\dpicstop +\dpicdraw (0,0) + --(0.4125,0)\dpicstop +\dpicdraw[fill=black](0.75,1.425) circle (0.007874in)\dpicstop +\dpicdraw (0.75,1.425) + --(0.75,1.275)\dpicstop +\dpicdraw (0.75,1.275) + --(1.627778,1.275)\dpicstop +\filldraw[line width=0bp](1.602778,-0.1) + --(1.627778,-0.2) + --(1.652778,-0.1) --cycle\dpicstop +\dpicdraw (1.627778,1.275) + --(1.627778,-0.177094)\dpicstop +\dpicdraw[fill=black](0.75,1.125) circle (0.007874in)\dpicstop +\dpicdraw (0.75,1.125) + --(0.75,0.975)\dpicstop +\dpicdraw (0.75,0.975) + --(1.502778,0.975)\dpicstop +\filldraw[line width=0bp](1.477778,-0.1) + --(1.502778,-0.2) + --(1.527778,-0.1) --cycle\dpicstop +\dpicdraw (1.502778,0.975) + --(1.502778,-0.177094)\dpicstop +\dpicdraw[fill=black](0.75,0.825) circle (0.007874in)\dpicstop +\dpicdraw (0.75,0.825) + --(0.75,0.675)\dpicstop +\dpicdraw (0.75,0.675) + --(1.377778,0.675)\dpicstop +\filldraw[line width=0bp](1.352778,-0.1) + --(1.377778,-0.2) + --(1.402778,-0.1) --cycle\dpicstop +\dpicdraw (1.377778,0.675) + --(1.377778,-0.177094)\dpicstop +\dpicdraw[fill=black](0.75,0.526089) circle (0.007874in)\dpicstop +\dpicdraw (0.75,0.526089) + --(0.75,0.3) + --(0.85342,0.3)\dpicstop +\dpicdraw (2.377778,1.425) + --(1.877778,1.425)\dpicstop +\filldraw[line width=0bp](1.852778,-0.1) + --(1.877778,-0.2) + --(1.902778,-0.1) --cycle\dpicstop +\dpicdraw (1.877778,1.425) + --(1.877778,-0.177094)\dpicstop +\dpicdraw (2.377778,1.35) + --(2.002778,1.35)\dpicstop +\filldraw[line width=0bp](1.977778,-0.1) + --(2.002778,-0.2) + --(2.027778,-0.1) --cycle\dpicstop +\dpicdraw (2.002778,1.35) + --(2.002778,-0.177094)\dpicstop +\dpicdraw (2.377778,1.275) + --(2.127778,1.275)\dpicstop +\filldraw[line width=0bp](2.102778,-0.1) + --(2.127778,-0.2) + --(2.152778,-0.1) --cycle\dpicstop +\dpicdraw (2.127778,1.275) + --(2.127778,-0.177094)\dpicstop +\dpicdraw (2.377778,1.2) + --(2.252778,1.2)\dpicstop +\filldraw[line width=0bp](2.227778,-0.1) + --(2.252778,-0.2) + --(2.277778,-0.1) --cycle\dpicstop +\dpicdraw (2.252778,1.2) + --(2.252778,-0.177094)\dpicstop +\dpicdraw (1.125,1.425) + --(1.877778,1.425)\dpicstop +\dpicdraw[fill=black](1.877778,1.425) circle (0.007874in)\dpicstop +\dpicdraw (1.125,1.125) + --(2.002778,1.125)\dpicstop +\dpicdraw[fill=black](2.002778,1.125) circle (0.007874in)\dpicstop +\dpicdraw (1.125,0.825) + --(2.127778,0.825)\dpicstop +\dpicdraw[fill=black](2.127778,0.825) circle (0.007874in)\dpicstop +\dpicdraw (0.625,0.525) + --(2.252778,0.526089)\dpicstop +\dpicdraw[fill=black](2.252778,0.526089) circle (0.007874in)\dpicstop +\dpicdraw (2.377778,0.45) + --(1.877778,0.45)\dpicstop +\dpicdraw[fill=black](1.877778,0.45) circle (0.007874in)\dpicstop +\dpicdraw (2.377778,0.375) + --(2.002778,0.375)\dpicstop +\dpicdraw[fill=black](2.002778,0.375) circle (0.007874in)\dpicstop +\dpicdraw (2.377778,0.3) + --(2.127778,0.3)\dpicstop +\dpicdraw[fill=black](2.127778,0.3) circle (0.007874in)\dpicstop +\dpicdraw (1.252778,0.225) + --(2.377778,0.225)\dpicstop +\dpicdraw[fill=black](1.752778,0.225) circle (0.007874in)\dpicstop +\filldraw[line width=0bp](1.727778,-0.1) + --(1.752778,-0.2) + --(1.777778,-0.1) --cycle\dpicstop +\dpicdraw (1.752778,0.225) + --(1.752778,-0.177094)\dpicstop +\dpicdraw (2.727778,1.3125) + --(3.577778,1.3125)\dpicstop +\dpicdraw (3.977136,1.2375) + --(4.102136,1.2375)\dpicstop +\dpicdraw[fill=black](4.102136,1.2375) circle (0.007874in)\dpicstop +\dpicdraw (4.102136,1.2375) + --(4.227136,1.2375)\dpicstop +\draw (4.227136,1.2375) node[right=-2bp]{\sf Q7}; +\dpicdraw (4.102136,1.2375) + --(4.102136,0.9875) + --(2.852778,0.7625)\dpicstop +\dpicdraw (2.852778,0.7625) + --(2.852778,0.6375) + --(2.977778,0.6375)\dpicstop +\dpicdraw (3.577778,1.1625) + --(2.852778,1.1625)\dpicstop +\dpicdraw (2.852778,1.1625) + --(2.852778,1.0375) + --(4.102136,0.6625)\dpicstop +\dpicdraw (4.102136,0.6625) + --(4.102136,0.413589) + --(3.977136,0.4125)\dpicstop +\dpicdraw (3.327778,0.5625) + --(3.452778,0.5625)\dpicstop +\dpicdraw (3.452778,0.5625) + --(3.452778,0.4875) + --(3.577778,0.4875)\dpicstop +\dpicdraw (2.727778,0.3375) + --(3.577778,0.3375)\dpicstop +\dpicdraw (2.977778,0.4875) + --(2.852778,0.4875)\dpicstop +\filldraw[line width=0bp](2.827778,-0.1) + --(2.852778,-0.2) + --(2.877778,-0.1) --cycle\dpicstop +\dpicdraw (2.852778,0.4875) + --(2.852778,-0.177094)\dpicstop +\dpicdraw[fill=black](2.852778,0) circle (0.007874in)\dpicstop +\dpicdraw (2.852778,0) + --(0.5875,0)\dpicstop +\end{tikzpicture} +\begin{tikzpicture}[scale=2.54] +% dpic version 2020.06.01 option -g for TikZ and PGF 1.01 +\ifx\dpiclw\undefined\newdimen\dpiclw\fi +\global\def\dpicdraw{\draw[line width=\dpiclw]} +\global\def\dpicstop{;} +\dpiclw=0.8bp +\dpiclw=0.8bp +\draw (0,0) node[left=-2bp]{\sf C }; +\draw (0,0.825) node[left=-2bp]{\sf A0 }; +\draw (0,1.125) node[left=-2bp]{\sf A1 }; +\draw (0,1.425) node[left=-2bp]{\sf A2 }; +\dpicdraw (0,1.425) + --(0.375,1.425)\dpicstop +\dpicdraw (0.55,1.425) + --(0.375,1.325) + --(0.375,1.525) + --(0.55,1.425)\dpicstop +\dpicdraw (0.5875,1.425) circle (0.014764in)\dpicstop +\dpicdraw (0.625,1.425) + --(0.875,1.425)\dpicstop +\dpicdraw (1.125,1.425) + --(0.95,1.325) + --(0.95,1.525) + --(1.125,1.425)\dpicstop +\dpicdraw (0.9125,1.425) circle (0.014764in)\dpicstop +\dpicdraw (0,1.125) + --(0.375,1.125)\dpicstop +\dpicdraw (0.55,1.125) + --(0.375,1.025) + --(0.375,1.225) + --(0.55,1.125)\dpicstop +\dpicdraw (0.5875,1.125) circle (0.014764in)\dpicstop +\dpicdraw (0.625,1.125) + --(0.875,1.125)\dpicstop +\dpicdraw (1.125,1.125) + --(0.95,1.025) + --(0.95,1.225) + --(1.125,1.125)\dpicstop +\dpicdraw (0.9125,1.125) circle (0.014764in)\dpicstop +\dpicdraw (0,0.825) + --(0.375,0.825)\dpicstop +\dpicdraw (0.55,0.825) + --(0.375,0.725) + --(0.375,0.925) + --(0.55,0.825)\dpicstop +\dpicdraw (0.5875,0.825) circle (0.014764in)\dpicstop +\dpicdraw (0.625,0.825) + --(0.875,0.825)\dpicstop +\dpicdraw (1.125,0.825) + --(0.95,0.725) + --(0.95,0.925) + --(1.125,0.825)\dpicstop +\dpicdraw (0.9125,0.825) circle (0.014764in)\dpicstop +\dpicdraw (0.5875,0) + --(0.4125,-0.1) + --(0.4125,0.1) + --(0.5875,0)\dpicstop +\dpicdraw (0.316667,0.675) + --(0.194444,0.675)\dpicstop +\dpicdraw (0.198957,0.677179) + ..controls (0.245009,0.581799) and (0.245392,0.470695) + ..(0.2,0.375)\dpicstop +\dpicdraw (0.194444,0.375) + --(0.316667,0.375)\dpicstop +\dpicdraw (0.316667,0.675) + ..controls (0.417105,0.675) and (0.508302,0.616374) + ..(0.55,0.525)\dpicstop +\dpicdraw (0.316667,0.375) + ..controls (0.417105,0.375) and (0.508302,0.433626) + ..(0.55,0.525)\dpicstop +\dpicdraw (0.5875,0.525) circle (0.014764in)\dpicstop +\dpicdraw (0.944444,0.375) + --(0.822222,0.375)\dpicstop +\dpicdraw (0.826735,0.377179) + ..controls (0.872787,0.281799) and (0.87317,0.170695) + ..(0.827778,0.075)\dpicstop +\dpicdraw (0.822222,0.075) + --(0.944444,0.075)\dpicstop +\dpicdraw (0.944444,0.375) + ..controls (1.044883,0.375) and (1.136079,0.316374) + ..(1.177778,0.225)\dpicstop +\dpicdraw (0.944444,0.075) + ..controls (1.044883,0.075) and (1.136079,0.133626) + ..(1.177778,0.225)\dpicstop +\dpicdraw (1.215278,0.225) circle (0.014764in)\dpicstop +\dpicdraw (2.577778,1.1625) + --(2.377778,1.1625) + --(2.377778,1.4625) + --(2.577778,1.4625)\dpicstop +\dpicdraw (2.577778,1.4625) + ..controls (2.66062,1.4625) and (2.727778,1.395343) + ..(2.727778,1.3125) + ..controls (2.727778,1.229657) and (2.66062,1.1625) + ..(2.577778,1.1625)\dpicstop +\dpicdraw (2.577778,0.1875) + --(2.377778,0.1875) + --(2.377778,0.4875) + --(2.577778,0.4875)\dpicstop +\dpicdraw (2.577778,0.4875) + ..controls (2.66062,0.4875) and (2.727778,0.420343) + ..(2.727778,0.3375) + ..controls (2.727778,0.254657) and (2.66062,0.1875) + ..(2.577778,0.1875)\dpicstop +\dpicdraw (3.177778,0.4125) + --(2.977778,0.4125) + --(2.977778,0.7125) + --(3.177778,0.7125)\dpicstop +\dpicdraw (3.177778,0.7125) + ..controls (3.26062,0.7125) and (3.327778,0.645343) + ..(3.327778,0.5625) + ..controls (3.327778,0.479657) and (3.26062,0.4125) + ..(3.177778,0.4125)\dpicstop +\dpicdraw (3.668802,1.3875) + --(3.54658,1.3875)\dpicstop +\dpicdraw (3.551093,1.389679) + ..controls (3.597145,1.294299) and (3.597528,1.183195) + ..(3.552136,1.0875)\dpicstop +\dpicdraw (3.54658,1.0875) + --(3.668802,1.0875)\dpicstop +\dpicdraw (3.668802,1.3875) + ..controls (3.769241,1.3875) and (3.860437,1.328874) + ..(3.902136,1.2375)\dpicstop +\dpicdraw (3.668802,1.0875) + ..controls (3.769241,1.0875) and (3.860437,1.146126) + ..(3.902136,1.2375)\dpicstop +\dpicdraw (3.939636,1.2375) circle (0.014764in)\dpicstop +\dpicdraw (3.668802,0.5625) + --(3.54658,0.5625)\dpicstop +\dpicdraw (3.551093,0.564679) + ..controls (3.597145,0.469299) and (3.597528,0.358195) + ..(3.552136,0.2625)\dpicstop +\dpicdraw (3.54658,0.2625) + --(3.668802,0.2625)\dpicstop +\dpicdraw (3.668802,0.5625) + ..controls (3.769241,0.5625) and (3.860437,0.503874) + ..(3.902136,0.4125)\dpicstop +\dpicdraw (3.668802,0.2625) + ..controls (3.769241,0.2625) and (3.860437,0.321126) + ..(3.902136,0.4125)\dpicstop +\dpicdraw (3.939636,0.4125) circle (0.014764in)\dpicstop +\draw (2.127778,-0.241667) node[below=-2bp]{\sf {\sl To other latches}}; +\dpicdraw (0.225642,0.6) + --(0,0.6)\dpicstop +\draw (0,0.6) node[left=-2bp]{\sf D }; +\dpicdraw (0.225642,0.45) + --(0,0.45)\dpicstop +\draw (0,0.45) node[left=-2bp]{\sf E }; +\dpicdraw[fill=black](0.100642,0.45) circle (0.007874in)\dpicstop +\dpicdraw (0.100642,0.45) + --(0.100642,0.15) + --(0.85342,0.15)\dpicstop +\dpicdraw (0,0) + --(0.4125,0)\dpicstop +\dpicdraw[fill=black](0.75,1.425) circle (0.007874in)\dpicstop +\dpicdraw (0.75,1.425) + --(0.75,1.275)\dpicstop +\dpicdraw (0.75,1.275) + --(1.627778,1.275)\dpicstop +\filldraw[line width=0bp](1.602778,-0.1) + --(1.627778,-0.2) + --(1.652778,-0.1) --cycle\dpicstop +\dpicdraw (1.627778,1.275) + --(1.627778,-0.177094)\dpicstop +\dpicdraw[fill=black](0.75,1.125) circle (0.007874in)\dpicstop +\dpicdraw (0.75,1.125) + --(0.75,0.975)\dpicstop +\dpicdraw (0.75,0.975) + --(1.502778,0.975)\dpicstop +\filldraw[line width=0bp](1.477778,-0.1) + --(1.502778,-0.2) + --(1.527778,-0.1) --cycle\dpicstop +\dpicdraw (1.502778,0.975) + --(1.502778,-0.177094)\dpicstop +\dpicdraw[fill=black](0.75,0.825) circle (0.007874in)\dpicstop +\dpicdraw (0.75,0.825) + --(0.75,0.675)\dpicstop +\dpicdraw (0.75,0.675) + --(1.377778,0.675)\dpicstop +\filldraw[line width=0bp](1.352778,-0.1) + --(1.377778,-0.2) + --(1.402778,-0.1) --cycle\dpicstop +\dpicdraw (1.377778,0.675) + --(1.377778,-0.177094)\dpicstop +\dpicdraw[fill=black](0.75,0.526089) circle (0.007874in)\dpicstop +\dpicdraw (0.75,0.526089) + --(0.75,0.3) + --(0.85342,0.3)\dpicstop +\dpicdraw (2.377778,1.425) + --(1.877778,1.425)\dpicstop +\filldraw[line width=0bp](1.852778,-0.1) + --(1.877778,-0.2) + --(1.902778,-0.1) --cycle\dpicstop +\dpicdraw (1.877778,1.425) + --(1.877778,-0.177094)\dpicstop +\dpicdraw (2.377778,1.35) + --(2.002778,1.35)\dpicstop +\filldraw[line width=0bp](1.977778,-0.1) + --(2.002778,-0.2) + --(2.027778,-0.1) --cycle\dpicstop +\dpicdraw (2.002778,1.35) + --(2.002778,-0.177094)\dpicstop +\dpicdraw (2.377778,1.275) + --(2.127778,1.275)\dpicstop +\filldraw[line width=0bp](2.102778,-0.1) + --(2.127778,-0.2) + --(2.152778,-0.1) --cycle\dpicstop +\dpicdraw (2.127778,1.275) + --(2.127778,-0.177094)\dpicstop +\dpicdraw (2.377778,1.2) + --(2.252778,1.2)\dpicstop +\filldraw[line width=0bp](2.227778,-0.1) + --(2.252778,-0.2) + --(2.277778,-0.1) --cycle\dpicstop +\dpicdraw (2.252778,1.2) + --(2.252778,-0.177094)\dpicstop +\dpicdraw (1.125,1.425) + --(1.877778,1.425)\dpicstop +\dpicdraw[fill=black](1.877778,1.425) circle (0.007874in)\dpicstop +\dpicdraw (1.125,1.125) + --(2.002778,1.125)\dpicstop +\dpicdraw[fill=black](2.002778,1.125) circle (0.007874in)\dpicstop +\dpicdraw (1.125,0.825) + --(2.127778,0.825)\dpicstop +\dpicdraw[fill=black](2.127778,0.825) circle (0.007874in)\dpicstop +\dpicdraw (0.625,0.525) + --(2.252778,0.526089)\dpicstop +\dpicdraw[fill=black](2.252778,0.526089) circle (0.007874in)\dpicstop +\dpicdraw (2.377778,0.45) + --(1.877778,0.45)\dpicstop +\dpicdraw[fill=black](1.877778,0.45) circle (0.007874in)\dpicstop +\dpicdraw (2.377778,0.375) + --(2.002778,0.375)\dpicstop +\dpicdraw[fill=black](2.002778,0.375) circle (0.007874in)\dpicstop +\dpicdraw (2.377778,0.3) + --(2.127778,0.3)\dpicstop +\dpicdraw[fill=black](2.127778,0.3) circle (0.007874in)\dpicstop +\dpicdraw (1.252778,0.225) + --(2.377778,0.225)\dpicstop +\dpicdraw[fill=black](1.752778,0.225) circle (0.007874in)\dpicstop +\filldraw[line width=0bp](1.727778,-0.1) + --(1.752778,-0.2) + --(1.777778,-0.1) --cycle\dpicstop +\dpicdraw (1.752778,0.225) + --(1.752778,-0.177094)\dpicstop +\dpicdraw (2.727778,1.3125) + --(3.577778,1.3125)\dpicstop +\dpicdraw (3.977136,1.2375) + --(4.102136,1.2375)\dpicstop +\dpicdraw[fill=black](4.102136,1.2375) circle (0.007874in)\dpicstop +\dpicdraw (4.102136,1.2375) + --(4.227136,1.2375)\dpicstop +\draw (4.227136,1.2375) node[right=-2bp]{\sf Q7}; +\dpicdraw (4.102136,1.2375) + --(4.102136,0.9875) + --(2.852778,0.7625)\dpicstop +\dpicdraw (2.852778,0.7625) + --(2.852778,0.6375) + --(2.977778,0.6375)\dpicstop +\dpicdraw (3.577778,1.1625) + --(2.852778,1.1625)\dpicstop +\dpicdraw (2.852778,1.1625) + --(2.852778,1.0375) + --(4.102136,0.6625)\dpicstop +\dpicdraw (4.102136,0.6625) + --(4.102136,0.413589) + --(3.977136,0.4125)\dpicstop +\dpicdraw (3.327778,0.5625) + --(3.452778,0.5625)\dpicstop +\dpicdraw (3.452778,0.5625) + --(3.452778,0.4875) + --(3.577778,0.4875)\dpicstop +\dpicdraw (2.727778,0.3375) + --(3.577778,0.3375)\dpicstop +\dpicdraw (2.977778,0.4875) + --(2.852778,0.4875)\dpicstop +\filldraw[line width=0bp](2.827778,-0.1) + --(2.852778,-0.2) + --(2.877778,-0.1) --cycle\dpicstop +\dpicdraw (2.852778,0.4875) + --(2.852778,-0.177094)\dpicstop +\dpicdraw[fill=black](2.852778,0) circle (0.007874in)\dpicstop +\dpicdraw (2.852778,0) + --(0.5875,0)\dpicstop +\end{tikzpicture} diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/tikztosvg b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/tikztosvg new file mode 100644 index 00000000000..8e9523347c4 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/tikztosvg @@ -0,0 +1,181 @@ +#!/bin/bash + +puts() +{ + echo "[$1] $2" +} + +error() +{ + puts "ERROR" "$1" r + + if [ -n "$2" ] + then + exit $2 + else + exit 1 + fi +} + +message() +{ + puts "TIKZTOSVG" "$1" g +} + +showHelp() +{ + man tikztosvg + exit 0 +} + +showVersion() +{ + echo 0.1.0 + exit 0 +} + +if [ -z "$(which xelatex)" ] +then + error "xelatex could not be found" +fi + +if [ -z "$(which pdf2svg)" ] +then + error "pdf2svg could not be found" +fi + +# Parsing the arguments +PACKAGES=() +while [ $# -gt 1 ] +do + case "$1" in + -h|--help) + showHelp + ;; + -v|--version) + showVersion + ;; + -p|--package) + if [ -z "$2" ] + then + error "Unnexpected EOF" + else + PACKAGES+=("$2") + shift + shift + fi + ;; + -o|--output) + if [ -n "$OUTPUT" ] + then + error "The output path was specified multiple times" + else if [ -z "$2" ] + then + error "Unexpected EOF" + exit 1 + else + OUTPUT="$2" + shift + shift + fi + fi + ;; + -q|--quit) + QUIET=1 + shift + ;; + *) + error "Unexpected token: \"$1\"" + ;; + esac +done + +case "$1" in + -h|--help) + showHelp + ;; + -v|--version) + showVersion + ;; + "") + error "No input path provided" + ;; + *) + INPUT="$1" +esac + +if [ -z "$OUTPUT" ] +then + OUTPUT="$(echo $(basename $INPUT) | cut -d "." -f1)" +fi + +TEMP_DIR="$(mktemp -d)" +TEX_FILE="$TEMP_DIR/tmp.tex" + +# Generate the LaTeX document +echo "\documentclass[crop,tikz,multi=false]{standalone}" > $TEX_FILE + +for PACKAGE in "${PACKAGES[@]}" +do + echo "\usepackage{$PACKAGE}" >> $TEX_FILE +done + +echo "\begin{document}" >> $TEX_FILE +echo "\huge" >> $TEX_FILE + +cat $INPUT >> $TEX_FILE + +if [ $? -ne 0 ] +then + rm $TEMP_DIR -r + error "File not found: $INPUT" +fi + +echo "\end{document}" >> $TEX_FILE + +if [ -z "$QUIET" ] +then + message "Rendering the LaTeX document. . ." + xelatex -output-directory=$TEMP_DIR $TEX_FILE +else + xelatex -halt-on-error -output-directory=$TEMP_DIR $TEX_FILE 1> /dev/null 2>&1 +fi + +S=$? +if [ $S -ne 0 ] +then + rm $TEMP_DIR -r + if [ -z "$QUIET" ] + then + error "xelatex exited with code $S" $S + else + exit $S + fi +fi + +if [ -z "$QUIET" ] +then + message "Converting the output to SVG. . ." +fi + +pdf2svg "$TEMP_DIR/tmp.pdf" $OUTPUT 1 + +S=$? +if [ $S -ne 0 ] +then + rm $TEMP_DIR -r + if [ -z "$QUIET" ] + then + error "pdf2svg exited with code $S" $S + else + exit $S + fi +fi + +if [ -z "$QUIET" ] +then + message "Done!" +fi + +rm "$TEMP_DIR" -r + diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/tstSVG.htmx b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/tstSVG.htmx new file mode 100644 index 00000000000..9e1884c146f --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/dev/tstSVG.htmx @@ -0,0 +1,62 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<meta http-equiv="Content-Style-Type" content="text/css"> +<!--meta http-equiv="Content-Script-Type" content="text/javascript"--> +<TITLE>SVG Examples: Circuit_macros Version XXX</TITLE> +<style type="text/css"> +.svg{display:none} +*>.svg{display:inline} +</style> +<link rel="shortcut icon" href="../Circuit_macros.ico" type="image/x-icon" /> +</HEAD> + +<BODY> +<H2>SVG Circuit_macros examples, Version XXX</H2> +<hr> + +<p> +These diagrams are the result of applying pdf2svg to examples.pdf. + <p> + Click on the link to view the source of each diagram. +</p> +<hr> + +define(`for_',`ifelse(eval(`$1'!=(`$2'+(`$3'))),1,`pushdef(`m4x',`$1') $4 + popdef(`m4x')for_(eval(`$1'+(`$3')),`$2',`$3',`$4')')') + +define(`cfig',` +<p> + +<!--[if lte IE 8]><embed src="$1.svg" sinclude($1.siz)><![endif]--> + +<!--[if gte IE 9]> +<object dx="4" data="$1.svg" width="612" height="792" type="image/svg+xml" class="img"> + </object> <![endif]--> + +<!--[if !IE]><!--> +<object data="$1.svg" width="612" height="792" type="image/svg+xml" class="img"> + </object> <!--<![endif]--> + +<br> +<!-- +<a href="$1.txt" TYPE="text/plain" TARGET="_blank" alt="$1">$1.m4</a> +-- +</p> +<hr>') + +define(`m4tt',`<g style="font-family:monospace">') + +<!-- +<embed pluginspage="http://www.adobe.com/svg/viewer/install/" /> +--> + + +cfig(test) +#for_(1,46,1, +#cfig(examples_```'''m4x) +#) + +</BODY> +</HTML> diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/examples.pdf b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/examples.pdf Binary files differnew file mode 100644 index 00000000000..b52e15195e6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/examples.pdf diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/examplesSVG.htmx b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/examplesSVG.htmx new file mode 100644 index 00000000000..bb2265a90f1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/nsvg/examplesSVG.htmx @@ -0,0 +1,70 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<meta http-equiv="Content-Style-Type" content="text/css"> +<!--meta http-equiv="Content-Script-Type" content="text/javascript"--> +<TITLE>SVG Examples: Circuit_macros Version XXX</TITLE> +<style type="text/css"> +.svg{display:none} +*>.svg{display:inline} +</style> +<link rel="shortcut icon" href="../Circuit_macros.ico" type="image/x-icon" /> +</HEAD> + +<BODY> +<H2>SVG Circuit_macros examples, Version XXX</H2> +<hr> + +<p> + These diagrams are in .svg format. + <A HREF="examples.pdf">Pdf</A> + and + <A HREF="examples.html">png</A> + versions are also available. + The PDF equivalent can be found in examples.pdf of the distribution. +</p> + <p> + Click on the link to view the source of each diagram. +</p> +<hr> + +define(`for_',`ifelse(eval(`$1'!=(`$2'+(`$3'))),1,`pushdef(`m4x',`$1') $4 + popdef(`m4x')for_(eval(`$1'+(`$3')),`$2',`$3',`$4')')') + +define(`cfig',` +<p> + +<!--[if lte IE 8]><embed src="$1.svg" sinclude($1.siz)><![endif]--> + +<!--[if gte IE 9]> +<object dx="4" data="$1.svg" width="612" height="792" type="image/svg+xml" class="img"> + </object> <![endif]--> + +<!--[if !IE]><!--> +<object data="$1.svg" width="612" height="792" type="image/svg+xml" class="img"> + </object> <!--<![endif]--> + +<br> +<!-- +<a href="$1.txt" TYPE="text/plain" TARGET="_blank" alt="$1">$1.m4</a> +-- +</p> +<hr>') + +define(`m4tt',`<g style="font-family:monospace">') + +<!-- +<embed pluginspage="http://www.adobe.com/svg/viewer/install/" /> +--> + +<p> +These diagrams are the result of applying pdf2svg to examples.pdf. + + +for_(1,46,1, +cfig(examples_```'''m4x) +) + +</BODY> +</HTML> diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/oFlow.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/oFlow.m4 new file mode 100644 index 00000000000..f4fa766f1a9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/oFlow.m4 @@ -0,0 +1,108 @@ +.PS +# Flow.m4 +gen_init +ifdef(`FlowchartDefs_',,`include(FlowchartDefs.m4)') + +# Could use xcolor with option dvipsnames but define color here for portability: +define(`Thistle',`rgbstring(0.85,0.75,0.85)')dnl +define(`RubineRed',`rgbstring(0.81,0,0.35)')dnl +define(`YellowGreen',`rgbstring(0.68,1,0.18)')dnl +define(`SeaGreen',`rgbstring(0.13,0.70,0.67)')dnl +define(`Goldenrod',`rgbstring(0.85,0.65,0.13)')dnl + + linethick_(1.0) + arrowwid = 0.05 + arrowht = 0.1 + fillval = 0.8 + down + +Case: Fcase(, + "Test 1",[Fbox("Task 1",, shaded Thistle); W:last [].W; N:last [].N + arrow down linewid/3 from last [].S + Fbox("Task 1.5",, shaded Thistle) with .N at Here + E:last [].E; S:last [].S], + "Test 2",Fbox("Task 2" "is bigger", wid fboxwid*1.2 ht fboxht*3/2, \ + shaded SeaGreen), + "Test 3",Fbox("Task 3",, shaded RubineRed)dnl + ) + + "\sl .N" at Case.N rjust above; "\sl .S" at Case.S rjust below + "\sl .E" at Case.E ljust; "\sl .W" at Case.W rjust + "\sl Case statement" below at Case.s+(0,-0.2) + move to Case.nw+(-12bp__,10bp__) + +Whiledo: Fwhiledo("$i < n$",,,Fbox("Task"),"T" above ljust at Test.E) \ + with .nw at Case.ne+(0.25,0) + + "\sl .N" at Whiledo.N rjust; "\sl .S" at Whiledo.S rjust below + "\sl .E" at Whiledo.E ljust; "\sl .W" at Whiledo.W rjust + "\sl While-do" below at Whiledo.s+(0,-0.2) + +Repeatuntil: Frepeatuntil("$n \geq 5$",,,Fbox("Task"), + "T" at Test.E above ljust) with .nw at Whiledo.sw + (0.25,-1) + + "\sl .N" at Repeatuntil.N rjust above; "\sl .S" at Repeatuntil.S rjust below + "\sl .E" at Repeatuntil.E ljust; "\sl .W" at Repeatuntil.W rjust + "\sl Repeat-until" below at Repeatuntil.s+(0,-0.2) + +Ifthenelse: Fifthenelse("$A<B$",,, + Fbox("False"), + Fbox("True",ht fboxht*1.2 wid fboxwid)dnl + ) with .nw at Repeatuntil.sw +(0.5,-0.5) + + "\sl .N" at Ifthenelse.N rjust above; "\sl .S" at Ifthenelse.S below rjust + "\sl .E" at Ifthenelse.E ljust; "\sl .W" at Ifthenelse.W rjust + "\sl If-then-else" below at Ifthenelse.s+(0,-0.3) \ + "\sl (the True and False tasks are optional)" + +# Compound statement: +[ right + ellipse shaded YellowGreen "Start" + arrow right linewid/2 + + Fbox("First task") with .W at Here + arrow down linewid/2 from last [].S + + Fifthenelse("Test 1",,, + Frepeatuntil("$i \geq 5$",,shaded Goldenrod,Fbox("Task")), + Fifthenelse("$A < B$",,shaded Goldenrod, + Fbox("Left"), + Fbox("Right"), + "T" at Test.E above ljust), + "T" at Test.E above ljust) with .N at Here + + A: arrow down 0.25 from last [].S ] with .nw at Case.sw + (-12bp__,-0.7) + + "\sl Compound statement" below at last [].A.end + +Example: [ fillvalue = 0.8; awid = linewid/2; right_ + Start: ellipse wid boxwid/2 ht boxwid/3 shaded "green" + arrow right_ awid + B1: Fbox("Planejamento") + B2: Fbox(`"Execu\c{c}\~ao"') with .W at B1.E+(awid*3,0) + B3: Fbox(`"Sele\c{c}\~ao"') with .W at B2.E+(awid*3,0) + LT: Ftest(`"Avalia\c{c}\~ao do" "Planejamento"', + wid fboxwid*1.5 ht fboxht*2.0, + shaded YellowGreen, + "Correto" at Box.e above ljust; + "Incompleto" at Box.w above rjust) with .S at 0.5 between B1.ne and B2.nw + arrow from B1.E to (LT.S,B1.E) then to LT.S + arrow from LT.W to (B1.N,LT.W) then to B1.N + arrow from LT.E to (B2.N,LT.E) then to B2.N + RT: Ftest(`"Avalia\c{c}\~ao da" "Execu\c{c}\~ao"', + wid fboxwid*1.5 ht fboxht*2.0, + shaded YellowGreen, + "Correto" at Box.e below ljust; + "Incompleto" at Box.w below rjust) with .N at 0.5 between B2.se and B3.sw + arrow from B2.E to (RT.N,B2.E) then to RT.N + arrow from RT.W to (B2.S,RT.W) then to B2.S + arrow from RT.E to (B3.S,RT.E) then to B3.S + B4: Fbox(`"Extra\c{c}\~ao"') with .S at B3.N+(0,awid) + arrow from B3.N to B4.S + arrow right_ awid from B4.E + B5: Fbox(`"Conclus\~ao"') + ellipse wid boxwid/2 ht boxwid/3 shaded "red" at (B5.S,Start) + arrow down_ awid from B5.S to last ellipse.n +] with .nw at last [].sw+(0,-fboxht) + +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/psfrag/Makefile b/Master/texmf-dist/doc/latex/circuit-macros/examples/psfrag/Makefile index 314d8c3ef15..e79d5bee4d1 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/psfrag/Makefile +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/psfrag/Makefile @@ -31,7 +31,8 @@ FIGS = Adder.eps Alogix.eps ABlogix.eps Antennas.eps Audio.eps AmpTable.eps \ Emarrows.eps Flow.eps Fuses.eps \ GrayCode.eps Grounds.eps Headers.eps Heathkit.eps Jack.eps \ I2L.eps Inclpdf.eps \ - Logic.eps Loglog.eps MC.eps Mixer.eps MotorControl.eps Multiplexer.eps \ + Lyap.eps Logic.eps Loglog.eps \ + MC.eps Mixer.eps MotorControl.eps Multiplexer.eps \ NLG.eps NPDT.eps Nport.eps \ Opamp.eps Optoiso.eps Pconn.eps PushPull.eps Quantum.eps \ Rectifiers.eps Relay.eps Rotbox.eps \ diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/random.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/random.m4 index d375cb6eb46..88c2ce41dbd 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/random.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/random.m4 @@ -8,6 +8,7 @@ s_init(random) ################################################################ # hscale(right length,nlabels, # minlabel,maxlabel,[T][N]) +# arg5=T: top axis, N: nolabels define(`hscale',`[ define(`hs_nl',`ifelse(`$2',,5,`$2')') A: line `$1' ; Start: A.start; End: A.end td = 1/(hs_nl-1)*A.len/5 @@ -26,6 +27,7 @@ s_init(random) ]') # vscale(up length,nlabels, # minlabel,maxlabel,[R][N] ) +# arg5=R: right axis, N: nolabels define(`vscale',`[ define(`vs_nl',`ifelse(`$2',,5,`$2')') A: line `$1' ; Start: A.start; End: A.end td = 1/(vs_nl-1)*A.len/5 @@ -48,7 +50,7 @@ s_init(random) ################################################################ [ - n = 2000 + n = 2000 # number of samples stddev = 0.25 graphsize = 2 diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/shapes.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/shapes.m4 index 914778c73cd..646584da7a7 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/shapes.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/shapes.m4 @@ -43,6 +43,10 @@ define(`cylinder3D',`[ Start: (0,0) `cone3D(xdispl,ydispl,zdispl,diameter, [colored "color"])' + `internal positions: + Start (centre of base), + End (point), + C (axis centre)' define(`cone3D',`[ Start: (0,0) xdispl = `$1'; ydispl = `$2'; zdispl = `$3' define(`M4CL',`xdispl,ydispl,zdispl')dnl diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/AutoencoderSVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/AutoencoderSVG.m4 new file mode 100644 index 00000000000..05921e1bcc1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/AutoencoderSVG.m4 @@ -0,0 +1,97 @@ +.PS +# Masked_Autoencoder.m4 +gen_init +NeedDpicTools +svg_font(sans-serif,12bp__,textoffset) + + circlerad = 0.2 + circlesep = 0.5 + rowsep = 0.9 + arrowht = arrowht*0.8 + arrowwid = arrowwid*1.4 + linethick = 1 + +define plan { + m = 0 + for i=1 to 4 do { + for j=1 to ncircles[i] do { + exec sprintf("C[i,j]: circle thick 1.6 \"%g\" at Here",m+j) + if i>1 then { + if "$1"=="" then { + for k=1 to ncircles[i-1] do { arrow from C[i,j] to C[i-1,k] chop } } + } + if j!=ncircles[i] then { move right_ circlesep from C[i,j] } + } + m += ncircles[i] + case(i, + move to C[1,1]+(-circlesep/2,-rowsep), + move to C[2,1]+(0,-rowsep), + move to C[3,1]+(circlesep/2,-rowsep), ) + } + } + gridsiz = 0.78/4 +define grid { [ SW: 0,0 + for i=1 to $1 do { + move to (0,(0.5-i)*gridsiz) + exec sprintf("fv = $%g",2+i) + for j=1 to $2 do { fl = 1-(int(fv / 2^(j-1)) % 2) + box wid gridsiz ht gridsiz outlined "gray" shaded rgbstring(fl,fl,fl) } + } ]} + +define cxt { + m = 1 + for i=2 to 4 do { + for j=1 to ncircles[i] do { + exec sprintf("narrows = $%g",m) + for k=1 to narrows do { + exec sprintf("cnum = $%g",m+k) + exec sprintf("arrow from C[i,j] to C[i-1,cnum] $%g chop", $+) + } + m += narrows+1 + } } } + +B: box invis ht 8 wid 8 +[ + array(ncircles,3,4,4,3) + plan() + svg_font(Times,12bp__,textoffset) + for j=1 to 3 do { + sprintf("svg_it(x)`'svg_sub(%g,60%)",j) at C[1,j].n+(0,2bp__) above + "svg_circ" at last ""+(-1bp__,1bp__) + sprintf("svg_it(x)`'svg_sub(%g,60%)",j) at C[4,j].s+(0,-2bp__) below + } + + "V" at 0.5 between C[2,1].w and C[1,1].w + "W`'svg_sup(2)" at 0.5 between C[3,1].w and C[2,1].w + "W`'svg_sup(1)" at 0.5 between C[3,1].w and C[4,1].w + +GV: grid(3,4,0,15,6) with .w at C[2,4]+(circlerad*2,rowsep/2) + "=M`'svg_sup(V)" at GV.e ljust +G2: grid(4,4,13,0,0,13) with .w at (GV.w,C[3,4]+(circlerad*2,rowsep/2)) + "=M`'svg_sup(V`'svg_sup(2))" at G2.e ljust +G1: grid(4,3,1,5,1,1) with .w at (GV.w,C[4,3]+(circlerad*2,rowsep/2)) + "=M`'svg_sup(V`'svg_sup(1))" at G1.e ljust + command "</g>" + + move to (GV.x+3*circlesep,C[1,1].y) + plan(3,1,2,1,2,2,1,2,1,2,2,3,1,2) + for i=2 to 4 do { + cxt(2,1,3,0,0,2,1,3, 0,4,1,2,3,4,0,0, 0,4,1,2,3,4,0, \ + outlined rgbstring(0.5,0.5,0.5) shaded rgbstring(0.5,0.5,0.5) ) + cxt(0,1,1,1,1,0, 2,2,3,0,2,2,3,2,2,3, 0,0,3,1,3,4,) + } + svg_font(Times,12bp__,textoffset) + for j=1 to 3 do { sprintf("svg_it(x)`'svg_sub(%g,60%)",j) \ + at C[4,j].s+(0,-2bp__) below } + arrow dotted from C[1,2].n up circlesep/2 + "svg_it(p(x`'svg_sub(2)))" at Here+(0,2bp__) above + "svg_it(p(x`'svg_sub(3)|x`'svg_sub(2)))" at (C[1,3]+(circlesep/2,0),last "") + arrow dotted from C[1,3] to last "".s chop circlerad chop textoffset + "svg_it(p(x`'svg_sub(1)|x`'svg_sub(2),x`'svg_sub(3)))" \ + at (C[1,1]+(-circlesep/2,0),last "") + arrow dotted from C[1,1] to last "".s chop circlerad chop textoffset + command "</g>" + + ] at B + command "</g>" +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/Banking.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/Banking.m4 new file mode 100644 index 00000000000..630326f867c --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/Banking.m4 @@ -0,0 +1,59 @@ +.PS +#Banking.m4 + +gen_init + + scale = 2.54 # use cm + svg_font(Arial Black,11 bp__,2 bp__) + boxwid = 6.8 + boxht = 4.5 + linethick_(1.5) + + define(`heading', + `<tspan font-style=\"bold\" font-size=\"120%\" fill=\"white\">`$1'</tspan>') + define(`subheading', + `<tspan fill=\"white\" font-size=\"75%\" font-style=\"bold\">[`$1']</tspan>') + define(`wtext',`<tspan fill=\"white\">`$1'</tspan>') + + C: circle diam 2.6 colored "mediumblue" + Person: box rad boxht/4 colored "mediumblue" with .n at C.s+(0,C.rad/8) \ + "heading(Personal Banking)" \ + "" \ + "heading(Customer)" \ + "subheading(Person)" \ + "" \ + "wtext(A customer of the bank`,' with)" \ + "wtext(personal bank accounts.)" + + A1: arrow thick 1.5 dashed down 3.5 from Person.s + svg_font(Arial,11 bp__,2 bp__) + { box invis fill 1 ht 0.4 wid 1.0 "Uses" at A1 } + command "</g>" + Internet: box colored "steelblue" \ + "heading(Internet Banking System)" \ + "subheading(Software system)" \ + "" \ + "wtext(Allows customers to view)" \ + "wtext(information about their bank)" \ + "wtext(accounts`,' and make payments.)" + + svg_font(Arial,11 bp__,2 bp__) + A2: arrow thick 1.5 dashed right 5.4 from Internet.e \ + "Sends e-mail" above "using" below + command "</g>" + Email: box colored "slategrey" \ + "heading(E-mail System)" \ + "subheading(Software system)" \ + "" \ + "wtext(Internal Microsoft Exchange)" \ + "wtext(e-mail system.)" + + A3:arrow thick 1.5 dashed from Email.nw+(0.4,0) to Person.se+(0.3,Person.ht/5) + svg_font(Arial,11 bp__,2 bp__) + { box invis fill 1 ht 0.4 wid 3.3 "Sends e-mails to" at A3 } + command "</g>" + +# etc + + command "</g>" # font +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/BtreeSVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/BtreeSVG.m4 index 312249605ee..158b475b7b9 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/BtreeSVG.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/BtreeSVG.m4 @@ -2,7 +2,10 @@ # Btree.m4 # One way to draw a binary tree using pic macros gen_init(svg_font(sans-serif,11bp__)) -circlerad = 0.30 +sinclude(tst.dim) +s_init(Btree) +Btree: [ +circlerad = 0.45 define n { [C: circle fill_(0.9) $1 if "$2" != "" then { @@ -29,5 +32,76 @@ define Vega { n("Vega") } # Build the tree from the root S: Sirius + + command "</g>" # end font +] +Ttree: [ +# TtreeSVG.m4 +svg_font(sans-serif,10bp__) + +# `Node(no in row, head [location], +# displacement of top of body (.n) wrt head, +# body Node 1, body Node 2, ...) ' +define(`Node',` + Head`$1': `$2' + ifelse(`$3',,,` Body`$1': [ + Loopover_(`v',`v; define(`m4ct',m4Lx)',shift(shift(shift($@)))) + ] with .n at Head`$1' + `$3' + connect(`$1',m4ct)')') + +define(`connect',`Bot: move from Head$1.sw-(0,5bp__) to Head$1.se-(0,5bp__) +for_(1,`$2',1, + `Top: move from Body$1.Head`'m4x.nw+(0,2bp__) \ + to Body$1.Head`'m4x.ne+(0,2bp__) + Mov: move from Head$1 to Body$1.Head`'m4x + if Bot.len*Top.len*Mov.len > 0 then { + line from Intersect_(Mov,Top) to Intersect_(Mov,Bot)}')') + + vsep = 0.75 +define(`txw',`wid `$1'mm__')dnl scaled by 14/12 for 14 pt type + + Node(1,"svg_it(h(h(h(x`'svg_sub(1),x`'svg_sub(2))," \ + + "h(x`'svg_sub(3),x`'svg_sub(4))),h(h(x`'svg_sub(5),x`'svg_sub(6))," \ + + "h(x`'svg_sub(7),x`'svg_sub(8)))))" txw(70) , + (0,-vsep), + Node(1,"svg_it(h(h(x`'svg_sub(1),x`'svg_sub(2)),h(x`'svg_sub(3)," \ + + "x`'svg_sub(4))))" txw(32) , + (0,-vsep), + Node(1,"svg_it(h(x`'svg_sub(1),x`'svg_sub(2)))" txw(14) , + (0,-vsep), + Node(1,"svg_it(x`'svg_sub(1):=((A,pk`'svg_sub(A)),h`'svg_sub(1)))" \ + txw(29) ), + Node(2,"svg_it(x`'svg_sub(2):=((B,pk`'svg_sub(B)),h`'svg_sub(2)))" \ + txw(29) with .n at last "".ne+(0.2,-vsep*2/3))), + Node(2,"svg_it(h(x`'svg_sub(3),x`'svg_sub(4)))" txw(14) \ + with .nw at Head1.ne+(Body1.wid/2+0.1,0), + (0,-vsep), + Node(1,"svg_it(x`'svg_sub(3):=" \ + + "((A,pk`'svg_prime`'svg_sub(A,,,-0.5ex)),h`'svg_sub(3)))" \ + txw(29)), + Node(2,"svg_it(x`'svg_sub(4):=((D,pk`'svg_sub(D)),h`'svg_sub(4)))" \ + txw(29) with .n at last "".ne+(0.2,-vsep*2/3)))), + Node(2,"svg_it(h(h(x`'svg_sub(5),x`'svg_sub(6)),h(x`'svg_sub(7)," \ + + "x`'svg_sub(8))))" txw(29) with .nw at Head1.ne+(Body1.wid/2,0), + (0,-vsep), + Node(1, "svg_it(h(x`'svg_sub(5),x`'svg_sub(6)))" txw(14) , + (0,-vsep*5/4), + Node(1,"svg_it(x`'svg_sub(5):=((E,pk`'svg_sub(E)),h`'svg_sub(5)))" \ + txw(29) ), + Node(2,"svg_it(x`'svg_sub(6):=((H,pk`'svg_sub(H)),h`'svg_sub(6)))" \ + txw(29) with .n at last "".ne+(0.2,-vsep*2/3))), + Node(2,"svg_it(h(x`'svg_sub(7),x`'svg_sub(8)))" txw(14) \ + with .nw at Head1.ne+(Body1.wid/2+0.1,0), + (0,-vsep*5/4), + Node(1,"svg_it(x`'svg_sub(7):=" \ + + "((D,pk`'svg_prime`'svg_sub(D,,,-0.5ex)),h`'svg_sub(7)))" \ + txw(29) ), + Node(2,"svg_it(x`'svg_sub(8):=((K,pk`'svg_sub(K)),h`'svg_sub(8)))" \ + txw(29) with .n at last "".ne+(0.2,-vsep*2/3); move right 0.2)), + Node(3,"svg_it(h(x`'svg_sub(9)))" txw(8) \ + at 0.5 between Head1 and Head2))) + +] with .w at last [].e+(-0.75,0) + command "</g>" # end font .PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/CctTableSVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/CctTableSVG.m4 index 3c79a32d6bc..e46bb97a769 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/CctTableSVG.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/CctTableSVG.m4 @@ -5,74 +5,91 @@ textwid = 1.5 movewid = 2 pt__ hm = 2.1 vm = 0.28 + +hm = 2.05 +vm = 0.28 { {resistor ; move ; svgLink(NportSVG.svg,"`resistor'" ljust)} move right_ hm {resistor(,,Q) ; move ; "`resistor(,,Q) '" ljust} move right_ hm - {resistor(,,E) ; move ; "`resistor(,,E) = ebox'" ljust} + {resistor(,,E) ; move + "`resistor(,,E) = ebox'" ljust} } move down vm; right_ -{ {resistor(,,ES) ; move ;"`resistor(,,ES) '" ljust} +{ {resistor(,,ES) ; move ; "`resistor(,,ES) '" ljust} move right_ hm - {resistor(,4,QR) ; move ;"`resistor(,4,QR) '" ljust} + {resistor(,,H) ; move ; "`resistor(,,H) '" ljust} move right_ hm - {resistor(,,H) ; move ;"`resistor(,,H) '" ljust} + {ebox(,,,0.5) ; move ; "`ebox(,,,0.5) '" ljust} } move down vm; right_ -{ {resistor(,,V) ; move ;"`resistor(,,V)'" ljust} +{ {resistor(,,V) ; move ; "`resistor(,,V) '" ljust} move right_ hm - {ebox(,,,0.5) ; move ;"`ebox(,,,0.5)'" ljust} + {move down_ 0.05; right_ + thermocouple ; move; "`thermocouple '" ljust; move up_ 0.05} move right_ hm - {ebox(,0.5,0.3) ; move ;"`ebox(,0.5,0.3)'" ljust} + {ebox(,0.5,0.3) ; move ; "`ebox(,0.5,0.3) '" ljust} } move down vm; right_ -{ {inductor ; move ;"`inductor'" ljust} +{ {inductor ; move ; "`inductor '" ljust} move right_ hm - {inductor(,W); move ;"`inductor(,W)'" ljust} + {inductor(,W); move ; "`inductor(,W) '" ljust} move right_ hm - {inductor(,L); move ;"`inductor(,L)'" ljust} + {inductor(,L); move ; "`inductor(,L) '" ljust} } move down vm; right_ -{ {inductor(,,,M) ; move ;"`inductor(,,,M)'" ljust} +{ {inductor(,,,M) ; move ; "`inductor(,,,M) '" ljust} move right_ hm - {inductor(,W,6,P); move ;"`inductor(,W,6,P)'" ljust} + {inductor(,W,6,P); move ; "`inductor(,W,6,P) '" ljust} move right_ hm - {ttmotor(,G) ; move ;"`ttmotor(,G)'" ljust} + {move right_ 0.2; ttmotor(,G) ; move ; "`ttmotor(,G) '" ljust} } move down vm; right_ -{ {capacitor ; move ;"`capacitor'" ljust} +{ {capacitor ; move ; "`capacitor '" ljust} move right_ hm - {capacitor(,C); move ;"`capacitor(,C)'" ljust} + {capacitor(,C); move ; "`capacitor(,C) '" ljust} move right_ hm - {capacitor(,C+); move ;"`capacitor(,C+)'" ljust} + {capacitor(,C+); move ; "`capacitor(,C+) '" ljust} } move down vm; right_ -{ {capacitor(,P); move ;"`capacitor(,P)'" ljust} +{ {capacitor(,P); move ; "`capacitor(,P) '" ljust} move right_ hm - {capacitor(,E); move ;"`capacitor(,E)'" ljust} + {capacitor(,E); move ; "`capacitor(,E) '" ljust} move right_ hm - {capacitor(,K); move ;"`capacitor(,K)'" ljust} + {capacitor(,K); move ; "`capacitor(,K) '" ljust} } move down 0.25; right_ -{ {capacitor(,M); move ;"`capacitor(,M)'" ljust} +{ {capacitor(,M); move ; "`capacitor(,M) '" ljust} move right_ hm - {capacitor(,N); move ;"`capacitor(,N)'" ljust} + {capacitor(,N); move ; "`capacitor(,N) '" ljust} move right_ hm - {xtal ; move ;"`xtal'" ljust} + {xtal ; move ; "`xtal '" ljust} } move down 0.25; right_ -{ {memristor ; move;"`memristor'" ljust} +{ {memristor ; move; "`memristor '" ljust} move right_ hm - {heater; move;"`heater'" ljust} + {heater; move; "`heater '" ljust} move right_ hm - {tline ; move;"`tline'" ljust} + {tline ; move; "`tline '" ljust} } move down 0.25; right_ -{ {gap ; move ;"`gap'" ljust} +{ {move up_ 0.05; right_; gap ; move ; "`gap '" ljust} + move right_ hm + {gap(,,A) ; move ; "`gap(,,A) '" ljust} move right_ hm - {gap(,,A) ; move ;"`gap(,,A)'" ljust} + {arrowline ; move; "`arrowline '" ljust} +} + move down 0.25; right_ +{ {lamp ; move; "`lamp '" ljust} + move right_ hm + {reed ; move ; "`reed '" ljust} + move right_ hm + {reed(,,,fill_(0.9),CR) ; move ; "`reed(,,,fill_(0.9),CR) '" ljust} +} + move down 0.25; right_ +{ {pvcell ; move; "`pvcell '" ljust} move right_ hm - {arrowline ; move;"`arrowline'" ljust} + {arrester ; move ; "`arrester '" ljust} } command "</g>" # end font diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/ConnectorsSVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/ConnectorsSVG.m4 index 59860a2d1ea..67f89e5348c 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/ConnectorsSVG.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/ConnectorsSVG.m4 @@ -16,7 +16,7 @@ svg_rot_init(ConnectorsSVG) "Raspberry Pi 4 GPIO" at last [].GPIO.s below HD: HDMI_micro with .nw at last [].ne+(0.25,0.5) - "Micro" rjust at HD.Base.sw+(0,10bp__) "HDMI" rjust + "Micro" rjust at HD.Base.sw "HDMI" rjust S: USB_C_Socket with .sw at (HD.e.x+0.25,RPI.s.y) "USB-C Socket" at S.Base.s below diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/FlowSVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/FlowSVG.m4 index d0ba1384930..f0f5b6df71b 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/FlowSVG.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/FlowSVG.m4 @@ -1,142 +1,15 @@ -divert(-1) - FlowchartDefs.m4 - `Some experimental flow-chart macros. - In the following, every subchart is in - [] brackets, with .N, .S, .E and .W - internally defined. Follow this convention - if you create compound constructs. - - Generally, the first argument is one - or more strings; the second adjusts - the size, and the third can be used - to add color, dashed lines, labels, - or other embellishements. Default is - grey fill if arg3 is blank. - - These macros have been renamed from earlier - versions because of slight differences of - arguments.' - -define(`FlowchartDefs_') - - `Default sizes:' -define(`fboxwid',linewid*2) -define(`fboxht',linewid*0.75) -define(`farrowht',linewid*0.5) - - `Fbox( "text", wid expr ht expr, - attributes ) The basic task box: arg1 may - be 1 or more label strings. Attributes - include box line and fill specs. - To adjust the box size to the size of - the typeset text, see the \boxdims macro - in the manual. Example: - Fbox("svg_it(x svg_symbol(&`#'60;) 1)",, - shaded rgbstring(0.46,0.53,0.63))' -define(`Fbox',`[ boxwid = fboxwid; boxht = fboxht - Box: box `$2' ifelse(`$3',,`fill_(fillval)',`$3') `$1' - N: Box.n; S:Box.s; E:Box.e; W: Box.w - `$4']') - - `If-then - Ftest( "text", wid expr ht expr, attributes )' -define(`Ftest',`[boxwid = fboxwid*0.8; boxht = fboxht*1.4 - Box: box ifelse(`$2',,,`$2') invis - N: Box.n; S: Box.s; E: Box.e; W: Box.w - line from 0.5 between last box.n and last box.e \ - to last box.e then to last box.s then to last box.w then to last box.n \ - then to 0.5 between last box.n and last box.e \ - ifelse(`$3',,`fill_(fillval)',`$3') - ifelse(`$1',,,`$1' at Box) - `$4']') - - `case statement - Fcase(wid expr ht expr, - "Test string 1",task, ..., - "Test string n",task)' - `arg1 adjusts the size of the tests - A task is a flow subchart with internal names .E and .S defined - The test blocks are labeled Test1, Test2, ... and the tasks are - labeled Task1, Task2, ... ' -define(`Fcase',`[ down; S: Here; sx = S.x - Fcaseloop_(1,$@) - ifelse(`$2',,`E:S; W:S; N:S', - `E:(sx+linewid/2,Task1.E.y); W:Test1.W; N:Test1.N') - Fcasearrow_(1,$@) - arrow from E to (E,S) then to S ]') - - define(`Fcaseloop_',`ifelse(`$3',,, - `Test`$1': Ftest(`$3',`$2') with .N at S - Task`$1': `$4' with .nw at Test`$1'.E+(linewid/2,min(Test`$1'.ht,fboxht)/2) - arrow right linewid/4 from Test`$1'.E \ - then down Test`$1'.E.y-Task`$1'.W.y then to Task`$1'.W - S: (Test`$1'.S.x,min(Test`$1'.S.y,Task`$1'.S.y)-linewid/3) - ifelse(`$5',,`line',`arrow') from Test`$1'.S to S - sx = max(sx,Task`$1'.E.x) - Fcaseloop_(incr($1),`$2',shift(shift(shift(shift($@)))))')') - define(`Fcasearrow_',`ifelse(`$3',,, - `arrow from Task`$1'.E to (E,Task`$1'.E) - Fcasearrow_(incr($1),`$2',shift(shift(shift(shift($@)))))')') - - `while statement with explicit test - Fwhiledo("test text", wid x ht y, attributes, task spec ) - The task structure is given label Task ' -define(`Fwhiledo',`[ down - Test: Ftest(`$1',`$2',`$3') - arrow right linewid/2 from Test.E - Task: `$4' with .W at Here - E: Task.E; W: Test.w; S: Test.S - arrow up max(linewid/4,Test.n.y-Task.n.y+arrowht*1.5) \ - from Task.N then left Task.x-Test.x - N: Here - arrow to Test.n - `$5']') - - `repeat statement with explicit test - Frepeatuntil("test",wid x ht y,attributes, task spec ) - The task structure is given label Task ' -define(`Frepeatuntil',`[ N: Here - Task: ifelse(`$4',,Here,`$4' with .N at N) - W: Task.W - arrow down linewid/3 - Test: Ftest(`$1',`$2',`$3') - E: Task.E+(linewid/2+max(0,Test.e.x-Task.e.x),0) - arrow from Test.e to (E,Test) then to E then to Task.E - S: Test.S - `$5']') - - `if-then-else - Fifthenelse( "test", wid x ht y, attributes, - left tasks, right tasks) - The left task structure is given label Ltask and the right - task structure is given label Rtask ' -define(`Fifthenelse',`[ Test: Ftest(`$1',`$2',`$3') - N: Test.N - Ltask: ifelse(`$4',,`Test.S; W:Test.W; LS:Ltask', - `$4 with .ne at ((Test.W.x+Test.x)/2,Test.S.y) - W: Ltask.W; LS:Ltask.S - arrow from Test.W to (Ltask.N,Test.W) then to Ltask.N') - Rtask: ifelse(`$5',,`Test.S; E:Test.E; RS:Rtask', - `$5 with .nw at ((Test.E.x+Test.x)/2,Test.S.y) - E: Rtask.E; RS: Rtask.S - arrow from Test.E to (Rtask.N,Test.E) then to Rtask.N') - S: (Test.x,min(LS.y,RS.y)-linewid/3) - arrow from LS to (LS,S) - arrow from RS to (RS,S) - line to (LS,Here) - `$6']') - -divert(0)dnl .PS -# Here is a test file exercising the above definitions +# FlowSVG.m4 gen_init(svg_font(sans-serif,11bp__,2.5bp__)) +ifdef(`FlowchartDefs_',,`include(../FlowchartDefs.m4)') -# Could use xcolor with option dvipsnames but define color here for portability define(`Thistle',`rgbstring(0.85,0.75,0.85)')dnl define(`RubineRed',`rgbstring(0.81,0,0.35)')dnl define(`YellowGreen',`rgbstring(0.68,1,0.18)')dnl define(`SeaGreen',`rgbstring(0.13,0.70,0.67)')dnl define(`Goldenrod',`rgbstring(0.85,0.65,0.13)')dnl +define(`Beaublue',`rgbstring(0.74,0.83,0.9)')dnl +define(`Celadon',`rgbstring(0.67,0.88,0.69)')dnl # Accented characters define(`svg_ccedilla',`svg_symbol(&`#'231;)')dnl @@ -145,9 +18,31 @@ define(`svg_atilde',`svg_symbol(&`#'227;)')dnl linethick_(1.0) arrowwid = 0.05 arrowht = 0.1 - fillval = 0.8 - down - + fillval = 0.9 + maxpsht = 20 + +define(`shad',`shaded rgbstring(0.9,0.8,0.7)') +define(`Below',`with .nw at last [].sw+(0,-0.25)') +TL: Here +Simple: [ + Fbox("svg_tt(`Fbox')",,shad) + Ftest("svg_tt(``Ftest'')",,shad) Below + Fdata("svg_tt(``Fdata'')",,,shad) Below + Fprep("svg_tt(``Fprep'')",) Below + Fkeying("svg_tt(``Fkeying'')") Below + Fkeyboard("svg_tt(``Fkeyboard'')") Below + Fdocument("svg_tt(``Fdocument'')",,shaded rgbstring(0.9,0.8,0.7)) Below + Fdelay("svg_tt(``Fdelay'')",,shaded Beaublue) Below + Fdisplay("svg_tt(``Fdisplay'')",,shaded Celadon) Below + Fstored("svg_tt(``Fstored'')",,shaded Thistle) Below + Fconnect(,,shaded Thistle) Below + Fconnect("45",wid boxwid ht boxht:45,shaded Thistle) \ + with .w at last [].e+(boxht/8,0) + "svg_tt(`Fconnect')" at last [].nw + (0,boxht/6) + ] with .nw at TL+(0.1,0); move from Simple.nw to TL + +#showbox_ +Complex: [ Case: Fcase(, "Test 1",[Fbox("Task 1",, shaded Thistle); W:last [].W; N:last [].N arrow down linewid/3 from last [].S @@ -158,46 +53,42 @@ Case: Fcase(, "Test 3",Fbox("Task 3",, shaded RubineRed)dnl ) - "svg_it(.N)" at Case.N rjust above - "svg_it(.S)" at Case.S rjust below - "svg_it(.E)" at Case.E ljust - "svg_it(.W)" at Case.W rjust - "svg_it(Case statement)" below at Case.s+(0,-0.2) - move to Case.nw+(-12bp__,10bp__) + "svg_it(.N)" at Case.N rjust above + "svg_it(.S)" at Case.S rjust below + "svg_it(.E)" at Case.E ljust + "svg_it(.W)" at Case.W rjust + "svg_tt(`Fcase')" below at Case.s #+(0,-0.1) -Whiledo: Fwhiledo("svg_it(i svg_lt n)",,,Fbox("Task"), - "T" above ljust at Test.E) \ +Whiledo: Fwhiledo("svg_it(i svg_lt n)",,,Fbox("Task"),"T" above ljust at Test.E) \ with .nw at Case.ne+(0.25,0) "svg_it(.N)" at Whiledo.N rjust "svg_it(.S)" at Whiledo.S rjust below "svg_it(.E)" at Whiledo.E ljust "svg_it(.W)" at Whiledo.W rjust - "svg_it(While-do)" below at Whiledo.s+(0,-0.2) + "svg_tt(`Fwhiledo')" below at Whiledo.s -Repeatuntil: Frepeatuntil("svg_it(n svg_geq 5)",,,Fbox("Task"), - "T" at Test.E above ljust) with .nw at Whiledo.sw + (0.25,-1) +Repeatuntil: Frepeatuntil("svg_it(n svg_gt 5)",,,Fbox("Task"), + "T" at Test.E above ljust) with .nw at Whiledo.sw + (0.25,-0.5) "svg_it(.N)" at Repeatuntil.N rjust above "svg_it(.S)" at Repeatuntil.S rjust below "svg_it(.E)" at Repeatuntil.E ljust "svg_it(.W)" at Repeatuntil.W rjust - "svg_it(Repeat-until)" below at Repeatuntil.s+(0,-0.2) + "svg_tt(`Frepeatuntil')" below at Repeatuntil.se +(-0.0,0.2) -Ifthenelse: Fifthenelse("svg_it(A`'svg_lt`'B)",,, +Ifthenelse: Fifthenelse("svg_it(A svg_lt B)",,, Fbox("False"), Fbox("True",ht fboxht*1.2 wid fboxwid)dnl - ) with .nw at Repeatuntil.sw +(0.5,-0.5) + ) with .nw at Repeatuntil.sw +(-0.5,-0.3) - "svg_it(.N)" at Ifthenelse.N rjust above; + "svg_it(.N)" at Ifthenelse.N rjust above "svg_it(.S)" at Ifthenelse.S below rjust - "svg_it(.E)" at Ifthenelse.E ljust + "svg_it(.E)" wid 12bp__ at Ifthenelse.E ljust "svg_it(.W)" at Ifthenelse.W rjust - "svg_it(If-then-else)" at Ifthenelse.s+(0,-0.3) \ - "svg_it((the True and False tasks are optional))" + "svg_tt(`Fifthenelse')" below at Ifthenelse.s+(0,-0.15) -# Compound statement: -[ right +Compound: [ right ellipse shaded YellowGreen "Start" arrow right linewid/2 @@ -212,18 +103,18 @@ Ifthenelse: Fifthenelse("svg_it(A`'svg_lt`'B)",,, "T" at Test.E above ljust), "T" at Test.E above ljust) with .N at Here - A: arrow down 0.25 from last [].S ] with .nw at Case.sw + (-12bp__,-0.7) + A: arrow down 0.25 from last [].S ] with .nw at Case.sw + (-12bp__,-0.3) + + "svg_it(Compound statements)" at last [].A.end+(0.1,0) ljust above - "svg_it(Compound statement)" below at last [].A.end + ] with .nw at Simple.ne+(0.1,0) Example: [ fillvalue = 0.8; awid = linewid/2; right_ Start: ellipse wid boxwid/2 ht boxwid/3 shaded "green" arrow right_ awid B1: Fbox("Planejamento") - B2: Fbox("Execu`'svg_ccedilla`'svg_atilde`'o") \ - with .W at B1.E+(awid*3,0) - B3: Fbox("Sele`'svg_ccedilla`'svg_atilde`'o") \ - with .W at B2.E+(awid*3,0) + B2: Fbox("Execu`'svg_ccedilla`'svg_atilde`'o") with .W at B1.E+(awid*3,0) + B3: Fbox("Sele`'svg_ccedilla`'svg_atilde`'o") with .W at B2.E+(awid*3,0) LT: Ftest("Avalia`'svg_ccedilla`'svg_atilde`'o do" "Planejamento", wid fboxwid*1.5 ht fboxht*2.0, shaded YellowGreen, @@ -241,14 +132,13 @@ Example: [ fillvalue = 0.8; awid = linewid/2; right_ arrow from B2.E to (RT.N,B2.E) then to RT.N arrow from RT.W to (B2.S,RT.W) then to B2.S arrow from RT.E to (B3.S,RT.E) then to B3.S - B4: Fbox("Extra`'svg_ccedilla`'svg_atilde`'o") \ - with .S at B3.N+(0,awid) + B4: Fbox("Extra`'svg_ccedilla`'svg_atilde`'o") with .S at B3.N+(0,awid) arrow from B3.N to B4.S - arrow right_ awid from B4.E + arrow up_ awid from B4.N B5: Fbox("Conclus`'svg_atilde`'o") - ellipse wid boxwid/2 ht boxwid/3 shaded "red" at (B5.S,Start) - arrow down_ awid from B5.S to last ellipse.n -] with .nw at last [].sw+(0,-fboxht) + arrow up_ awid from B5.N + ellipse wid boxwid/2 ht boxwid/3 shaded "red" +] with .nw at last [].Compound.sw+(0,2.5*fboxht) command "</g>" # end font .PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/FourbarSVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/FourbarSVG.m4 new file mode 100644 index 00000000000..208e8178222 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/FourbarSVG.m4 @@ -0,0 +1,59 @@ +.PS +# FourbarSVG.m4 +# https://tex.stackexchange.com/questions/563831/how-to-draw-four-bar-linkage-with-center-of-mass +gen_init +scale = 25.4 + + a = 18 + b = 73 + c = 47 + d = 72 + A0: Here + B0: A0+(d,0) + circlerad = 1 + +define(`pivot',`[ + C: circle + line down_ 4 from C+(2,0) + arc from last line.start to C+(-2,0) with .c at C + line down_ 4 + B: line thick 1.6 right 7 with .c at (C,Here) + thinlines_ + sep = 0.9 + nhash = B.len/sep +#for i=0 to nhash do { line down sep left sep from B.start+(i/nhash*B.len,0) } + for i=0 to nhash do { line down sep left sep from B.end-(i/nhash*B.len,0) } + thicklines_ + ]') + + pivot with .C at A0; "svg_it(A`'svg_sub(0))" at A0-(5,0) + circle dashed rad a at A0 + pivot with .C at B0; "svg_it(B`'svg_sub(0))" at B0-(5,0) + "svg_it(d = A`'svg_sub(0)B`'svg_sub(0))" at 0.5<A0,B0> + + B1: Cintersect(A0,a+b,B0,c) + B2: Cintersect(A0,b-a,B0,c) + arc dashed from B1 to B2 with .c at B0 + + A0B1: line thick 1.6 from A0 to B1 chop 2 chop + line thick 1.6 from B0 to B1 chop 2 chop "svg_it(c)" ljust + circle fill_(1) at B1; "svg_it(B`'svg_sub(1))" wid 3 at B1+(5,0) + A1: circle fill_(1) at LCintersect(A0B1,A0,a,R) + "svg_it(A`'svg_sub(1))" at A1+(5,0) + + A2: b/(b-a) between B2 and A0; "svg_it(a)" at 0.4<A2,A0> above rjust + "svg_it(b)" at 0.4<A1,B1> above rjust + A2B2: line thick 1.6 from A2 to B2 + line thick 1.6 from B0 to B2 chop 2 chop 0 + circle fill_(1) at B2; "svg_it(B`'svg_sub(2))" at B2+(5,0) + circle fill_(1) at A2; "svg_it(A`'svg_sub(2))" at A2+(5,0) + + thinlines_ + line from B0+(3,0) right 4 + ArcAngle(Here,B0,B1,5) ->; "svg_psi`'svg_sub(0)" at last arc.ne above ljust + ArcAngle(B1,B0,B2,8) ->; "svg_psi" at last arc.n+(-3,0) above + ArcAngle(A1,A0,B2,b*0.45) ->; "svg_theta" at last arc.start+(0,4) + line from A0+(3,0) right 8 + ArcAngle(Here,A0,B1,9) -> ; "svg_theta`'svg_sub(0)" at last arc.start+(2,2) + +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/GeometrySVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/GeometrySVG.m4 new file mode 100644 index 00000000000..ae0a661012d --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/GeometrySVG.m4 @@ -0,0 +1,46 @@ +.PS +# Geometry.m4 +gen_init + scale = 5/4 + + A: Here; "A" at A above + B: A+(-1,-3.5); "B" at B below rjust + C: B+(4.6,0); "C" at C below ljust + AB: line from A to B + BC: line from B to C + CA: line from C to A + + PerpTo(A,BC,L); "L" at L below + AL: line from A to L; RightAngle(A,L,C) + + angleLAC = atan2(C.x-L.x,A.y-L.y) + S: move from A to (sin(angleLAC/2),-cos(angleLAC/2)) + AW: line from A to Intersect_(S,BC) + W: Here; "W" at W below rjust + + PerpTo(C,AB,N); "N" at N above rjust + CN: line from C to N; RightAngle(C,N,B) + + PerpTo(B,CA,M); "M" at M above + CM: line from B to M; RightAngle(B,M,C) + + H: Intersect_(CN,AL); "H" at H +(4bp__,10bp__) + + thinlines_ + Equidist3(B,L,N,CC1,c1rad); C1: circle rad c1rad at CC1 + Equidist3(B,W,N,CC2,c2rad); C2: circle rad c2rad at CC2 + Equidist3(B,C,N,CC3,c3rad); C3: circle rad c3rad at CC3 + Equidist3(W,C,M,CC4,c4rad); C4: circle rad c4rad at CC4 + thicklines_ + + Z: LCintersect(AW,CC2,C2.rad); "Z" at Z+(-5bp__,-5bp__) + HZ: move from H to Z + Y: LCintersect(HZ,CC4,C4.rad,R); "Y" at Y above + X: LCintersect(HZ,CC2,C2.rad); "X" at X above rjust + + Loopover_(`P',`dot(at P)',X,Y,Z) + + line dashed from X to Y chop -linewid/2 + RightAngle(A,Z,Y) + +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/JackSVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/JackSVG.m4 index ea14a04e597..6af8b6b3017 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/JackSVG.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/JackSVG.m4 @@ -1,6 +1,6 @@ .PS # `Jack.m4' -cct_init(svg_font(sans-serif,11bp__)) +cct_init(svg_font(sans-serif,10bp__)) P: [ P1: plug diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/LyapSVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/LyapSVG.m4 new file mode 100644 index 00000000000..6ed269a428a --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/LyapSVG.m4 @@ -0,0 +1,159 @@ +.PS +# Lyap.m4 +threeD_init +scale = 1/1.2 + +viewaz = 30 +viewel = 18 +setview(viewaz,viewel) + +Origin: project(0,0,0) +# Components of view vector W +w1 = view3D1 +w2 = view3D2 +w3 = view3D3 +# Shape factor of the ellipse on the xy plane +q = Cos(40) + +# cost function +h = 0.5 +c = 1 +# The projected ellipse is (x/q)^2 + y^2 = c. +# The cost is v = c+h +define(`vs',``$2'*q*cos(`$1'),`$2'*sin(`$1')') +define(`vp',`vs(`$1',`$2'),0') +define(`vx',`sum3D(vp(`$1',`$2'),0,0,h+(`$2')^2)') + +# The gradient of v is (2x/q, 2y, -1) and the line +# separating front and back is W^T * grad(v) = 0 +# This line intersects the projected ellipse at +# x1,y1 and x2,y2 + ap = w2^2*q^2/w1^2+1 + bp = -w2*w3*q^2/w1^2 + cp = w3^2*q^2/4/w1^2-c + m = sqrt(bp^2-4*ap*cp) + y1 = (-bp+m)/ap/2 ; x1 = (w3-2*y1*w2)*q/2/w1 + y2 = (-bp-m)/ap/2 ; x2 = (w3-2*y2*w2)*q/2/w1 + t1 = atan2(y1,x1) + t2 = atan2(y2,x2) + theta1 = min(t1,t2) + theta2 = max(t1,t2) + +# tangent curve + nT = 11 + for i = 0 to nT do { + y = y1 + (y2-y1)/nT*i + theta = atan2(y,(w3-2*y*w2)*q/2/w1) + r = y/sin(theta) + T[i]: project(vx(theta,r)) + } + +# front and back parts of the top curve + n = 12 + for i = 0 to n do { + theta = theta1 + (theta2-theta1)/n*i + F[i]: project(vx(theta,c)) + Fp[i]: project(vp(theta,c)) + } + for i = 0 to n do { + theta = theta2 + (theta1+twopi_-theta2)/n*i + B[i]: project(vx(theta,c)) + Bp[i]: project(vp(theta,c)) + } + +# trajectory +rotations = 1.55 +nx = 7 +thetas = 75*dtor_ +thetaf = thetas - rotations*twopi_ +rx = c*0.9 +beta = exp(log(.5)/20) + +define(`defX',` rx = `$5' ; np = np-1 + ts = `$1' ; tf = `$2' + for i = 0 to `$3' do { + tha = ts + (tf-ts)*i/(`$3') + for thx = tha to -twopi_ by twopi_ do {} + `$4'[i]: project(vx(thx,rx)) + Xp[np]: project(vp(thx,rx)) + np = np+1 + rx = beta*rx + }') + +np = 1 +defX(thetas,theta1,nx,X1,rx) +defX(theta1,theta2-twopi_,nx,X2,rx/beta) +defX(theta2-twopi_,theta1-twopi_,nx,X3,rx/beta) +defX(theta1-twopi_,thetaf,5,X4,rx/beta) + +# First draw the inside back +# B is the back curve +# T is the outline +ifpstricks(` +\psset{gradbegin=lightgray,gradend=darkgray,gradlines=1000} +\pscustom[fillstyle=gradient,gradmidpoint=0.7]{ + fitcurve(B,n) + for i = 0 to nT do {TT[i]: T[nT-i] } + fitcurve(TT,nT) +\relax} ', +` fitcurve(B,n) + for i = 0 to nT do {TT[i]: T[nT-i] } + fitcurve(TT,nT) ') + +# Centre axis +thinlines_ +line from Origin to project(0,0,h) +# F[0] is the leftmost point of the front curve +line from F[0] to Fp[0] +# F[n] is the rightmost point of the front curve +line from F[n] to Fp[n] +thicklines_ + +# Now draw the outside front +ifpstricks(` +\newgray{gray1}{0.9}% +\newgray{gray2}{0.4}% +\psset{gradbegin=gray1,gradend=gray2,gradlines=1000} +\pscustom[linewidth=0pt,fillstyle=gradient,gradmidpoint=0.99]{ + fitcurve(F,n) + fitcurve(T,nT) +\relax} ', +` shade(1,fitcurve(F,n) + fitcurve(T,nT)) ') +# T is the limit curve of visibility + fitcurve(T,nT) +# F is the top front + fitcurve(F,n) +# Front and back projections of the top on xy + fitcurve(Fp,n) + fitcurve(Bp,n) + +# The trajectory in pieces, to allow dashed parts + fitcurve(X1,nx) + fitcurve(X2,nx,dotted 0.025) + fitcurve(X3,nx) + fitcurve(X4,3,dotted 0.015) + arca(from X4[4] to X4[2],ccw,0.3,<-) + +# Projected trajectory + np = np-2 + fitcurve(Xp,np-1) + arca(from Xp[np] to Xp[np-2],ccw,0.18,<-) + "svg_it(X(t))" at Xp[np]-(2bp__,0) ljust + +# Axes and vertical lines +thinlines_ + line from X1[0] to Xp[0] +arrow from Origin to project(1.5,0,0) +"svg_it(x)`'svg_sub(1)" rjust below +arrow from Origin to project(0,1.5,0) +"svg_it(x)`'svg_sub(2)" wid 10bp__ ljust +line dashed from project(0,0,h) to F[n/2] chop 0 chop arrowht/4 +arrow from F[n/2] to project(0,0,2) +"svg_it(v(X))" ljust + +"svg_it(0)" at Origin+(0,1 pt__) below +"svg_Omega" at project(0,0.9*c,0) above +"svg_it(v(X) = c)" at (project(vp(100*dtor_,c)))+(2bp__,0) above ljust + +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/MCSVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/MCSVG.m4 index cececf42b5c..8fcff10ea18 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/MCSVG.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/MCSVG.m4 @@ -1,5 +1,5 @@ .PS -#MC.m4 +#MCSVG.m4 cct_init(svg_font(Times,11bp__)) textoffset = 3bp__ @@ -44,50 +44,52 @@ MC:[ ] Three: [ + gapht = 4*dimen_ dv = dimen_*0.6 - dh = dimen_ + dh = dimen_*5/6 define(`swfet',`mosfet(`$1',,dMEDSuBQPy)') define(`swpair',`[ up_ BS: swfet(up_ dimen_); { "`$1'" at BS.D-(0,2bp__) rjust } - L: line up_ 3*dimen_ from BS.D + L: line up_ gapht-2*dimen_ from BS.D TS: swfet(up_ dimen_) with .S at Here; { "`$2'" at TS.S+(0,2bp__) rjust } T: TS.D B: BS.S C: L.c ]') - V1: gap(up_ 5*dimen_,1,A) + V1: gap(up_ gapht,1,A) { "svg_it(V)svg_sub(1)" wid 12bp__ at last arrow.c rjust } - line right_ dh/2 + line right_ dimen_/2 { C1: capacitor(down_ to (Here,V1.start)); llabel(svg_it(C)svg_sub(1)) } for_(1,3,1,` - line right_ dh ifelse(m4x,1,,*5/4) + line right_ dimen_ ifelse(m4x,1,,*5/4) {SP1`'m4x: swpair(svg_it(S`'svg_sub(1`'eval(m4x+3))), svg_it(S`'svg_sub(1`'m4x))) with .T at Here - dot(at last [].C + (0,(2-m4x)*dh)) - line right_ (3-m4x)*dh*5/4 + dot(at last [].C + (0,(2-m4x)*dh)) + line right_ (3-m4x)*dimen_*5/4+dimen_/4 inductor(right_ dimen_,L) {sprintf("svg_it(L`'svg_sub(1&`#'%g;,70%))",64+m4x) at last [].n+(0,8bp__)} - line down_ (2-m4x)*dimen_*2/3 + line down_ (2-m4x)*dh*2/3 pushdef(`dimen_',dimen_*1.2) inductor(right_ dimen_*3/4) popdef(`dimen_') - line down_ (2-m4x)*dimen_/3 + line down_ (2-m4x)*dh/3 M: move right_ dimen_/8 - line up_ (2-m4x)*dimen_/3 + line up_ (2-m4x)*dh/3 pushdef(`dimen_',dimen_*1.2) inductor(right_ dimen_*3/4) popdef(`dimen_') - line up_ (2-m4x)*dimen_*2/3 + line up_ (2-m4x)*dh*2/3 inductor(right_ dimen_,L) {sprintf("svg_it(L`'svg_sub(2&`#'%g;,70%))",64+m4x) at last [].n+(0,8bp__)} - line right_ dimen_/8+(m4x-1)*dh*5/4 + line right_ dimen_/8+(m4x-1)*dh*5/4 + dimen_/4 dot SP2`'m4x: swpair(svg_it(S`'svg_sub(2`'eval(m4x+3))), - svg_it(S`'svg_sub(2`'m4x))) with .C at Here+(0,(m4x-2)*dh) } + svg_it(S`'svg_sub(2`'m4x))) \ + with .C at Here+(0,(m4x-2)*dh) } ') "svg_it(T)svg_sub(r)" at M.c+(0,dimen_*2/3) line from V1.start to SP13.B line from SP21.B to SP23.B+(dh*3/4,0) { C2: capacitor(up_ to (Here,V1.end)); llabel(,,svg_it(C`'svg_sub(2))) } - line right_ dh/2 - gap(up_ 5*dimen_,1,A) + line right_ dimen_/2 + gap(up_ gapht,1,A) { "svg_it(V`'svg_sub(2))" wid 12bp__ at last arrow.c ljust } line to SP21.T chop dotrad_ chop 0 diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/Makefile b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/Makefile index 4471d513f47..4436cd1aa53 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/Makefile +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/Makefile @@ -1,15 +1,18 @@ LIBDIR = $$HOME/lib M4LIBS = svg.m4 SVGconfig.m4 M4LIBS = svg.m4 +M4 = m4 +# PDFCONVERT = pdf2svg +PDFCONVERT = dvisvgm # To process a single file, copy it to test.m4 and type "make tst" # to produce tstSVG.html DPIC = dpic -#DPIC = $$HOME/dpic/build/p2c/ftp/dpic -#DPIC = ../../../dpic/build/p2c/ftp/dpic +#DPIC = $$HOME/dpic/pascal/p2c/ftp/dpic +#DPIC = ../../../dpic/pascal/p2c/ftp/dpic #DPIC = ../../../dpic/bison/dpic -#DPIC = ../../../dpic/bdev/dpic +#DPIC = ../../../dpic/bi*dev/dpic # To test the Windows executable. Change these as needed for the operating # system. NOTE: AntiqueClockSVG.m4 and Connectors.m4 use awk and sed which @@ -17,7 +20,7 @@ DPIC = dpic # M4LIBS = svg.m4 windows.m4 # DPIC = ../../../dpic/bison/distsrc/Windows/dpic -.SUFFIXES: .pic .svg .m4 +.SUFFIXES: .pic .svg .m4 .xsvg .pic.svg: $(DPIC) -v $*.pic > $*.svg grep '<\!-- width' $*.svg | sed -e 's%<\!-- *%%' -e 's% *-->%%' > $*.siz @@ -25,6 +28,25 @@ DPIC = dpic m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' > $*.pic $(DPIC) -v $*.pic > $*.svg grep '<\!-- width' $*.svg | sed -e 's%<\!-- *%%' -e 's% *-->%%' > $*.siz +.m4.xsvg: + touch F_$*.dim + $(M4) pgf.m4 F_$*.dim $*.m4 > $*.pic + $(DPIC) -g $*.pic >> $*.tex + echo "\documentclass[crop,tikz,multi=false]{standalone}" > F_$*.tex + echo "\usepackage{boxdims,siunitx,amssymb}" >> F_$*.tex + echo "\begin{document}" >> F_$*.tex + echo "\input $*.tex" >> F_$*.tex + echo "\end{document}" >> F_$*.tex + pdflatex --quiet F_$* + $(M4) pgf.m4 F_$*.dim $*.m4 > $*.pic + $(DPIC) -g $*.pic >> $*.tex + pdflatex --quiet F_$* + if test "$(PDFCONVERT)" = "pdf2svg" ; then \ + pdf2svg F_$*.pdf $*.xsvg && cp $*.xsvg $*.svg ; \ + else \ + dvisvgm --pdf F_$*.pdf && mv F_$**.svg $*.svg ; cp $*.svg $*.xsvg ; \ + fi + rm -f F_$** CCTSVG = \ AdderSVG.svg AlogixSVG.svg ABlogixSVG.svg AmpTableSVG.svg AntennasSVG.svg \ @@ -35,16 +57,17 @@ CCTSVG = \ CountingSVG.svg CrossbarSVG.svg CrowSVG.svg CsourceSVG.svg \ DecoderSVG.svg DemultiplexerSVG.svg DiniSVG.svg DiodesSVG.svg DriveSVG.svg \ EmarrowsSVG.svg \ - FlowSVG.svg FontsSVG.svg FusesSVG.svg GrayCodeSVG.svg GroundsSVG.svg \ + FlowSVG.svg FontsSVG.svg FusesSVG.svg \ + GeometrySVG.svg GrayCodeSVG.svg GroundsSVG.svg \ HeadersSVG.svg HeathkitSVG.svg InclepsSVG.svg I2LSVG.svg JackSVG.svg \ - LogicSVG.svg LoglogSVG.svg \ + LyapSVG.svg LogicSVG.svg LoglogSVG.svg \ MCSVG.svg MixerSVG.svg MotorControlSVG.svg MultiplexerSVG.svg \ NLGSVG.svg NPDTSVG.svg NportSVG.svg OpampSVG.svg OptoisoSVG.svg \ PconnSVG.svg PushPullSVG.svg QuantumSVG.svg \ RectifiersSVG.svg RelaySVG.svg RotboxSVG.svg\ SchottkySVG.svg ShiftRSVG.svg SierpinskiSVG.svg \ SixpoleSVG.svg SourcesSVG.svg SQUIDSVG.svg SwitchesSVG.svg \ - TTLnandSVG.svg TgateSVG.svg TtreeSVG.svg ThreeSVG.svg TimerSVG.svg \ + TTLnandSVG.svg TgateSVG.svg ThreeSVG.svg \ TubediagsSVG.svg VariableSVG.svg WindingsSVG.svg XformSVG.svg \ controlSVG.svg cscSVG.svg diamondSVG.svg ex00SVG.svg \ ex01SVG.svg ex02SVG.svg ex03SVG.svg ex04SVG.svg ex05SVG.svg ex06SVG.svg \ @@ -53,10 +76,12 @@ CCTSVG = \ expSVG.svg fetSVG.svg graysurfSVG.svg lcctSVG.svg \ pwrsupplySVG.svg quickSVG.svg randomSVG.svg recycleSVG.svg relaycoilSVG.svg \ roseSVG.svg sfgSVG.svg shapesSVG.svg paletteSVG.svg \ - thyristorSVG.svg ujtSVG.svg wormSVG.svg XORSVG.svg Np.svg + thyristorSVG.svg ujtSVG.svg UNOSVG.svg wormSVG.svg XORSVG.svg Np.svg \ + Y14-5SVG.svg examplesSVG.html: examplesSVG.htmx - make $(CCTSVG) + cp ../quick.m4 . + make $(CCTSVG) quick.xsvg Version=`sed -e 's/Version //' $(LIBDIR)/doc/Version.tex` ; \ sed -e 's/Version XXX/Version '$$Version'/' examplesSVG.htmx \ | m4 > examplesSVG.html @@ -112,7 +137,8 @@ Incleps.png: clean: @printf "\n svg clean:\n" rm -f *.svg *.dim *.ps *log *.siz *.pic examplesSVG.html Incleps.png - rm -f tstSVG.html copy_tmp__ + rm -f tstSVG.html copy_tmp__ quick.m4 quick.xsvg + rm -f *.otf xx* *png *.pdf *.css *.xml quick.tex @printf "\n" clobber: clean diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/OpampSVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/OpampSVG.m4 index 65ea9233b07..7137e428cef 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/OpampSVG.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/OpampSVG.m4 @@ -29,7 +29,7 @@ cct_init(svg_font(sans-serif,11bp__)) "`Point_(90); opamp'" at C.s-(0,0.25) right_ D: opamp(,,,,T) with .sw at C.se+(0.65,0) - "`opamp(,,,,T)'" wid 0.75 at D.s-(0,0.25) + "`opamp(,,,,T)'" wid 0.85 at D.s-(0,0.25) command "</g>" # end font .PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/PconnSVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/PconnSVG.m4 index b0fdb65e803..43fb2d20ebe 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/PconnSVG.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/PconnSVG.m4 @@ -31,7 +31,7 @@ P1: [ C7: pconnex(U,J) with .w at last [].e+(0.25,0) `"(U,J)"' at last [].s below C8: pconnex(U,JF) with .w at last [].e+(0.25,0) - `"(U,JF)"' wid 21bp__ at last [].s below + `"(U,JF)"' wid 28bp__ at last [].s below ] P2: [ diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/UNO.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/UNO.m4 new file mode 100644 index 00000000000..60689f15ec3 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/UNO.m4 @@ -0,0 +1,265 @@ +.PS +# UNOSVG.m4 +log_init +include(../ics.m4) +textoffset = 1.5bp__ +svg_font(sans-serif,9.0bp__,textoffset) + +divert(-1) + + `Header([1|2][A],rows,wid,ht,type) + arg1: number of columns; A= type A + arg2: pins per column + arg3,4: custom wid, ht + arg5: eg fill_(0.9)' +define(`Header', +`[ define(`m4tp',ifinstr(`$1',A,A))define(`m4Hq',patsubst(`$1',A))dnl + define(`m4Hn',`ifelse(m4Hq,,1,m4Hq)')dnl + define(`m4Hm',`ifelse(`$2',,2,`$2')')dnl + define(`m4Hw',`ifelse(`$3',,`m4Hn*L_unit*3',`($3)')')dnl + define(`m4Hh',`ifelse(`$4',,`m4Hm*L_unit*3',`($4)')')dnl + Block: rotbox(m4Hw,m4Hh,`$5') + ifelse(`m4tp',A,`pushdef(`L_unit',(linewid/6))') + define(`m4Hct',1)dnl + for_(1,m4Hm,1, + `HeaderPin(Block.NW+vec_(L_unit*3/2,-(m4x-1/2)*m4Hh/m4Hm), + eval(m4Hct-1), P`'m4Hct,w) define(`m4Hct',incr(m4Hct)) + ifelse(m4Hn,2,`HeaderPin(Block.NE+vec_(-L_unit*3/2,-(m4x-1/2)*m4Hh/m4Hm), + 1, P`'m4Hct,e) define(`m4Hct',incr(m4Hct))') ') + ifelse(`m4Hq',A,`popdef(`L_unit')') + `$6' ]') + `HeaderPin(location,type,Picname, + n|e|s|w,[length][;pinsize]) + arg2: 0= square' +define(`HeaderPin', + `ifinstr(`$5',;, + `stacksplit_(`m4Hdr',`$5',;)dnl + define(`m4Hps',ifelse(m4Hdr,,`L_unit',m4Hdr))popdef(`m4Hdr')dnl + define(`m4Hpl',ifelse(m4Hdr,,`lg_plen*L_unit',m4Hdr))popdef(`m4Hdr') ', + `define(`m4Hps',L_unit)dnl + define(`m4Hpl',`ifelse(`$5',,lg_plen*L_unit,`$5')')')dnl + ifelse(`$1',,,`move to `$1';') + ifelse(`$3',,,`$3':) line to ifelse( + `$4',n,`rvec_(0,m4Hpl)', `$4',e,`rvec_(m4Hpl,0)', + `$4',s,`rvec_(0,-m4Hpl)', `rvec_(-m4Hpl,0)') + ifelse(`$3',,,Pin`$3':) ifelse(ifelse(`$2',,0,`$2'),0, + `rotbox(m4Hps,m4Hps,fill_(1))', + `circle diam m4Hps fill_(1)') at last line.start ') + +define(`brdge',`eleminit_(`$1') + define(`m4h',ifelse(`$2',,`sourcerad_',`($2)/2'))dnl + { line to rvec_(rp_len/2-m4h/2,0) + move to rvec_(m4h/2,0) + for m4ng=75 to 255 by 180 do {{ + m4fshade(0, arc cw from rvec_(Rect_(m4h/2,m4ng)) \ + to rvec_(Rect_(m4h/2,-m4ng)) \ + with .c at Here ) }} + line from rvec_(m4h/2,0) to rvec_(rp_len/2,0) } + { [box invis ht_ m4h wid_ m4h] at rvec_(rp_len/2,0) } + line to rvec_(rp_len,0) invis ') + +define(`ATMEGA16U2',`[ + Chip: box wid 10*lg_pinsep ht 25*lg_pinsep + Loopover_(`x', + `Arightpin(patsubst(x,;,`,'))', + 6;PD0, 7;PD1, 8;PD2, 9;PD3, 10;PD4, 11;PD5, 12;PD6, 13;PD7, + 131;nul, + 5;PC2, 26;PC4, 25;PC5, 23;PC6, 22;PC7, + 132;nul, + 133;nul, + 14;PB0, 15;PB1, 16;PB2, 17;PB3, 18;PB4, 19;PB5, 20;PB6, 21;PB7) + Loopover_(`x', + `Aleftpin(patsubst(x,;,`,'))', + 33;PAD, + 100;nul, + 28;UGND, 29;D`'svg_it(+), 30;D`'svg_it(-), 31;UVCC, 27;UCAP, + 101;nul, 102;nul, + 3;GND, 4;VCC, 103;nul, + 104;nul, + 32;AVCC, + 105;nul, 106;nul, + 1;XTAL1, + 107;nul, + 2;XTAL2(PC0), + 108;nul, 109;nul) + lg_pin(Pin109+(0,lg_pinsep),RESET,Pin24,wN,24,pinlen) + ]') +define(`Aleftpin',`move to Chip.sw+(0,m4Lx*lg_pinsep) + Pin`$1': ifelse(`$2',nul,Here,dnl + `line left pinlen "`$1'" above + "`$2'" ljust at last line.start')') +define(`Arightpin',`move to Chip.se+(0,m4Lx*lg_pinsep) + Pin`$1': ifelse(`$2',nul,Here,dnl + `line right pinlen "`$1'" above + "`$2'" rjust at last line.start')') + +define(`ATMEGA328P',`[ + Chip: box wid 10*lg_pinsep ht 23*lg_pinsep + Loopover_(`x', + `Arightpin(patsubst(x,;,`,'))', + 2;PD0, 3;PD1, 4;PD2, 5;PD3, 6;PD4, 11;PD5, 12;PD6, 13;PD7, + 100;nul, + 23;PC0, 24;PC1, 25;PC2, 26;PC3, 27;PC4, 28;PC5, + 101;nul, + 14;PB0, 15;PB1, 16;PB2, 17;PB3, 18;PB4, 19;PB5) + Loopover_(`x', + `Aleftpin(patsubst(x,;,`,'))', + 201;nul, 202;nul, 203;nul, 204;nul, 205;nul, 206;nul, 207;nul, 208;nul, + 209;nul, + 8;GND, 7;VCC, + 301;nul, + 22;AGND, 20;AVCC, 21;AREF, + 302;nul, + 9;XTAL1, + 303;nul, + 9;XTAL2, + 304;nul, 305;nul) + lg_pin(Pin305+(0,lg_pinsep),RESET,Pin1,wN,1,pinlen) + ]') + +divert(0)dnl + + maxpswid = 20 + maxpsht = 20 + + define(`pinlen',`30bp__') + define(`lg_pinsep',(1.2*lg_pinsep)) + del = lg_pinsep + + U3: ATMEGA16U2 + `"ATMEGA16U2-MU(R)"' at U3.Chip.s below + `"U3"' at U3.Chip.nw ljust above + ZU4: ATMEGA328P with .Chip.nw at U3.Chip.sw+(0,-1) + `"ATMEGA328P-PU"' at ZU4.Chip.s below + `"ZU4"' at ZU4.Chip.nw ljust above + + dot(at U3.Pin2.end) + R1: resistor(down_ 2*lg_pinsep,,E) + rlabel(,"R1" rjust "1M" rjust) + dot + dot(at R1.start-(2*del,0)) + xtal(down_ 2*lg_pinsep) + rlabel(16,,MHz); dot + XT2: dot(at last line.start-(2*del,0)); { "XT2" at last [].n above } + + Br1: brdge(from U3.Pin33.end to (XT2,U3.Pin33)); BRE: dot + line to (Here,U3.Pin28) then to U3.Pin28.end + {"UGND" at (Br1,Here) above} + + XT1: dot(at XT2-(del,R1.len)); { "XT1" at last [].n above } + line from XT1 to U3.Pin1.end + line from U3.Pin2.end to (XT1,XT2) + C11: capacitor(left_ 3*del); rlabel(,C11); llabel(,22pF) + C9: capacitor(from XT1 to (Here,XT1)); {"C9" "22pF" at last [].s+(0,-11bp__)} + { line to C11.end } + dot + G1: ground(,,E); { "GND" at last line.c below } + line from XT1 down_ 3*del; continue to (G1,Here); dot(,,1) + {"XT3" at last [].n above} + dot(at Here+(0,-3/2*del),,1); {"XT4" at last [].n above} + { line to (XT2,Here) then to XT2 chop dotrad_ chop 0 } + USBVCC: dot(at Here+(0,-7/2*del),,1) + {"USBVCC" at last [].n-(3/2*del,0) above ljust} + { line to (Here,U3.Pin31) chop dotrad_ chop 0; continue to U3.Pin31.end } + dot(at Here+(2*del,0),,1); {"VUCAP" at last [].e+(0,-5bp__) ljust} + line to (Here,U3.Pin27) chop dotrad_ chop 0; dot + line from U3.Pin27.end to (G1.x-4.5*del,U3.Pin27.y) + C8: capacitor(down_ to (Here,Br1)); llabel(C8,,1`'svg_micro) + Bus1: dot + + dot(at U3.Pin33.end) + move to U3.Pin3.end; line to (Here,U3.Chip.s) + G2: ground(,T,E); {"GND" at last line.c below } + + dot(at U3.Pin32.end) + {line to U3.Pin4.end; dot} + line left del; ground(,,E,U); {"svg_it(+)5V" at last line.c above} + + G3: ground(at (C8.x-del,G2.y),T,E); {"GND" at last line.c below } + capacitor(up_ to (Here,C8.start)); { llabel(100n,,C7) } + line to (Here,U3.Pin4) then to U3.Pin4.end + + line from U3.Pin30.end to (G1.x-2*del,U3.Pin30.y); continue to (Here,U3.Pin1) + { "RD`'svg_it(-)" above rjust }; continue left_ 2*del + RN3A: resistor(left_ 3/2*dimen_,,E); rlabel(,22R RN3A) + Dm: line left_ 7*del + +USB: [ K: box invis wid dimen_/2 ht 5*lg_pinsep + "USB" rjust at K.e + line thick 1.5 from K.nw to K.ne then to K.se then to K.sw + Loopover_(`x', + `Pin`'m4Lx: K.ne-(0,m4Lx/5*K.ht) + "x" at Pin`'m4Lx ljust above', + 1 XUSB, 2 D`'svg_it(-), 3 D`'svg_it(+), 4 UGND) + P_1: K.sw; {"P$`1'" at P_1 below rjust} + P_2: K.s; {"P$`2'" at P_2 below ljust} + ] with .Pin2 at Here; "X2" at USB.ne above rjust + + move to U3.Pin29.end + line to (G1.x-3*del,Here.y); continue to (Here,Dm-(0,lg_pinsep)) + { "RD`'svg_it(+)" above rjust} + continue to (RN3A.start,Here) + RN3D: resistor(left_ 3/2*dimen_,,E); llabel(,22R RN3D) + line to USB.Pin3 + + dot(at RN3A.end); line to (Here,RN3D) + Z2: variable(`resistor(down_ to (Here,U3.Pin27),,E); rlabel(Z2)',NN) + dot(at RN3D.end-(2*del,0)) + Z1: variable(`resistor(to (Here,U3.Pin27),,E); rlabel(Z1)',NN) + dot; line to (Z2,Here) + move up Z1.len/4 from last line.c; "CG0603MLC-05E" "X 2" + + line down_ del from USB.P_1; continue to (USB.P_2,Here); dot + line from USB.P_2 to (USB.P_2,Z1.end) then to Z1.end + dot(at (USB.P_2,Here)+(3/2*del,0)); line to (Here,USBVCC) + dot(,,1); {"USHIELD" at last [].n+(4bp__,0) above} + + L1: reversed(`inductor',down_ from Z1.end to (Z1,C8.end),W,,M) + rlabel(L1); llabel( BLM21); dot + { dot(at (Z2,Here)); line to (Here,U3.Pin28); dot(,,1) + "UGND" at last [].n above } + line from USB.Pin1 to (Z2,USB.Pin1) then up 2*del + XUSB: dot(,,1); {"XUSB" at last [].n above} + line from (Z1,USB.Pin3) to (Z1,XUSB); + DP: dot(,,1); {"D`'svg_it(+)" at last [].n above} + dot(at (DP,USB.Pin2)-(2*del,0)); line to (Here,XUSB) + DM: dot(,,1); "D`'svg_it(-)" at last [].n above + line from USB.Pin4 to (DM,USB.Pin4) then to (DM,BRE) then to BRE + + dot(at (U3.Chip.w.x-3*lg_pinsep,U3.Pin24.y)) + D3: diode(up_ 7*lg_pinsep); llabel(,,D3) + dot(at (D3.start-(2*del,0))) + RN1C: resistor(up_ D3.len,,E); llabel(,10K); llabel(RN1C); dot + line from D3.end to (Here.x-2*del,Here.y) + right_ + ICSP1: Header(2A,3,4*del,3*lg_pinsep) with .P2.end at Here + "ICSP1" at last [].Block.nw above ljust + "3X2 M" at last [].Block.sw below ljust + for_(1,5,2,`"m4x" at ICSP1.P`'m4x.end above ljust') + for_(2,6,2,`"m4x" at ICSP1.P`'m4x.end above rjust') + + dot(at ICSP1.P2.end+(del/2,0)); line up_ 2*del + G5: ground(,T,E); "svg_it(+)5V" above + ground(at (G5,ICSP1.P6),,E); {"GND" at last line.w below rjust} + {line to ICSP1.P6.end} + R2: dot(at ICSP1.P5.end-(lg_pinsep/2,0)); {line to ICSP1.P5.end} + { line to (Here,G5); dot(,,1); "RESET2" at last [].n above } + line to (R2,U3.Pin24) then to U3.Pin24.end + line from ICSP1.P4.end to (U3.Pin24.end,ICSP1.P4); dot + { line to (Here,G5); dot(,,1); "MOSI2" at last [].n above } + Turn: (U3.Pin21.end.x+4*lg_pinsep,Here.y) + line to (Turn,Here) then down Here.y-U3.Pin16.y then to U3.Pin16.end + line from ICSP1.P3.end to (R2.x-lg_pinsep,ICSP1.P3.y) \ + then down R2.y-U3.Pin24.y + continue to (D3.x+2*del,Here.y) then up ICSP1.P4.y-Here.y-2*lg_pinsep + continue to (Turn.x-2*lg_pinsep,Here.y) then down Here.y-U3.Pin15.y \ + then to U3.Pin15 + move to ICSP1.P1.end; line left Here.x-R2.x+2*lg_pinsep; dot + { line to (Here,G5); dot(,,1); "MISO2" at last [].n above rjust } + line down Here.y-U3.Pin24.y-2*lg_pinsep + continue to (D3.x+del,Here.y) then up ICSP1.P4.y-Here.y-lg_pinsep + continue to (Turn.x-lg_pinsep,Here.y) then down Here.y-U3.Pin17.y \ + then to U3.Pin17 + + command "</g>" +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/UNOSVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/UNOSVG.m4 new file mode 100644 index 00000000000..8ae314f1afe --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/UNOSVG.m4 @@ -0,0 +1,577 @@ +.PS +# UNOSVG.m4 +log_init +include(../icsSVG.m4) +textoffset = 1.5bp__ +svg_font(sans-serif,8.5bp__,textoffset) + +divert(-1) + + `Header([A][1|2], rows, wid, ht, + boxspec, pinlen;pinsize) + arg1: A= type A; number of columns + arg2: pins per column + arg3,4: custom wid, ht + arg5: eg fill_(0.9)' +define(`Header', +`[ define(`m4tp',ifinstr(`$1',A,A))define(`m4Hq',patsubst(`$1',A))dnl + define(`m4Hn',`ifelse(m4Hq,,1,m4Hq)')dnl + define(`m4Hm',`ifelse(`$2',,2,`$2')')dnl + define(`m4Hw',`ifelse(`$3',,`m4Hn*L_unit*3',`($3)')')dnl + define(`m4Hh',`ifelse(`$4',,`m4Hm*L_unit*3',`($4)')')dnl + ifinstr(`$6',;, + `stacksplit_(`m4Jdr',`$6',;)dnl + define(`m4Jps',ifelse(m4Jdr,,`L_unit',m4Jdr))popdef(`m4Jdr')dnl + define(`m4Jpl',ifelse(m4Jdr,,`lg_plen*L_unit',m4Jdr))popdef(`m4Jdr') ', + `define(`m4Jps',L_unit)dnl + define(`m4Jpl',`ifelse(`$6',,lg_plen*L_unit,`$6')')')dnl + Block: rotbox(m4Hw,m4Hh,`$5') + ifelse(`m4tp',A,`pushdef(`L_unit',(linewid/6))') + define(`m4Hct',1)dnl + for_(1,m4Hm,1, + `HeaderPin(Block.NW+vec_(m4Jps*3/2,-(m4x-1/2)*m4Hh/m4Hm), + ifinstr(m4tp,A,1,eval(m4Hct-1)), + P`'m4Hct, w, (m4Jpl+m4Jps);m4Jps) define(`m4Hct',incr(m4Hct)) + ifelse(m4Hn, 2, `HeaderPin(Block.NE+vec_(-m4Jps*3/2,-(m4x-1/2)*m4Hh/m4Hm), + 1, P`'m4Hct, e, (m4Jpl+m4Jps);m4Hps) define(`m4Hct',incr(m4Hct))') ') + ifelse(`m4Hq',A,`popdef(`L_unit')') + `$7' ]') + `HeaderPin(location, type, Picname, n|e|s|w, + [length][;pinsize]) + arg2: 0= square' +define(`HeaderPin',` + ifinstr(`$5',;, + `stacksplit_(`m4Hdr',`$5',;)dnl + define(`m4Hps',ifelse(m4Hdr,,`L_unit',m4Hdr))popdef(`m4Hdr')dnl + define(`m4Hpl',ifelse(m4Hdr,,`lg_plen*L_unit',m4Hdr))popdef(`m4Hdr') ', + `define(`m4Hps',L_unit)dnl + define(`m4Hpl',`ifelse(`$5',,lg_plen*L_unit,`$5')')')dnl + ifelse(`$1',,,`move to `$1';') + ifelse(`$3',,,`$3':) line to ifelse( + `$4',n,`rvec_(0,m4Hpl)', `$4',e,`rvec_(m4Hpl,0)', + `$4',s,`rvec_(0,-m4Hpl)', `rvec_(-m4Hpl,0)') + ifelse(`$3',,,Pin`$3':) ifelse(ifelse(`$2',,0,`$2'),0, + `rotbox(m4Hps,m4Hps,fill_(1))', + `circle diam m4Hps fill_(1)') at last line.start ') + +define(`brdge',`eleminit_(`$1') + define(`m4h',ifelse(`$2',,`sourcerad_',`($2)/2'))dnl + { line to rvec_(rp_len/2-m4h/2,0) + move to rvec_(m4h/2,0) + for m4ng=75 to 255 by 180 do {{ + m4fshade(0, arc cw from rvec_(Rect_(m4h/2,m4ng)) \ + to rvec_(Rect_(m4h/2,-m4ng)) \ + with .c at Here ) }} + line from rvec_(m4h/2,0) to rvec_(rp_len/2,0) } + { [box invis ht_ m4h wid_ m4h] at rvec_(rp_len/2,0) } + line to rvec_(rp_len,0) invis ') + +define(`ATMEGA16U2',`[ + Chip: box wid 10*lg_pinsep ht 25*lg_pinsep + Loopover_(`x', + `Arightpin(patsubst(x,;,`,'))', + 6;PD0, 7;PD1, 8;PD2, 9;PD3, 10;PD4, 11;PD5, 12;PD6, 13;PD7, + 131;nul, + 5;PC2, 26;PC4, 25;PC5, 23;PC6, 22;PC7, + 132;nul, + 133;nul, + 14;PB0, 15;PB1, 16;PB2, 17;PB3, 18;PB4, 19;PB5, 20;PB6, 21;PB7) + Loopover_(`x', + `Aleftpin(patsubst(x,;,`,'))', + 33;PAD, + 100;nul, + 28;UGND, 29;D`'svg_it(+), 30;D`'svg_it(-), 31;UVCC, 27;UCAP, + 101;nul, 102;nul, + 3;GND, 4;VCC, 103;nul, + 104;nul, + 32;AVCC, + 105;nul, 106;nul, + 1;XTAL1, + 107;nul, + 2;XTAL2(PC0), + 108;nul, 109;nul) + lg_pin(Pin109+(0,lg_pinsep),RESET,Pin24,wN,24,pinlen) + ]') +define(`Aleftpin',`move to Chip.sw+(0,m4Lx*lg_pinsep) + Pin`$1': ifelse(`$2',nul,Here,dnl + `line left pinlen "`$1'" above + "`$2'" ljust at last line.start')') +define(`Arightpin',`move to Chip.se+(0,m4Lx*lg_pinsep) + Pin`$1': ifelse(`$2',nul,Here,dnl + `line right pinlen "`$1'" above + "`$2'" rjust at last line.start')') + +define(`ATMEGA328P',`[ + Chip: box wid 10*lg_pinsep ht 23*lg_pinsep + Loopover_(`x', + `Arightpin(patsubst(x,;,`,'))', + 2;PD0, 3;PD1, 4;PD2, 5;PD3, 6;PD4, 11;PD5, 12;PD6, 13;PD7, + 100;nul, + 23;PC0, 24;PC1, 25;PC2, 26;PC3, 27;PC4, 28;PC5, + 101;nul, + 14;PB0, 15;PB1, 16;PB2, 17;PB3, 18;PB4, 19;PB5) + Loopover_(`x', + `Aleftpin(patsubst(x,;,`,'))', + 201;nul, 202;nul, 203;nul, 204;nul, 205;nul, 206;nul, 207;nul, 208;nul, + 209;nul, + 8;GND, 7;VCC, + 301;nul, + 22;AGND, 20;AVCC, 21;AREF, + 302;nul, + 9;XTAL1, + 303;nul, + 10;XTAL2, + 304;nul, 305;nul) + lg_pin(Pin305+(0,lg_pinsep),RESET,Pin1,wN,1,pinlen) + ]') + +define(`rswitch',`dswitch(`$1',,WBoDCP) + DS: last line.start; DC: last line.c; DE: last line.end + DL: DC-vec_(dimen_/6,0); DR: DC+vec_(dimen_/6,0) + {{"1" at DL above rjust}; {"3" at DR above ljust} + { line from DL to DL-vec_(0,dimen_/6) chop dotrad_ chop 0 + {"2" below rjust} + continue to DS-vec_(0,dimen_/6) then to DS; dot } + { line from DR to DR+vec_(0,-dimen_/6) chop dotrad_ chop 0 + {"4" below ljust} + continue to DE+vec_(0,-dimen_/6) then to DE; dot } + line from DC+vec_(dimen_/10,-dimen_/6) to DC+vec_(-dimen_/10,-dimen_/6) + move to last line.c; line to rvec_(0,-dimen_/3) \ + then to rvec_(-dimen_/3,-dimen_/3) + {"5" below}} ') + +divert(0)dnl + + maxpswid = 20 + maxpsht = 20 + + define(`pinlen',`30bp__') + define(`lg_pinsep',(1.2*lg_pinsep)) + del = lg_pinsep + define(`pindiam',0.1) + + define(`egnd',`ground(,,E); "GND" at last line.c below') + + U3: ATMEGA16U2 + `"ATMEGA16U2-MU(R)"' at U3.Chip.s below + `"U3"' at U3.Chip.nw ljust above + ZU4: ATMEGA328P with .Chip.nw at U3.Chip.sw+(-2.5,-10*del) + `"ATMEGA328P-PU"' at ZU4.Chip.s below + `"ZU4"' at ZU4.Chip.nw ljust above + + dot(at U3.Pin2.end) + R1: resistor(down_ 2*lg_pinsep,,E) + rlabel(,"R1" rjust "1M" rjust) + dot + dot(at R1.start-(2*del,0)) + xtal(down_ 2*lg_pinsep) + rlabel(16,,MHz); dot + XT2: dot(at last line.start-(2*del,0)); { "XT2" at last [].n above } + + Br1: brdge(left_ from U3.Pin33.end to (XT2,U3.Pin33)) + rlabel(1,,2); llabel(,GROUND) + BRE: dot + line to (Here,U3.Pin28) then to U3.Pin28.end + {"UGND" at (Br1,Here) above} + + XT1: dot(at XT2-(del,R1.len)); { "XT1" at last [].n above } + line from XT1 to U3.Pin1.end + line from U3.Pin2.end to (XT1,XT2) + C11: capacitor(left_ 3*del); rlabel(,C11); llabel(,22`'pF) + C9: capacitor(from XT1 to (Here,XT1)); {"C9" "22`'pF" at last [].s+(0,-11bp__)} + { line to C11.end } + dot + G1: egnd + line from XT1 down_ 3*del; continue to (G1,Here); dot(,,1) + {"XT3" at last [].n above} + dot(at Here+(0,-3/2*del),,1); {"XT4" at last [].n above} + { line to (XT2,Here) then to XT2 chop dotrad_ chop 0 } + USBVCC: dot(at Here+(0,-7/2*del),,1) + {"USBVCC" at last [].n-(3/2*del,0) above ljust} + { line to (Here,U3.Pin31) chop dotrad_ chop 0; continue to U3.Pin31.end } + dot(at Here+(2*del,0),,1); {"VUCAP" at last [].e+(0,-5bp__) ljust} + line to (Here,U3.Pin27) chop dotrad_ chop 0; dot + line from U3.Pin27.end to (G1.x-4.5*del,U3.Pin27.y) + C8: capacitor(down_ to (Here,Br1)); llabel(C8,,1`'svg_micro) + Bus1: dot + + dot(at U3.Pin33.end) + move to U3.Pin3.end; line to (Here,U3.Chip.s) + G2: ground(,T,E); {"GND" at last line.c below } + + dot(at U3.Pin32.end) + {line to U3.Pin4.end; dot} + line left del; ground(,,E,U); {"svg_it(+)5 V" at last line.c above} + + line from U3.Pin4.end left_ 2*del + capacitor(down_ 3*del); { llabel(C7,,100n) } + G3: ground(,T,E); {"GND" at last line.c below } + + line from U3.Pin30.end to (G1.x-2*del,U3.Pin30.y); TD: Here + continue to (Here,U3.Pin32) + { "RD`'svg_it(-)" above rjust }; continue left_ 1.5*del + RN3A: resistor(left_ 3/2*dimen_,,E); rlabel(,22R RN3A) + Dm: line left_ 7*del + +USB: [ K: box invis wid dimen_/2 ht 5*lg_pinsep + "USB" rjust at K.e + line thick 1.5 from K.nw to K.ne then to K.se then to K.sw + Loopover_(`x', + `Pin`'m4Lx: K.ne-(0,m4Lx/5*K.ht) + "x" at Pin`'m4Lx ljust above', + 1 XUSB, 2 D`'svg_it(-), 3 D`'svg_it(+), 4 UGND) + P_1: K.sw; {"P$`1'" at P_1 below rjust} + P_2: K.s; {"P$`2'" at P_2 below ljust} + ] with .Pin2 at Here; "X2" at USB.ne above rjust + + move to U3.Pin29.end + line to (TD.x-del,Here.y); continue to (Here,Dm-(0,lg_pinsep)) + { "RD`'svg_it(+)" above rjust} + continue to (RN3A.start,Here) + RN3D: resistor(left_ 3/2*dimen_,,E); llabel(,22R RN3D) + line to USB.Pin3 + + dot(at RN3A.end); line to (Here,RN3D) + Z2: variable(`resistor(down_ to (Here,U3.Pin27),,E); rlabel(Z2)',NN) + dot(at RN3D.end-(2*del,0)) + Z1: variable(`resistor(to (Here,U3.Pin27),,E); rlabel(Z1)',NN) + dot; line to (Z2,Here) + move up Z1.len/4 from last line.c; "CG0603MLC-05E" "X 2" + + line down_ del from USB.P_1; continue to (USB.P_2,Here); dot + line from USB.P_2 to (USB.P_2,Z1.end) then to Z1.end + dot(at (USB.P_2,Here)+(3/2*del,0)); line to (Here,USBVCC) + dot(,,1); {"USHIELD" at last [].n+(4bp__,0) above} + + L1: reversed(`inductor',down_ from Z1.end to (Z1,C8.end),W,,) + rlabel(,L1); llabel("svg_thinsp`'BLM21" ljust); dot + { dot(at (Z2,Here)); line to (Here,U3.Pin28); dot(,,1) + "UGND" at last [].n above } + line from USB.Pin1 to (Z2,USB.Pin1) then up 2*del + XUSB: dot(,,1); {"XUSB" at last [].n above} + line from (Z1,USB.Pin3) to (Z1,XUSB); + DP: dot(,,1); {"D`'svg_it(+)" at last [].n above} + dot(at (DP,USB.Pin2)-(2*del,0)); line to (Here,XUSB) + DM: dot(,,1); "D`'svg_it(-)" at last [].n above + line from USB.Pin4 to (DM,USB.Pin4) then to (DM,BRE) then to BRE + + line from U3.Pin18.end right_ 3.5*del + JP2: Header(A2,2,4*del,2*lg_pinsep,,0.2;pindiam) with .P3.end at Here + "JP2" at JP2.Block.nw above ljust + "2X2M - NM" at JP2.s below + "1" at JP2.P3.end above ljust; "3" at JP2.P1.end above ljust + "2" at JP2.P4.end above rjust; "4" at JP2.P2.end above rjust + line from JP2.P1.end to (JP2.P1.end,U3.Pin19) then to U3.Pin19.end + dot(at JP2.P1.end); line up 3.5*del + TPPB5: dot(,,1); {"PB5" at last [].e ljust} + TPPB4: dot(at TPPB5-(del*3/2,0),,1); {"PB4" at last [].w rjust} + line to (Here,JP2.P3); dot + line from JP2.P2.end to (JP2.P2.end,TPPB4) + TPPB7: dot(,,1); {"PB7" at last [].w rjust} + line from JP2.P4.end right del*3/2; continue to (Here,TPPB4) + TPPB6: dot(,,1); {"PB6" at last [].n above} + line from U3.Pin20.end right del then up del; continue to (TPPB6,Here); dot + line from U3.Pin21.end up del; continue to (TPPB7,Here); dot + + ICSP1: Header(A2,3,4*del,2.5*lg_pinsep,,0.2;pindiam) \ + with .P1.end at (JP2.P1.end,U3.Pin14) + "ICSP1" at last [].Block.nw above ljust + "3X2 M" at last [].Block.sw below ljust + for_(1,5,2,`"m4x" at ICSP1.P`'m4x.end above ljust') + for_(2,6,2,`"m4x" at ICSP1.P`'m4x.end above rjust') + line from ICSP1.P1.end to (ICSP1.P1.end,U3.Pin17) then to U3.Pin17.end + line from ICSP1.P3.end left del; continue to (Here,U3.Pin15) \ + then to U3.Pin15.end + + dot(at U3.Pin24.end); + RN1C: resistor(up_ 5*lg_pinsep,,E); rlabel(,10K,RN1C); llabel(5,,3) dot +# D3: diode(up_ 5*lg_pinsep); rlabel(,,D3); dot + line up_ 2*del; ground(,T,E,U); {"+5 V" at last line.w rjust} + dot(at U3.Pin24.end-(del,0)); +# RN1C: resistor(up_ D3.len,,E); llabel(,10K,RN1C) + D3: diode(up_ RN1C.len); llabel(,,D3) + line to (TPPB6.x+del,Here.y) + continue to (Here,ICSP1.P2.end) then to ICSP1.P2.end + line from ICSP1.P5.end down 2*del; continue to (TPPB6.x+2*del,Here.y) + TRESET2: Here + continue to (Here.x,D3.end.y+del) then to (RN1C.end.x-2.5*del,D3.end.y+del) + continue to (Here,U3.Pin24) then to U3.Pin24.end + G4: ground(at ICSP1.P6.end,,E); {"GND" at last line.c below } + line from ICSP1.P4.end right del then up U3.Pin16.y-ICSP1.P4.y \ + then to U3.Pin16.end + dot(at ICSP1.P1.end); line left_ 2.5*del then down_ 5*del + MISO2: dot(,,1); {"MISO2" at last [].s below } + dot(at ICSP1.P3.end-(del,0)); line to (Here,MISO2) + SCK2: dot(,,1); {"SCK2" at last [].s below ljust } + dot(at TRESET2); line to (Here,SCK2) + RESET2: dot(,,1); {"RESET2" wid 36bp__ at last [].s below } + dot(at ICSP1.P4.end+(del,0)); line to (Here,RESET2) + MOSI2: dot(,,1); {"MOSI2" at last [].s-(del,0) below } + + line right_ del from U3.Pin11.end then up_ del*3/2 + TXLED: reversed(`diode',right_ elen_,LER) + rlabel(,YELLOW); llabel(TX); dot + {line up_ del; TPTXL: dot(,,1); "TXL" at last [].n above} + RN2C: resistor(right_ elen_,,E); llabel(,1 K RN2C); rlabel(6,,3); dot + line from U3.Pin10.end to (TXLED.start,U3.Pin10) + RXLED: reversed(`diode',to (TXLED.end,Here),LER) + rlabel(,YELLOW); llabel(RX); dot + {line up_ del; dot(,,1); "RXL" at last [].n above} + RN2B: resistor(right_ elen_,,E); llabel(,1 K RN2B); rlabel(7,,2) + line to (Here,TPTXL); ground(,T,E,U); "+5 V" at last line.c above + +# ZU4 connections + line left_ del*3/2 from ZU4.Pin7.end; dot + {line up_ del; G4: ground(,T,E,U); "+5 V" at last line.c above } + C6: capacitor(down dimen_); llabel(100n,,C6); dot + { dot(at ZU4.Pin8.end) }; dot(at (ZU4.Pin8.end,Here)) + { G4: ground(at Here+(0,-del),,E); {"GND" at last line.c below } + line to ZU4.Pin22.end } + line left_ Here.x-C6.x + dimen_*5/4 + C10: capacitor(up_ C6.len); llabel(100n,,C10); dot + { line to (Here,ZU4.Pin20) then to ZU4.Pin20.end } +# L2: ebox(right_ to C6.start,,,0.2); rlabel(,L2); llabel(,100`'svg_micro`'H) + L2: inductor(right_ to C6.start,W); rlabel(,L2); llabel(,100`'svg_micro`'H) + + line left 2*del from ZU4.Pin9.end; PE: dot + R2: resistor(up_ to (Here,ZU4.Pin10),,E); llabel(,R2); rlabel(,1 M); dot + dot(at Here-(del*4.0,0)); { "XTAL2" above ljust } + XTAL: xtal(down_ R2.len); llabel(16 MHz); dot; { "XTAL1" below ljust } + pushdef(`dimen_',dimen_/2) + capacitor(left_ del from 0.25 between XTAL.start and XTAL.end) + capacitor(left_ del from 0.75 between XTAL.start and XTAL.end) + popdef(`dimen_') + line up XTAL.len/2 + line left del from last line.c then down del + G5: ground(,T,E); "GND" at last line.c below + line down_ del from XTAL.end; dot(,,1); "XT1" at last [].s below + line up del from XTAL.start; dot(,,1); "XT2" at last [].n above + line from XTAL.start to ZU4.Pin10.end + line from XTAL.end to ZU4.Pin9.end + line left 2*del from ZU4.Pin1.end; dot +# dot(at ZU4.Pin1.end) + D2: diode(up_ dimen_); rlabel(,D2) + dot(at D2.start-(2.5*del,0)) + RN1D: resistor(up_ D2.len,,E); rlabel(10 K,,RN1D); dot + { line to D2.end } + line up_ del; ground(,T,E,U); "+5 V" at last line.c above + + line from ZU4.Pin1.end to (RN1D-(1.5*del,0),ZU4.Pin1) then up 7*del + continue to (ZU4.Chip.w,Here)+(del,0); BRB: dot + { line down_ 2*del; Br2: brdge(right_ dimen_) + llabel(1,,2); rlabel(,RESET_EN); line up_ 2*del; dot } + line right_ dimen_+del + C5: capacitor(right_ dimen_); llabel(,C5); rlabel(100n); dot + { RN2D: resistor(down_ dimen_,,E); rlabel(,1 K); llabel(,RN2D) + G6: ground(,T,E); "GND" at last line below } + { line up_ del; DTR: dot(,,1); "DTR" at last [].e ljust } + line from U3.Pin13.end right del/2; continue to (Here,U3.Chip.s) \ + then left+2*del; continue to (Here,BRB) then to C5.end + TP2: Here; continue to C5.end + + line up 3*del from BRB + TP1: dot #; line left BRB.x-RN1D.x + RESET: rswitch( right_ dimen_ from (USB.e,Here)+(del/2,0)) + { "RESET" at RESET+(-del*1.7,1.0*del) above } + line left del from RESET.start then down del + G7: ground(,T,E); "GND" at last line.c below + + ICSP: Header(A2,3,4*del,2.5*lg_pinsep,,0.2;pindiam) \ + with .Block.sw at ZU4.Pin19.end+(2*del,del*3) + "ICSP" at ICSP.Block.nw above ljust + "3X2 M" at ICSP.Block.sw below ljust + for_(1,5,2,`"m4x" at ICSP.P`'m4x.end above ljust') + for_(2,6,2,`"m4x" at ICSP.P`'m4x.end above rjust') + dot(at ZU4.Pin19.end); line to (Here,ICSP.P3) then to ICSP.P3.end + line from ZU4.Pin18.end right del; dot + line to (Here,ICSP.P1) then to ICSP.P1.end + move to ICSP.P5.end; line to (ZU4.Pin19.end,Here)-(del,0); + continue to (Here,TP1); dot + line from ICSP.P2.end up_ del; ground(,T,E,U); "+5 V" at last line.c above + line from ICSP.P6.end down_ del; G9: ground(,T,E); "GND" at last line.c below + move to ICSP.P4.end; line right_ del then down Here.y - ZU4.Pin17.y; dot +# move to ICSP.P4.end; line right_ del then down Here.y - G9.y + del +# continue to (ICSP.P1.end.x+del,Here.y) then down_ Here.y-ZU4.Pin17.y; dot + + line right_ from RESET.end to (U3.Chip.e+(12*del,0),TP1) + POWER: Header(A1,8,1.5*del,7*lg_pinsep,,0.2;pindiam) with .P3.end at Here + "POWER" wid 36bp__ at POWER.Block.nw above ljust + "8X1F-H8.5" at POWER.Block.sw below ljust + for_(1,8,1,`"m4x" at POWER.P`'m4x.end above ljust') + line from POWER.P2.end left del/2 then down POWER.P2.y-POWER.P5.y ; dot + line from POWER.P4.end left 2.5*del; "+3V3" above ljust + dot(at POWER.P3.end-(del*1.5,0)); line up 2*del + dot(,,1); "RESET" at last [].n above + line from POWER.P5.end left 3.5*del then up 4*del; ground(,T,E,U) + "+5 V" at last line.c above + line left del*2 from POWER.P8.end; "VIN" above ljust + line left del/2 from POWER.P7.end; dot + line from POWER.P6.end to (Here,POWER.P6.end) then to Here+(0,-2.5*del) + G10: ground(,T,E); "GND" at last line.c below + + right_ + + IOH: Header(A1,10,1.5*del,10*lg_pinsep,,0.2;pindiam) \ + with .P10.end at ZU4.Pin14.end + (del*15,0) + "IOH" at IOH.Block.nw above ljust + "10X1F-H8.5" at IOH.Block.se below ljust + for_(0,9,1,` + { "incr(m4x)" above ljust at IOH.P`'eval(10-m4x).end } + move to IOH.P`'eval(10-m4x).start-(pindiam/2+dotrad_/2,0) + ifelse(m4x,6,,`dot') + move to IOH.P`'eval(10-m4x).end + ifelse(eval(m4x<6),1,`line from ZU4.Pin`'eval(14+m4x).end to Here ') + ifelse(m4x,6,,` line right del*4; dot(,pindiam/2,1) ') + ifelse(eval(m4x<6),1,`"eval(8+m4x)" at last [].e ljust ')') + "SCL" at last [].e ljust + "SDA" at 3rd last [].e ljust + "AREF" at 5th last [].e ljust + + AD: Header(A1,6,1.5*del,6*lg_pinsep,,0.2;pindiam) \ + with .P6.end at (IOH.P10.end,ZU4.Pin23) #.end + (del*6,0) +# with .P6.end at ZU4.Pin23.end + (del*6,0) + "AD" at AD.Block.nw above ljust + "6X1F-H8.5" at AD.Block.se below ljust + for_(0,5,1,` + dot(at AD.P`'eval(6-m4x).start-(pindiam/2+dotrad_/2,0)) + line from ZU4.Pin`'eval(23+m4x).end \ + to AD.P`'eval(6-m4x).end; {"incr(m4x)" above ljust} + line right del*4; dot(,pindiam/2,1) + "A`'m4x" at last [].e ljust ') + + IOL: Header(A1,8,1.5*del,8*lg_pinsep,,0.2;pindiam) \ + with .P8.end at (AD.P1.end,ZU4.Pin2) + "IOL" at IOL.Block.nw above ljust + "8X1F-H8.5" at IOL.Block.sw ljust below + for_(0,7,1,` + dot(at IOL.P`'eval(8-m4x).start-(pindiam/2+dotrad_/2,0)) + line from ZU4.Pin`'eval(ifelse(eval(m4x<5),1,2,6)+m4x).end \ + to IOL.P`'eval(8-m4x).end; {"incr(m4x)" above ljust} + line right del*4; dot(,pindiam/2,1) + "m4x" at last [].e ljust ') + + line from ZU4.Pin21.end up RESET.y-ZU4.Pin21.y-del \ + then right ICSP.P4.end.x-ZU4.Pin21.end.x + 2*del + continue to (Here,IOH.P3)+(0,del*3/2); dot + { C4: capacitor(down_ 3.0*del); llabel(C4,,100n) + { ground(,T,E); "GND" at last line.e ljust} + line from IOH.P4.end to (Here,IOH.P4); dot } + line right del*3/2; continue to (Here,IOH.P3) then to IOH.P3.end + + line left del/2 from IOH.P2.end; continue to (Here,AD.P2); dot + line left del*3/2 from IOH.P1.end; continue to (Here,AD.P1); dot + +# line right_ del*2 from U3.Pin9.end then down_ 5.5*lg_pinsep; dot + line right_ del*2 from U3.Pin9.end then down_ 3.5*lg_pinsep; dot + { line right_ 2*del; dot(,,1); "RX" at last [].e ljust } + line to (Here,RESET)-(0,del) + RN4B: resistor(down_ dimen_,,E); llabel(7,"RN4B" ljust "1 K" ljust,2) + line down_ del then left_ Here.x - IOH.P9.end.x + del*2.5 + continue to (Here,ZU4.Pin2); dot + + line right_ del from U3.Pin8.end; dot + { line right_ 3*del; dot(,,1); "TX" at last [].e ljust } + line to (Here,RN4B.start) + RN4A: resistor(down_ dimen_,,E); rlabel(8,"RN4A" rjust "1 K" rjust,1) + line to (IOH.P9.end,Here)-(del*3.5,0); continue to (Here,ZU4.Pin3); dot + +Pwr: [ + Vin: line right 2*del "VIN" above + RN1A: resistor(down_ dimen_*5/4,,E); rlabel(8, "RN1A" rjust "10 K" rjust ,1) + CMP: dot + RN1B: resistor(down_ dimen_*5/4,,E); rlabel(2, "RN1B" rjust "10 K" rjust ,7) + B12: ground(,T,E); "GND" at last line below + + line right_ 2*del from CMP; dot + { line up_ 2*del; dot(,,1); "CMP" at last [].n above } + line right_ del + POA: opamp(,"+" ljust,"-" ljust) with .In1 at Here + "U5A" at last [].n; "1" at POA.Out above rjust + "3" at POA.In1 rjust above; "2" at POA.In2 rjust above + line left_ del from POA.In2 then down_ del; "+3V3" below + dot(at POA.Out); {line up_ 2*del; dot(,,1); "GATE" at last [].n above } + T1: mosfet(down_ dimen_*1.5,R,dMdPyEDSQdB,) with .G at Here + "T1" at T1 + (-dimen_/4,del*5/4) + "FDN340P" at T1 + (0,-del*5/4) rjust +# "USBVCC" at T1.D rjust + dot(at T1.S); { line up_ 2*del; ground(,T,E,U); "+5 V" at last line above } + ] with .RN1B at (USB.e.x+del,RN1C.y-2*del) + dot(at XUSB+(0,-del/2)) + F1: fuse(right_ to (Pwr.T1.D,Here)); { "500 mA" ljust } + { "MF-MSMF050-2" at last [].sw below ljust } + line to Pwr.T1.D + + line from Pwr.T1.S right_ 2.5*lg_pinsep + { U2:box ht 3*lg_pinsep wid 5*lg_pinsep with .nw at Here+(0,lg_pinsep/2) } + {"1" above rjust}; {"IN" ljust} + "LP2985-33DBVR" at U2.s below + "U2" above ljust at U2.nw + "3" above rjust at U2.w; line left del from U2.w then up_ lg_pinsep; dot + "ON/OFF" at U2.w ljust + line right_ textht*0.66*3 from U2.w+(textht*0.66*5,textht) + U2P2: U2.w+(0,-lg_pinsep); "2" at U2P2 above rjust; "GND" at U2P2 ljust + line from U2P2 left del then down_ del + G15: ground(,T,E); "GND" at last line.c below + U2P5: (U2.e.x,U2.e.y+lg_pinsep) + "OUT" at U2P5 rjust; "5" at U2P5 above ljust + line from U2P5 right 2*del "+3V3" below; dot + { line up_ del; dot(,,1); "3V3" at last [].n above } + C3: capacitor(down_ to(Here,G15)); rlabel(,"C3" rjust "1`'svg_micro" rjust) + ground(,T,E); "GND" at last line.c below + "NC/FB" at (U2.e.x,U2P2.y) rjust + + "SCK" above ljust at Pwr.Vin + (0,4*del) + line right_ 3*del + U5B: opamp(,"+" ljust, "-" ljust) with .In1 at Here + "5" at U5B.In1 above rjust; "6" at U5B.In2 above rjust + "U5B" at last [].n; "7" at U5B.Out above rjust + line from U5B.In2 left del then down del then right U5B.Out.x-U5B.In1.x+del + TD2: dot + dot(at U5B.Out); dot(at Here+(0,2*del),,1); "LCMD" at last [].e ljust + line down_ from last [].s to TD2 + RN2A: resistor(right_ dimen_*5/4,,E); llabel(8,"1K",1); rlabel(,RN2A) + dot; {line up_ 2*del; dot(,,1); "LL" at last [].n above } + diode(right_ dimen_*5/4,LE); rlabel(,YELLOW) + line down_ dimen_/4; egnd + + X1:box ht 3*lg_pinsep wid 5*lg_pinsep with .w at (U2.x,U5B.y+del) + "X1 DC21MMX" at X1.nw above ljust; "PWR SUPPLY" at X1.nw below ljust + X1P1: 1/3 between X1.sw and X1.se; "1" at X1P1 rjust below + X1P2: 2/3 between X1.sw and X1.se; "2" at X1P2 rjust below + line down_ del from X1P1; dot; { egnd } + line right X1.e.x+del - Here.x then up_ X1.e.y-Here.y then to X1.e + "3" above ljust at X1.e + line from X1P2 down del/2 then right X1.e.x+del*2 - X1P2.x \ + then up X1.n.y - X1P2.y + del/2; dot + { line up_ 2*del; PWRIN: dot(,,1); "PWRIN" at last [].w rjust } + D1: diode(right_ dimen_); llabel(,D1); rlabel(,M7); dot + { PC1: capacitor(down_ dimen_,C); llabel(,"PC1" ljust "47`'svg_micro" ljust) + G16: egnd } + { line to (Here,PWRIN); dot(,,1); "VIN" at last [].e ljust } + line right 3*del; { "3" above rjust } + U1P1: Here + U1: box ht 3*lg_pinsep wid 4*lg_pinsep with .nw at Here+(0,lg_pinsep/2) + "IN" at U1P1 ljust; "OUT" at (U1.e,U1P1) rjust + "1" below rjust at U1.s + "U1" at U1.nw + (0,textht/dptextratio) above ljust \ + "NCP1117ST50T3G" ljust + line from U1.s to (U1.s,G16); egnd + U1P4: (U1.e,U1P1); U1P2: U1P4+(0,-del) + { "4" at U1P4 above ljust }; { "2" at U1P2 above ljust }; + line right_ 2*del from U1P4; dot; + line from U1P2 to (Here,U1P2); dot; { line to (Here,U1P4) } + { PC2: capacitor(down_ to (Here,G16),C) + llabel(,"PC2" ljust "47`'svg_micro" ljust); egnd } + line right_ del*3/2 from (Here,U1P4); dot + { line to (Here,PWRIN); ground(,T,E,U); "+5V" at last line.c above } + line right_ del*3/2; dot; { line to (Here,PC2.start) + C2: capacitor(down_ to (Here,G16),C) + llabel(,"C2" ljust "100`'svg_micro" ljust); egnd } + { line to (Here,PWRIN); dot(,,1); "5V" at last [].n above } + line right_ del*3/2 then to (Here.x+del*3/2,PWRIN.y); dot(,,1) + "5V1" at last [].n above + + + + command "</g>" +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/Xtest.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/Xtest.m4 new file mode 100644 index 00000000000..67580438164 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/Xtest.m4 @@ -0,0 +1,58 @@ +.PS +# test.m4 +gen_init + +divert(-1) + +divert(0)dnl + +gs = 0.1 +gw = 3 +gh = 3 +define grid {($1*gs,$2*gs)} +B: box invis wid gw+2 ht gh+2 with .c at (0,0) +bix = gw/gs/2 +G:[ +C: 0,0 +for i=-bix to bix do { line wid 0.4 outlined "gray" from grid(-bix,i) right gw } +for i=-bix to bix by 5 do { sprintf("%g",i) at grid(-bix,i) rjust } +for j=-bix to bix do { line wid 0.4 outlined "gray" from grid(j,-bix) up gh } +for j=-bix to bix by 5 do { sprintf("%g",j) at grid(j,-bix) below } + + line from grid(-bix,0) right gw + line from grid(0,-bix) up gh +] with .C at B + +textoffset = 0 +xwid = 0.71; svg_font(Times,72bp__) +#xwid = 0.65; svg_font(sans-serif,72bp__) +#xwid = 0.64; svg_font(Arial,1) +#xwid = 0.64; svg_font(Helvetica,1) +#xwid = 0.54; svg_font(Courier,1) +#xwid = 0.67; svg_font(Cursive,1) +#xwid = 0.64; svg_font(Verdana,1) +#xwid = 0.70; svg_font(Georgia,1) +#xwid = 0.70; svg_font(Palatino,1) +#xwid = 0.70; svg_font(Garamond,1) +#xwid = 0.70; svg_font(Bookman,1) +##xwid = 0.70; svg_font(Comic Sans MS,1) +#xwid = 0.55; svg_font(Trebuchet MS,1) +#xwid = 0.78; svg_font(Arial Black,1) +#xwid = 0.49; svg_font(Impact,1) +[ +C: 0,0 + "X" wid xwid at grid(0,0) above ljust ; showbox_(last "") + "X" wid xwid at grid(0,0) below ljust ; showbox_(last "") + "X" wid xwid at grid(0,0) above rjust ; showbox_(last "") + "X" wid xwid at grid(0,0) below rjust ; showbox_(last "") +] with .C at G.C +[ + Q: box wid gw ht gh "X" ljust "Y" rjust "Z" + line from Q.n to Q.s; line from Q.w to Q.e +] with .w at B.e + + "X" wid xwid at G.n above; showbox_(last "") + + + command "</g>" +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/Y14-5SVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/Y14-5SVG.m4 new file mode 100644 index 00000000000..84cc6bcda63 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/Y14-5SVG.m4 @@ -0,0 +1,173 @@ +.PS +# ASME_Y14-5.m4 +# https://en.wikipedia.org/wiki/Geometric_dimensioning_and_tolerancing +# See the ASME Y14.5 standard, Figure 6-30. +scale = 100/3 +cct_init +include(../ASME_Y14-5.m4) +ifsvg(`svg_font(sans-serif,10bp__)', +`textht = 10bp__*2/3 + iflatex(`command "{\sf"')') +# ASME Y14.5 specs: + arrowht = textht*0.8 + arrowwid = textht*0.6 + maxpswid = 12 + +# Diameters + d1 = (20.13+20.00)/2 + d2 = 31.7 + d3 = 36 + d4 = (40.60+40.45)/2 + d5 = 57 + d6 = 86 + d7 = 100 + d8 = 8.0 + adj = 1.5 + +Section: [ + Orig: (0,0) + T0: (0,-d7/2) + T1: (6,-d5/2) + T2: (15.5,-d3/2) + T3: (22,-d3/2-adj) + T4: (32,-d2/2) + T5: (41.3,0) + T6: (9.5,-d4/2) +# for_(0,5,1,`"m4x" at T`'m4x') +# Hatching + H: hatchbox(invis ht d7 wid 41.3,2,thick 0.4,-45) with .w at Orig + box invis fill_(1) wid T5.x-T1.x ht T1.y-H.s.y with .se at H.se + box same with .ne at H.ne + box invis fill_(1) wid T3.x-T2.x ht T2.y-T1.y with .nw at T2 + box same with .sw at (T2.x,-T2.y) + box invis fill_(1) wid T4.x-T3.x ht T3.y-T1.y with .nw at T3 + box same with .sw at (T3.x,-T3.y) + box invis fill_(1) wid T5.x-T4.x ht T4.y-T1.y with .nw at T4 + box same with .sw at (T4.x,-T4.y) +# Section outline lower + line from (0,-d4/2) to T0 then right T1.x-T0.x then up 1 + arcto(T1,(T2,T1),1) + line to (T2,T1) then up 1 + arcto(T2,(T3,T2),1) + arcto((T3,T2),T3,0.5) + arcto(T3,(T4,T3),0.5) + arcto((T4,T3),T4,1) + arcto(T4,(T5,T4),1) + line to (T5,T4) then to (T5.x,-T4.y) then left 1 +# Section outline upper + line from (0,d4/2) to (0,-T0.y) then right T1.x-T0.x then down 1 + arcto((T1.x,-T1.y),(T2.x,-T1.y),1) + line to (T2.x,-T1.y) then down 1 + arcto((T2.x,-T2.y),(T3.x,-T2.y),1) + arcto((T3.x,-T2.y),(T3.x,-T3.y),0.5) + arcto((T3.x,-T3.y),(T4.x,-T3.y),0.5) + arcto((T4.x,-T3.y),(T4.x,-T4.y),1) + arcto((T4.x,-T4.y),(T5.x,-T4.y),1) + line to (T5.x,-T4.y) + + box wid 6 ht d8 fill_(1) with .w at (0,d6/2) + box wid 6 ht d8 fill_(1) with .w at (0,-d6/2) + box invis wid T6.x ht d4 fill_(1) with .w at Orig + box wid T5.x-T6.x ht d1 fill_(1) with .e at T5 + + line from (Orig.x,-T6.y) to (Orig.x,T6.y) + arcto(T6,(T6,Orig),1) + arcto((T6.x,-T6.y),(0,-T6.y),1) + line to (0,-T6.y) + +define(`dialabel', +`[tmpthick = linethick; linethick_(1) + [Y14_dia_]; [$1 wid ifelse(`$2',,textht,`$2')] with .w at last [].e+(0.5,0) + linethick_(tmpthick)]') + +thinlines_ + dimension_(from (0,T6.y) to (0,-T6.y),40,dialabel("40.60" "40.45",12),textht*3) + line up 4 from AE_dimen_.end + Y14_frame(Y14_per_,Y14_dia_;"0";"(M)","A") with .sw at Here + Y14_frame("B") with .s at last [].n+(0,6) +thicklines_(1) + datumarrow(from last [].s to 2nd last [].n) +thinlines_ + dimension_(from T2 to (T2.x,-T2.y),30, + dialabel("35.5" "36.0",12),textht*3) + dimension_(from T0 to T0+(T1.x,0),-8," 6.1 " " 5.9 ",textht) + dimension_(from S_dimen_.end to S_dimen_.end+(T2.x,0),-9, + "15.4" "15.6",textht*4) + line from E_dimen_.start to (T2,T1) chop 0 chop 1 + dimension_(from S_dimen_.end to S_dimen_.end+(T3.x,0),-9, + "21.9" "22.1",textht*4) + line from E_dimen_.start to T3 chop 0 chop 1 + dimension_(from S_dimen_.end to S_dimen_.end+(T4.x,0),-9, + "31.9" "32.1",textht*4) + line from E_dimen_.start to (T4,T3) chop 0 chop 1 + dimension_(from S_dimen_.end to S_dimen_.end+(T5.x,0),-9, + "41.2" "41.4",textht*4) + line from E_dimen_.start to (T5,T4) chop 0 chop 1 + line from S_dimen_.start to T0 chop 0 chop 1 + dimension_(from (0,d7/2) right T6.x,8,"9.6" "9.4",3*textht) + line from E_dimen_.start to (T6.x,d4/2) chop 0 chop 1 + ctrline(from (-3,0) to T5+(3,0),T5.x/2) + ctrline(from (-3,d6/2) right T1.x+6) + ctrline(from (-3,-d6/2) right T1.x+6) + dimension_(from T5-(0,d1/2) to T5+(0,d1/2),-14, + dialabel("20.13" "20.00",4*textht),textht*3) + dimension_(from T5-(0,d2/2) to T5+(0,d2/2),-35, + dialabel("31.8" "31.6",3*textht),textht*3) + arrow <- from (T5.x+6,d1/2) by (Rect_(20,75)) then right 6 + Y14_frame(Y14_cir_,"0.06" wid 3*textht,"A","B") with .w at Here + Y14_frame("C") with .n at last [].se+(-6,-8) +thicklines_(1) + datumarrow(from last [].n up 8) +thinlines_ + arrow <- from (T5.x+6,-d2/2) by (Rect_(10,-75)) then right 4 + Y14_frame(Y14_cir_,"0.1" wid textht*2,"C") with .w at Here + arrow <- from ((T3.x+T4.x)/2,d3/2+adj) by (Rect_(30,75)) then right 4 + "M42 X 1.5 - 6g" wid 9*textht ljust + Y14_frame(Y14_pos_,Y14_dia_;"0.1" wid textht*2;"(M)","C";"(M)") \ + with .nw at last "".sw+(0,-2) + line from (T2.x,-T1.y) up 25 chop 1 chop 0 + Y14_frame(Y14_par_,"0.06" wid 3*textht,"A") with .sw at Here + Y14_frame(Y14_sur_," 0.1 " wid 3*textht,"A") with .sw at last [].nw + arrow <- from (0,-d6/2+10) left 13 + Y14_frame(Y14_fla_,"0.02" wid 4*textht) with .e at Here + Y14_frame("A") with .n at last [].s+(0,-6) + datumarrow(from last [].n up 6) + ] + +Topview:[ + C: circle diam d7 + for i=0 to 7 do { circle diam d8 at C+(Rect_(d6/2,i/8*360)) } + C5: circle diam d5 at C + C4: circle diam d3+2*adj at C + C3: circle dashed diam d3 at C + C2: circle diam d2 at C + C1: circle diam d1 at C + +thinlines_ + dimension_(from C.w-(0,10) to C.e-(0,10),-C.rad-15, + dialabel("100" "99",textht*3),textht*5) + dimension_(from C5.w-(0,5) to C5.e-(0,5),-C.rad-5, + dialabel("57.2" "56.8",textht*4),textht*5) + arrow <-> from C+(Rect_(d6/2,-120)) to C+(Rect_(d6/2,60)) + line from last arrow.end to C+(Rect_(d7/2+6,60)) then right 4 + dialabel("86.2" "85.8",textht*4) with .w at Here+(1,0) + ctrline(from (C.x-(d6-d7/2),C.y) to (C.x+(d6-d7/2),C.y)) + ctrline(from (C.x,C.y-d6/2+d8/2) to (C.x,C.y+d6/2-d8/2)) + for_(0,315,45,`ctrarcr(C,d6/2,(m4x-22.5)*dtor_,(m4x+22.5)*dtor_) + ctrline(from C+(Rect_(d6-d7/2,m4x)) to C+(Rect_(d7/2,m4x))) ') + arcdimension_(from C+(0,d7/2) to C+(Rect_(d7/2,135)) with .c at C, + 8,"8X 45`'iflatex(^\circ)" wid textht*3.5,15,1) + ifsvg("svg_deg" wid textht*2/3 with .w at last "".e) + move to C+(0,d6/2) + arrow <- from Here+(Rect_(8/2,75)) to Here+(Rect_(25,75)) then right_ 3 + "8X" wid 2*textht ljust + linethick_(1); [Y14_dia_] with .w at last "".e+(1,0) + "7.9 - 8.1" wid 8*textht ljust + Y14_frame(Y14_pos_,Y14_dia_;"0.14" wid 3*textht;"(M)","A","C") \ + with .nw at 2nd last "".sw+(0,-2) + + ] with .C at Section.Orig+(4.5*scale,0) + + +command iflatex(`"}"',ifsvg(`"</g>"')) +.PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/ex01SVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/ex01SVG.m4 index 3a20d90a182..b8787d15396 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/ex01SVG.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/ex01SVG.m4 @@ -1,7 +1,56 @@ .PS -# ex01.m4 +# TimerSVG.m4 cct_init(svg_font(sans-serif,10.5bp__)) +define(`ic555',`[Chip: box ht boxwid wid boxwid "555" + P7: "7" ljust at 1/6<Chip.sw,Chip.nw> + P6: "6" ljust at 1/2<Chip.sw,Chip.nw> + P2: "2" ljust at 5/6<Chip.sw,Chip.nw> + P4: "4" below at 1/3<Chip.nw,Chip.ne> + P8: "8" below at 2/3<Chip.nw,Chip.ne> + P3: "3" rjust at Chip.e + P1: "1" above at Chip.s + ]') + +Timer: [ + define(`elen_',`linewid') +Vs: dot + down_ + variable(`resistor(,E); llabel(,svg_norm(1 M`'svg_ohm))'); + resistor(,E); llabel(,svg_norm(100 k`'svg_ohm)) + capacitor(,E); llabel(svg_norm(220 svg_micro`'F)) +Zero: dot + + dot(at Vs+(elen_*4/3,0)) + resistor(,E); llabel(,svg_norm(33 k`'svg_ohm)) + line to (Here,Zero) chop 0 chop elen_ +C2: capacitor; llabel(svg_norm(0.1 svg_micro`'F)) + dot + +IC1: ic555 with .P7 at C2.start + (elen_,0) + line from IC1.P4 to (IC1.P4,Vs); dot + line from IC1.P8 to (IC1.P8,Vs); dot + line from IC1.P1 to (IC1.P1,Zero); dot + line from IC1.P2 to (C2,IC1.P2); dot + crossover(from IC1.P7 to (Zero,IC1.P7),R,C2); dot + line from IC1.P6 left elen_/2 then down IC1.P6.y-IC1.P7.y; dot + line from IC1.P3 right elen_*2/3 +R: dot + line right_ elen_/3 +B: buzzer(,,C) with .In3 at Here + line from B.In1 to (R,B.In1) + reversed(`diode',to (Here,Vs),LE); "red" at last line.c+(elen_/2,0) + resistor(down_ elen_ from R,E); llabel(,svg_norm(470 svg_ohm)) + diode(to (Here,Zero),LE); {"green" wid 0.4 at last line.c+(elen_*2/3,0)} + line to Zero chop 0 chop -elen_ + line up_ (Vs.y-Here.y)/3 + battery(up_ (Vs.y-Here.y)/3); rlabel(,,svg_norm(9 V)) + switch(to (Here,Vs),,D) + line to (R,Vs) +] +Ex01: [ +# ex01.m4 + linewid = linewid*1.5 # let's make the circuit elements bigger than usual define(`elen_',linewid) # but not longer @@ -10,11 +59,13 @@ define(`elen_',linewid) # but not longer Vin: source(up_ elen_ + 2*del, V); llabel(,v`'svg_sub(s),) switch(right_ elen_,,C); rlabel(,t = svg_norm(0),) - resistor; llabel(,svg_norm(47 ohm),); b_current(i`'svg_sub(R),above rjust) + resistor; llabel(,svg_norm(47 ohm),); b_current() + { "svg_it(i`'svg_sub(R))" at last arrow.end+(0,3bp__) above rjust } line right_ elen_/2 then down_ del - parallel_(`inductor(,W); llabel(,"L" wid 0.15,); b_current(i`'svg_sub(L))', + P:parallel_(`L:inductor(,W); llabel(,"L" wid 0.15,); b_current()', `capacitor(,C); rlabel(+,v`'svg_sub(C),-); llabel(,,C)') + { "svg_it(i`'svg_sub(L))" at P.E1.L.start+(2bp__,0) ljust below } line to (Here,Vin.start) then to Vin.start define(`meshcurrent',`[arc -> cw with .c at (0,0) \ @@ -23,6 +74,7 @@ Vin: source(up_ elen_ + 2*del, V); llabel(,v`'svg_sub(s),) right_ meshcurrent(del,i`'svg_sub(2)) at last[].C meshcurrent(2*del,i`'svg_sub(1)) at Vin.start + (4*del,3*del) + ] with .sw at Timer.se+(0.5,0) command "</g>" # end font .PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/ex05SVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/ex05SVG.m4 index 0ca39bf4f54..52284a3e334 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/ex05SVG.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/ex05SVG.m4 @@ -1,21 +1,26 @@ .PS -# ex05.m4 +# ex05SVG.m4 darrow_init - fillval = 0.8 # environmental variable +Kalman: [ + fillval = 0.8 - dx = boxht/5 # diagram parameters wrt scaled env variables + boxht = 0.35 + boxwid = 1.5*boxht + dx = boxht/5 circlerad = boxht*3/8 extlen=4*dx indel = boxht/3 + define(`dlthick',dlthick*3/4) -COb: box fill_ "CO" - { line right textht*0.5 from COb+(0,textht*0.5) } +define(`overbar',`line right textht*0.8 \ + with .c at last box.c + ((`$1')*textht,0.7*textht)') + +COb: box fill_ "CO"; overbar(0.5) CO:box fill_ with .nw at last box.se+(dx,-dx) "CO" CbOb: box fill_ with .nw at last box.se+(dx,-dx) "CO" - { line right textht*1.0 with .c at CbOb+(-textht*0.1,textht*0.5) } -CbO: box fill_ with .nw at last box.se+(dx,-dx) "CO" - { line left textht*0.5 from CbO+(-textht*0.2,textht*0.5) } + overbar(-0.5); overbar(0.5) +CbO: box fill_ with .nw at last box.se+(dx,-dx) "CO"; overbar(-0.5) dline(from CbO.s down_ dx,,t,,!-) dright @@ -28,7 +33,7 @@ NE: (CbO.e,COb.n)+(dx,dx) SB: shadebox(box wid NE.x-SW.x ht NE.y-SW.y with .sw at SW) U: COb.w-(3*dx+extlen,0) - {"svg_bf(u)" wid 0.1 rjust at U} + {"svg_it(U)" wid 0.1 rjust at U} dline(from U right_ extlen+dx,,t,,|-) TU: dtee(R) {darrow(to COb.w,t)} @@ -60,10 +65,51 @@ TU: dtee(R) darrow(left_ from Sum.w to Dum.e) dline(from Dum.w to (SB.w-(0.1,0),Dum)); darrow(to (U,Here)) - {"svg_bf(y)" rjust} + {"svg_it(Y)" rjust} move left 0.23 circle at Sum circle at Dum + ] +Coxeter: [ +# Coxeter.m4 + + customlinethick = 1.5 + + linethick = customlinethick + define(`dotrad_',`(3/2*linethick pt__)') + + Orig: (0,0) + for i=0 to 4 do { P[i]: dot(at (i*linewid,0)) } + line from Orig to P[4] + P[-1]: dot(at (Rect_(linewid, 120))); line to Orig + P[-2]: dot(at (Rect_(linewid,-120))); line to Orig + + Pa: dot(at P[4]+(linewid,0)); "svg_it(a)" at last [].n above + arrow from P[4] to Pa chop linewid/4 + Pd: dot(at Pa+(linewid,0)); "svg_it(d)" at last [].w rjust + Pe: dot(at Pd+(linewid,0)); "svg_it(e)" at last [].n above + Pf: dot(at Pe+(linewid,0)); "svg_it(f)" at last [].n above + Pb: dot(at Pd+(Rect_(linewid,120))); "svg_it(b)" at last [].w rjust + Pc: dot(at Pd+(Rect_(linewid,-120))); "svg_it(c)" at last [].w rjust + line from Pb to Pd then to Pc + line from Pd to Pf + + define(`customarc', + `pushdef(`dfillcolor',`0.7,0.7,0.7') linethick_(0.4); dnl + Darc(`$1',linewid, (`$2')*dtor_, (`$3')*dtor_, + thick=linewid/6; wid=linewid*0.3; ht=linewid/6; ends=<->)dnl + linethick_(customlinethick); popdef(`dfillcolor')') + + customarc((linewid,-linewid/3), 25,155) + "svg_it(d)" at (linewid,linewid*2/3) + customarc((2*linewid,-linewid/3), 25,155) + "svg_it(e)" at (2*linewid,linewid*2/3) + customarc((3*linewid,-linewid/3), 25,155) + "svg_it(f)" at (3*linewid,linewid*2/3) + customarc(Orig,130,230); "svg_it(a)" at (Rect_(linewid,180)) + customarc(Orig, 10,110); "svg_it(b)" at (Rect_(linewid, 60)) + customarc(Orig,-110,-10); "svg_it(c)" at (Rect_(linewid,-60)) + ] with .sw at Kalman.se+(15bp__,0) .PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/examplesSVG.htmx b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/examplesSVG.htmx index 825c1d5cf4e..8bec3482229 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/examplesSVG.htmx +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/examplesSVG.htmx @@ -5,29 +5,27 @@ <meta http-equiv="Content-Style-Type" content="text/css"> <!--meta http-equiv="Content-Script-Type" content="text/javascript"--> <TITLE>SVG Examples: Circuit_macros Version XXX</TITLE> +<meta name="keywords" content="HTML" +content='Circuit elements, basic circuits, logic circuits and other diagrams, +electric circuits, resistor, capacitor, inductor, diode, sources, amplifier, +integrator, fuse, switch, antenna, opamp, transformer, relay, contact, jack, +plug, FET, UJT, thyristor, bipolar transistor, nport, windings, timer, +optical isolator, rectifier, bistable, oscillator, CMOS, MOSFET, power supply, +NAND gate, controlled source, synchronous machine, digital circuit, signal-flow +graph, latch, decoder, flipflop, full adder, logic diagram, crossbar switch, +dimensioning, control system, graph, RGB colors, recursion, binary tree, +flowcharts, picture overlay, ASME Y14.5' > + <style type="text/css"> -.svg{display:none} -*>.svg{display:inline} </style> <link rel="shortcut icon" href="../Circuit_macros.ico" type="image/x-icon" /> </HEAD> -<BODY> -<H2>SVG Circuit_macros examples, Version XXX</H2> -<hr> +<!-- --------------------------------------------------------------------- +define(`ifinstr',`ifelse(`$2',,`$1',index(`$1',`$2'),-1, + `ifinstr(shift(shift(shift($@))))',`$3')') -<p> - These diagrams are in .svg format. - <A HREF="examples.pdf">Pdf</A> - and - <A HREF="examples.html">png</A> - versions are also available. - The PDF equivalent can be found in examples.pdf of the distribution. -</p> - <p> - Click on the link to view the source of each diagram. -</p> -<hr> +define(`m4tt',`<g style="font-family:monospace">') define(`cfig',` <p> @@ -40,40 +38,62 @@ define(`cfig',` <!--[if !IE]><!--> <object data="$1.svg" sinclude($1.siz) type="image/svg+xml" class="img"> - </object> <!--<![endif]--> + </object> <![endif]--> + +<br><br> +ifelse(`$2',,,` +<a href="$1.txt" TYPE="text/plain" TARGET="_blank" alt="$1">$1.m4:</a> +`$2' changecom(,)&`#'8194;changecom(`#')') -<br> -<a href="$1.txt" TYPE="text/plain" TARGET="_blank" alt="$1">$1.m4</a> </p> -<hr>') +ifinstr(`$3',y,,`<hr>')') -define(`m4tt',`<g style="font-family:monospace">') +--------------------------------------------------------------------- --> -<!-- -<embed pluginspage="http://www.adobe.com/svg/viewer/install/" /> ---> +<BODY> +<table cellpadding="0" cellspacing="0" width="700px" border="0" align="center" > +<tr> +<td> +<H2>SVG Circuit_macros examples, Version XXX</H2> +<hr> <p> -These diagrams have been adapted from the Circuit_macros examples in -order to test the <em>experimental</em> svg output of dpic. -Generating the line art is relatively straightforward, but -the labeling is not created by a text processor and therefore must be -more basic. Some of these diagrams might benefit from a little more -tweaking of fonts and labels. + This file shows diagrams in .svg format; + <A HREF="examples.html">png</A> + versions are also available. + The PDF equivalent can be found in examples.pdf of the distribution. </p> + <p> -These examples conform to the latest dpic, which has changed the -treatment of text sizing. That is, "Text" ht y sets the true height -of SVG text to y rather than the nominal height as previously. +The diagrams shown below have been adapted from the Circuit_macros +examples in order to test the svg output of dpic. Generating svg line +art is straightforward, but TeX, LaTeX, and related word +processors do not produce svg. Either less-sophisticated text formatting +must be employed or an + <A HREF="https://en.wikibooks.org/wiki/LaTeX/Export_To_Other_Formats"> + intermediate format</A> +such as pdf can be +produced, followed by an additional processing step to convert to svg. +Two possibilities for the latter are + <A HREF="https://www.ctan.org/pkg/dvisvgm">dvisvgm</A> +and + <A HREF="https://github.com/dawbarton/pdf2svg">pdf2svg</A> although +there may be font-related issues for some diagrams. +<br> +Many circuit and similar diagrams intended for the web do not +require sophisticated labels, however; the examples shown below might +be representative. </p> <p> + Click on the link to view the source of each diagram. +</p> +<hr> +<p> There are a number of other issues: <ul> <li> Embedding .svg files in html documents with the <embed> or <object> tag seems to be a perennial issue. <li> This file has been tested mainly by using Firefox. - Chrome also seems to work well with two issues detected to date: - a difference handling color fills and text links in svg. <li> The Adobe reader apparently requires a line of the form <br> <embed src="figure.svg" width="x" height="y" type="image/svg+xml" /> @@ -86,11 +106,11 @@ There are a number of other issues: otherwise this could be tedious. <li> The default font face is not specified in all of these diagrams but is inherited from the enclosing document, so the appearance of labels can - differ depend on the browser. Some of these diagrams set the font at + differ depending on the browser. Some of these diagrams set the font at the beginning of the diagram source. <li> The <svg tag may require modification from the default used for this test. Dpic might be modified to - allow the generation of custom headers but that has not yet been done. + allow the generation of custom headers but that has not been done. <li> Diagrams such as these contain text labels that have to be treated differently from the LaTeX-compatible versions. Apparently there is no direct way to know the bounding box of arbitrary svg @@ -103,7 +123,7 @@ There are a number of other issues: Rather than patch the original source files for svg production, edited copies have been used. The configuration file svg.m4 read by m4 prior to libcct.m4 contains the following macros defined for svg. - Others should be defined to exercise some of the media capabilties of svg. + Others could be defined to exercise some of the media capabilties of svg. They are subject to change: <ul> <li> @@ -161,191 +181,511 @@ There are a number of other issues: <li>m4tt svgLinkString</g> as above but for strings attached to objects <li> Greek and other symbols: -<table cellpadding="0" cellspacing="0" width="100%" > -<table cellpadding="0" cellspacing="0" width="100%" > +<!-- + Reference: + https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references + --> +<hr width="100%" align="left"> +<table cellpadding="2" cellspacing="0" width="75%" > <tr> -<td width="8%"> m4tt svg_alpha</g> <td align="left"> changecom(,)&`#'945;changecom(`#') -<td width="8%"> m4tt svg_beta</g> <td align="left"> changecom(,)&`#'946;changecom(`#') -<td width="8%"> m4tt svg_Gamma</g> <td align="left"> changecom(,)&`#'915;changecom(`#') -<td width="8%"> m4tt svg_gamma</g> <td align="left"> changecom(,)&`#'947;changecom(`#') -<td width="8%"> m4tt svg_Delta</g> <td align="left"> changecom(,)&`#'916;changecom(`#') -<td width="8%"> m4tt svg_delta</g> <td align="left"> changecom(,)&`#'948;changecom(`#') +<td width="10%"> m4tt svg_alpha</g> <td align="left"> changecom(,)&`#'945;changecom(`#') +<td width="10%"> m4tt svg_beta</g> <td align="left"> changecom(,)&`#'946;changecom(`#') +<td width="10%"> m4tt svg_Gamma</g> <td align="left"> changecom(,)&`#'915;changecom(`#') +<td width="10%"> m4tt svg_gamma</g> <td align="left"> changecom(,)&`#'947;changecom(`#') +<td width="10%"> m4tt svg_Delta</g> <td align="left"> changecom(,)&`#'916;changecom(`#') +<td width="10%"> m4tt svg_delta</g> <td align="left"> changecom(,)&`#'948;changecom(`#') <td width="10%"> m4tt svg_epsilon</g> <td align="left"> changecom(,)&`#'949;changecom(`#') -<td width="8%"> m4tt svg_zeta</g> <td align="left"> changecom(,)&`#'950;changecom(`#') +<td width="10%"> m4tt svg_zeta</g> <td align="left"> changecom(,)&`#'950;changecom(`#') +</tr> <tr> -<td width="8%"> m4tt svg_eta</g> <td align="left"> changecom(,)&`#'951;changecom(`#') -<td width="8%"> m4tt svg_Theta</g> <td align="left"> changecom(,)&`#'920;changecom(`#') -<td width="8%"> m4tt svg_theta</g> <td align="left"> changecom(,)&`#'952;changecom(`#') -<td width="8%"> m4tt svg_iota</g> <td align="left"> changecom(,)&`#'953;changecom(`#') -<td width="8%"> m4tt svg_kappa</g> <td align="left"> changecom(,)&`#'954;changecom(`#') -<td width="8%"> m4tt svg_Lambda</g> <td align="left"> changecom(,)&`#'923;changecom(`#') -<td width="8%"> m4tt svg_lambda</g> <td align="left"> changecom(,)&`#'955;changecom(`#') -<td width="8%"> m4tt svg_mu</g> <td align="left"> changecom(,)&`#'956;changecom(`#') +<td width="10%"> m4tt svg_eta</g> <td align="left"> changecom(,)&`#'951;changecom(`#') +<td width="10%"> m4tt svg_Theta</g> <td align="left"> changecom(,)&`#'920;changecom(`#') +<td width="10%"> m4tt svg_theta</g> <td align="left"> changecom(,)&`#'952;changecom(`#') +<td width="10%"> m4tt svg_iota</g> <td align="left"> changecom(,)&`#'953;changecom(`#') +<td width="10%"> m4tt svg_kappa</g> <td align="left"> changecom(,)&`#'954;changecom(`#') +<td width="10%"> m4tt svg_Lambda</g> <td align="left"> changecom(,)&`#'923;changecom(`#') +<td width="10%"> m4tt svg_lambda</g> <td align="left"> changecom(,)&`#'955;changecom(`#') +<td width="10%"> m4tt svg_mu</g> <td align="left"> changecom(,)&`#'956;changecom(`#') +</tr> <tr> -<td width="8%"> m4tt svg_nu</g> <td align="left"> changecom(,)&`#'957;changecom(`#') -<td width="8%"> m4tt svg_Xi</g> <td align="left"> changecom(,)&`#'926;changecom(`#') -<td width="8%"> m4tt svg_xi</g> <td align="left"> changecom(,)&`#'958;changecom(`#') -<td width="8%"> m4tt svg_Pi</g> <td align="left"> changecom(,)&`#'928;changecom(`#') -<td width="8%"> m4tt svg_pi</g> <td align="left"> changecom(,)&`#'960;changecom(`#') -<td width="8%"> m4tt svg_rho</g> <td align="left"> changecom(,)&`#'961;changecom(`#') -<td width="8%"> m4tt svg_Sigma</g> <td align="left"> changecom(,)&`#'931;changecom(`#') -<td width="8%"> m4tt svg_sigma</g> <td align="left"> changecom(,)&`#'963;changecom(`#') +<td width="10%"> m4tt svg_nu</g> <td align="left"> changecom(,)&`#'957;changecom(`#') +<td width="10%"> m4tt svg_Xi</g> <td align="left"> changecom(,)&`#'926;changecom(`#') +<td width="10%"> m4tt svg_xi</g> <td align="left"> changecom(,)&`#'958;changecom(`#') +<td width="10%"> m4tt svg_Pi</g> <td align="left"> changecom(,)&`#'928;changecom(`#') +<td width="10%"> m4tt svg_pi</g> <td align="left"> changecom(,)&`#'960;changecom(`#') +<td width="10%"> m4tt svg_rho</g> <td align="left"> changecom(,)&`#'961;changecom(`#') +<td width="10%"> m4tt svg_Sigma</g> <td align="left"> changecom(,)&`#'931;changecom(`#') +<td width="10%"> m4tt svg_sigma</g> <td align="left"> changecom(,)&`#'963;changecom(`#') +</tr> <tr> -<td width="8%"> m4tt svg_tau</g> <td align="left"> changecom(,)&`#'964;changecom(`#') +<td width="10%"> m4tt svg_tau</g> <td align="left"> changecom(,)&`#'964;changecom(`#') <td width="10%"> m4tt svg_upsilon</g> <td align="left"> changecom(,)&`#'965;changecom(`#') -<td width="8%"> m4tt svg_Phi</g> <td align="left"> changecom(,)&`#'934;changecom(`#') -<td width="8%"> m4tt svg_phi</g> <td align="left"> changecom(,)&`#'966;changecom(`#') -<td width="8%"> m4tt svg_chi</g> <td align="left"> changecom(,)&`#'967;changecom(`#') -<td width="8%"> m4tt svg_Psi</g> <td align="left"> changecom(,)&`#'936;changecom(`#') -<td width="8%"> m4tt svg_psi</g> <td align="left"> changecom(,)&`#'968;changecom(`#') -<td width="8%"> m4tt svg_Omega</g> <td align="left"> changecom(,)&`#'937;changecom(`#') +<td width="10%"> m4tt svg_Phi</g> <td align="left"> changecom(,)&`#'934;changecom(`#') +<td width="10%"> m4tt svg_phi</g> <td align="left"> changecom(,)&`#'966;changecom(`#') +<td width="10%"> m4tt svg_chi</g> <td align="left"> changecom(,)&`#'967;changecom(`#') +<td width="10%"> m4tt svg_Psi</g> <td align="left"> changecom(,)&`#'936;changecom(`#') +<td width="10%"> m4tt svg_psi</g> <td align="left"> changecom(,)&`#'968;changecom(`#') +<td width="10%"> m4tt svg_Omega</g> <td align="left"> changecom(,)&`#'937;changecom(`#') +</tr> <tr> -<td width="8%"> m4tt svg_omega</g> <td align="left"> changecom(,)&`#'969;changecom(`#') -<td width="8%"> m4tt svg_micro</g> <td align="left"> changecom(,)&`#'956;changecom(`#') -<td width="8%"> m4tt svg_ohm</g> <td align="left"> changecom(,)&`#'937;changecom(`#') -<td width="8%"> m4tt svg_lt</g> <td align="left"> changecom(,)&`#'60;changecom(`#') -<td width="8%"> m4tt svg_gt</g> <td align="left"> changecom(,)&`#'62;changecom(`#') -<td width="8%"> m4tt svg_leq</g> <td align="left"> changecom(,)&`#'8804;changecom(`#') -<td width="8%"> m4tt svg_geq</g> <td align="left"> changecom(,)&`#'8805;changecom(`#') -<td width="8%"> m4tt svg_prime</g> <td align="left"> changecom(,)&`#'8242;changecom(`#') +<td width="10%"> m4tt svg_omega</g> <td align="left"> changecom(,)&`#'969;changecom(`#') +<td width="10%"> m4tt svg_micro</g> <td align="left"> changecom(,)&`#'956;changecom(`#') +<td width="10%"> m4tt svg_ohm</g> <td align="left"> changecom(,)&`#'937;changecom(`#') +<td width="10%"> m4tt svg_lt</g> <td align="left"> changecom(,)&`#'60;changecom(`#') +<td width="10%"> m4tt svg_gt</g> <td align="left"> changecom(,)&`#'62;changecom(`#') +<td width="10%"> m4tt svg_leq</g> <td align="left"> changecom(,)&`#'8804;changecom(`#') +<td width="10%"> m4tt svg_geq</g> <td align="left"> changecom(,)&`#'8805;changecom(`#') +<td width="10%"> m4tt svg_prime</g> <td align="left"> changecom(,)&`#'8242;changecom(`#') +</tr> <tr> -<td width="8%"> m4tt svg_backsl</g> <td align="left"> changecom(,)&`#'92;changecom(`#') -<td width="8%"> m4tt svg_pound</g> <td align="left"> changecom(,)&`#'35;changecom(`#') -<td width="8%"> m4tt svg_comma</g> <td align="left"> changecom(,)&`#'44;changecom(`#') -<td width="8%"> m4tt svg_lparen</g> <td align="left"> changecom(,)&`#'40;changecom(`#') -<td width="8%"> m4tt svg_rparen</g> <td align="left"> changecom(,)&`#'41;changecom(`#') -<td width="8%"> m4tt svg_emsp</g> <td align="left"> |changecom(,)&`#'8195;changecom(`#')| -<td width="8%"> m4tt svg_ensp</g> <td align="left"> |changecom(,)&`#'8194;changecom(`#')| -<td width="8%"> m4tt svg_thinsp</g> <td align="left"> |changecom(,)&`#'8201;changecom(`#')| +<td width="10%"> m4tt svg_backsl</g> <td align="left"> changecom(,)&`#'92;changecom(`#') +<td width="10%"> m4tt svg_pound</g> <td align="left"> changecom(,)&`#'35;changecom(`#') +<td width="10%"> m4tt svg_comma</g> <td align="left"> changecom(,)&`#'44;changecom(`#') +<td width="10%"> m4tt svg_lparen</g> <td align="left"> changecom(,)&`#'40;changecom(`#') +<td width="10%"> m4tt svg_rparen</g> <td align="left"> changecom(,)&`#'41;changecom(`#') +<td width="10%"> m4tt svg_circ</g> <td align="left"> changecom(,)&`#'710;changecom(`#') +<td width="10%"> m4tt svg_deg</g> <td align="left"> changecom(,)&`#'176;changecom(`#') +</tr> </table> +<table cellpadding="2" cellspacing="0" width="75%" > +<tr> +<td width="8%"> m4tt svg_emsp</g> <td width="50px" align="left"> |changecom(,)&`#'8195;changecom(`#')| +<td width="8%"> m4tt svg_ensp</g> <td width="50px" align="left"> |changecom(,)&`#'8194;changecom(`#')| +<td width="8%"> m4tt svg_thinsp</g> <td width="50px" align="left"> |changecom(,)&`#'8201;changecom(`#')| +</tr> +</table> +<hr width="100%" align="left"> </ul> <li> Inkscape: It may be efficient to define elements by macro and to - place them using a WYSIWYG graphics editor. A draft page intended + place them using a wysiwyg graphics editor. A draft page intended for Inkscape is included. A reasonable variety of elements is defined but many more could be added and they should be customized for - particular applications. + particular applications. Adjustments may also have to be made to + obtain the proper snap-to actions. <li> Link experiments: Click on the resistor or source of quickSVG to go to external files in new windows. Click on "n-port" in NportSVG to replace the diagram and then "back" to return. - <li> Some of the assumptions used to create this draft may be naive. Comments - are welcome. + <li> Some of the assumptions used to create this draft may be + na&`#'239;ve. + Comments are welcome. </ul> + +<!-- +<embed pluginspage="http://www.adobe.com/svg/viewer/install/" /> +--> + +<hr> + +<table> +<tr> +<td width="50%"> +<table><tr>cfig(quickSVG, + SVG produced by dpic,y) +<!-- <tr> SVG produced by dpic --> </table> +<td> +<table><tr>cfig(quick, + SVG produced from quick.pdf by dvisvgm,y) +<!-- <tr> SVG produced from quick.pdf by dvisvgm --> </table> +</table> + <hr> -cfig(quickSVG) -cfig(CctTableSVG) -cfig(DiodesSVG) -cfig(EmarrowsSVG) -cfig(SourcesSVG) -cfig(VariableSVG) -cfig(AmpTableSVG) -cfig(FusesSVG) -cfig(SwitchesSVG) -cfig(GroundsSVG) -cfig(AntennasSVG) -cfig(AudioSVG) -cfig(OpampSVG) -cfig(XformSVG) -cfig(NPDTSVG) -cfig(ContactSVG) -cfig(ContactsSVG) -cfig(relaycoilSVG) -cfig(RelaySVG) -cfig(JackSVG) -cfig(ConnSVG) -cfig(PconnSVG) -cfig(HeadersSVG) -cfig(ConnectorsSVG) -cfig(fetSVG) -cfig(ujtSVG) -cfig(thyristorSVG) -cfig(BipSVG) -cfig(TgateSVG) -cfig(NportSVG) -cfig(NLGSVG) -cfig(WindingsSVG) -cfig(ex01SVG) -cfig(TimerSVG) -cfig(OptoisoSVG) -cfig(MixerSVG) -cfig(PushPullSVG) -cfig(QuantumSVG) -cfig(SQUIDSVG) -cfig(SixpoleSVG) -cfig(ex18SVG) -cfig(MCSVG) -cfig(ex10SVG) -cfig(ThreeSVG) -cfig(ex17SVG) -cfig(ex02SVG) -cfig(ex12SVG) -cfig(pwrsupplySVG) -cfig(TTLnandSVG) -cfig(I2LSVG) -cfig(SchottkySVG) -cfig(ex11SVG) -cfig(ex04SVG) -cfig(CsourceSVG) -cfig(DriveSVG) -cfig(ex16SVG) -cfig(ex03SVG) -cfig(MotorControlSVG) -cfig(RectifiersSVG) -cfig(HeathkitSVG) -cfig(lcctSVG) -cfig(TubediagsSVG) -cfig(sfgSVG) -cfig(LogicSVG) -cfig(ex08SVG) -cfig(DecoderSVG) -cfig(ex21SVG) -cfig(MultiplexerSVG) -cfig(DemultiplexerSVG) -cfig(ShiftRSVG) -cfig(AdderSVG) -cfig(CanLogicSVG) -cfig(AlogixSVG) -cfig(ABlogixSVG) -cfig(XORSVG) -cfig(paletteSVG) -cfig(ex00SVG) -cfig(controlSVG) -cfig(GrayCodeSVG) -cfig(CrossbarSVG) -cfig(ByteSVG) -cfig(RotboxSVG) -cfig(ex06SVG) -cfig(ex09SVG) -cfig(ex05SVG) -cfig(LoglogSVG) -cfig(randomSVG) -cfig(expSVG) -cfig(graysurfSVG) -cfig(shapesSVG) -cfig(AntiqueClockSVG) -cfig(cscSVG) -cfig(roseSVG) -cfig(diamondSVG) -cfig(wormSVG) -cfig(ButtonsSVG) -cfig(DiniSVG) -cfig(SierpinskiSVG) -cfig(recycleSVG) -cfig(ex15SVG) -cfig(CountingSVG) -cfig(CrowSVG) -cfig(FlowSVG) +cfig(CctTableSVG, + Two-terminal elements, showing some variations) + +cfig(DiodesSVG, + Diodes: a m4tt`'K</g> in the second argument draws an open + arrowhead) + +cfig(EmarrowsSVG, + Radiation arrows) + +cfig(SourcesSVG, + Sources and source-like elements) + +cfig(VariableSVG, + Arrows and marks indicating variability) + +cfig(AmpTableSVG, + Macros m4tt`'amp`,' delay</g>`,' and m4tt`'integrator</g>) + +cfig(FusesSVG, + Macros m4tt`'fuse</g> and m4tt`'cbreaker</g>) + +cfig(SwitchesSVG, + The switch macros; m4tt`'switch(`,'`,'`,'L|B|D)</g> is a wrapper + for m4tt`'lswitch</g>`,' m4tt`'bswitch</g>`,' and m4tt`'dswitch</g>) + +cfig(GroundsSVG, + Ground symbols) + +cfig(AntennasSVG, + Antenna symbols) + +cfig(AudioSVG, + Audio elements) + +cfig(OpampSVG, + The opamp) + +cfig(XformSVG, + The transformer element`,' drawing direction down) + +cfig(NPDTSVG, + Double throw with the m4tt`'NPDT</g> macro) + +cfig(ContactSVG, + A non-exhaustive sampling of m4tt`'contact</g> macro variations) + +cfig(ContactsSVG, + The m4tt`'contacts</g> macro) + +cfig(relaycoilSVG, + The m4tt`'relaycoil</g> macro) + +cfig(RelaySVG, + Some variants of the m4tt`'relay</g> macro) + +cfig(JackSVG, + The m4tt`'jack</g> and m4tt`'plug</g> macros) + +cfig(ConnSVG, + The m4tt`'tstrip`,' ccoax`,' tconn</g>`,' and m4tt`'tbox</g> macros) + +cfig(PconnSVG, + The m4tt`'pconnex</g> macro) + +cfig(HeadersSVG, + The m4tt`'Header</g> macro) + +cfig(ConnectorsSVG, + Some connectors with simple geometry and lists of labels) + +cfig(fetSVG, + FETs`,' showing programmable components and example customizations) + +cfig(ujtSVG, + UJT examples) + +cfig(thyristorSVG, + Thyristor examples) + +cfig(BipSVG, + Bipolar transistors (drawing direction: up)) + +cfig(TgateSVG, + The m4tt`'tgate</g> and m4tt`'ptrans</g> elements) + +cfig(NportSVG, + The m4tt`'nport</g> and m4tt`'nterm</g> macros) + +cfig(NLGSVG, + Some customizations of m4tt`'nport</g>) + +cfig(WindingsSVG, + The macro + m4tt`'winding(L|R`,'diam`,'pitch`,'turns`,'core wid`,'core color)</g>) + +cfig(ex01SVG, + Two simple labeled circuits) + +cfig(ex02SVG, + Elements at obtuse angles) + +cfig(OptoisoSVG, + Optical isolator: a circuit with right or left orientation) + +cfig(MixerSVG, + A balanced mixer`,' using m4tt`'mosfet</g> and a custom transformer) + +cfig(PushPullSVG, + A push-pull mixer`,' showing FETs with multiple gates) + +cfig(QuantumSVG, + A quantum circuit) + +cfig(SQUIDSVG, + Superconducting quantum interface device (drawing direction down)) + +cfig(SixpoleSVG, + A six-pole filter) + +cfig(ex18SVG, + Precision half-wave rectifier and a tunnel diode circuit + (illustrating m4tt`'opamp`,' diode`,' resistor`,' ground`,'</g> + and labels)) + +cfig(MCSVG, + A three-phase switched AC-AC converter and a DC-DC converter) + +cfig(ex10SVG, + Non-planar graph and bistable circuit + (illustrating the m4tt`'crossover</g> macro and colored elements)) + +cfig(ThreeSVG, + Three-phase oscillator) + +cfig(ex17SVG, + A repetitive network created by Pic looping and + a skewed circuit used to test the macro m4tt`'parallel_</g>) + +cfig(ex12SVG, + A CMOS NAND gate`,' a test circuit`,' and an XMOSFET example) + +cfig(pwrsupplySVG, + An elementary power supply circuit with colored elements`,' + and a multiple-winding transformer with 3-phase rectifier) + +cfig(TTLnandSVG, + TTL NAND gate illustrating a transistor with multiple emitters) + +cfig(I2LSVG, + Gate circuit and equivalent embedded components + illustrating multiple collectors) + +cfig(SchottkySVG, + A 4-input NAND circuit illustrating the m4tt`'S</g> (Schottky) + option of m4tt`'bi_trans</g>) + +cfig(ex11SVG, + Transistor radio audio chain) + +cfig(ex04SVG, + Labels on non-manhattan elements) + +cfig(CsourceSVG, + Realization of a controlled source + (illustrating stacked element labels)) + +cfig(DriveSVG, + Synchronous machine driven by variable-speed drive and rectifier) + +cfig(ex16SVG, + A rate 1/2 binary convolutional coder and its state diagram) + +cfig(ex03SVG, + Digital filter) + +cfig(MotorControlSVG, + Motor control connections) + +cfig(RectifiersSVG, + Rectifier circuits and waveforms) + +cfig(HeathkitSVG, + The power supply of a Heathkit AR-15 (Now`,' <i>that</i> + was a receiver!) with custom transformer and other elements`,' + drawn on a grid (partially shown) to aid in placement) + +cfig(lcctSVG, + A digital circuit of moderate size`,' + redrawn from M. P. Maclenan and G. M. Burns`,' + "An Approach to Drawing Circuit Diagrams for Text Books`,'" + Tugboat (12)1`,' March 1991`,' pp. 66-69) + +cfig(UNOSVG, + An Arduino UNO circuit adapted and redrawn) + <!-- + m4tt`'https://content.arduino.cc/assets/UNO-TH_Rev3e_sch.pdf</g> + --> + +cfig(TubediagsSVG, + Electron-tube diagrams: a few bottom-view base diagrams`,' + a generic triode test circuit`,' and a 25-watt audio amplifier adapted + from F. Langford-Smith`,' <i>Radiotron Designers Handbook</i>`,' fourth + edition`,' Harrison`,' NJ: Radio Corporation of America`,' 1952) + +cfig(sfgSVG, + Signal-flow graphs) + +cfig(LogicSVG, + Basic logic gates) + +cfig(ex08SVG, + General-purpose latch: a small logic circuit) + +cfig(DecoderSVG, + Decoder logic`,' constructed using the m4tt`'for_</g> macro) + +cfig(ex21SVG, + Some flip-flops) + +cfig(MultiplexerSVG, + Multiplexer) + +cfig(DemultiplexerSVG, + Demultiplexer) + +cfig(ShiftRSVG, + A 5-bit shift register drawn using a custom flip-flop) + +cfig(AdderSVG, + A full adder and a cascade of n-bit adders) + +cfig(CanLogicSVG, + A way of automatically drawing two-layer logic diagrams) + +cfig(AlogixSVG, + The m4tt`'Autologix(`'<i>Boolean expression</i>; + <i>Boolean expression</i>... `,' <i>options</i>)</g> + macro automatically draws Boolean expressions in function notation. + The function tree is drawn`,' then a row or column of inputs`,' then + the connections. The default result is on the left`,' + a custom element at the top`,' and a tree of gates only is shown + on the right. THe lower examples illustrate the L`,' R`,' and V options.) + +cfig(ABlogixSVG, + The m4tt`'Autologix</g> macro can draw inputs on the left but + the added drawing complexity may require hand tuning with + second-argument options: m4tt`'L</g> puts the inputs on the left`,' + m4tt`'R reverses their order`,' m4tt`'V</g> scans the input arguments + in reverse order`,' and m4tt`'offset=</g>`'<i>value</i> displaces + the array of inputs) + +cfig(XORSVG, + Realizations of the XOR function using m4tt`'Autologix</g>) + +cfig(paletteSVG, + A draft palette of a few elements for Inkscape using + a 1 mm grid) + +cfig(ex00SVG, + Line diagrams) + +cfig(controlSVG, + Control-system block diagrams that do not require m4) + +cfig(GrayCodeSVG, + Gray code 10-bit encoder disk pattern) + +cfig(CrossbarSVG, + A crossbar switch) + +cfig(ByteSVG, + Elementary splines) + +cfig(RotboxSVG, + The macro + m4tt`'rotbox(<i>wid,ht,type,</i>[r|t=<i>val</i>])</g> + draws a box in the current direction) + +cfig(ex06SVG, + Crosshatching by m4tt`'for</g> loops) + +cfig(ex09SVG, + Illustrating the macro + m4tt`'dimension_(<i>linespec`,' offset`,' label`,' </i> + H|W|D|<i>blank width</i>`,' <i>tic offset</i>`,' <-|->)</g>. + A negative second argument implies an offset to the right of the + <i>linespec</i> direction. A <i>label</i> starting with + m4tt`'"</g> or + m4tt`'sprintf</g> is copied literally. If <i>label</i> is an + m4tt`'s_box(...)</g> then setting argument 4 to m4tt`'H</g>`,' + m4tt`'W</g>`,' + or m4tt`'D</g> tailors the blank width to the m4tt`'s_box</g> height`,' + width`,' or diagonal respectively; i.e.`,' m4tt`'W</g> is equivalent to + m4tt`'s_wd+textoffset*2</g>. + The macro m4tt`'arcdimension_</g> is similar but the first argument + specifies the arc to be dimensioned and the second argument is + the outward radial offset of the dimension arrow arc.) + +cfig(Y14-5SVG, + Dimensioning with tolerances according to ASME Y14.5) + Use of m4tt`'darrow</g> and m4tt`'Darc</g>) + +cfig(ex05SVG, + Use of m4tt`'darrow</g> and m4tt`'Darc</g>) + +cfig(LoglogSVG, + A graph drawn using the pic language) + +cfig(GeometrySVG, + A plane geometry example) + +cfig(LyapSVG, + Illustrating a Lyapunov function) + +cfig(randomSVG, + Testing random numbers) + +cfig(expSVG, + Test of m4tt`'project</g> and other m4tt`'lib3D</g> + macros`,' showing the projection of a solid onto + the <i>y1`,'z1</i> plane by sighting along the x1 axis.) + +cfig(graysurfSVG, + Plotting surfaces using gray scales. A sort algorithm + determines plotting order) + +cfig(shapesSVG, + Basic shapes) + +cfig(AntiqueClockSVG, + An antique clock face) + +cfig(cscSVG, + Conestoga Sailing Club (illustrating the filling of arbitrary + shapes)) + +cfig(roseSVG, + Redrawn from a detail of the set design for the musical + <i>Dracula</i>`,' used for testing m4tt`'dpic</g>. This diagram + consumes much LaTeX main memory but can be produced + directly as pdf using m4tt`'dpic -d</g>`,' + as svg using m4tt`'dpic -g</g>`,' + or as postscript using m4tt`'dpic -r</g> + since no text formatting is required) + +cfig(diamondSVG, + Variations on M. Goossens`,' S. Rahtz`,' and F. Mittelbach`,' + <i>The LaTeX Graphics Companion</i>`,' Addison-Wesley 1997`,' pp. 57-58) + +cfig(wormSVG, + An exercise in calculating RGB colours) + +cfig(ButtonsSVG, + Shading in color) + +cfig(DiniSVG, + Dini surface and an icosahedron) + +cfig(SierpinskiSVG, + The Sierpinski triangle and a Cayley graph: + tests of pic macro recursion) + +cfig(recycleSVG, + Modest repetition and partial fill) + +cfig(ex15SVG, + Simple diagrams that are easily drawn by looping) + +cfig(CountingSVG, + An example of enumeration) + +cfig(CrowSVG, + Illustrating m4tt`'shadebox</g> and a custom crowfoot line + termination) + +cfig(FlowSVG, + A flowchart sampler) <!-- <p> More flow-chart examples? Try <a href="https://buraphakit.sourceforge.io/EFI/EFI_2019_S2_W13.shtml" TARGET="_blank">here.</a> </p> --> -cfig(BtreeSVG) -cfig(TtreeSVG) -cfig(InclepsSVG) + +cfig(BtreeSVG, + Binary trees) + +cfig(InclepsSVG, + Overlaying a figure with line graphics) + cfig(FontsSVG) +</td> +</tr> +</table> </BODY> </HTML> diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/paletteSVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/paletteSVG.m4 index 2bad59ba93a..6128441fc8a 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/paletteSVG.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/paletteSVG.m4 @@ -333,8 +333,8 @@ A:Gridbox( FlipFlop(D) ] with .nw at (0,0) -"A draft palette of a few elements for Inkscape using a 1 mm grid" \ - ljust below at last [].sw +#"A draft palette of a few elements for Inkscape using a 1 mm grid" \ +# ljust below at last [].sw command "</g>" # end font .PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/pwrsupplySVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/pwrsupplySVG.m4 index 843c6660b5e..37c7524070a 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/pwrsupplySVG.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/pwrsupplySVG.m4 @@ -1,42 +1,76 @@ .PS -# Pwrsupply.m4 +# pwrsupply.m4 cct_init ifdef(`m4pco',`resetrgb') - linewid = linewid*1.2 - down_ -T:transformer - line left_ elen_/4 from T.P1 - rgbdraw(0,0,255,fuse(left_ elen_/3,D)) - reversed(`switch') - gap(down_ to (Here,T.P2)) - { fuse(right_ 2*dimen_/5 at last []) } - line to T.P2 - blen = dimen_/2 -W: T.TS+(dimen_,0) -N: W+(blen,blen) -S: W+(blen,-blen) -E: S+(blen,blen) - diode(from W to N) - diode(from S to E) -G:gap(from E+(dimen_*4/3,0) down_ (E.y-S.y)*5/4); llabel("+" wid 0.1*scale,,-) -C:capacitor(down_ G.start.y-G.end.y from 0.5 between E and G.start,C) +Singlephase:[ + linewid = linewid*1.2 + down_ + T:transformer + line left_ elen_/8 from T.P1 + rgbdraw(0,0,1,fuse(left_ elen_/3,D)) + reversed(`switch',left_ elen_*2/3) + gap(down_ to (Here,T.P2)) + { fuse(right_ 2*dimen_/5 at last []) } + line to T.P2 + blen = dimen_/2 + W: T.TS+(dimen_/2,0) + N: W+(blen,blen) + S: W+(blen,-blen) + E: S+(blen,blen) + diode(from W to N) + diode(from S to E) + G: gap(from E+(dimen_,0) down_ (E.y-S.y)*5/4); llabel(+,,-) + C: capacitor(down_ G.start.y-G.end.y from 0.5 between E and G.start,C) + + setrgb(255,0,0) + line from T.S1 to (T.S1,N); line to N + dot + diode(to E); dot + line from E to G.start; dot + dot(at C.start) + resetrgb + + setrgb(0,255,0,,D) + dot(at C.end) + dot(at G.end) + ground + line to (W,Here); line to W; dot + diode(to S); dot + line to (T.S2,Here); line to T.S2 + resetrgb + ] -setrgb(255,0,0) - line from T.S1 to (T.S1,N); line to N - dot - diode(to E); dot - line from E to G.start; dot - dot(at C.start) -resetrgb +Threephase: [ +L:[ loadht = 2*elen_ + Load: ebox(down_ loadht,0.4,0.25); llabel(+,,-) + hsep = dimen_*3/4 + for_(1,3,1, + `line left_ hsep; ifelse(m4x,3,,dot) + { diode(up_ loadht/3) ; line up_ loadht/3; diode(up_ loadht/3) + T`'m4x: ifelse(m4x,3,Here,dot) + line right hsep } ') + ] -setrgb(0,255,0,,D) - dot(at C.end) - dot(at G.end) - ground - line to (W,Here); line to W; dot - diode(to S); dot - line to (T.S2,Here); line to T.S2 -resetrgb +T:[ + X1: transformer(down_ dimen_*2/3,,,,4) + X2: transformer(down_ dimen_*2/3,,,,4) with .P1 at X1.P2 + X3: transformer(down_ dimen_*2/3,,,,4) with .P1 at X2.P2 + line from X1.M4Core1.end to X3.M4Core1.start + line from X1.M4Core2.end to X3.M4Core2.start + for_(1,3,1, + `move to X`'m4x.P2 ; ifelse(m4x,3,,dot) + line left_ dimen_ + P`'m4x: dot(,,1)') + line left_ dimen_/2 from X1.P1 then down X1.P1.y-P3.y; dot + B: X1.S2+(dimen_/2,0) + line from X1.S1 right B.x-X1.S2.x then down X1.S1.y-X3.S1.y then to X3.S1 + line from X2.S1 to (B,X2.S1); dot + ] with .X2.S2 at L.w-(dimen_,0) + + line from T.X1.S2 to (L.T3,T.X1.S2); dot + line from T.X2.S2 to (L.T2,T.X2.S2); dot + line from T.X3.S2 to (L.T1,T.X3.S2); dot +] with .sw at Singlephase.se+(0.3,0) .PE diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/quickSVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/quickSVG.m4 index 7b63ec6db75..3e77ad1694e 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/quickSVG.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/quickSVG.m4 @@ -5,16 +5,16 @@ elen = 0.75 # Variables are allowed; default units are inches move right 0.4 Origin: Here # Position names are capitalized svgLink(SourcesSVG.svg,source(up_ elen)) - llabel(-,v`'svg_sub(s),+) - svgLink(CctTableSVG.svg,resistor(right_ elen)); rlabel(,R,) + llabel(-,svg_it(v`'svg_sub(s)),+) + svgLink(CctTableSVG.svg,resistor(right_ elen)); rlabel(,svg_it(R),) dot { # Save current position and direction capacitor(down_ to (Here,Origin)) #(Here,Origin) = (Here.x,Origin.y) - rlabel(+,v,-); llabel(,,C) + rlabel(+,svg_it(v),-); llabel(,svg_it(C)) dot } # Restore position and direction line right_ elen*2/3 {move right 0.2} - inductor(down_ Here.y-Origin.y); rlabel(,L,); b_current("i") + inductor(down_ Here.y-Origin.y); rlabel(,svg_it(L),); b_current("svg_it(i)") line to Origin .PE # Pic input ends diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/randomSVG.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/randomSVG.m4 index e482d9f1e47..4ca2056d68f 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/randomSVG.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/randomSVG.m4 @@ -6,6 +6,7 @@ NeedDpicTools ################################################################ # hscale(right length,nlabels, # minlabel,maxlabel,[T][N]) +# arg5=T: top axis, N: nolabels define(`hscale',`[ define(`hs_nl',`ifelse(`$2',,5,`$2')') A: line `$1' ; Start: A.start; End: A.end td = 1/(hs_nl-1)*A.len/5 @@ -24,6 +25,7 @@ NeedDpicTools ]') # vscale(up length,nlabels, # minlabel,maxlabel,[R][N] ) +# arg5=R: right axis, N: nolabels define(`vscale',`[ define(`vs_nl',`ifelse(`$2',,5,`$2')') A: line `$1' ; Start: A.start; End: A.end td = 1/(vs_nl-1)*A.len/5 @@ -46,7 +48,7 @@ NeedDpicTools ################################################################ [ - n = 2000 + n = 2000 # number of samples stddev = 0.25 graphsize = 2 diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/tstSVG.htmx b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/tstSVG.htmx index 6bb5ab2029e..d81a22927aa 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/tstSVG.htmx +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/tstSVG.htmx @@ -168,6 +168,9 @@ more basic. <td width="8%"> m4tt svg_emsp</g> <td align="left"> |changecom(,)&`#'8195;changecom(`#')| <td width="8%"> m4tt svg_ensp</g> <td align="left"> |changecom(,)&`#'8194;changecom(`#')| <td width="8%"> m4tt svg_thinsp</g> <td align="left"> |changecom(,)&`#'8201;changecom(`#')| +<tr> +<td width="8%"> m4tt svg_circ</g> <td align="left"> |changecom(,)&`#'710;changecom(`#')| +<td width="8%"> m4tt svg_deg</g> <td align="left"> |changecom(,)&`#'176;changecom(`#')| </table> </ul> diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/xfig/xfiglib.fig b/Master/texmf-dist/doc/latex/circuit-macros/examples/xfig/xfiglib.fig index 6b3d4fb3e48..255d8170c1d 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/examples/xfig/xfiglib.fig +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/xfig/xfiglib.fig @@ -6,7 +6,7 @@ Letter 100.00 Single -2 -# dpic version 2020.06.01 option -x for Fig 3.2 +# dpic version 2021.01.01 option -x for Fig 3.2 1200 2 6 0 0 3975 5025 6 0 0 3975 5025 diff --git a/Master/texmf-dist/doc/latex/circuit-macros/gpic.m4 b/Master/texmf-dist/doc/latex/circuit-macros/gpic.m4 index 16d58c7a158..70e5c384273 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/gpic.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/gpic.m4 @@ -1,7 +1,7 @@ divert(-1) gpic.m4 Initialization for gpic. -* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under * +* Circuit_macros Version 9.4, copyright (c) 2020 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/Master/texmf-dist/doc/latex/circuit-macros/lib3D.m4 b/Master/texmf-dist/doc/latex/circuit-macros/lib3D.m4 index e4698410363..81bde54de0d 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/lib3D.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/lib3D.m4 @@ -3,7 +3,7 @@ lib3D.m4 Macros for rotation, projection, and other operations on argument triples representing 3D vectors. -* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under * +* Circuit_macros Version 9.4, copyright (c) 2020 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * @@ -92,8 +92,9 @@ define(`dcosine3D',`(ifelse(`$1',1,`$2',`$1',2,`$3',`$4'))') define(`length3D',`sqrt((`$1')^2+(`$2')^2+(`$3')^2)') Unit vector define(`unit3D',`sprod3D(1/length3D(`$1',`$2',`$3'),`$1',`$2',`$3')') - Assign the direction cosines to variables - `assign3D([u],[v],[w],x,y,z); eg + + `Assign the direction cosines to variables + assign3D([u],[v],[w],x,y,z); eg assign3D(u,v,w,cross3D(x1,y1,z1,x2,y2,z2)) assigns the 4th arg to u, the 5th to v, and the 6th to w as u, v,or w are nonblank' @@ -101,6 +102,11 @@ define(`assign3D', `ifelse(`$1',,,`$1' = `$4') ifelse(`$2',,,`$2' = `$5') ifelse(`$3',,,`$3' = `$6')') + `vassign3D(name,x,y,z); eg + vassign3D(u,x,y,z) + assigns u[1] to x, u[2] to y, u[3] to z' +define(`vassign3D',`for i_vassign3D = 1 to 3 do { + exec sprintf("`$1'[i_vassign3D] = $%g",i_vassign3D+3) }') Write out the 3 arguments for debug define(`print3D',`print sprintf("`$1'(%g,%g,%g)",`$2',`$3',`$4')') diff --git a/Master/texmf-dist/doc/latex/circuit-macros/libcct.m4 b/Master/texmf-dist/doc/latex/circuit-macros/libcct.m4 index 0ae189ad17f..81d36357c6f 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/libcct.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/libcct.m4 @@ -1,7 +1,7 @@ divert(-1) libcct.m4 -* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under * +* Circuit_macros Version 9.4, copyright (c) 2020 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * @@ -189,11 +189,12 @@ define(`capacitor', line to rvec_(rp_len,0) invis ')') `resistor( linespec, cycles, chars, cycle wid) + cycles: default 3 chars : E=ebox ES=ebox with slash Q=offset - H=squared (default 3 cycles) - N=IEEE (default 3 cycles) + H=squared + N=IEEE (default) V=varistor variant R=to right of drawing direction arg4: cycle width, default dimen_/6' @@ -845,56 +846,113 @@ define(`fuse',`eleminit_(`$1') {[box invis ht_ m4ht wid_ m4wd] at rvec_(rp_len/2,0)} line to rvec_(rp_len,0) invis ') - `arrester( linespec, [G|E|S][D[L]], len, ht ) - G= spark gap (default) - E= gas discharge - S= surge - D= double (creates 3-terminal element) - DL= double, left orientation' + `arrester( linespec, [G|E|S][D[L|R]], + len[:arrowhead ht], ht[:arrowhead wid] ) + arg2 chars: + G= spark gap (default) + g= general (dots) + E= gas discharge + S= box enclosure + C= carbon block + A= electrolytic cell + H= horn gap + P= protective gap + s= sphere gap + F= film element + M= multigap + modifiers: + R= right orientation + L= left orientation + D= 3-terminal element for S, E only with + terminals A, B, G' define(`arrester', - `define(`m4wd',ifelse(`$3',,`dimen_/2',`($3)'))dnl - define(`m4ht',ifelse(`$4',,`dimen_/5',`($4)'))dnl - define(`m4arm',ifinstr(`$2',L,,-))dnl - define(`m4ardna',`patsubst(patsubst(`$2',L),D)')dnl - define(`m4awd',arrowwid*4/3)define(`m4aht',arrowht*2/3)dnl - define(`m4len',`ifinstr(`$2',D,`ifelse(`$1',,dimen_)',`$1')')dnl - ifinstr(`$2',D,[)eleminit_(m4len)ifinstr(`$2',D,,`;{')dnl - ifinstr( m4ardna,S, - `line to rvec_(max(0,rp_len/2-m4wd/2),0) - {lbox(m4wd,m4ht)} - {arrow to rvec_(m4wd*0.4,0) wid m4awd ht m4aht} - ifinstr(`$2',D, - `A: 3rd last line.start; B: last line.end; C: 1/2 between A and B - move to rvec_(m4wd/2,m4arm`'(-m4ht/2)) - Gb: line to rvec_(0,m4arm`'(m4ht*2)) - G: Here]', - `line from rvec_(m4wd,0) to rvec_(max(0,rp_len/2+m4wd/2),0)} - {[box invis ht_ m4ht wid_ m4wd] at rvec_(rp_len/2,0)} - line to rvec_(rp_len,0) invis ') ', - m4ardna,E, - `arrow to rvec_(max(0,rp_len/2-m4wd/8),0) wid m4awd ht m4aht - {dot(at rvec_(-m4aht/4,-m4wd/4),dotrad_*2/3)} - {move to rvec_(m4wd/4,0) - arrow <- to rvec_(max(0,rp_len/2-m4wd/8),0) wid m4awd ht m4aht } - {circle diam m4wd at rvec_(m4wd/8,0)} - ifinstr(`$2',D, - `A: 2nd last arrow.start; B: last arrow.end; C: last circle.c - move to rvec_(m4wd/8,m4arm`'(-m4ht/2)) - Gb: line to rvec_(0,m4arm`'ifelse(`$3',,`dimen_/2',`($3)')) - G: Here]', - `}; {[box invis ht_ m4wd wid_ m4wd] at rvec_(rp_len/2,0)} - line to rvec_(rp_len,0) invis ')', - `define(`m4wd',ifelse(`$3',,`dimen_/8',`($3)'))dnl - arrow to rvec_(max(0,rp_len/2-m4wd/2),0) wid m4awd ht m4aht - { move to rvec_(m4wd,0) - arrow <- to rvec_(max(0,rp_len/2-m4wd/2),0) wid m4awd ht m4aht } + `define(`m4rdna',`patsubst(`$2',D\|L\|R)')dnl + ifelse(m4rdna,,`define(`m4rdna',G)')dnl + define(`m4rL',ifinstr(`$2',L,-))dnl + define(`m4rR',ifinstr(`$2',R,-))dnl + + define(`m4aht',`m4Rightstr(`$3',arrowht*2/3)')dnl + define(`m4awd',`m4Rightstr(`$3',arrowwid*4/3)')dnl + + define(`m4wd', + `ifinstr(m4rdna,C,`m4Leftstr(`$3',dimen_/3)', + m4rdna,F,`m4Leftstr(`$3',dimen_/3)', + m4rdna,s,`m4Leftstr(`$3',dimen_/4)', + m4rdna,E,`m4Leftstr(`$3',dimen_*5/8)', + `m4Leftstr(`$3',dimen_/2)')')dnl + + define(`m4ht', + `ifinstr(Loopover_(`Z',`ifinstr(m4rdna,Z,T)',C,A,s),T, + `m4Leftstr(`$4',dimen_/4)', + ifinstr(m4rdna,F,T),T,`m4Leftstr(`$4',dimen_/3)', + `m4Leftstr(`$4',dimen_/5)')')dnl + ifinstr(`$2',D, - `A: 2nd last arrow.start; B: last arrow.end; C: 1/2 between A and B - move to rvec_(m4wd/2,m4arm`'(-m4awd)) - Gb: line to rvec_(0,m4arm`'ifelse(`$3',,`dimen_/2',`($3)')) - G: Here]', - `}; {[box invis ht_ m4ht wid_ m4wd+2*m4aht] at rvec_(rp_len/2,0)} - line to rvec_(rp_len,0) invis ')')') + `[ define(`m4LL',m4rL)dnl + ifinstr(m4rdna,S, + `R: arrester(ifelse(`$1',,`to rvec_(dimen_,0)'),m4rdna,shift(shift($@))) + Gb: line from R.c+vec_(0,m4LL m4ht/2) to R.c+vec_(0,m4LL (-m4ht*3/2)) ', + m4rdna,E, + `R: arrester(ifelse(`$1',,`to rvec_(dimen_,0)'),m4rdna,shift(shift($@))) + Gb: line from R.c+vec_(0,m4LL m4wd/8) to R.c+vec_(0,m4LL (-m4wd*3/4)) ') + A: R.start; B: R.end; C: R.c; G: Here ]', + + `eleminit_(`$1',elen_) + {line to rvec_(max(0,rp_len/2-m4wd/2),0) + {[ Orig: Here + ifinstr(m4rdna,G, + `{arrow to rvec_(m4aht,0) wid m4awd ht m4aht} + move to rvec_(m4wd,0) + arrow to rvec_(-m4aht,0) wid m4awd ht m4aht', + m4rdna,g, + `{dot(at rvec_(dotrad_,0))}; dot(at rvec_(m4wd-dotrad_,0))', + m4rdna,M, + `{dot(at rvec_(dotrad_,0))} + {dot(at rvec_(m4wd/2,0))}; dot(at rvec_(m4wd-dotrad_,0))', + m4rdna,C, + `lbox(m4wd/3,m4ht); move to rvec_(m4wd/3,0) + lbox(m4wd/3,m4ht)', + m4rdna,A, + `{line to rvec_(m4wd/4,0)} + for_(1,3,1,`line from rvec_(0,m4ht/2) to rvec_(m4wd/4,0) \ + then to rvec_(0,-m4ht/2); move to rvec_(m4wd/4,m4ht/2) + ifelse(m4x,3,,move to rvec_(m4wd/8,0))') ', + m4rdna,H, + `line to rvec_(m4ht,0); round + {arc ifelse(m4rR,-,,c)cw from Here to rvec_(-m4ht,m4rR m4ht) \ + with .c at rvec_(-m4ht,0)} + move to rvec_(m4wd-2*m4ht,0); round + {arc ifelse(m4rR,-,c)cw from Here to rvec_(m4ht,m4rR m4ht) \ + with .c at rvec_(m4ht,0)} + line to rvec_(m4ht,0)', + m4rdna,P, + `{open_arrow(to rvec_(m4aht,0),m4awd,m4aht)} + move to rvec_(m4wd,0) + open_arrow(to rvec_(-m4aht,0),m4awd,m4aht)', + m4rdna,s, + `{line to rvec_(m4ht/2*(sqrt(2)-1),0)} + {arc from rvec_(0,-m4ht/2) to rvec_(0,m4ht/2) \ + with .c at rvec_(-m4ht/2,0)} + move to rvec_(m4wd,0) + {arc from rvec_(0,m4ht/2) to rvec_(0,-m4ht/2) \ + with .c at rvec_(m4ht/2,0)} + {line to rvec_(-m4ht/2*(sqrt(2)-1),0)}', + m4rdna,F, + `{line from rvec_(0,m4ht/2) to rvec_(0,-m4ht/2)} + {line from rvec_(m4wd/2,m4ht/2) to rvec_(m4wd/2,-m4ht/2)} + line from rvec_(m4wd,m4ht/2) to rvec_(m4wd,-m4ht/2)', + m4rdna,S, + `{lbox(m4wd,m4ht)} + arrow to rvec_(m4wd/2,0) wid m4awd ht m4aht', + m4rdna,E, + `{circle diam m4wd at rvec_(m4wd/2,0)} + {arrow to rvec_(m4wd*3/8,0) wid m4awd ht m4aht} + {arrow <- from rvec_(m4wd*5/8,0) to rvec_(m4wd,0) wid m4awd ht m4aht} + dot(at rvec_(m4wd*6/8,m4wd/4),dotrad_*2/3) ') + ] with .Orig at Here } + line from rvec_(m4wd,0) to rvec_(max(0,rp_len/2+m4wd/2),0) } + line invis to rvec_(rp_len,0)') + ') `memristor( linespec, wid, ht )' define(`memristor',`eleminit_(`$1') @@ -1038,7 +1096,7 @@ define(`arrowline',`line ifelse(`$1',,`to rvec_(elen_,0)',`$1') chop lin_leng(last line)/2-arrowht/2 [box invis ht_ arrowwid wid_ arrowht] at last line.c }') - `ground( at position, T, N|F|S|L|P[A]|E, + `ground( at position, T|stem length, N|F|S|L|P[A]|E, D|U|L|R|degrees) T=truncated stem; N=normal ground, F=frame, S=signal, L=low-noise, P=protective, @@ -1047,7 +1105,8 @@ define(`arrowline',`line ifelse(`$1',,`to rvec_(elen_,0)',`$1') define(`ground',`box invis ht 0 wid 0 with .c ifelse(`$1',,`at Here',`$1') define(`m4v',`dimen_/6')define(`m4h',`dimen_/16')dnl {setdir_(ifelse(`$4',,-90,`$4')) - ifelse(`$2',,`line from last box.c to rvec_(dimen_/4,0)') + ifelse(`$2',,`line from last box.c to rvec_(dimen_/4,0)', + `$2',T,,`line from last box.c to rvec_(`$2',0)') ifelse(`$3',F, `{line from rvec_(dimen_/8,m4v-dimen_/12) \ to rvec_(0,m4v) \ @@ -1089,7 +1148,8 @@ define(`ground',`box invis ht 0 wid 0 with .c ifelse(`$1',,`at Here',`$1') to rvec_(2*m4h,-dimen_/14)') resetdir_} ') - `antenna(at position, T, A|L|T|S|D|P|F, U|D|L|R|degrees) + `antenna(at position, T|stem length, A|L|T|S|D|P|F, + U|D|L|R|degrees) arg2=T: truncate stem arg3= A=aerial; L=loop, T=triangle, S=diamond, D=dipole, P=phased, F=fork; @@ -1101,7 +1161,7 @@ define(`antenna',`[ T: Here ifelse( m4atype,L, `T1: rvec_(0,m4h); T2: rvec_(0,-m4h) - ifelse(`$2',,`move to rvec_(m4h*2,0)') + ifelse(`$2',,`move to rvec_(m4h*2,0)', `$2',T,,`move to rvec_(`$2',0)') line from T1 to rvec_(0,m4h) \ then to rvec_(0,m4v/2) \ then to rvec_(m4v-m4h,m4v/2) \ @@ -1114,7 +1174,7 @@ define(`antenna',`[ T: Here then to rvec_(0,-m4h) \ then to T2', m4atype,T, - `ifelse(`$2',,`move to rvec_(m4h*2,0)') + `ifelse(`$2',,`move to rvec_(m4h*2,0)', `$2',T,,`move to rvec_(`$2',0)') line to rvec_(m4v*3/4,m4v*sqrt(3)/4) \ then to rvec_(m4v*3/4,-m4v*sqrt(3)/4) \ then to Here @@ -1122,7 +1182,7 @@ define(`antenna',`[ T: Here to T', m4atype,S, `T1: rvec_(0,m4h); T2: rvec_(0,-m4h) - ifelse(`$2',,`move to rvec_(m4h*2,0)') + ifelse(`$2',,`move to rvec_(m4h*2,0)', `$2',T,,`move to rvec_(`$2',0)') line from T1 to rvec_(0,m4h) \ then to rvec_(m4v*3/4-m4h,m4v*3/4) \ then to rvec_(2*m4v*3/4-m4h,0) \ @@ -1131,20 +1191,20 @@ define(`antenna',`[ T: Here then to T2', m4atype,D, `T1: rvec_(0,m4h); T2: rvec_(0,-m4h) - ifelse(`$2',,`move to rvec_(m4v,0)') + ifelse(`$2',,`move to rvec_(m4v,0)', `$2',T,,`move to rvec_(`$2',0)') { line from T1 to rvec_(0,m4h) \ then to rvec_(0,m4h*3) } { line from T2 to rvec_(0,-m4h) \ then to rvec_(0,-m4h*3) }', m4atype,P, - `ifelse(`$2',,`move to rvec_(m4v*2/3,0)') + `ifelse(`$2',,`move to rvec_(m4h*2/3,0)', `$2',T,,`move to rvec_(`$2',0)') line from T to Here { line from rvec_(0,-m4v/3) \ to rvec_(0,m4v/3) } { line from rvec_(m4h,-m4v*2/3) \ to rvec_(m4h,m4v*2/3) }', m4atype,F, - `ifelse(`$2',,`move to rvec_(m4h*2,0)') + `ifelse(`$2',,`move to rvec_(m4h*2,0)', `$2',T,,`move to rvec_(`$2',0)') { line from rvec_(m4v*3/4,m4v*sqrt(3)/4) \ to rvec_(0,m4v*sqrt(3)/4) \ then to rvec_(0,-m4v*sqrt(3)/4) \ @@ -1152,12 +1212,12 @@ define(`antenna',`[ T: Here line from rvec_(m4v*3/4,0) \ to T', m4atype,A, - `ifelse(`$2',,`move to rvec_(m4h*2,0)') - { line from rvec_(m4v*3/4, m4v*sqrt(3)/4) to Here \ - then to rvec_(m4v*3/4,-m4v*sqrt(3)/4) } - line from rvec_(m4v*3/4,0) \ + `ifelse(`$2',,`move to rvec_(m4h*2,0)', `$2',T,,`move to rvec_(`$2',0)') + { line from rvec_(m4v*3/4, m4v*sqrt(3)/4) to Here \ + then to rvec_(m4v*3/4,-m4v*sqrt(3)/4) } + line from rvec_(m4v*3/4,0) \ to T') - `$5'; resetdir_ ] with .T ifelse(`$1',,`at Here',`$1')') + `$5'; resetdir_ ] with .T ifelse(`$1',,`at Here',`$1')') `switch( linespec,L|R,[O|C][D],L|B|D ) Wrapper for bswitch, lswitch, dswitch @@ -1449,7 +1509,8 @@ define(`m4R',`ifelse(`$2',R,-)')define(`m4sc',`dimen_/24')dnl } line to rvec_(rp_len,0) invis ') - `Amplifier amp( linespec,size )' + `amp( linespec,size ) + Amplifier' define(`amp',`eleminit_(`$1') define(`m4wd',`ifelse(`$2',,`dimen_',`($2)')')dnl {line to rvec_(max(0,rp_len/2-m4wd/2),0) line from rvec_(m4wd,0) \ @@ -2365,7 +2426,8 @@ define(`ta_xy',`vec_(vscal_(m4_xyU,`$1',ifelse(`$2',0,0,m4_xyS`($2)')))') `Relative adjusted macro-internal coordinates' define(`tr_xy',`M4_xyO+vec_(vscal_(m4_xyU,`$1',ifelse(`$2',0,0,m4_xyS`($2)')))') `Initialize tr_xy_init(origin,unit,-)' -define(`tr_xy_init',`M4_xyO: ifelse(`$1',,Here,`$1') +define(`tr_xy_init', +`M4_xyO: ifelse(`$1',,Here,`$1') define(`m4_xyU',`$2')dnl define(`m4_xyS',`$3')') @@ -2388,8 +2450,10 @@ define(`sc_draw',`m4_dna(`$1',`$2')ifelse(m4I_,-1,`$4',`$3')') we temporarily turn off comments for svg' define(`rlabel',`ifsvg(`changecom(,)')dnl m4label(`$1',`$2',`$3',.s_,below_,`$4')`'ifsvg(`changecom(`#',)')') + define(`llabel',`ifsvg(`changecom(,)')dnl m4label(`$1',`$2',`$3',.n_,above_,`$4')`'ifsvg(`changecom(`#',)')') + define(`clabel',`ifsvg(`changecom(,)')dnl m4label(`$1',`$2',`$3',,,`$4')`'ifsvg(`changecom(`#',)')') labels at centre and both ends of an element `dimen_' long @@ -3218,6 +3282,17 @@ define(`ACsymbol',`[ Origin: Here with .Origin at Origin } ') `$5'; resetdir_ ] with .Origin ifelse(`$1',,`at Here',`$1')') + `DCsymbol(at position, len, ht, U|D|L|R|degrees) + Arg4: drawing direction (default: current direction)' +define(`DCsymbol',`[ + define(`m4wid',`ifelse(`$2',,(dimen_/3),`($2)')')dnl + define(`m4ht',`ifelse(`$3',,`m4wid/5',`($3)')') + setdir_(ifelse(`$4',,`ifdef(`m4a_',rp_ang*rtod_,0)',`$4')) + Origin: rvec_(m4wid/2,-m4ht/2) + {line to rvec_(m4wid,0)} + dashline(from rvec_(0,-m4ht) to rvec_(m4wid,-m4ht),,m4wid/4) + `$5'; resetdir_ ] with .c ifelse(`$1',,`at Here',`$1')') + `n-terminal box nterm(box specs; other commands, nw,nn,ne,ns, diff --git a/Master/texmf-dist/doc/latex/circuit-macros/libgen.m4 b/Master/texmf-dist/doc/latex/circuit-macros/libgen.m4 index e03ab1ae271..7aabd68c831 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/libgen.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/libgen.m4 @@ -2,7 +2,7 @@ divert(-1) libgen.m4 Base macros for dpic and gpic diagrams -* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under * +* Circuit_macros Version 9.4, copyright (c) 2020 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * @@ -41,8 +41,13 @@ ifdef(`__file__', the installation folder, e.g. dnl define(`HOMELIB_',`D:\Dwight\lib') + `NeedDpicTools( path ) + If path is empty then HOMELIB_ is used + e.g. NeedDpicTools or NeedDpicTools(/home/lib/)' define(`NeedDpicTools',`if "dpictools" != "1" then { - copy "HOMELIB_`'dpictools.pic" } define(`dfitpoints__') define(`dfitcurve__') ') + ifelse(`$1',,`copy "HOMELIB_`'dpictools.pic"',`copy "`$1'dpictools.pic"') + define(`dfitpoints__') define(`dfitcurve__')}') + Processor shortcuts define(`ifdpic',`ifelse(m4picprocessor,dpic,`$1',`$2')') define(`ifgpic',`ifelse(m4picprocessor,gpic,`$1',`$2')') @@ -56,7 +61,6 @@ define(`ifpstricks',`ifelse(m4postprocessor,pstricks,`$1',`$2')') define(`ifsvg',`ifelse(m4postprocessor,svg,`$1',`$2')') define(`iftpic',`ifelse(m4postprocessor,tpic,`$1',`$2')') define(`ifxfig',`ifelse(m4postprocessor,xfig,`$1',`$2')') -#efine(`ifpsfrag',ifinstr(ifdef(`psfrag',T)`'ifdef(`psfrag_',T),T,`$1',`$2')) define(`ifpsfrag',ifelse(ifdef(`psfrag',T,`ifdef(`psfrag_',T)'),T,`$1',`$2')) `iflatex(latextrue,latexfalse) @@ -181,7 +185,7 @@ define(`SIdefaults', define(`latexcommand',`command "ifmpost(verbatimtex) `$1' ifmpost(etex)"') define(`m4announceprocessor',`dnl Do not change the format of the next line: -`#' `$1' Version 9.3: ifelse(m4picprocessor,gpic,`Gpic', +`#' `$1' Version 9.4: ifelse(m4picprocessor,gpic,`Gpic', m4postprocessor,pstricks,`PSTricks', m4postprocessor,pgf,`TikZ PGF', m4postprocessor,mfpic,`Mfpic', @@ -424,6 +428,14 @@ ifinstr(`$2',m4sep,`pushdef(`$1',substr(`$2',0,index(`$2',m4sep)))dnl stacksplit_(`$1',substr(`$2',incr(index(`$2',m4sep))),m4sep)', `pushdef(`$1',`$2')')') + `m4Leftstr(str,default) leftmost substring + to the left of : (arg2 if blank)' +define(`m4Leftstr',`ifelse(patsubst(`$1',:.*),,`$2',patsubst(`$1',:.*))') + `m4Rightstr(str,default) rightmost substring + to the right of : (arg2 if blank)' +define(`m4Rightstr',`ifinstr(`$1',:, + `ifelse(patsubst(`$1',.*:),,`$2',`patsubst(`$1',.*:)')',`$2')') + `basename_(path,sep) Extract rightmost name from arg2-separated path, default dot (.)' @@ -743,10 +755,11 @@ define(`m4Delch', `ifelse(substr(`$1',0,1),ifelse(`$2',,_,`$2'),`substr(`$1',1)',`$1')') `setkey_(string,key,default,[N]) - pushdef macro m4key equal to val when - string contains key=val; - default if not in string - arg4= blank defines m4key as (val)' + string contains semicolon-separated + terms of the form key=val + If string contains key=val; then + pushdef(`m4key',(val)) otherwise use default. + Nonblank arg4 omits the parentheses.' define(`setkey_', `pushdef(`m4xt',index(`$1',`$2'=))ifelse(m4xt,-1, `pushdef(`m4'$2,`ifelse(`$3',,,ifelse(`$4',,(`$3'),`$3'))')', @@ -777,10 +790,11 @@ define(`text_ang',90) (requires PSTricks, pgf, or svg)' define(`r_text',`define(`m4txt', `ifelse(index(`$1',"),0,`substr(`$1',1,eval(len(`$1')-2))',`$1')')dnl -define(`m4rtang',`ifelse(`$2',,90,`$2')')dnl +ifelse(ifpstricks(T)`'ifpgf(T)`'ifsvg(T),T, +`define(`m4rtang',`ifelse(`$2',,90,`$2')')dnl ifsvg(`svg_rot(m4rtang,"m4txt")')dnl ifpstricks(`"\rput[c]{m4rtang}(0,0){m4txt}"')dnl -ifpgf(`"\pgftext[rotate=m4rtang]{m4txt}"')') +ifpgf(`"\pgftext[rotate=m4rtang]{m4txt}"')',"m4txt")') `Like s_box but text is rotated text_ang degrees (requires PSTricks or pgf)' @@ -824,12 +838,12 @@ define(`dot',`[define(`m4ft',`ifelse(`$3',,0,(`$3'))')dnl `circle rad ifelse(`$2',,`dotrad_',`$2') fill_(m4ft)')') dnl `$4'] with .c ifelse(`$1',,`at Here',`$1') move to last [].c') - `cross(at location); assumes that a + `cross(at location,size); assumes that a cross always has manhattan directions' -define(`crosswd_',(0.05*scale)) +define(`crosswd_',`ifelse(`$2',,`(0.05*scale)',`($2)')') define(`cross',`[{line from Here+(0,neg_(crosswd_)) to Here+(0,crosswd_)} line from Here+(neg_(crosswd_),0) to Here+(crosswd_,0) - `$2'] with .c ifelse(`$1',,`at Here',`$1'); move to last [].c') + `$3'] with .c ifelse(`$1',,`at Here',`$1'); move to last [].c') `boxcoord(name,xfraction,yfraction) internal position in a named planar object' @@ -954,6 +968,7 @@ define(`rotellipse', `[define(`m4ehw',(ifelse(`$1',,ellipsewid,`($1)')/2))dnl define(`m4ehh',(ifelse(`$2',,ellipseht,`($2)')/2))dnl N: vec_(0,m4ehh); E: vec_(m4ehw,0); S: vec_(0,-m4ehh); W: vec_(-m4ehw,0) + C: (0,0) spline ifdpic( `ctension_ from S to vec_(m4ehw,-m4ehh) \ then to vec_(m4ehw,m4ehh) then to vec_(-m4ehw,m4ehh) \ @@ -1006,7 +1021,8 @@ define(`m4lstring',`ifelse( D: blank width is the diagonal length of arg3 H: blank width is height of arg3 + textoffset*2 W: blank width is width of arg3 + textoffset*2 - otherwise: arg4 is absolute blank width ' + otherwise: arg4 is absolute blank width + If arg 3 begins with [ it is copied verbatim ' define(`dimension_',`rpoint_(`$1') ; { define(`m4g',ifelse(`$4',,0, `$4',W,(s_wd + ifdpic(textoffset,`2 bp__')*2), @@ -1015,18 +1031,23 @@ define(`dimension_',`rpoint_(`$1') ; { define(`m4h',`(rp_len ifelse((`$4'),(),,neg_(m4g)))')dnl ifelse((`$2'),(),,`if (`$2') != 0 then { m4toff = sign(`$2')*ifelse(`$5',,`3.6bp__',(`$5')) - {move to rvec_(0, m4toff); line to rvec_(0,`$2')} - {move to rvec_(rp_len,m4toff); line to rvec_(0,`$2')} - move to rvec_(0,`$2') }') + {move to rvec_(0, m4toff) + S_dimen_: line to rvec_(0,`$2')} + {move to rvec_(rp_len,m4toff) + E_dimen_: line to rvec_(0,`$2')} + move to rvec_(0,`$2') + AS_C: rvec_(rp_len/2,0) }') if m4h > 2*arrowht then { - { line ifelse(`$6',,<-,index($6,<),0,<-) to rvec_(m4h/2,0) + { AS_dimen_: line ifelse(`$6',,<-,index($6,<),0,<-) to rvec_(m4h/2,0) ifelse((`$4'),(),,`move to rvec_(m4g,0)') - line ifelse(`$6',,->,eval(index($6,>)>0),1,->) to rvec_(m4h/2,0) } + AE_dimen_: line ifelse(`$6',,->,eval(index($6,>)>0),1,->) \ + to rvec_(m4h/2,0) } } else { - { arrow from rvec_(-arrowht*1.5,0) to Here - arrow from rvec_(rp_len+arrowht*1.5,0) to rvec_(rp_len,0) } + { AS_dimen_: arrow from rvec_(-arrowht*1.5,0) to Here + AE_dimen_: arrow from rvec_(rp_len+arrowht*1.5,0) to rvec_(rp_len,0) } } ifelse(`$3',,, + index(`$3',[),0,``$3' at rvec_(rp_len/2,0)', `m4lstring(`$3',"`$3'") at rvec_(rp_len/2,0)') }') `Dimensioning for arcs: @@ -1093,7 +1114,7 @@ define(`shade',`beginshade(`$1') # # `ShadedPolygon(vertexseq,line attributes, # sweep angle (degrees),colorseq) -# arg1 is a colon (:) separated sequence of +# arg1 is a colon (:)-separated sequence of # positions or position names, the vertices in # order (cw or ccw) of the polygon. Colored # shade lines are drawn perpendicular to the @@ -1275,12 +1296,13 @@ define(`Vperp', define(`m4pdy',`(`$2'.y-`$1'.y)')dnl define(`m4pdl',`ifelse(`$3',,`/vlength(m4pdx,m4pdy)',`$3',0,, `*(`$3')/vlength(m4pdx,m4pdy)')')dnl - ifinstr(`$4',R,,-)m4pdy`'m4pdl,\ - m4pdx`'m4pdl') + ifinstr(`$4',R, + `(m4pdy`'m4pdl),(-m4pdx`'m4pdl)',`(-m4pdy`'m4pdl),(m4pdx`'m4pdl)')') - `Equidist3(Pos1,Pos2,Pos3,Result) + `Equidist3(Pos1,Pos2,Pos3,Result,distance) Result is the name of the point equidistant from named Pos1, Pos2, Pos3 + arg4 nonblank: the common distance eg Equidist3(A,B,C,D) arc from A to C with .c at D' define(`Equidist3',` @@ -1289,7 +1311,8 @@ define(`Equidist3',` M4tmp_P2: 0.5 between `$2' and `$3' M4tmp_T2: M4tmp_P2+(Vperp(`$2',`$3')) `$4': intersect_(M4tmp_P1,M4tmp_T1,M4tmp_P2,M4tmp_T2) - ') + ifelse(`$5',,,`$5 = distance(`$4',`$1');') ') + `Cintersect(Pos1,rad1,Pos2,rad2,[R]) Upper (lower if arg5=R) intersection of circles at Pos1 and Pos2, radius rad1 and rad2 @@ -1360,6 +1383,38 @@ define(`M4LP',`($1-($2))')dnl define(`M4LET',`LCtangent((M4LP.x/m4LEta,M4LP.y/m4LEtb),`(0,0)',1,`$5')')dnl (`$2'+(M4LET.x*m4LEta,M4LET.y*m4LEtb))') + `langle(Start,End) + Angle relative to horizontal of a line + between two points' +define(`langle', +`atan2(M4Pos(`$2').y-M4Pos(`$1').y,M4Pos(`$2').x-M4Pos(`$1').x)') + + `ArcAngle(Pos1,Pos2,Pos3,radius,attributes) + arc angle symbol drawn ccw at Pos2 + arg4: radius from Pos2 + arg5: line attributes, e.g. thick linethick/2' +define(`ArcAngle',`arcr(`$2',ifelse(`$4',,arcrad,`$4'), + langle(`$2',`$1'),langle(`$2',`$3'),`$5') ') + + `RightAngle(Pos1,Pos2,Pos3,linelen,attributes) + Draw a right angle symbol at Pos2 + arg4: size + arg5: line attributes, e.g. outlined "gray"' +define(`RightAngle', + `RightA_C: `$1'; RightA_N: `$2'; RightA_B: `$3' +define(`m4AngleLen',`ifelse(`$4',,linewid/5,`$4')') + angleCNB = atan2(RightA_C.y-RightA_N.y,RightA_C.x-RightA_N.x) + M4AB0: (RightA_B-RightA_N)/distance(RightA_B,RightA_N) + M4CN0: (RightA_N-RightA_C)/distance(RightA_N,RightA_C) + move to RightA_N - M4CN0*m4AngleLen + line to Here + M4AB0*m4AngleLen then to RightA_N + M4AB0*m4AngleLen `$5' +') + `PerpTo(Pos,Line,Point) + The point on Line of the perpendicular to Pos' +define(`PerpTo', +`PerpTo_T: move from `$1' to `$1'-(vperp(`$2')) + ifelse(`$3',,PerpTo_P,`$3'): Intersect_(PerpTo_T,`$2') ') + `Convenience fraction along a linear obj' define(`along_',`between `$1'.start and `$1'.end') diff --git a/Master/texmf-dist/doc/latex/circuit-macros/liblog.m4 b/Master/texmf-dist/doc/latex/circuit-macros/liblog.m4 index ce261707ca1..99c68076eff 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/liblog.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/liblog.m4 @@ -1,7 +1,7 @@ divert(-1) liblog.m4 Logic gates -* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under * +* Circuit_macros Version 9.4, copyright (c) 2020 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/Master/texmf-dist/doc/latex/circuit-macros/mfpic.m4 b/Master/texmf-dist/doc/latex/circuit-macros/mfpic.m4 index 6e68706e24d..c631f784d11 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/mfpic.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/mfpic.m4 @@ -1,7 +1,7 @@ divert(-1) mfpic.m4 Initialization for mfpic. -* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under * +* Circuit_macros Version 9.4, copyright (c) 2020 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/Master/texmf-dist/doc/latex/circuit-macros/mpost.m4 b/Master/texmf-dist/doc/latex/circuit-macros/mpost.m4 index 0698a3d8d91..778f38e2165 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/mpost.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/mpost.m4 @@ -1,7 +1,7 @@ divert(-1) mpost.m4 Initialization for metapost. -* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under * +* Circuit_macros Version 9.4, copyright (c) 2020 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/Master/texmf-dist/doc/latex/circuit-macros/pgf.m4 b/Master/texmf-dist/doc/latex/circuit-macros/pgf.m4 index 5b292ccaeae..791be9765c6 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/pgf.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/pgf.m4 @@ -1,7 +1,7 @@ divert(-1) pgf.m4 Initialization for Tikz-pgf. -* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under * +* Circuit_macros Version 9.4, copyright (c) 2020 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/Master/texmf-dist/doc/latex/circuit-macros/postscript.m4 b/Master/texmf-dist/doc/latex/circuit-macros/postscript.m4 index 21072c1d17e..c33c1a7afc7 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/postscript.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/postscript.m4 @@ -1,7 +1,7 @@ divert(-1) postscript.m4 Initialization for Postscript output. -* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under * +* Circuit_macros Version 9.4, copyright (c) 2020 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/Master/texmf-dist/doc/latex/circuit-macros/psfrag.m4 b/Master/texmf-dist/doc/latex/circuit-macros/psfrag.m4 index 7bf1df56566..d11b9dd0bfe 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/psfrag.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/psfrag.m4 @@ -2,7 +2,7 @@ divert(-1) psfrag.m4 Initialization for dpic -f processing: Postscript with psfrag strings -* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under * +* Circuit_macros Version 9.4, copyright (c) 2020 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * diff --git a/Master/texmf-dist/doc/latex/circuit-macros/pstricks.m4 b/Master/texmf-dist/doc/latex/circuit-macros/pstricks.m4 index efe7cafe16c..0dbd8ef7f19 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/pstricks.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/pstricks.m4 @@ -1,7 +1,7 @@ divert(-1) pstricks.m4 Initialization for PSTricks. -* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under * +* Circuit_macros Version 9.4, copyright (c) 2020 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * @@ -29,8 +29,8 @@ define(`linethick_',`linethick = ifelse(`$1',,`0.8',`$1'); dnl arrowht = ifelse(`$1',,`0.1',linethick/8)*scale;') `Patch PSTricks to use all coordinate pairs - inside \pscustom' - `Older version for PSTricks prior to Aug 2010:' + inside \pscustom + Older version for PSTricks prior to Aug 2010:' define(`M4PatchPSTricks', `command "\makeatletter\@ifundefined{ifPst@noCurrentPoint}% {\@ifundefined{MPS@Patch}{\gdef\MPS@Patch{}% @@ -41,7 +41,7 @@ define(`M4PatchPSTricks', {\@ifundefined{MPS@PatchMsg}{\gdef\MPS@PatchMsg{}% \typeout{ Dpic -p: Setting noCurrentPoint to use all coord pairs }}{}% \psset{noCurrentPoint}}\makeatother%"') - `For PSTricks since Aug 2010' + `For PSTricks since Aug 2010:' define(`M4PatchPSTricks',`command "\psset{noCurrentPoint}%"') divert(0)dnl diff --git a/Master/texmf-dist/doc/latex/circuit-macros/svg.m4 b/Master/texmf-dist/doc/latex/circuit-macros/svg.m4 index 84f7e21e06f..1b3a285ffbd 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/svg.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/svg.m4 @@ -1,7 +1,7 @@ divert(-1) svg.m4 Initialization for SVG output. -* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under * +* Circuit_macros Version 9.4, copyright (c) 2020 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * @@ -95,6 +95,7 @@ dptextratio)') `see http://www.ascii.cl/htmlcodes.htm and http://webdesign.about.com/od/localization/l/blhtmlcodes-gr.htm' +`These macros are used in strings so the double quote is entered as \". ' define(`svg_symbol',`changecom(,)`$1'changecom(`#',)') define(`svg_it',`<tspan font-style=\"italic\">`$1'</tspan>') define(`svg_tt',`<tspan font-family=\"Courier\">`$1'</tspan>') @@ -171,6 +172,8 @@ define(`svg_emsp',`svg_symbol(&`#'8195;)') define(`svg_thinsp',`svg_symbol(&`#'8201;)') define(`svg_backsl',`svg_symbol(&`#'92;)') define(`svg_pound',`svg_symbol(&`#'35;)') +define(`svg_circ',`svg_symbol(&`#'710;)') +define(`svg_deg',`svg_symbol(&`#'176;)') ') define(`svgcolor',`sprintf("rgb(%g,%g,%g)",\ diff --git a/Master/texmf-dist/doc/latex/circuit-macros/xfig.m4 b/Master/texmf-dist/doc/latex/circuit-macros/xfig.m4 index f092b44df50..c9498cf628f 100644 --- a/Master/texmf-dist/doc/latex/circuit-macros/xfig.m4 +++ b/Master/texmf-dist/doc/latex/circuit-macros/xfig.m4 @@ -1,7 +1,7 @@ divert(-1) xfig.m4 Initialization for xfig. -* Circuit_macros Version 9.3, copyright (c) 2020 J. D. Aplevich under * +* Circuit_macros Version 9.4, copyright (c) 2020 J. D. Aplevich under * * the LaTeX Project Public Licence in file Licence.txt. The files of * * this distribution may be redistributed or modified provided that this * * copyright notice is included and provided that modifications are clearly * |