summaryrefslogtreecommitdiff
path: root/graphics/circuit_macros/examples/svg/examplesSVG.htmx
blob: ec9847b32e24536bc43ba6d0969f44949b9ecfaa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
<!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>
<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">
</style>
<link rel="shortcut icon" href="../Circuit_macros.ico" type="image/x-icon" />
</HEAD>

<!-- ---------------------------------------------------------------------
define(`ifinstr',`ifelse(`$2',,`$1',index(`$1',`$2'),-1,
 `ifinstr(shift(shift(shift($@))))',`$3')')

define(`m4tt',`<g style="font-family:monospace">')

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" sinclude($1.siz) type="image/svg+xml" class="img">
  </object> <![endif]-->

<!--[if !IE]><!-->
<object data="$1.svg" sinclude($1.siz) type="image/svg+xml" class="img">
  </object> <![endif]-->

<br><br>
ifelse(`$2',,,`
<a href="$1.txt" TYPE="text/plain" TARGET="_blank" alt="$1">$1.m4:</a>
`$2' changecom(,)&`#'8194;changecom(`#')')

</p>
ifinstr(`$3',y,,`<hr>')')

--------------------------------------------------------------------- -->

<BODY>
<table cellpadding="0" cellspacing="0"
 width="700px" border="0" align="center" ><tr><td>

<H2>SVG Circuit_macros examples, Version XXX</H2>
<hr>

<p>
  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>
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 &lt;embed&gt; or
    &lt;object&gt; tag seems to be a perennial issue.
  <li> This file has been tested mainly by using Firefox.
  <li> The Adobe reader apparently requires a line of the form
  <br> &lt;embed src="figure.svg" width="x" height="y" type="image/svg+xml"
     /&gt;
   This means that the html file has to contain dimension
   information for each figure, whereas Firefox can
   determine the figure size
   from the &lt;svg ... object.  Currently, dpic includes a comment line
   giving reasonable dimensions in pixels but this has to be insterted into
   the &lt;embed or &lt;object line.  A makefile does it easily but
   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 depending on the browser.  Some of these diagrams set the font at
   the beginning of the diagram source.
  <li> The &lt;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 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
   text.
   <!-- text, as discussed
   <a href="http://www.aditus.nu/jpgraph/jpg_svg.php" TARGET="_blank">here,</a>
   for example. -->
   Consequently, text placement is approximate and may require
   manual adjustment.
   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 could be defined to exercise some of the media capabilties of svg.
   They are subject to change:
  <ul>
    <li>
      m4tt`'svg_font(</g>font-face,nominal size[:dptextratio],textoffset,
         dpic commands`'m4tt)</g>:
         Change font face, size, textratio and dpic textoffset parameters.
         Change font face and dpic m4tt`'textht</g>, m4tt`'dptextratio</g>,
         and m4tt`'textoffset</g> parameters.
         If arg4 is blank, the font is changed and
         requires m4tt`'command "&lt;/g&gt;"</g> to cancel the font change.
         <br>
         Note:
         Nominal height = text height in drawing units; actual height =
         nominal ht x m4tt`'dptextratio</g>.
         <br>
         Examples: <br>
         m4tt`'svg_font(Times)</g><br>
         m4tt`'svg_font(Times,14bp__)</g><br>
         m4tt`'svg_font(sans-serif,14bp__:0.71)</g><br>
         m4tt`'svg_font(Times,11bp__,1bp__,"text" at A)</g><br>
         m4tt`'svg_font(font-family="Times")</g><br>
         m4tt`'svg_font(font-family="Times" font-style="italic")</g><br>
         m4tt`'svg_font(style="font-family:Times; font-style:italic")</g>
    <li>m4tt svgfontratio(</g>font name`'m4tt)</g>;
         Reasonable m4tt`'dptextratio</g> value for common fonts, used
         by m4tt`'svg_font</g>.
    <li>m4tt svg_tspan(</g>text attributes, text`'m4tt)</g>;
      e.g. m4tt`'svg_tspan(font-style="italic" font-size="75%",XYZ)</g>
    <li>m4tt svg_it(</g>text`'m4tt)</g>: for italics
    <li>m4tt svg_tt(</g>text`'m4tt)</g>: for monospace (courier)
    <li>m4tt svg_sf(</g>text`'m4tt)</g>: sans-serif (Helvetica)
    <li>m4tt svg_norm(</g>text`'m4tt)</g>: for normal text
    <li>m4tt svg_bf(</g>text`'m4tt)</g>: for bold face
    <li>m4tt svg_small(</g>text, percent`'m4tt)</g>:
        to set a smaller text size, default 66
    <li>m4tt svg_fsize(</g>text, percent`'m4tt)</g>:
        for setting larger or smaller text size, default 100
    <li>m4tt svg_sub(</g>text, size percent, y displ, x displ`'m4tt)</g>:
        subscript
    <li>m4tt svg_ul(</g>text`'m4tt)</g>: underlined text
    <li>m4tt svg_ol(</g>text`'m4tt)</g>: overlined text
    <li>m4tt svg_sup(</g>text, size percent, y displ, x displ`'m4tt)</g>:
        superscript
    <li>m4tt svg_hat(</g>character`'m4tt)</g>: circumflex-accented character
    <li>m4tt svg_frac(</g>numerator[:wid], denominator[:wid]`'m4tt)</g>:
        basic fraction, wid in drawing units
    <li>m4tt svg_rot(</g>degrees, "text" [at position]`'m4tt)</g>:
        Rotate text degrees (default 90) ccw.
        Requires m4tt`'svg_rot_init(</g>filename`'m4tt)</g> and the source
        must be processed twice.
    <li>m4tt svg_rot_init(</g>filename`'m4tt)</g>:
        filename is the basename of the output of
        m4tt`'dpic -v filename.pic > filename.svg`'m4tt
    <li>m4tt svg_symbol(</g>text`'m4tt)</g>: allow quoted pound sign in text,
          e.g., m4tt`'svg_symbol(10&&#96;&#35;&#39;176;)</g> produces 10&#176;
    <li>m4tt svgLink(</g>URL, drawing object, m4tt[B])</g>:
      link to external file using
      &lt;a xlink:href=...&gt;...&lt;/a&gt; (default is
      m4tt`'target="_blank"</g> unless
      arg 3 = B)
    <li>m4tt svgLinkString</g> as above but for strings attached to objects
    <li> Greek and other symbols:

<!--
  Reference:
  https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references
  and
  https://www.toptal.com/designers/htmlarrows/math/
  -->
<table cellpadding="2" cellspacing="0" width="75%" >
<tr>
<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="10%"> m4tt svg_zeta</g> <td align="left"> changecom(,)&`#'950;changecom(`#')
</tr>
<tr>
<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="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="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="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="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="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(`#')
<td width="10%"> m4tt svg_grave</g> <td align="left"> changecom(,)&`#'96;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>

  </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
    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.  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
   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(ResistorsSVG,
  Resistors, showing some variations and the ebox)

cfig(CapacitorsSVG,
  Capacitors)

cfig(InductorsSVG,
  Inductors)

cfig(DiodesSVG,
  Diodes: a m4tt`'K</g> in the second argument draws an open
 arrowhead)

cfig(EmarrowsSVG,
  Radiation arrows)

cfig(VariableSVG,
  Arrows and marks for showing variability)

cfig(SourcesSVG,
  Sources and source-like elements)

cfig(AmpTableSVG,
  Macros m4tt`'amp`,' delay</g>`,' and m4tt`'integrator</g>)

cfig(FusesSVG,
  Macros m4tt`'fuse</g> and m4tt`'cbreaker</g>)

cfig(MoreTableSVG,
  Additional two-terminal elements)

cfig(GroundsSVG,
  Ground symbols)

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(AntennasSVG,
  Antenna symbols)

cfig(OpampSVG,
  The opamp)

cfig(AudioSVG,
  Audio elements)

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 integrated circuits and connectors with simple geometry
  and lists of labels)

cfig(ChipsSVG,
  IC outlines)

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(ex10SVG,
  Non-planar graph and bistable circuit
     (illustrating the m4tt`'crossover</g> macro and colored elements))

cfig(ThreeSVG,
  Three-phase oscillator)

cfig(MCSVG,
  A three-phase switched AC-AC converter and a DC-DC converter)

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(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(UNOSVG,
  An Arduino UNO circuit adapted and redrawn)
  <!--
  m4tt`'https://content.arduino.cc/assets/UNO-TH_Rev3e_sch.pdf</g>
  -->

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(MultiplexerSVGfor showing
  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.)

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(EEPSVG,
  Part of a single-line diagram of a power distribution system
  using draft elements)

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)

cfig(GrayCodeSVG,
  Gray code 10-bit encoder disk pattern`,'
  and a crossbar switch)

#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(ex05SVG,
  Use of m4tt`'darrow</g> and m4tt`'Darc</g>)

cfig(PlateSVG,
  Dimensioning with tolerances according to ASME Y14.5)
  Use of m4tt`'darrow</g> and m4tt`'Darc</g>)

cfig(LoglogSVG,
  A graph drawn using the pic language) 

cfig(GeometrySVG,
  Plane geometry examples and an illustration of a Lyapunov function) 

<!--
#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)

#fig(AntiqueClockSVG,
# An antique clock face)

cfig(cscSVG,
  Conestoga Sailing Club (illustrating the filling of arbitrary shapes)`,'
    and an antique clock face with shading and rotated text)

cfig(roseSVG,
  A window redrawn from a detail of the set design for the musical
      <i>Dracula</i>`,' used for testing m4tt`'dpic</g>`,'
      and an experimental halftone.  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.  The right object
      adjusts the size of dots to produce a halftone effect) 

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,
  Binary trees)

cfig(InclepsSVG,
  Overlaying a figure with line graphics)

cfig(FontsSVG)

</td>
</tr>
</table>
</BODY>
</HTML>