texlive[63991] Master/texmf-dist/doc/latex/circuit-macros:
commits+karl at tug.org
commits+karl at tug.org
Thu Jul 28 22:05:13 CEST 2022
Revision: 63991
http://tug.org/svn/texlive?view=revision&revision=63991
Author: karl
Date: 2022-07-28 22:05:13 +0200 (Thu, 28 Jul 2022)
Log Message:
-----------
circuit-macros (28jul22)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/circuit-macros/CHANGES
trunk/Master/texmf-dist/doc/latex/circuit-macros/Copying
trunk/Master/texmf-dist/doc/latex/circuit-macros/README
trunk/Master/texmf-dist/doc/latex/circuit-macros/darrow.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/Circuit_macros.pdf
trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/DiodesMan.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/Version.tex
trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/body.tex
trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/defines.tex
trunk/Master/texmf-dist/doc/latex/circuit-macros/dpictools.pic
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/Diodes.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/Shaky.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/csc.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.pdf
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/files.tex
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/ics.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/mf/cct.mf
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/sfg.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/DiodesSVG.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/GeometrySVG.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/LoglogSVG.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/Makefile
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/PconnSVG.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/cscSVG.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/ex15SVG.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/examplesSVG.htmx
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/icsSVG.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/sfgSVG.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/tubedefs.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/gpic.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/lib3D.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/libSLD.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/libcct.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/libgen.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/liblog.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/mfpic.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/mpost.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/pgf.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/postscript.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/psfrag.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/pstricks.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/svg.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/xfig.m4
Added Paths:
-----------
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/ShadeSector.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/SmithchartSVG.m4
trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/keyboardSVG.m4
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/CHANGES
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/CHANGES 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/CHANGES 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,5 +1,8 @@
CHANGES
+Version 9.9: Changes to libSLD macros, diode, sfg macros, rs_box,
+ r_text, svg_rot, examples. Changed SVG color macros for consistency with
+ other postprocessors.
Version 9.8: Changes to libSLD macros, with descriptions
added to the manual. Tweaked macros ArcAngle, opamp, inductor, cross,
crossover, diode, rs_box, r_text, Deltasymbol, arrester, dswitch,
@@ -40,8 +43,7 @@
embedding pic diagrams into Tikz pictures. Changed the name of the
manual from CMman.pdf to Circuit_macros.pdf. Option for dswitch.
Version 8.7: Fixes for more robust nested macros and SVG color. Options
-for
- the source macro.
+ for the source macro.
Version 8.6: Options for switch, lswitch. Simplified Quick Start section
of the manual. Added WARNING to m4 output for default configuration
file gpic.m4. Macro pconnex tweaked for tikz.
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/Copying
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/Copying 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/Copying 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,4 +1,4 @@
-* Circuit_macros Version 9.8, copyright (c) 2022 J. D. Aplevich under *
+* Circuit_macros Version 9.9, copyright (c) 2022 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 *
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/README 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/README 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,5 +1,5 @@
-* Circuit_macros Version 9.8, copyright (c) 2022 J. D. Aplevich under *
+* Circuit_macros Version 9.9, copyright (c) 2022 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 *
@@ -116,7 +116,7 @@
from within the tex document source as described in the manual. For
near-immediate viewing of the basic process, three windows can be kept
open: one in which to edit the source, one to process the source and
- produce postscript or pdf, and Okular or GSview 5.0, which updates
+ produce postscript or pdf, and a viewer such as GSview 5.0, which updates
when clicked.
INSTALLATION AND TESTING: See the INSTALL file.
@@ -160,9 +160,7 @@
and documentation is available from http://ftp.gnu.org/gnu/groff/
but there are mirror sites as well. A more extensive manual is found
in the documentation that comes with GNU pic, which is typically
- installed as gpic. A pdf copy is included with the dpic distribution
- and a version can be found on the web at
- http://www.kohala.com/start/troff/gpic.raymond.ps
+ installed as gpic. A pdf copy is included with the dpic distribution.
The original AT&T pic manual can be found at
http://doc.cat-v.org/unix/v10/10thEdMan/pic.pdf
@@ -188,10 +186,11 @@
EXAMPLES
A set of examples is included in this distribution, showing electric
circuits, block diagrams, flow charts, signal-flow graphs, basic
- use of colour and fill, and other applications. Read the manual
- Circuit_macros.pdf and view the files examples.pdf in the
- examples directory or make and view the html file in the examples/svg
- directory. For the curious, There are additional source
+ use of colour and fill, and other applications. Some of the examples
+ test the boundaries of the domain of application of dpic with m4 macros.
+ Read the manual Circuit_macros.pdf and view the files examples.pdf
+ in the examples directory or make and view the html file in the
+ examples/svg directory. For the curious, There are additional source
files in the examples directory that are not shown in examples.pdf.
For the possibly unstable development version of these macros, try
http://ece.uwaterloo.ca/~aplevich/Circuit_macros/
@@ -243,11 +242,8 @@
showing how to use Circuit_macros with his setup is at
https://www.youtube.com/watch?time_continue=53&v=pFRIBvUJHS4
- 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 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 git repository of a KDE interface by Andrew G. for Linux is at
+ https://github.com/ag-ckt/cirkuit/tree/V0.5.0.
Another recent introduction is at
https://www.root.cz/clanky/publikovanie-elektrickych-schem-a-diagramov-pomocou-circuit-macros/
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/darrow.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/darrow.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/darrow.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,7 +1,7 @@
divert(-1)
darrow.m4 Macros for double lines and arrows
-* Circuit_macros Version 9.8, copyright (c) 2022 J. D. Aplevich under *
+* Circuit_macros Version 9.9, copyright (c) 2022 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 *
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/Circuit_macros.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/DiodesMan.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/DiodesMan.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/DiodesMan.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,5 +1,5 @@
.PS
-# Diodes.m4
+# DiodesMan.m4
cct_init
movewid = 2pt__
@@ -16,6 +16,8 @@
move down 0.2; right_
{diode(,B) ; move ; "`{\tt diode(,B)}'" ljust}
move down 0.2; right_
+ {diode(,b) ; move ; "`{\tt diode(,b)}'" ljust}
+ move down 0.2; right_
{diode(,G) ; move ; "`{\tt diode(,G)}'" ljust}
move down 0.2; right_
{diode(,D) ; move ; "`{\tt diode(,D)}'" ljust}
@@ -39,7 +41,7 @@
{diode(,MK) ; move ; "`{\tt diode(,MK)}'" ljust}
}
- move right_ 2.0
+ move down_ sourcerad_ right_ 2.0
{ {diode(,Z,RE) ; move ; "`{\tt diode(,Z,RE)}'" ljust}
move down 0.30; right_
{diode(,U) ; move ; "`{\tt diode(,U)}'" ljust}
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/Version.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/Version.tex 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/Version.tex 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1 +1 @@
-Version 9.8
+Version 9.9
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/body.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/body.tex 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/body.tex 2022-07-28 20:05:13 UTC (rev 63991)
@@ -956,7 +956,7 @@
\begin{figure}[h!t]
\input DiodesMan
\caption{The macro {\tt
- diode(\linespec, B|CR|D|L|LE[R]|P[R]|S|T|U|V|v|w|Z|{\sl chars}, [R][E])}.
+ diode(\linespec, B|b|CR|D|L|LE[R]|P[R]|S|T|U|V|v|w|Z|{\sl chars}, [R][E])}.
Appending {\tt K} to the second argument draws an open arrowhead.}
\label{Diodes}
\end{figure}
@@ -984,14 +984,21 @@
{\tt resized(}{\sl factor},`{\sl macro name}',{\sl macro arguments}{\tt )}
\par
\noindent
-can be used to resize the body of an element by temporarily multiplying
-the {\tt dimen\_} macro by {\sl factor}. More general resizing should be
-done by redefining {\tt dimen\_} as described in \SR{Circuitscaling:}.
-These two macros can be nested; the following scales the above example
-by 1.8, for example
+will resize the body of an element by temporarily multiplying
+the {\tt dimen\_} macro by {\sl factor} but
+\Mfour\ primitives can be employed instead as follows:
\par
-{\tt resized(1.8,`diode',right\_ 0.4);}
-{\tt resized(1.8,`reversed',`diode',right\_ 0.4)}
+{\tt pushdef(`dimen\_',dimen\_*({\sl factor})),%
+{\sl macro name}({\sl arguments}) popdef(`dimen\_')}
+\par
+\noindent
+More general resizing should be
+done by redefining {\tt dimen\_} globally as described in \SR{Circuitscaling:}.
+%These two macros can be nested; the following scales the above example
+%by 1.8, for example
+%\par
+%{\tt resized(1.8,`diode',right\_ 0.4);}
+%{\tt resized(1.8,`reversed',`diode',right\_ 0.4)}
Fuses are shown in \FR{Fuses}
and switches with numerous controls in \FR{Switches}.
@@ -1919,7 +1926,7 @@
\par
\noindent
where the {\sl r, g, b} values are in the range 0 to 1
-(integers from 0 to 255 for \SVG) to specify the rgb color.
+to specify the rgb color.
This macro is a wrapper for the following, which may be more convenient
if many elements are to be given the same color:
@@ -2245,18 +2252,18 @@
The {\tt examples.pdf} and {\tt examplesSVG.html}
documents include samplers of some of their uses.
- Writing macros for special elements is always an option but the SLD
- macros allow considerable scope for customization. Diagram-wide
- or block-scope changes are made by redefining
- environmental variables, particularly
+ The SLD macros allow considerable scope for
+ customization using key-value pairs to set internal parameters.
+ In addition, diagram-wide or block-scope changes are made as usual
+ by redefining environmental variables, particularly
{\tt linethick,} for example, and {\tt linewidth} for scaling.
Element body sizes are altered using, for example,
{\tt define(`dimen\_',dimen\_*1.2)} as for the normal circuit elements.
- To apply such a change to a single element, use
- {\tt pushdef(`dimen\_',{\sl expr})} {\sl element statements}
+ To apply such a change to a single element or a group of them,
+ use {\tt pushdef(`dimen\_',{\sl expr})} {\sl element statements}
{\tt popdef(`dimen\_').}
The SLD library also includes a number of redefinable default
-style parameters, which are currently:
+style parameters, which are currently as follows:
\begin{verbatim}
define(`sl_breakersize_',`dimen_*3/16') # breaker box size
define(`sl_breakersep_',`dimen_/2') # breaker separation from body
@@ -2270,14 +2277,15 @@
define(`sl_loadlen_',`dimen_*0.45') # load length
define(`sl_transcale_',1) # transformer body scale factor
define(`sl_busthick_',linethick*2) # sl_bus line thickness
-define(`sl_busindent_',`min(dimen_/5,rp_len/5)') # bus end extension
+define(`sl_busindent_',`min(dimen_/5,rp_len/5)') # busbar end indent
\end{verbatim}
- The macros also allow for extensive customization of individual
- elements using a key-value mechanism.
+%The macros also allow for extensive customization of individual
+%elements using a key-value mechanism.
The greatest control of appearance is obtained by drawing all
elements individually; however,
provision is made for automatically attaching circuit breakers
+ (which occur often)
and other symbols to elements.
\subsection{Two-terminal SLD elements\label{TwoTermSLD:}}
@@ -2320,6 +2328,13 @@
an $n$-line slash symbol is drawn using the macro
{\tt sl\_slash(at {\sl position, keys,} [$n$:]R|L|U|D|{\sl degrees}).}
+The separation of the optional attached breaker or other stem elements from
+the body is controlled by the {\tt sl\_breakersep\_} global
+parameter. Adding {\tt sep={\sl expr}} to the body keys
+adjusts separations for an element; otherwise, adding
+this key to argument 3 or 4 adjusts the separation of
+the corresponding attached object.
+
Otherwise, one or more of the extensive {\tt sl\_ttbox} body
key-value pairs will insert a custom breaker as needed. These keys include:
{\tt lgth={\sl expr},
@@ -2380,7 +2395,9 @@
default name is {\sl Head}.
The third argument controls the presence and type of the object in the stem
as for the two-terminal element breakers. The default breaker name is {\sl Br}
-and the default slash name is {\sl SL.}
+and the default slash name is {\sl SL,} and the separation from the head
+is specified using global {\tt sl\_breakersep\_} or the local
+{\tt sep={\sl expr}} parameters as for the two-terminal elements.
A stem of zero length is allowed when only the element head is needed.
Because a line segment of zero length has undefined direction, the
@@ -2448,7 +2465,18 @@
\noindent%
after the {\tt cct\_init} line of {\tt quick.m4} produces slightly
-larger body sizes for all circuit elements. For logic elements, the
+larger body sizes for all circuit elements.
+
+For more localized resizing, use, for example,
+\par
+{\tt pushdef(`dimen\_',{\sl expression}) {\sl drawing commands}
+ popdef(`dimen\_')}
+\par
+\noindent
+(but ensure that the drawing commands have no net effect on the {\tt dimen\_}
+stack).
+
+For logic elements, the
equivalent to the {\tt dimen\_} macro is {\tt L\_unit}, which has
default value {\tt (linewid/10)}.
@@ -2570,6 +2598,7 @@
two macros are defined to simplify the repeated drawing
of a series resistor and series inductor, and the macro {\tt tsection} defines
a subcircuit that is replicated several times to generate \FR{Tline}.
+\pagebreak
{\small \verbatiminput{Tline.m4}}
\begin{figure}[h!t]
% \ifpdf\vspace*{-\baselineskip}\fi%
@@ -3035,7 +3064,6 @@
\hbox{}
-\pagebreak
Objects can be taylored to their attached text by invoking
\verb|\boxdims| and \verb|boxdim| explicitly.
The small source file in \FR{boxdims}, for example,
@@ -3121,17 +3149,24 @@
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\_boxs([angle={\sl expr};] {\sl text}[,{\sl expr, expr $\ldots$}])},
+{\tt rs\_boxs([angle={\sl degrees};] {\sl text}[,{\sl expr, expr $\ldots$}])},
which is similar
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 )}
-or by starting the first argument with {\tt angle={\sl expr};}.
+or by starting the first argument with {\tt angle={\sl degrees};}
+where {\sl degrees} is a decimal number (not an expression).
The {\tt rs\_box} macro
requires either \PSTricks or \TPGF and, like {\tt s\_box}, it calculates the
size of the resulting text box but requires the diagram to be
processed twice.
+The macro {\tt r\_text({\sl degrees, text,} at {\sl position})}
+works under \PSTricks, \TPGF, and \SVG, the last requiring
+processing twice. The {\sl degrees} argument is a decimal constant
+(not an expression) and the text is a simple string without quotes.
+The text box is not calculated.
+
Another common requirement is the filling of arbitrary shapes, as
illustrated by the following lines within a {\tt .m4} file:
@@ -3192,6 +3227,7 @@
\noindent\verb|\end{scope}%|
\vspace{\parsep}
+\pagebreak
This is accomplished, for example, by adapting the {\tt \bsl{}mtotex}
macro of \SR{Simplifications:} as follows:
@@ -3290,7 +3326,6 @@
distribution. The \latex drawing commands alone or with {\tt eepic}
or {\tt pict2e} extensions are suitable only for simple diagrams.
-\pagebreak
\xection{Developer's notes\label{Developersnotes:}}
Years ago in the course of writing a book, I took a few days off to
write a \pic-like interpreter (\dpic) to eliminate the tedious coordinate
@@ -3321,7 +3356,7 @@
possibilities, but some of the macros have become less readable as more
options and flexibility have been added, and if starting over today,
perhaps I would change some details. Compromises have been made in order
-to retain reasonable compatibility with the variety of postprocessors.
+to retain reasonable compatibility with the various postprocessors.
No choice of tool is without compromise, and producing good graphics
seems to be time consuming, no matter how it is done, but the payoff
can be worth the effort.
@@ -3370,10 +3405,13 @@
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.
-\pagebreak
\xection{Bugs\label{Bugs:}}
This section provides hints and a list of common errors.
+First of all, be aware that old versions of \LaTeX, \dpic, and these
+macros are not always compatible. Updating an installation to current
+versions is often the way to eliminate mysterious error messages.
+
The distributed macros are not written for maximum robustness.
Macro arguments could be tested for correctness and
explanatory error messages could be written as necessary, but that
@@ -3391,7 +3429,6 @@
\bflistitem}[2]{\phantomsection\pdfbookmark[subsection]{#1}{#2}{\bf #1: }}
\begin{enumerate}
-%\pagebreak
\item
\bflistitem{Misconfiguration}{misconfig}%
One of the configuration files
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/defines.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/defines.tex 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/doc/defines.tex 2022-07-28 20:05:13 UTC (rev 63991)
@@ -598,11 +598,12 @@
{macro for dimensioning diagrams;
{\sl arrowhead=}{\tt -> | <-}}
\macrodef{diode}{diode}{(\linespec,%
-B|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
+B|b|CR|D|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,%
[R][E])}
{cct}
{diode:
{\tt B}=bi-directional,
+ {\tt b}=bi-directional with outlined zener crossbar,
{\tt CR}=current regulator,
{\tt D}=diac,
{\tt G}=Gunn,
@@ -1531,7 +1532,8 @@
\macrodef{pushkeys\_}{pushkeys_}{({\sl string, key sequence})}
{gen}
{Multiple key-value definitions. Arg 2 is a semicolon-separated
- sequence of terms of the form {\tt {\sl key}:{\sl default value}:[N]}.
+ sequence of terms of the form {\tt {\sl key}:{\sl default value}:[N]}
+ which must contain no semicolons and the default values contain no colons.
Macro {\tt pushkey\_} is applied to each of the terms in order.
\seesect{Macroarguments:}}
\Letter{R}%
@@ -1603,14 +1605,13 @@
\macrodef{rgbdraw}{rgbdraw}{({\sl color triple}, {\sl drawing commands})}
{gen}
{color drawing for PSTricks, pgf, MetaPost, SVG postprocessors;
- (color entries are 0 to 1 except for SVG entries which are 0 to 255),
+ (color entries are 0 to 1),
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
- SVG entries which are 0 to 255); see {\tt
+ {fill with arbitrary color (color entries are 0 to 1); see {\tt
setrgb}\seesect{Semiconductors:}}
\macrodef{rgbstring}{rgbstring}{({\sl color triple or color name})}
{gen}
@@ -1629,9 +1630,12 @@
{Draw a right-angle symbol at {\sl Pos2}, of size
given by arg4. Arg5 =
line attributes, e.g., {\tt outlined "gray"}}
-\macrodef{r\_text}{s_text}{({\sl text},{\sl degrees})}
+\macrodef{r\_text}{r_text}{({\sl degrees},{\sl text},at {\sl position})}
{gen}
- {Rotate text by arg2 degrees (PSTricks, PGF, or SVG only).
+ {Rotate text by arg1 degrees (provides a single command for
+ PSTricks, PGF, or SVG only) placed at position in arg3.
+ The first argument is a decimal constant (not an expression) and
+ the text is a simple string without quotes.
\seesect{Interaction:}, \seesect{Pstricks:}}
\macrodef{rjust\_}{rjust_}{}
{gen}
@@ -1687,11 +1691,14 @@
\macrodef{rrot\_}{rrot_}{({\sl x, y, angle})}
{gen}
{\tt Here + vrot\_({\sl x, y, cos(angle), sin(angle))}}
-\macrodef{rs\_box}{rs_box}{([angle={\sl expr};]
+\macrodef{rs\_box}{rs_box}{([angle={\sl degrees};]
{\sl text},{\sl expr1},$\cdots$)}
{gen}
{like {\tt s\_box} but the text is rotated by {\tt text\_ang}
- (default 90) degrees. Two or more args are passed to {\tt sprintf()}.
+ (default 90) degrees, unless
+ the first argument begins with {\tt angle={\sl decimal number};},
+ in which case the number defines the rotation angle.
+ Two or more args are passed to {\tt sprintf()}.
If the first argument begins with {\tt angle={\sl expr};} then
the specified angle is used.
The examples {\tt define(`text\_ang',45); rs\_box(Hello World)} and
@@ -1800,8 +1807,7 @@
name}])}
{gen}
{define colour for lines and text, optionally named (default
- {\tt lcspec});
- svg values are integers from 0 to 255\seesect{Semiconductors:}}
+ {\tt lcspec}); \seesect{Semiconductors:}}
\macrodef{setkey\_}{setkey_}{({\sl string, key, default,}[N])}
{gen}
{Key-value definition, like {\tt pushkey\_()} but the resulting
@@ -1976,6 +1982,7 @@
{\tt scale={\sl expr} (default 1.0)};
{\tt grnd={\sl expr} attached ground at given angle
(type {\tt S} or {\tt N}))};
+ {\tt sep={\sl{}expr}};
{\tt stemlgth={\sl{}expr}};
{\tt wdth={\sl{}expr}};
{\tt direct=U|D|L|R|{\sl degrees}} (drawing direction).
@@ -1985,6 +1992,9 @@
The {\tt L} (default) variant also defines internal labels
Internal labels {\sl L} and {\sl C} are included.
+ Key {\tt sep} is the type-{\tt S} separation from the head to the centre
+ of the slash symbol.
+
Key {\tt scale} allows scaling (default scale 1.0) but, with \dpic,
the {\tt scaled} directive can also be used.
\seesect{SingleLine:}}
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/dpictools.pic
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/dpictools.pic 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/dpictools.pic 2022-07-28 20:05:13 UTC (rev 63991)
@@ -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.8, copyright (c) 2022 J. D. Aplevich under #
+# Circuit_macros Version 9.9, copyright (c) 2022 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 #
@@ -49,7 +49,6 @@
# C-like loop. Commas in arg3 and arg4 must
# be in quotes or parentheses, e.g.,
# loop(i=1, i<=3, i+=1, print i) prints 1, 2, 3
-ld__ = 0
define loop {ld__+=1
$1
for lx__[ld__]=0 to 1 do {
@@ -167,8 +166,8 @@
if "$3"=="" then { m_randn = 0 } else { m_randn = $3 }
if "$4"=="" then { s_randn = 1 } else { s_randn = $4 }
for i_randn=1 to n_randn by 2 do {
- loop( t_randn=2, t_randn >= 1, u_randn = 2*rand()-1; v_randn = 2*rand()-1
- t_randn = u_randn^2+v_randn^2 )
+ for done=0 to 1 do { u_randn=2*rand()-1; v_randn=2*rand()-1
+ t_randn = u_randn^2+v_randn^2; done=(t_randn<1) }
t_randn = sqrt( -2*loge(t_randn)/t_randn )
$1[i_randn] = u_randn*t_randn*s_randn+m_randn
if i_randn < n_randn then {
@@ -484,10 +483,14 @@
if dpicopt==optSVG then { define px__ {*(scale/dpPPI)} } \
else { define px__ {*(scale/96)} } # Absolute pixels
-rtod_ = 57.295779513082323
-dtor_ = 0.017453292519943295
-twopi_ = 6.2831853071795862
-pi_ = twopi_/2
+define assign_dpicvars {
+ ld__ = 0
+ rtod_ = 57.295779513082323
+ dtor_ = 0.017453292519943295
+ twopi_ = 6.2831853071795862
+ pi_ = twopi_/2
+ $1
+ }
# Polar to rectangular conversion
define Rect_ {($1)*cos(($2)*dtor_),($1)*sin(($2)*dtor_)}
@@ -516,16 +519,16 @@
# beginshade
if dpicopt==optPGF then {
define beginshade { if "$1"!="" then { dpshade_=$1 } else { dpshade_=0.5 }
- command "\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}"
- command "\global\def\dpicstop{--}"
- command sprintf("\dpicshdraw[fill=white!%g!black]",dpshade_*100) } } \
+ command "\global\let\dpicshdraw=\dpicdraw\global\def\dpicdraw{}"
+ command "\global\def\dpicstop{--}"
+ command sprintf("\dpicshdraw[fill=white!%g!black]",dpshade_*100) } } \
else { if dpicopt==optPSTricks then {
define beginshade { if "$1"!="" then { dpshade_=$1 } else { dpshade_=0.5 }
- command sprintf("\newgray{m4fillv}{%g}",dpshade_)
- command sprintf("\pscustom[fillstyle=solid,fillcolor=m4fillv]{%%") } } \
+ command sprintf("\newgray{m4fillv}{%g}",dpshade_)
+ command sprintf("\pscustom[fillstyle=solid,fillcolor=m4fillv]{%%") } } \
else { if dpicopt==optSVG then {
define beginshade { if "$1"!="" then { dpshade_=$1 } else { dpshade_=0.5 }
- command sprintf("<g fill=\"rgb(%g,%g,%g)\">",int(dpshade_*255+0.5),\
+ command sprintf("<g fill=\"rgb(%g,%g,%g)\">",int(dpshade_*255+0.5),\
int(dpshade_*255+0.5),int(dpshade_*255+0.5))} } }}
# endshade
@@ -550,6 +553,22 @@
#######################################################################
+assign_dpicvars()
# print " *** dpic: dpictools.pic processed"
define dpictools_ {1}
+ case(abs(dpicopt),
+ optMFpic := -abs(optMFpic),
+ optMpost := -abs(optMFpic),
+ optPDF := -abs(optPDF),
+ optPGF := -abs(optPGF),
+ optPict2e := -abs(optPict2e),
+ optPS := -abs(optPS),
+ optPSfrag := -abs(optPSfrag),
+ optPSTricks := -abs(optPSTricks),
+ optSVG := -abs(optSVG),
+ optTeX := -abs(optTeX),
+ opttTeX := -abs(opttTeX),
+ optxfig := -abs(optxfig) )
+ dpicopt := -abs(dpicopt)
+
# dpictools end
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/Diodes.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/Diodes.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/Diodes.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -16,6 +16,8 @@
move down 0.2; right_
{diode(,B) ; move ; "`{\tt diode(,B)}'" ljust}
move down 0.2; right_
+ {diode(,b) ; move ; "`{\tt diode(,b)}'" ljust}
+ move down 0.2; right_
{diode(,G) ; move ; "`{\tt diode(,G)}'" ljust}
move down 0.2; right_
{diode(,D) ; move ; "`{\tt diode(,D)}'" ljust}
@@ -39,13 +41,13 @@
{diode(,MK) ; move ; "`{\tt diode(,MK)}'" ljust}
}
- move right_ 2.0
+ move down_ sourcerad_ right_ 2.0
{ {diode(,Z,RE) ; move ; "`{\tt diode(,Z,RE)}'" ljust}
move down 0.30; right_
{diode(,U) ; move ; "`{\tt diode(,U)}'" ljust}
move down 0.25; right_
{diode(,T) ; move ; "`{\tt diode(,T)}'" ljust}
- move down 0.30; right_
+ move down 0.20; right_
{diode(,P) ; move ; "`{\tt diode(,P)}'" ljust}
move down 0.30; right_
{diode(,LE) ; move ; "`{\tt diode(,LE)}'" ljust}
Added: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/ShadeSector.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/ShadeSector.m4 (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/ShadeSector.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -0,0 +1,14 @@
+.PS
+# ShadedSector.m4
+# https://tex.stackexchange.com/questions/635327/multi-color-circular-gradient-in-tikz
+
+gen_init
+NeedDpicTools
+
+ rx = 4
+ n = int(rx/lthick)
+ for i=1 to n do { left_
+ hsvtorgb((1-i/n)*180,1,1,r,g,b)
+ arc rad i/n*rx with .c at (0,0) outlined rgbstring(r,g,b) }
+
+.PE
Property changes on: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/ShadeSector.m4
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/Shaky.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/Shaky.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/Shaky.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -5,7 +5,7 @@
divert(-1)
`An attempt to draw shaky hand-drawn lines'
- `shakyline(linespec,type,shake=expr,[shakevals])
+ `shakyline(linespec,type,shake=val,[shakevals])
Draw a line with a tremor
arg3: shake parameter (default 1)
arg4=normal(0,1) perturbations used if given'
@@ -17,17 +17,18 @@
End: L_end_
llen = distance(Start,End)
npts = round_(llen/linewid*4)
- setkey_($3,shake,1)
- if "$4"=="" then { randn(d,npts-1,0,m4shake*(llen/npts/8)) }\
- else { for i=1 to npts-1 do { d[i] = $4[i]*m4shake*(llen/npts/8) }}
+ pushkey_(`$3',shake,1)dnl
+ sval = m4shake*llen/npts/8
+ if "$4"=="" then { randn(d,npts-1,0,sval) }\
+ else { for i=1 to npts-1 do { d[i] = $4[i]*sval) }}
P[0]: Start
- for i=1 to npts-1 do { P[i]: i/npts between Start and End + (vec_(0,d[i])) }
+ for i=1 to npts-1 do { P[i]: i/npts between Start and End + vec_(0,d[i]) }
P[npts]: End
- spline $2 from P[0] to P[1]
- for i=2 to npts do { continue to P[i] }
+ spline ifdpic(ifelse(`$2',,ctension_)) $2 from P[0] to P[1]
+ for i=2 to npts do { continue to P[i] } popdef(`m4shake')
] with .Start at L_start_; move to L_end_')
- `shakyarc(arcspec,type,s=shake,[shakevals])
+ `shakyarc(arcspec,type,shake=val,[shakevals])
Draw an arc with a tremor
arg3: s=shake parameter (default 1)
arg4=normal(0,1) perturbations used if given'
@@ -44,99 +45,71 @@
ar = distance(Start,C)
llen = abs(ar*(ae-as))
npts = round_(llen/linewid*4)
- setkey_($3,s,1)
- if "$4"=="" then { randn(d,npts-1,0,m4s*(llen/npts/8)) }\
- else { for i=1 to npts-1 do { d[i] = $4[i]*m4s*(llen/npts/8) }}
+ pushkey_($3,shake,1)dnl
+ sval = m4shake*llen/npts/8
+ if "$4"=="" then { randn(d,npts-1,0,sval) }\
+ else { for i=1 to npts-1 do { d[i] = $4[i]*sval }}
P[0]: Start
for i=1 to npts-1 do { P[i]: C + (rect_(ar+d[i],as+i/npts*(ae-as))) }
P[npts]: End
- spline $2 from P[0] to P[1]
- for i=2 to npts do { continue to P[i] }
+ spline ifdpic(ifelse(`$2',,ctension_)) $2 from P[0] to P[1]
+ for i=2 to npts do { continue to P[i] } popdef(`m4shake')
] with .Start at last arc.start; move to last arc.end')
- `shakyspline(points,type,s=shake,[shakevals])
- Draw a spline with a tremor
- arg3: s=shake parameter (default 1)
- arg4=normal(0,1) perturbations used if given'
-define(`shakyspline',
-`rpoint_(ifelse(`$1',,`to rvec_(linewid,0)',`$1'))
- SP_start_: last line.start
- SP_end: last line.end
- [ Start: SP_start_
- End: SP_end
- llen = distance(Start,End)
- npts = round_(llen/linewid*4)
- setkey_($3,s,1)
- if "$4"=="" then { randn(d,npts-1,0,m4s*(llen/npts/8)) }\
- else { for i=1 to npts-1 do { d[i] = $4[i]*m4s*(llen/npts/8) }}
- P[0]: Start
- for i=1 to npts-1 do { P[i]: i/npts between Start and End + (vec_(0,d[i])) }
- P[npts]: End
- spline $2 from P[0] to P[1]
- for i=2 to npts do { continue to P[i] }
- ] with .Start at last line.start; move to last line.end')
-
`shakyfitcurve(V,n,linetype,
- m (default 0),s=val,[shakevals])
+ m (default 0),shake=val,[shakevals])
Like fitcurve but the control points
are perturbed
arg5: s=shake parameter (default 1)
arg6=normal(0,1) perturbations used if given'
define(`shakyfitcurve',`
- {[ m4fn = `$2'; m4fm = ifelse(`$4',,0,`$4')
- M4P_[0]: `$1'[m4fm]
- setkey_($5,s,1)
-# if "$6"=="" then { !!!!
-# else { for i=1 to npts-1 do { d[i] = $5[i]*m4s*(llen/npts/8) }}
- for i=m4fm+1 to m4fn-1 do { M4P_[i-m4fm]: `$1'[i]*(4/3) }
- M4P_[m4fn-m4fm]: `$1'[m4fn]
- n = m4fn-m4fm
- # forward substitution
- M4P_[1]: M4P_[1]-M4P_[0]/6
- d[1] = 1
- for i = 2 to n-1 do {
- M4P_[i]: M4P_[i]-M4P_[i-1]/(d[i-1]*6)
- d[i] = 1-1/d[i-1]/36 }
- # backward substitution
- for i= n-1 to 1 by -1 do {
- M4P_[i]: (M4P_[i]-M4P_[i+1]/6)/d[i] }
- # draw using computed control points
- spline 0.55 `$3' from M4P_[0] to 11/32 between M4P_[0] and M4P_[1] \
- then to 5/32 between M4P_[1] and M4P_[2]
- for i=2 to n-2 do { continue to M4P_[i] }
- continue to 27/32 between M4P_[n-2] and M4P_[n-1] \
- then to 21/32 between M4P_[n-1] and M4P_[n] then to M4P_[n]
- ] with .M4P_[0] at `$1'[ifelse(`$4',,0,`$4')]} ')
+ [ m4fn = ifelse(`$2',,2,`$2'); m4fm = ifelse(`$4',,0,`$4')
+ pushkey_($5,shake,1)dnl
+ if "$6"=="" then { randn(d,2*(m4fn-m4fm-1),0,m4shake) }\
+ else { for i=1 to 2*(m4fn-m4fm-1) do { d[i] = $6[i]*m4shake }}
+ M4PP_[0]: `$1'[m4fm]
+ for i=m4fm+1 to m4fn-1 do { M4PP_[i-m4fm]: `$1'[i] dnl
+ +(d[2*(i-m4fm-1)+1],d[2*(i-m4fm-1)+2])\
+ *distance(M4PP_[i-m4fm-1],`$1'[i])/16 }
+ M4PP_[m4fn-m4fm]: `$1'[m4fn]; End: M4PP_[m4fn-m4fm]
+ fitcurve(M4PP_,m4fn-m4fm) popdef(`m4shake')
+ ] with .M4PP_[0] at `$1'[ifelse(`$4',,0,`$4')]; move to last [].End ')
divert(0)
-[
+P1: [
linethick = 2.5
round(,,colored "gray")
nl = 10
for i=0 to nl do {
- shakyline(right 6/nl up 2*(2*pmod(i,2)-1),colored "gray",shake=2-i/nl*2)
+ shakyline(right 6/nl up 2*(2*pmod(i,2)-1),,shake=2)
{sprintf("%g",2-i/nl*2) at 1/2 between L_start_ and L_end_ }
round(,,colored "gray") }
]
-[
+P2: [
linethick = 2.5
na = 3
arcrad = 1
for i=1 to na do {
- shakyarc(,colored "gray",s=1)
+ shakyarc(,colored "gray",shake=2)
}
] with .nw at last [].sw +(0,-1)
-[
+P3: [
linethick = 2.5
na = 3
arcrad = 2
for i=1 to na do {
- shakyarc(,colored "gray",s=1)
+ shakyarc(,colored "gray",shake=2)
}
- ] with .sw at last [].se +(1,0)
+ ] with .w at last [].e +(1,0)
+P4: [
+ n = 0
+ for a=0 to 359 by 30 do { V[n]: (Rect_(1,a)); n+=1 }
+ V[n]: V[0]
+ shakyfitcurve(V,n,,,shake=1)
+ ] with .nw at P2.sw + (0,-0.5)
.PE
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/csc.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/csc.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/csc.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,12 +1,11 @@
.PS
#.PS 3.5
# csc.m4
+# This file includes AntiqueClock and works for PSTricks, Tikz, and SVG
gen_init
NeedDpicTools
-ifelse(ifpstricks(T)`'ifmpost(T)`'ifpostscript(T)`'ifpgf(T),,
- `PSTricks, MetaPost, PGF, or Postscript required for this diagram',`
-skale = 3.5/3.97*0.9955
+skale = 0.878
circlerad=1.91*skale
hubrad=0.10*skale
s=0.5*skale
@@ -49,7 +48,6 @@
# Sail
thinlines_
- setrgb(midnight)
rgbfill(midnight,
line from coord(0.44,3.38) to coord(0.44,2.6) \
then to coord(2.1,-1.75) \
@@ -76,10 +74,10 @@
spline to coord(-1,-2.08) then to coord(0.55,-1.77)
)
]
-')
-# PSTricks or tikz only:
-ifelse(ifpstricks(T)`'ifpgf(T),T,`
+
Clock: [
+# PSTricks, tikz, or svg only:
+ifelse(ifpstricks(T)`'ifpgf(T)`'ifsvg(T),T,`
#.PS
# AntiqueClock.m4
#gen_init
@@ -86,6 +84,8 @@
#NeedDpicTools
iflatex(`latexcommand({\sf)')
+ifsvg(svg_font(font-family="sans-serif" font-stretch="condensed")
+ svg_rot_init(test))
# https://tex.stackexchange.com/questions/236923/generate-analog-clock-with-numbered-face-add-seconds-roman-numerals
@@ -127,18 +127,28 @@
move to C
v = 0.25*hhsf
{ line to rvec_(1.1*hhsf,0) thick 0.15/(1bp__)*hhsf }
- { C1: circle rad v at rvec_(1.25*hhsf,0) fill_(0) }
+ C1: rvec_(1.25*hhsf,0)
d = `$1'-1.25*hhsf
q = 1bp__*hhsf
r1 = (d^2 + q^2 - v^2)/(v-q)/2
- h = r1+v
- shade(0,
- arc ccw from C1+vec_(d/h*v,(r1+q)/h*v) to \
- C1+vec_(d,q) rad r1 with .c at C1+vec_(d,r1+q)
- arc ccw from C1+vec_(d,-q) to C1+vec_(d/h*v,-(r1+q)/h*v) rad r1 \
- with .c at C1+vec_(d,-r1-q))
- ]')
+ tang = atan2((r1+q),d)
+ for i=0 to 3 do {
+ X[i]: C1+vec_(rect_(v, pi_+i/3*( tang-pi_)))
+ Y[i]: C1+vec_(rect_(v,-pi_+i/3*(-tang+pi_)))
+ }
+ n = 3
+ for i=1 to 4 do { aa = -pi_+tang + i/4*(pi_/2-tang)
+ XX: (d,r1+q)+(rect_(r1,aa))
+ n+=1;
+ X[n]: C1+vec_(XX.x, XX.y)
+ Y[n]: C1+vec_(XX.x,-XX.y)
+ }
+ m = n
+ for i= 0 to m do { n+=1; X[n]: Y[m-i] }
+ fitcurve(X,n,shaded rgbstring(0,0,0))
+ ]')
+
define(`AntiqueClock',`[ # h,m,s,diam
# Clock size parameters:
hour = ifelse(`$1',,3,`$1')
@@ -183,27 +193,34 @@
circle rad r6 at C
circle rad r7 at C
-# Text rotation for PSTricks or TikZ
- define(`rottext',
- `ifpstricks(`\rput[c]{%g}(0,0)',`ifpgf(`\pgftext[rotate=%g]',%g)')')
+# Ad hoc shift of rotated SVG text
+ ifsvg(`define adj {+(-cosd($`'1)*textht*0.5*sign(180-($`'1)),\
+ (0.25+0.25*cosd(2*($`'1)))*textht) }',
+ `define adj {}')
+
# Outer numbers
- command sprintf("\font\outerfont=cmss12 at %4.2fin",r3-r4)
- for mn = -15 to 15 by 5 do { sprintf("rottext{\outerfont %g}",\
- -mn/60*360,pmod(mn,60)) at C+(Rect_((r3+r4)/2,90-mn/60*360)) }
- for mn = 20 to 40 by 5 do { sprintf("rottext{\outerfont %g}",\
- 180-mn/60*360,mn) at C+(Rect_((r3+r4)/2,90-mn/60*360)) }
+ iflatex(`command sprintf("\font\outerfont=cmss12 at %4.2fin",r3-r4)')
+ ifsvg(`textht = (r3-r4)*0.6')
+ for_(-15,15,5,`aa=90-(m4x)*6
+ r_text(eval(-(m4x)*6),eval((m4x+60)%60),
+ at C+(Rect_((r3+r4)/2,aa)) adj(aa))')
+ for_(20,40,5,`aa=450-(m4x)*6
+ r_text(eval(180-m4x*6),m4x,at C+(Rect_((r3+r4)/2,aa)) adj(aa))')
# Outer tics
for mn = 1 to 60 do { t = 90-mn/60*360
line from C+(Rect_(r5,t)) to C+(Rect_(r4,t)) }
# Inner numbers
- command sprintf("\font\innerfont=cmss12 at %4.2fin",r5-r6)
- Loopover_(`mx',`t = (m4Lx-4)/12*360;
- sprintf("rottext{\scalebox{0.7}[1.0]{\innerfont mx}}",-t) \
- at C+(Rect_((r5+r6)/2,90-t))', IX,X,XI,XII,I,II,III)
- Loopover_(`mx',`t = (m4Lx+3)/12*360;
- sprintf("rottext{\scalebox{0.7}[1.0]{\innerfont mx}}",-t+180) \
- at C+(Rect_((r5+r6)/2,90-t))', IV,V,VI,VII,VIII)
+ iflatex(`command sprintf("\font\innerfont=cmss12 at %4.2fin",r5-r6)')
+ ifsvg(`textht = (r5-r6)*0.6')
+ Loopover_(`mx',`aa=180-(m4Lx-1)*30
+ r_text(eval(120-m4Lx*30),iflatex({\innerfont mx},mx),
+ at C+(Rect_((r5+r6)/2,aa)) adj(aa))',
+ IX,X,XI,XII,I,II,III)
+ Loopover_(`mx',`aa=360-m4Lx*30
+ r_text(eval(90-m4Lx*30), iflatex({\innerfont mx},mx),
+ at C+(Rect_((r5+r6)/2,aa)) adj(aa))',
+ IV,V,VI,VII,VIII)
# Inner tics
for mn = 5 to 60 by 5 do { t = 90-mn/60*360
@@ -216,15 +233,15 @@
# Center
dot(at C,0.1/4*r1,1)
- ]')
+ ]') `# AntiqueClock'
Clock1: AntiqueClock(,,,3.5)
# Clock2: AntiqueClock(4,50,07,2) at Clock1.e+(1.5,0)
iflatex(`latexcommand(}%)')
+ ifsvg(`command "</g>"')
-
#.PE
+',` "AntiqueClock.m4 requires PSTricks, Tikz-pgf, or SVG" ')
] with .sw at last [].se+(0.25,0)
-',` "AntiqueClock.m4 requires pstricks or pgf" ')
.PE
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/examples.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/files.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/files.tex 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/files.tex 2022-07-28 20:05:13 UTC (rev 63991)
@@ -99,7 +99,7 @@
\bfig{
{\small\centerline{\getpic{Xform}} }
- \caption{The transformer element, drawing direction down
+ \caption{Some variations of the transformer element, drawing direction down
\src{Xform.m4}.}
}
@@ -129,7 +129,7 @@
\bfig{
\centerline{\getpic{Relay}}
- \caption{Some variants of the {\tt relay} macro
+ \caption{Some variants of {\tt relay}
\src{Relay.m4}.}
}
@@ -667,7 +667,7 @@
\bfig{
\centerline{\getpic{Escher}}
- \caption{Two Escher-like objects
+ \caption{Penrose stairs and an Escher-like object
\src{Escher.m4}.}
}
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/ics.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/ics.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/ics.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -243,17 +243,17 @@
D0`$+$', D0\_SH, D0`$-$', CLK`$+$', CLK\_SH, CLK`$-$',
CEC, GND, SCL, SDA,$+${5}V)
line from Base.nw+(m4bwid*2/3-lg_pinsep,0) up plen
- r_text(21) at last line.c+(-5bp__,0)
- r_text(SH2) at last line.start + (0,-10bp__)
+ r_text(,21,at last line.c+(-5bp__,0))
+ r_text(,SH2,at last line.start + (0,-10bp__))
line from Base.nw+(m4bwid*2/3-2*lg_pinsep,0) up plen
- r_text(20) at last line.c+(-5bp__,0)
- r_text(SH1) at last line.start + (0,-10bp__)
+ r_text(,20,at last line.c+(-5bp__,0))
+ r_text(,SH1,at last line.start + (0,-10bp__))
line from Base.sw+(m4bwid*2/3-lg_pinsep,0) down plen
- r_text(23) at last line.c+(-5bp__,0)
- r_text(SH4) at last line.start + (0, 10bp__)
+ r_text(,23,at last line.c+(-5bp__,0))
+ r_text(,SH4,at last line.start + (0, 10bp__))
line from Base.sw+(m4bwid*2/3-2*lg_pinsep,0) down plen
- r_text(22) at last line.c+(-5bp__,0)
- r_text(SH3) at last line.start + (0, 10bp__)
+ r_text(,22,at last line.c+(-5bp__,0))
+ r_text(,SH3,at last line.start + (0, 10bp__))
#
`$4']')
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/mf/cct.mf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/mf/cct.mf 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/mf/cct.mf 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,5 +1,5 @@
% cct.mf, generated by Mfpic, v1.10 2012/12/03,
-% from TeX source "font" on 2022/02/11 at 17:20
+% from TeX source "font" on 2022/07/27 at 16:40
numeric mfpicversion; mfpicversion := 110;
if unknown mode: mode := localfont; fi
if unknown mag: mag := 1000/1000; fi
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/sfg.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/sfg.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/sfg.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -14,7 +14,7 @@
sfgline(,K/M)
DDY2: sfgnode(,\ddot{y}_2,sfgbelow rjust)
sfgline(,s^{-1})
- DY2: sfgnode(,`\dot{y}_2=x_2',sfgbelow ljust)
+ DY2: sfgnode(,\d`'ot{y}_2=x_2,sfgbelow ljust) dnl dot is an m4 macro
sfgline(,s^{-1})
Y2: sfgnode(,y_2=x_1,sfgbelow ljust)
@@ -23,6 +23,7 @@
sfgarc(from Y2 to DDY2,-K/M,above,ccw,sf)
sfgarc(from Y2 to Y1,1,sfgabove,,sf)
]
+#showbox_(,"T")
# Graph 2
B: [
@@ -39,6 +40,7 @@
sfgself(at X1,R,\;a_{11},ljust,cw,1.5)
sfgself(at X2,-90,a_{22},sfgbelow)
] with .w at T.e + (linewid/2,-linewid/4)
+#showbox_(,"B")
# Graph 3
G3: [#sfg_init( 0.85,0.35/2 ) # change node spacing and increase node size
@@ -50,6 +52,7 @@
sfgarc(from N2 to N1,F_2,sfgabove,ccw,)
sfgarc(from N3 to N1,F_3,sfgbelow,ccw,1.4)
] with .nw at T.sw
+#showbox_(,"G3")
A: [#sfg_init( 0.75,0.15 )
sfg_wid = 0.75
@@ -65,6 +68,7 @@
sfgself(at R,-90,e,sfgabove,cw)
arrow right linewid*2/3 from R.e
] with .w at G3.e+(linewid/2,0)
+#showbox_(,"A")
G4: [sfg_init( 2.0,0.25/2 ) # change node spacing and increase node size
s1 = 0.9
@@ -85,6 +89,33 @@
sfgline(right_ sfg_wid/2,\nu+3\lambda,below,->)
{"$\ldots$" wid 0.3 ljust}
] with .nw at G3.sw+(0,-0.15)
+#showbox_(,"G4")
+
+# https://tex.stackexchange.com/questions/637455/tikz-how-to-set-exact-position-of-node
+G5: [sfg_init( 1.75,0.25/2 ) # change node spacing and increase node size
+ Dstar: sfgnode(,*)
+ D0: sfgnode(at Dstar+(2,0),\diamond_0)
+ sfgline(,`1-r_{x{-}1,x}-q^i_{x{-}1,x}',,->)
+ Ddots: sfgnode(,\cdots)
+ sfgline(,`1-r_{x{-}4,x}-q^i_{x{-}4,x}',,->)
+ D5: sfgnode(,\diamond_5)
+ DD: sfgnode(at D0+(0,-1.0),\dagger)
+ sfgself(at Dstar,L,,,,0.5)
+ "$`1-i_x-q^a_x'$" wid 45bp__ at Dstar + (-0.3,0.25)
+ sfgself(at DD,D,1\mathstrut,above_,,0.5)
+ sfgself(at D5,R,,,,0.5)
+ "$`1-q^i_x-r_x'$" wid 47bp__ at D5 + (0.3,0.25)
+ sfgarc(from D0 to Dstar ->,`r_{x,x}\mathstrut',below_,ccw)
+ sfgarc(from Dstar to D0 ->,`i_x\mathstrut',above_,ccw)
+ sfgarc(from Dstar to DD ->,`q^a_x\mathstrut',above_ ljust_,ccw)
+ sfgline(from D0 to DD,`\;q^i_{x,x}',ljust,->)
+ sfgarc(from Ddots to Dstar,`r_{j,x}\mathstrut',below_,ccw,,->)
+ sfgarc(from Ddots to DD ->,`q^i_{x{-}j,x}\mathstrut',above_ rjust_,)
+ sfgarc(from D5 to Dstar ->,`r_x\mathstrut',below_,ccw)
+ sfgarc(from D5 to DD ->,`q^i_x\mathstrut',above_ rjust_,)
+ ] with .nw at G4.sw+(0,-0.15)
+#howbox_(,"G5")
+
move from (T.w,G4.s)-(7bp__,6bp__) to B.ne+(15bp__,6bp__)
]
#showbox_
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/DiodesSVG.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/DiodesSVG.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/DiodesSVG.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -15,6 +15,8 @@
move down 0.2; right_
{diode(,B) ; move ; "`diode(,B)'" ljust}
move down 0.2; right_
+ {diode(,b) ; move ; "`diode(,b)'" ljust}
+ move down 0.2; right_
{diode(,G) ; move ; "`diode(,G)'" ljust}
move down 0.2; right_
{diode(,D) ; move ; "`diode(,D)'" ljust}
@@ -38,8 +40,8 @@
{diode(,MK) ; move ; "`diode(,MK)'" ljust}
}
- move right_ 2.0
-{ {diode(,Z,RE) ; move ; "`diode(,Z,RE)'" ljust}
+ move down_ sourcerad_ right_ 2.0
+{ {diode(,Z,RE) ; move ; "`diode(,Z,RE)'" wid 70bp__ ljust}
move down 0.25; right_
{diode(,T) ; move ; "`diode(,T)'" ljust}
move down 0.30; right_
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/GeometrySVG.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/GeometrySVG.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/GeometrySVG.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -2,99 +2,10 @@
# Geometry.m4
# Some constructions from https://tex.stackexchange.com/
gen_init
+maxpswid = 9
-Fig1: [ ls = 2/3 # local scale
- A: Here; "A" at A above
- B: A+(-1*ls,-3.5*ls); "B" at B below rjust
- C: B+(4.6*ls,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)
- ]
-
-Fig2: [ ls = 3/4 # local scale
-# https://tex.stackexchange.com/questions/593272/drawing-complex-geometry
- P: dot(at Here); "P" at P.s below
- N: dot(at P+(3.5*ls,1.5*ls)); "N" at N.se ljust below
- O: dot(at (N,P)); "O" at O.s below
- R: dot(at 1/3 between O and P);"R" at R.s below
- M: dot(at (R,N)); "M" at M.se ljust below
- Q: dot(at (M.x,M.y+distance(M,N)/distance(N,O)*distance(P,O)));"Q" at Q.e ljust
- line from P to Q then to N then to O
- B: line to P chop -0.3
- line from M to N
- Pu: line from R to Q chop 0 chop -0.3
- H: line from P to N chop 0 chop -0.3
- X: dot(at Intersect_(Pu,H)); "X" at X.se ljust below
- thinlines_
- RightAngle(Q,M,N)
- RightAngle(Q,N,H.end)
- RightAngle(N,O,B.start)
- ArcAngle(N,P,Q,0.4); "svg_beta" at last arc.ne above ljust
- ArcAngle(O,P,N,0.5); "svg_alpha" at last arc.start+(5bp__,8bp__)
- ArcAngle(R,Q,N,0.5); "svg_alpha" at last arc.start+(8bp__,-5bp__)
- ] with .w at Fig1.e+(-0.4,0)
-
-Fig3: [
+Fig1: [
# FourbarSVG.m4
-# https://tex.stackexchange.com/questions/609452/help-drawing-a-more-sophisticated-right-triangle-with-tikz-or-something-else
-
- textkht = 12/72
- unit = 0.6
- C: Here; { "C" at C rjust below }
- B: C+(4*unit,0); { "B" at B ljust below }
- A: C+(0,3*unit); { "A" at A rjust above }
- H: PerpTo(C,A,B); { "H" at H ljust above }
- line from C to H then to B then to C shaded rgbstring(0.5,0.8,0.9)
-# line from C to H then to B then to C shaded "CornflowerBlue"
- line from C to H then to A then to C shaded rgbstring(0.8,0.9,0.7)
-# line from C to H then to A then to C shaded "SpringGreen"
- ArcAngle(C,A,B,unit*0.4)
- ArcAngle(C,A,B,unit*0.5)
- ArcAngle(A,B,C,unit*0.5,,"svg_theta" rjust)
- ArcAngle(B,C,H,unit*0.5); {"svg_theta" at C+(unit*0.3,unit*0.17) }
- ArcAngle(B,C,A,unit*0.6)
- RightAngle(B,C,A,unit*0.17)
- RightAngle(C,H,A,unit*0.17)
-
- ] with .nw at Fig1.sw+(0.2,-0.3)
-
-Fig4: [
-
-# FourbarSVG.m4
# https://tex.stackexchange.com/questions/563831/how-to-draw-four-bar-linkage-with-center-of-mass
ls = 1/25.4 # local scale
@@ -149,7 +60,95 @@
line from A0+(3*ls,0) right 8*ls
ArcAngle(Here,A0,B1,9*ls) ->; "svg_theta`'svg_sub(0)" \
at last arc.start+(2,2)*ls
+ ]
- ] with .nw at Fig3.ne+(0.2,0.2)
+Fig2: [
+# FourbarSVG.m4
+# https://tex.stackexchange.com/questions/609452/help-drawing-a-more-sophisticated-right-triangle-with-tikz-or-something-else
+ textkht = 12/72
+ unit = 0.6
+ C: Here; { "C" at C rjust below }
+ B: C+(4*unit,0); { "B" at B ljust below }
+ A: C+(0,3*unit); { "A" at A rjust above }
+ H: PerpTo(C,A,B); { "H" at H ljust above }
+ line from C to H then to B then to C shaded rgbstring(0.5,0.8,0.9)
+# line from C to H then to B then to C shaded "CornflowerBlue"
+ line from C to H then to A then to C shaded rgbstring(0.8,0.9,0.7)
+# line from C to H then to A then to C shaded "SpringGreen"
+ ArcAngle(C,A,B,unit*0.4)
+ ArcAngle(C,A,B,unit*0.5)
+ ArcAngle(A,B,C,unit*0.5,,"svg_theta" rjust)
+ ArcAngle(B,C,H,unit*0.5); {"svg_theta" at C+(unit*0.3,unit*0.17) }
+ ArcAngle(B,C,A,unit*0.6)
+ RightAngle(B,C,A,unit*0.17)
+ RightAngle(C,H,A,unit*0.17)
+ ] with .nw at Fig1.sw+(0.2,0)
+
+
+Fig3: [ ls = 3/4 # local scale
+# https://tex.stackexchange.com/questions/593272/drawing-complex-geometry
+ P: dot(at Here); "P" at P.s below
+ N: dot(at P+(3.5*ls,1.5*ls)); "N" at N.se ljust below
+ O: dot(at (N,P)); "O" at O.s below
+ R: dot(at 1/3 between O and P);"R" at R.s below
+ M: dot(at (R,N)); "M" at M.se ljust below
+ Q: dot(at (M.x,M.y+distance(M,N)/distance(N,O)*distance(P,O)));"Q" at Q.e ljust
+ line from P to Q then to N then to O
+ B: line to P chop -0.3
+ line from M to N
+ Pu: line from R to Q chop 0 chop -0.3
+ H: line from P to N chop 0 chop -0.3
+ X: dot(at Intersect_(Pu,H)); "X" at X.se ljust below
+ thinlines_
+ RightAngle(Q,M,N)
+ RightAngle(Q,N,H.end)
+ RightAngle(N,O,B.start)
+ ArcAngle(N,P,Q,0.4); "svg_beta" at last arc.ne above ljust
+ ArcAngle(O,P,N,0.5); "svg_alpha" at last arc.start+(5bp__,8bp__)
+ ArcAngle(R,Q,N,0.5); "svg_alpha" at last arc.start+(8bp__,-5bp__)
+ ] with .sw at Fig2.e+(-0.4,-0.7)
+
+Fig4: [ ls = 2/3 # local scale
+ A: Here; "A" at A above
+ B: A+(-1*ls,-3.5*ls); "B" at B below rjust
+ C: B+(4.6*ls,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)
+ ] with .w at Fig3.e+(-0.4,0.8)
+
.PE
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/LoglogSVG.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/LoglogSVG.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/LoglogSVG.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -88,7 +88,7 @@
#gen_init
svg_font(Helvetica,10pt__)
-#svg_rot_init(test)
+#vg_rot_init(test)
svg_rot_init(LoglogSVG)
divert(-1)
@@ -519,7 +519,7 @@
move to dtop(yearmin,y)
if y<2 then {{ line right htic }}
sprintf("%g",y) wid 5bp__ rjust }
- svg_rot(90,"Tonnes of oil equivalent per capita" at Left-(0.3,0))
+ svg_rot(90,"Tonnes of oil equivalent per capita",at Left-(0.3,0))
Right: line from dtop(yearmax,tonsmin) to dtop(yearmax,tonsmax)
for p=0 to popmax do {
@@ -585,16 +585,16 @@
"Oil" wid 15bp__ at dtop(2000,0.9)
"Gas" wid 20bp__ at dtop(2000,1.41)
"Wood" wid 20bp__ at dtop(1889,0.15)
- svg_rot(50,"Population" at dtop(1975,0.9))
+ svg_rot(50,"Population",at dtop(1975,0.9))
brpos = 2017
Q: brace(down_ 2.96 with .c at dtop(brpos,1.03))
- svg_rot(90,"90 %" at Q.c+(15bp__,2bp__))
- svg_rot(90,"nonrenewable" at Q.c+(26bp__,2bp__))
+ svg_rot(90,"90 %",at Q.c+(15bp__,2bp__))
+ svg_rot(90,"nonrenewable",at Q.c+(26bp__,2bp__))
R: brace(down_ 0.28 with .c at dtop(brpos,.09))
[svg_rot(90,"10 %")] ht 15bp__ wid 10bp__ at R.c+(15bp__,4bp__)
- svg_rot(90,"renewable" at R.c+(26bp__,17bp__))
+ svg_rot(90,"renewable",at R.c+(26bp__,17bp__))
linethick_(0.6)
arrow <- from dtop(1998,1.55) left 0.15 up 0.2
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/Makefile
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/Makefile 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/Makefile 2022-07-28 20:05:13 UTC (rev 63991)
@@ -75,9 +75,9 @@
ex01SVG.svg ex02SVG.svg ex03SVG.svg ex04SVG.svg ex05SVG.svg ex06SVG.svg \
ex08SVG.svg ex09SVG.svg ex10SVG.svg ex11SVG.svg ex12SVG.svg \
ex15SVG.svg ex16SVG.svg ex17SVG.svg ex18SVG.svg ex21SVG.svg \
- expSVG.svg fetSVG.svg graysurfSVG.svg lcctSVG.svg \
+ expSVG.svg fetSVG.svg graysurfSVG.svg keyboardSVG.svg lcctSVG.svg \
pwrsupplySVG.svg quickSVG.svg randomSVG.svg recycleSVG.svg relaycoilSVG.svg \
- roseSVG.svg sfgSVG.svg shapesSVG.svg paletteSVG.svg \
+ roseSVG.svg sfgSVG.svg shapesSVG.svg SmithchartSVG.svg paletteSVG.svg \
thyristorSVG.svg ujtSVG.svg UNOSVG.svg wormSVG.svg XORSVG.svg Np.svg
examplesSVG.html: examplesSVG.htmx
@@ -114,7 +114,7 @@
xst: Incleps.png
# necessary because of rotated text:
-LoglogSVG.svg test.svg:
+LoglogSVG.svg:
m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' > $*.pic
$(DPIC) -v $*.pic > $*.svg
m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' > $*.pic
@@ -121,7 +121,7 @@
$(DPIC) -v $*.pic > $*.svg
grep '<\!-- width' $*.svg | sed -e 's%<\!-- *%%' -e 's% *-->%%' > $*.siz
-ConnectorsSVG.svg cscSVG.svg test.svg:
+ConnectorsSVG.svg cscSVG.svg SmithchartSVG.svg test.svg:
m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' > $*.pic
$(DPIC) -v $*.pic > $*.svg
m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' > $*.pic
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/PconnSVG.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/PconnSVG.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/PconnSVG.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -45,14 +45,11 @@
`"(,GC)"' at last [].s below
C12: pconnex(,GCF) with .w at last [].e + (0.2,0)
`"(,GCF)"' at last [].s below
-] with .nw at P1.C1.sw + (0,-0.35)
-
-P3:[
- C4: pconnex(,P)
+ C4: pconnex(,P) with .w at last [].e + (0.2,0)
`"(,P)"' at last [].s below
C11: pconnex(,PF) with .w at last [].e+(0.2,0)
`"(,PF)"' at C11.s below
-] with .nw at P2.C9.sw + (0,-0.35)
+] with .nw at P1.C1.sw + (0,-0.35)
command "</g>" # end font
Added: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/SmithchartSVG.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/SmithchartSVG.m4 (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/SmithchartSVG.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -0,0 +1,222 @@
+.PS
+# Smithchart.m4
+gen_init
+#https://utah.instructure.com/courses/684846
+#https://www.youtube.com/watch?v=RptPsP8hS4g
+#https://www.youtube.com/watch?v=UUk1R01uEoE
+##https://www.youtube.com/watch?v=TsXd6GktlYQ
+
+scalefactor = 6.5/2 # to vary the final chart diameter
+scalefactor = 6.5/2*3/4 # 3/4 scale for svg examples
+# Basic definitions
+define Rac {($1/($1+1),0)*scalefactor} # centre of const ra circle
+define rar {1/abs($1+1)*scalefactor} # radius
+define Xac {(1,1/($1))*scalefactor} # centre of const xa circle
+define xar {1/abs($1)*scalefactor} # radius
+define Rc {CRc[$1*100]} # Rc circle indexed by value
+define Xc {CXc[$1*100]} # Xc circle indexed by value
+define grayline {outlined graystring($1)}
+define arct {arc thick $1}
+
+# `SGamma(ra,xa) chart location of complex value'
+define(`SGamma',`(ifelse(`$2',0,`Rc($1).w',
+ `Cintersect(Rac(`$1'),rar(`$1'),Xac(`$2'),xar(`$2'), dnl
+ ifelse(substr(`$2',0,1),-,R))'))')
+# 1-piece Ra arc
+define(`RaArc1',`ifinstr(`$1',to,for ix=`$1' do,ix=`$1';) {
+ Rc(ix): arct(`$2') grayline(`$2'g) dnl
+ from SGamma(ix,`$3') to SGamma(ix,-(`$3')) with .c at Rac(ix)}')
+# 2-piece Ra arc
+define(`RaArc2',`ifinstr(`$1',to,for ix=`$1' do,ix=`$1';) {
+ Rc(ix): arct(`$2') grayline(`$2'g) dnl
+ from SGamma(ix,`$3') to SGamma(ix,`$4') with .c at Rac(ix)
+ arct(`$2') grayline(`$2'g) dnl
+ from SGamma(ix,-(`$4')) to SGamma(ix,-(`$3')) with .c at Rac(ix)}')
+# Positive and negative Xa arcs
+define(`XaArc2',`ifinstr(`$1',to,for ix=`$1' do,ix=`$1';) {
+ Xc(ix): arct(`$2') grayline(`$2'g) dnl
+ from SGamma(`$3',ix) to SGamma(`$4',ix) with .c at Xac(ix)
+ Xc(-ix): arct(`$2') grayline(`$2'g) dnl
+ cw from SGamma(`$3',-ix) to SGamma(`$4',-ix) with .c at Xac(-ix)}')
+
+define(`Smithchart',`[
+iflatex(s_init(tst)
+ command "{\tiny")
+ifsvg(svg_font(sans-serif,10bp__)
+ svg_rot_init(SmithchartSVG))
+
+ thk = 1.2 # wicth of thick lines (pt)
+ thn = 0.4 # thin lines
+ thkg = 0.33 # weight of thick lines
+ thkg =0.5
+ thng = 0.4 # weight of thin lines
+ thng = 0.6
+
+C: circle thick thk rad rar(0) at (0,0)
+ line thick thk grayline(thkg) from C.w to C.e
+
+Rc(50): circle thick thk grayline(thkg) rad rar(50) at Rac(50)
+Loopover_(`term',`RaArc1(patsubst(term,:,`,'))',
+ 20:thn:50,
+ 30 to 40 by 10:thn:50,
+ 20:thk:20,
+ 12 to 18 by 2:thn:20,
+ 10:thn:50,
+ 10:thk:20,
+ 6 to 9:thn:10,
+ 5:thk:10,
+ 2.2 to 4.81 by 0.2:thn:5,
+ 4:thn:20,
+ 4:thk:5,
+ 3:thn:10,
+ 3:thk:5,
+ 2:thn:20,
+ 2:thk:5,
+ 1.1 to 1.91 by 0.2:thn:2,
+ 1.2 to 2.01 by 0.2:thk:2,
+ 1:thn:10,
+ 1:thk:5,
+ 0.2 to 1.81 by 0.2:thn:5,
+ 0.2 to 0.81 by 0.2:thk:2,
+ 0.6 to 0.91 by 0.1:thk:1,
+ 0.55 to 0.951 by 0.1:thn:1,
+ 0.1 to 0.91 by 0.2:thn:2,
+ 0.1 to 0.91 by 0.2:thk:1,
+ 0.22 to 0.481 by 0.02:thn:0.5,
+ 0.01 to 0.191 by 0.01:thn:0.2,
+ 0.05 to 0.151 by 0.1:thk:0.2)
+
+Loopover_(`term',`RaArc2(patsubst(term,:,`,'))',
+ 0.05 to 0.451 by 0.1:thn:1:0.5,
+ 0.02 to 0.181 by 0.02:thn:0.5:0.1)
+
+Xc(50): arct(thk) cw grayline(thkg) from C.e \
+ to SGamma(0,50) with .c at Xac(50)
+Xc(-50): arct(thk) grayline(thkg) from C.e \
+ to SGamma(0,-50) with .c at Xac(-50)
+
+Loopover_(`term',`XaArc2(patsubst(term,:,`,'))',
+ 10 to 20 by 10:thn:0:50,
+ 7 to 9 by 2:thn:0:10,
+ 2 to 18 by 2:thn:0:20,
+ 0.2 to 4.81 by 0.2:thn:0:5,
+ 1.1 to 1.91 by 0.2:thn:0:2,
+ 1 to 4:thn:0:10,
+ 0.1 to 0.91 by 0.2:thn:0:2,
+ 0.22 to 0.481 by 0.02:thn:0:0.5,
+ 0.55 to 0.951 by 0.1:thn:0:1,
+ 10 to 20 by 10:thk:0:20,
+ 5:thk:0:10,
+ 1.2 to 1.81 by 0.2:thk:0:2,
+ 1 to 4:thk:0:5,
+ 0.2 to 0.81 by 0.2:thk:0:2,
+ 0.1 to 0.91 by 0.2:thk:0:1)
+
+Loopover_(`term',`XaArc2(patsubst(term,:,`,'))',
+ 0.05 to 0.451 by 0.1:thn:0.5:1,
+ 0.02 to 0.181 by 0.02:thn:0:0.5,
+ 0.02 to 0.191 by 0.01:thn:0:0.2, dnl 0.02 should be 0.01
+ 0.05 to 0.151 by 0.1:thk:0:0.2)
+dnl these avoid TeX arithmetic overflow:
+ line thick thn grayline(thng) from SGamma(0,0.01) to SGamma(0.2,0.01)
+ line thick thn grayline(thng) from SGamma(0,-0.01) to SGamma(0.2,-0.01)
+ dot(at C,,1,grayline(thkg))
+
+dnl Internal labels start here
+ textht = C.wid/120
+# Horizontal axis
+Loopover_(`t',`box wid textht ht textht*1.5 colored "white" \
+ with .se at Rc(t).w+(-2bp__,2bp__)
+ r_text(90,"t",at Rc(t).w+(-textht/3,textht*1.5))',
+ 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9, 1,1.2,1.4,1.6,1.8, 2,3,4,5,10,20,50)
+# Xc=1 labels
+Loopover_(`tt',
+ `define(`m4ta',patsubst(tt,:.*))define(`m4vl',patsubst(tt,.*:))dnl
+ X: SGamma(m4vl,1)
+ M: move from Rc(m4vl) to X; ax = lin_ang(M)*rtod_-90 #; print ax
+ r_text(m4ta,m4vl,at X+(Rect_(textht*2,ax+30)))
+ Y: X-Rc(m4vl); X: Rc(m4vl)+(Y.x,-Y.y)
+ r_text(-m4ta,m4vl,at X+(Rect_(textht*1.7,-(ax+30)))) ',
+ 10:0.2, 19:0.4, 26:0.6, 32:0.8, 37:1)
+# right-side circumference
+Loopover_(`tt',
+ `define(`m4ta',patsubst(tt,:.*))define(`m4vl',patsubst(tt,.*:))dnl
+ X: Xc(m4vl).start; ax = atan2(X.y,X.x)*rtod_ ; # print round_(ax)
+ r_text(m4ta,m4vl,at X+(Rect_(textht*2,ax-120)))
+ if m4vl>=2 then {
+ r_text(-m4ta,m4vl,at (X.x,-X.y)+(Rect_(textht*1.5,-ax+135))) }\
+ else { r_text(-m4ta,m4vl,at (X.x,-X.y)+(Rect_(textht*2,-ax+150))) } ',
+ 6:20, 11:10, 23:5, 28:4, 37:3, 53:2, 58:1.8, 64:1.6, 71:1.4, 80:1.2, 90:1)
+# left-side circumference
+Loopover_(`tt',
+ `X: Xc(m4Lx*0.1).start; # print round_(atan2(X.y,X.x)*rtod_-180)
+ r_text(-patsubst(tt,:,`,'),at X+(Rect_(textht*1.7,-m4Lx*11+40)))
+ r_text( patsubst(tt,:,`,'),at (X.x,-X.y)+(Rect_(textht*2.1,m4Lx*11-30))) ',
+ 11:0.1, 23:0.2, 33:0.3, 44:0.4, 53:0.5, 62:0.6, 70:0.7, 77:0.8, 84:0.9)
+# Ra=1 labels
+Loopover_(`tt',`X: SGamma(1,m4Lx*0.2)
+ M: move from Rac(1) to X; # print round_(lin_ang(M)*rtod_-180)
+ r_text(-eval(m4Lx*11),ifelse(m4Lx,5,1,0.eval(m4Lx*2)),
+ at X+(Rect_(textht*1.5,-m4Lx*11+40)))
+ r_text( eval(m4Lx*11),ifelse(m4Lx,5,1,0.eval(m4Lx*2)),
+ at (X.x,-X.y)+(Rect_(textht*2,m4Lx*11-30))) ',
+ 11:0.2, 23:0.4, 33:0.6, 44:0.8, 53:1)
+
+ textht *=0.9
+# Wavelength circle and tics
+ wvsep = textht*3/2
+ wltic = C.wid/120
+ circle thick thn grayline(thkg) diam C.diam+wltic/2+wvsep*11 at C
+W: circle thick thn grayline(thkg) diam C.diam+wvsep*8 at C
+ for tc=0 to 249 do {ax = 180-tc/250*360; line thick thn grayline(thkg) \
+ from W+(Rect_(W.rad+wltic/2,ax)) to W+(Rect_(W.rad-wltic/2,ax)) }
+# Wavelength circle labels
+for_(0,49,1,
+ `ifelse(eval(m4x<5),1,,
+ `r_text(eval(90-m4x*180/25),ifelse(m4x,0,0,eval(m4x<10),1,0.0`'m4x,0.`'m4x),
+ at W+(Rect_(W.rad+wltic/2+textht*0.5,180-m4x*180/25)))')
+ ifelse(eval(m4x<47),1,
+ `r_text(eval(90-m4x*180/25),ifelse(m4x,0,0,eval(m4x>40),1,0.0`'eval(50-m4x),
+ 0.`'eval(50-m4x)), at W+(Rect_(W.rad-wltic/2-textht*1.0,180-m4x*180/25)))')')
+
+ circle thick thn grayline(thkg) diam C.diam+wvsep*5 at C
+A: circle thick thn grayline(thkg) diam C.diam+wvsep*2.5 at C
+ for tc=0 to 359 by 2 do {line thick thn grayline(thkg) \
+ from A+(Rect_(A.rad+wltic/2,tc)) to A+(Rect_(A.rad,tc)) }
+for_(20,170,10,
+ `r_text(eval(-90+m4x),m4x,at A+(Rect_(A.rad+textht*0.5,m4x)))
+ r_text(eval( 90-m4x),-m4x,at A+(Rect_(A.rad+textht*1.2,-m4x)))
+ ')
+ r_text(90,180,at A-(A.rad+textht/2,0))
+Loopover_(`rca',
+ `r_text(eval(90-(180-rca/10)),eval(m4Lx*5+5),
+ at A+(Rect_(A.rad-textht*0.7,rca/10)))
+ r_text(eval(-90+(180-rca/10)),eval(-m4Lx*5-5),
+ at A+(Rect_(A.rad-textht*0.7,-rca/10))) ',
+ 195,295,392,490,588,685,782,880,967,1072,
+ 1165,1260,1352,1438,1518,1598,1645)
+
+# Internal labels
+ setrgb(thng,thng,thkg)
+ "RESISTANCE R/Zo OR CONDUCTANCE G/Yo" at C+SGamma(0.5,0)-(0,C.rad/40)
+ Loopover_(`Lttr',`ifelse(Lttr,*,,`r_text(eval(87-m4Lx*86/100),Lttr,
+ at W+(Rect_(W.rad+wltic/2+textht*0.5, 177-m4Lx*0.86))) ')',
+ W,A,V,E,L,E,N,G,T,H,S,*,T,O,W,A,R,D,*,G,E,N,E,R,A,T,O,R)
+ Loopover_(`Lttr',`ifelse(Lttr,*,,`r_text(eval(115-m4Lx*86/100),Lttr,
+ at W+(Rect_(W.rad-wltic/2-textht*1.0, 204-m4Lx*0.86))) ')',
+ W,A,V,E,L,E,N,G,T,H,S,*,T,O,W,A,R,D,*,L,O,A,D)
+ Loopover_(`Lttr',`ifelse(Lttr,*,,`define(`xa','13-m4Lx*86/100`)
+ r_text(eval(xa-90),Lttr,at A+(Rect_(A.rad+textht*0.7, xa))) ')',
+ R,E,F,L,E,C,T,I,O,N,*,C,O,E,F,F,I,C,I,E,N,T,*,A,N,G,L,E)
+ Loopover_(`Lttr',`ifelse(Lttr,*,,`define(`xa','14-m4Lx*86/100`)
+ r_text(eval(xa-90),Lttr,at A+(Rect_(A.rad-textht*0.7, xa))) ')',
+ T,R,A,N,S,M,I,S,S,I,O,N,*,C,O,E,F,F,I,C,I,E,N,T,*,A,N,G,L,E)
+ resetrgb
+
+iflatex(command "}%",
+ifsvg(command "</g>"))
+] at (0,0)')
+
+Smithchart
+
+.PE
Property changes on: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/SmithchartSVG.m4
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/cscSVG.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/cscSVG.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/cscSVG.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,19 +1,21 @@
.PS
#.PS 3.5
# csc.m4
+# This file includes AntiqueClock and works for PSTricks, Tikz, and SVG
gen_init
+NeedDpicTools
-skale = 3.5/3.97*0.9955
+skale = 0.878
circlerad=1.91*skale
hubrad=0.10*skale
s=0.5*skale
-define(`midnight',`26,26,112')
-define(`white',`255,255,255')
-define(`spokethick',0.1)
+define(`midnight',`0.1, 0.1, 0.44')
+define(`white',`1, 1, 1')
+define(`spokewidth',0.1)
define(`spoke',`dnl
- {line from rvec_(0,hubrad-spokethick/2) to rvec_(circlerad-0.05,0)}
- {line from rvec_(0,-(hubrad-spokethick/2)) to rvec_(circlerad-0.05,0)}')
+ {line from rvec_(0,hubrad-spokewidth/2) to rvec_(circlerad-0.05,0)}
+ {line from rvec_(0,-(hubrad-spokewidth/2)) to rvec_(circlerad-0.05,0)}')
define(`lwid',1)
define(`coord',`(s*(`$1'),s*(`$2'))')
@@ -23,7 +25,7 @@
linethick=`0.'eval(lwid*15)/(1pt__)
{circle with .c at Here
circle invis diam last circle.diam + linethick pt__ at last circle }
- linethick=spokethick/(1pt__)
+ linethick=spokewidth/(1pt__)
for angle = 0 to 330 by 30 do {
Point_(angle)
{spoke}
@@ -46,7 +48,7 @@
# Sail
thinlines_
- setrgb(midnight)
+ rgbfill(midnight,
line from coord(0.44,3.38) to coord(0.44,2.6) \
then to coord(2.1,-1.75) \
then to coord(1.22,-1.53) \
@@ -60,35 +62,34 @@
then to coord(-0.92,1.73) \
then to coord(0,2.9) \
then to coord(0.44,3.38)
+ )
# Hull
+ rgbfill(midnight,
spline from coord(2.1,-1.75) to coord(1.9,-2.2) \
then to coord(1.85,-2.3) then to coord(1.8,-2.33) \
then to coord(1,-2.5) then to coord(0,-2.6) then to coord(-0.38,-2.57) \
then to coord(-2.13,-2.4)
line to coord(-2.2,-2.05) then to coord(2.1,-1.75)
-# spline to coord(-1,-2.08) then to coord(0.55,-1.77)
- line to coord(2.1,-1.75)
- resetrgb
- setrgb(white)
- spline from coord(-2.2,-2.05) to coord(-1,-2.08) then to coord(0.55,-1.77)
- line to coord(-2.2,-2.05)
- resetrgb
- linethick=`0.'eval(lwid*15)/(1pt__)
+ spline to coord(-1,-2.08) then to coord(0.55,-1.77)
+ )
+ ]
- ]
Clock: [
+# PSTricks, tikz, or svg only:
+ifelse(ifpstricks(T)`'ifpgf(T)`'ifsvg(T),T,`
#.PS
-# AntiqueClockSVG.m4
+# AntiqueClock.m4
#gen_init
-svg_font(font-family="sans-serif" font-stretch="condensed")
+#NeedDpicTools
+iflatex(`latexcommand({\sf)')
+ifsvg(svg_font(font-family="sans-serif" font-stretch="condensed")
+# svg_rot_init(test))
+ svg_rot_init(cscSVG))
+
# https://tex.stackexchange.com/questions/236923/generate-analog-clock-with-numbered-face-add-seconds-roman-numerals
-#svg_rot_init(AntiqueClockSVG)
-#svg_rot_init(test)
-svg_rot_init(cscSVG)
-
# `hms2deg(hr,min,sec) hr:min:sec to degrees
# blank arg1: degrees for minute hand
# blank arg1 and arg2: degrees for second hand'
@@ -148,6 +149,7 @@
fitcurve(X,n,shaded rgbstring(0,0,0))
]')
+
define(`AntiqueClock',`[ # h,m,s,diam
# Clock size parameters:
hour = ifelse(`$1',,3,`$1')
@@ -155,8 +157,8 @@
second = ifelse(`$3',,51,`$3')
# outer radius
ifelse(`$4',,`skale=0.5; r1=2',`r1=(`$4')/2; skale=r1/4')
- r2 = r1 - 0.5*skale
- r3 = r2 - 0.14*skale
+ r2 = r1-0.5*skale
+ r3 = r2-0.14*skale
r4 = r3 - 0.35*skale
r5 = r4 - 0.17*skale
r6 = r5 - 0.63*skale
@@ -191,32 +193,35 @@
circle rad r5 at C
circle rad r6 at C
circle rad r7 at C
+
# Ad hoc shift of rotated SVG text
- define adj { (-cosd($`'1)*textht*0.5*sign(180-($`'1)),\
- (0.25+0.25*cosd(2*($`'1)))*textht) }
+ ifsvg(`define adj {+(-cosd($`'1)*textht*0.5*sign(180-($`'1)),\
+ (0.25+0.25*cosd(2*($`'1)))*textht) }',
+ `define adj {}')
+ define adj {}
+
# Outer numbers
- textht = (r3-r4)*0.6
- for mn = -15 to 15 by 5 do { t = 90-mn/60*360
- R:(Rect_((r3+r4)/2,t))
- svg_rot(-mn/60*360,sprintf("%g",pmod(mn,60)) at C+R+adj(t))
- }
- for mn = 20 to 40 by 5 do { t = 450-mn/60*360
- R: (Rect_((r3+r4)/2,t))
- svg_rot(180-mn/60*360, sprintf("%g",pmod(mn,60)) at C+R+adj(t))
- }
+ iflatex(`command sprintf("\font\outerfont=cmss12 at %4.2fin",r3-r4)')
+ ifsvg(`textht = (r3-r4)*0.6')
+ for_(-15,15,5,`aa=90-(m4x)*6
+ r_text(eval(-(m4x)*6),eval((m4x+60)%60),
+ at C+(Rect_((r3+r4)/2,aa)) adj(aa))')
+ for_(20,40,5,`aa=450-(m4x)*6
+ r_text(eval(180-m4x*6),m4x,at C+(Rect_((r3+r4)/2,aa)) adj(aa))')
# Outer tics
for mn = 1 to 60 do { t = 90-mn/60*360
line from C+(Rect_(r5,t)) to C+(Rect_(r4,t)) }
# Inner numbers
- textht = (r5-r6)*0.6
- Loopover_(`mx',`tt = 90-(m4Lx-4)/12*360
- R: (Rect_((r5+r6)/2,tt))
- svg_rot(tt-90, "mx" at C+R+adj(tt)) ',
+ iflatex(`command sprintf("\font\innerfont=cmss12 at %4.2fin",r5-r6)')
+ ifsvg(`textht = (r5-r6)*0.6')
+ Loopover_(`mx',`aa=180-(m4Lx-1)*30
+ r_text(eval(120-m4Lx*30),iflatex({\innerfont mx},mx),
+ at C+(Rect_((r5+r6)/2,aa)) adj(aa))',
IX,X,XI,XII,I,II,III)
- Loopover_(`mx',`tt = 360-m4Lx*30
- R: (Rect_((r5+r6)/2,tt))
- svg_rot(tt-270, "mx" at C+R+adj(tt)) ',
+ Loopover_(`mx',`aa=360-m4Lx*30
+ r_text(eval(90-m4Lx*30), iflatex({\innerfont mx},mx),
+ at C+(Rect_((r5+r6)/2,aa)) adj(aa))',
IV,V,VI,VII,VIII)
# Inner tics
@@ -230,13 +235,15 @@
# Center
dot(at C,0.1/4*r1,1)
- ]')
+ ]') `# AntiqueClock'
Clock1: AntiqueClock(,,,3.5)
-# Clock2: AntiqueClock(4,48,07,2) at Clock1.e+(1.5,0)
+# Clock2: AntiqueClock(4,50,07,2) at Clock1.e+(1.5,0)
- command "</g>" # end font
+ iflatex(`latexcommand(}%)')
+ ifsvg(`command "</g>"')
+
#.PE
+',` "AntiqueClock.m4 requires PSTricks, Tikz-pgf, or SVG" ')
] with .sw at last [].se+(0.25,0)
-
.PE
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/ex15SVG.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/ex15SVG.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/ex15SVG.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -29,7 +29,7 @@
D: C+(Rect_(crad*g,110))
rm = crad+distance(C,D)
for r=lt to rm by lt do {
- u = (1-r/rm)*255
+ u = (1-r/rm)
if r < (1-g)*crad then { rgbdraw(u,u,u,circle rad r at D) } \
else { rgbdraw(u,u,u,arc cw from Cintersect(D,r,C,crad) \
to Cintersect(D,r,C,crad,R) with .c at D) }
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/examplesSVG.htmx
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/examplesSVG.htmx 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/examplesSVG.htmx 2022-07-28 20:05:13 UTC (rev 63991)
@@ -355,7 +355,7 @@
Audio elements)
cfig(XformSVG,
- The transformer element`,' drawing direction down)
+ Some variations of the transformer element`,' drawing direction down)
cfig(NPDTSVG,
Double throw with the m4tt`'NPDT</g> macro)
@@ -370,7 +370,7 @@
The m4tt`'relaycoil</g> macro)
cfig(RelaySVG,
- Some variants of the m4tt`'relay</g> macro)
+ Some variants of m4tt`'relay</g>)
cfig(JackSVG,
The m4tt`'jack</g> and m4tt`'plug</g> macros)
@@ -521,9 +521,6 @@
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)
@@ -540,7 +537,7 @@
cfig(ex21SVG,
Some flip-flops)
-cfig(MultiplexerSVGfor showing
+cfig(MultiplexerSVG,
Multiplexer)
cfig(DemultiplexerSVG,
@@ -593,11 +590,6 @@
Gray code 10-bit encoder disk pattern`,'
and a crossbar switch)
-<!--
-#cfig(CrossbarSVG,
-# A crossbar switch)
--->
-
cfig(ByteSVG,
Elementary splines)
@@ -639,11 +631,6 @@
cfig(GeometrySVG,
Plane geometry examples)
-<!--
-#cfig(LyapSVG,
-# Illustrating a Lyapunov function)
--->
-
cfig(randomSVG,
Testing random numbers)
@@ -658,10 +645,8 @@
cfig(shapesSVG,
Basic shapes)
-<!--
-#fig(AntiqueClockSVG,
-# An antique clock face)
--->
+cfig(keyboardSVG,
+ More objects drawn in relief)
cfig(cscSVG,
Conestoga Sailing Club (illustrating the filling of arbitrary shapes)`,'
@@ -696,7 +681,7 @@
tests of pic macro recursion)
cfig(EscherSVG,
- Two Escher-like objects)
+ Penrose stairs and an Escher-like object)
cfig(recycleSVG,
Modest repetition and partial fill)
@@ -704,9 +689,12 @@
cfig(ex15SVG,
Simple diagrams that are easily drawn by looping)
+cfig(SmithchartSVG,
+ A Smith chart at 3/4 scale)
+
<!--
-cfig(CountingSVG,
- An example of enumeration)
+#fig(CountingSVG,
+# An example of enumeration)
-->
cfig(CrowSVG,
@@ -722,7 +710,7 @@
</p> -->
cfig(BtreeSVG,
- Binary trees)
+ Trees)
cfig(InclepsSVG,
Overlaying a figure with line graphics)
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/icsSVG.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/icsSVG.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/icsSVG.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -246,17 +246,17 @@
D0`'svg_it(-), CLK`'svg_it(+), CLK_SH, CLK`'svg_it(-),
CEC, GND, SCL, SDA,svg_it(+)5V)
L1: line from Base.nw+(m4bwid*2/3-lg_pinsep,0) up plen
- svg_rot(90,"21" at last line.c +(-2bp__,0))
- svg_rot(90,"SH2" at last line.start + (4bp__,-8bp__))
+ svg_rot(90,"21",at last line.c +(-2bp__,0))
+ svg_rot(90,"SH2",at last line.start + (4bp__,-8bp__))
line from Base.nw+(m4bwid*2/3-2*lg_pinsep,0) up plen
- svg_rot(90,"20" at last line.c+(-2bp__,0))
- svg_rot(90,"SH1" at last line.start + (4bp__,-8bp__))
+ svg_rot(90,"20",at last line.c+(-2bp__,0))
+ svg_rot(90,"SH1",at last line.start + (4bp__,-8bp__))
line from Base.sw+(m4bwid*2/3-lg_pinsep,0) down plen
- svg_rot(90,"23" at last line.c+(-2bp__,0))
- svg_rot(90,"SH4" at last line.start + (4bp__,14bp__))
+ svg_rot(90,"23",at last line.c+(-2bp__,0))
+ svg_rot(90,"SH4",at last line.start + (4bp__,14bp__))
line from Base.sw+(m4bwid*2/3-2*lg_pinsep,0) down plen
- svg_rot(90,"22" at last line.c+(-2bp__,0))
- svg_rot(90,"SH3" at last line.start + (4bp__,14bp__))
+ svg_rot(90,"22",at last line.c+(-2bp__,0))
+ svg_rot(90,"SH3",at last line.start + (4bp__,14bp__))
#
`$4']')
Added: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/keyboardSVG.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/keyboardSVG.m4 (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/keyboardSVG.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -0,0 +1,269 @@
+.PS
+# keyboardSVG.m4
+ gen_init
+ scale=25.4 # unit is mm
+
+divert(-1)
+
+define(`kbd_u',(11mm__))
+define(`kbdrowsep',`movewid')
+define(`kbdshadewid',`(kbd_u/9)')
+
+ `kbdkey(name|text=chars,keys)
+ chars: string or string string
+ keys: wdth=expr; # base wid
+ hght=expr; # base ht
+ rad=expr; # base rad
+ shadewid=expr; # base shade wid
+ base=attribs; # base attributes
+ top=attribs; # top attributes '
+define(`kbdkey',
+ `pushkeys_(`$2',
+ wdth:kbd_u; hght:kbd_u*14/13+lthick; rad:kbd_u/10;
+ shadewid:kbdshadewid; base:fill_(0.3):N; top:fill_(0.9):N)dnl
+ [ Base: box wid m4wdth ht m4hght rad m4rad m4base
+ Top: box wid m4wdth-2*m4shadewid ht m4hght-m4shadewid-lthick \
+ rad m4rad*(kbd_u-2*m4shadewid)/(kbd_u) with .n \
+ at Base.n-(0,lthick) m4top
+ move to Top.w
+ ifelse(`$1',,,`pushkey_(`$1',text,,N)ifelse(m4text,,
+ `"iflatex(\sf) `$1'" above ljust',
+ `m4text');') `$3'
+ popdef(`m4wdth', `m4hght', `m4shadewid', `m4rad', `m4base', `m4top') dnl
+ popdef(`m4text') ] ')
+
+define(`tsmall',
+ `iflatex(`"{\sf\scriptsize `$1'}"',
+ ifelse(`$3',,")svg_fsize(`$1',ifelse(`$2',,75,`$2'))ifelse(`$3',,"))')
+
+define(`stkbdkey',
+ `iflatex(`command "{\sf\scriptsize"',`m4tmp=textht
+ textht = ifelse(`$1',,0.66*textht,`$1') ')
+ kbdkey(shift($*))
+ iflatex(`command "}%"',`textht = m4tmp')')
+
+ `enterkey(name|text=chars,keys)
+ chars: string or string string
+ keys: wdth=expr; # base wid
+ hght=expr; # base ht
+ bhght=expr; # ht of bottom part
+ rad=expr; # base rad
+ shadewid=expr; # base shade wid
+ base=attribs; # base attributes
+ top=attribs; # top attributes '
+define(`enterkey',
+ `pushkeys_(`$2',
+ wdth:kbd_u*2.26;
+ hght:kbd_u*14/13*2+kbdrowsep+linethick bp__;
+ bhght: kbd_u*14/13;
+ twdth: kbd_u*3/2;
+ rad:kbd_u/10;
+ shadewid:kbdshadewid;
+ base:fill_(0.3):N;
+ top:fill_(0.9):N)dnl
+ [ ltx = lthick; r = m4rad*(kbd_u-2*m4shadewid)/(kbd_u)
+# thick outer
+ linethick = (m4shadewid+r)/(1bp__); lth2 = lthick/2
+ NEx: Here; NE: NEx-(lth2,lth2); SE: NE-(0,m4hght-lth2*3-ltx*3/2)
+ SW: SE-(m4wdth-lthick,0)
+ W: SW+(0,m4bhght-lthick+ltx*3/2); NW: NE-(m4twdth-lthick,0); X: (NW,W)
+ d = 0.3; ro = m4rad-lth2
+ move to W; arcto(X,NW,m4rad+lth2,outlined graystring(d)); Tx:NW
+ Loopover_(`PK',`arcto(Tx,PK,ro,outlined graystring(d));Tx:PK',NE,SE,SW,W,X)
+ linethick = ltx
+# outer outline
+ NE: NEx; SE: NE-(0,m4hght+ltx); SW: SE-(m4wdth,0)
+ W: SW+(0,m4bhght); NW: NE-(m4twdth,0); X: (NW,W)
+ m4enteroutline(m4rad,,m4rad)
+# thick inner
+ linethick = m4shadewid/(1bp__)+linethick; lth2 = lthick/2
+ NE: NEx-(m4shadewid+lth2,lth2+ltx); SE: (NE,SE)+(0,m4shadewid*3/2)
+ SW: SE-(m4wdth-m4shadewid*3,0); W: SW+(0,m4bhght-m4shadewid*2-ltx*3/2);
+ NW: NE-(m4twdth-m4shadewid*3,0); X: (NW,W)
+ c = 0.9; ri = r-lth2
+ move to W; arcto(X,NW,ri+lth2*2,outlined graystring(c)); Tx:NW
+ Loopover_(`PK',`arcto(Tx,PK,ri,outlined graystring(c));Tx:PK',NE,SE,SW,W,X)
+ N: 1/2 between NW and NE
+ line from N to (N,SE) thick (NE.x-NW.x)/(1bp__) outlined graystring(c)
+ SSW: 1/2 between SW and W
+ line from SSW to (SE,SSW) thick (W.y-SW.y)/(1bp__) outlined graystring(c)
+# inner outline
+ NE: NE+(lth2,lth2); SE: SE+(lth2,-lth2); SW: SW-(lth2,lth2)
+ W: W+(-lth2,lth2); NW: NW+(-lth2,lth2); X: (NW,W)
+ linethick = ltx
+ m4enteroutline(ri,,ri+lth2*2)
+ move to (X,(1/2 between SW and W));
+ ifelse(`$1',,,`pushkey_(`$1',text,,N)dnl
+ ifelse(m4text,,`"iflatex(\sf) `$1'" above ljust',`m4text')')
+ popdef(`m4wdth', `m4hght', `m4bhght', `m4twdth', `m4shadewid', `m4rad',
+ `m4base', `m4top', `m4bhght' ) popdef(`m4text')dnl
+ `$3' ] ')
+define(`m4enteroutline',`move to W+(`$1',0); arcto(X,NW,`$3',`$2'); Tx: NW
+ Loopover_(`PP',`arcto(Tx,PP,`$1',`$2'); Tx: PP',NE,SE,SW,W,X)')
+define(`m4enterup',`[ u = ifelse(`$1',,kbd_u*0.3)
+ line right u/4 then up u/2 then right u/6 then up u/2 left u/4+u/6 \
+ then down u/2 left u/4+u/6 then right u/6 then down u/2 then right u/4
+ ]')
+
+define(`kbdsymb',`iflatex("\tt\char`$1'",`dsvg_symb(`$1')')')
+define(`m4kbdarrow',`arrow thick 1.5 ht kbd_u/5 wid kbd_u/5')
+
+divert(0)dnl
+
+define dsvg_symb {"&#$1;"}
+
+maxpswid = 25*kbd_u
+movewid = kbd_u/11
+
+define(`rshift',` at Here+(ifelse(`$1',,`kbd_u/8',`$1'),0) ')
+
+iflatex(`command "{\small\sf"',
+ `ifsvg(svg_font(Arial,kbd_u*16/13/4,0bp__))
+ textht=kbd_u/4 ')
+
+Row2: [
+ textoffset = kbd_u/8
+ Loopover_(`KK',`kbdkey(text=KK); move',
+ kbdsymb(126) ljust kbdsymb(96) ljust,
+ Loopover_(`NN',`kbdsymb(NN) ljust "m4Lx" ljust,',33,64,35,36,37,94,38,42,40)
+ kbdsymb(41) ljust "0" ljust,
+ kbdsymb(95) ljust "-" ljust,
+ kbdsymb(43) ljust "=" ljust,
+ kbdsymb(124) ljust kbdsymb(92) ljust,
+ "" )
+ m4kbdarrow left kbd_u*0.5 at last [].Top
+ ]
+Row1: [
+ kbdkey(tsmall(Esc,,N)); move right_ last [].wid+movewid*2
+ Loopover_(`KK',`kbdkey(KK); move',F1,F2,F3,F4)
+ move right_ last [].wid/2
+ Loopover_(`KK',`kbdkey(KK); move',F5,F6,F7,F8)
+ move right_ Row2.wid-Here.x-4*last [].wid-4*movewid
+ Loopover_(`KK',`kbdkey(KK); move',F9,F10,F11,F12)
+ ] with .sw at Row2.nw+(0,2*kbdrowsep)
+Row3: [
+# Uparrow: kbdkey(,,m4kbdarrow up kbd_u/2 at Top)
+ Tab: kbdkey(text=tsmall(Tab) rshift ljust,wdth=kbd_u*1.6,
+ [ A: m4kbdarrow left kbd_u/2; line thick A.thick up A.wid at A.end
+ A: m4kbdarrow right A.len at A-(0,kbd_u/2)
+ line thick A.thick up A.wid at A.end ] with .w at Top ); move
+ Loopover_(`KK',`KK: kbdkey(KK); move',Q,W,E,R,T,Y,U,I,O,P)
+ textoffset = kbd_u/8
+ kbdkey(text=kbdsymb(123) ljust kbdsymb(91) ljust); move
+ kbdkey(text=kbdsymb(125) ljust kbdsymb(93) ljust); move
+ w = Row2.wid-Here.x
+ R: box invis wid w-movewid ht last [].Base.ht
+ ] with .nw at Row2.sw-(0,kbdrowsep)
+Row4: [
+ Capslock: kbdkey(text=tsmall(Caps Lock) rshift ljust,
+ wdth=Row3.Tab.wid+Row3.Q.wid/3;); move
+ Loopover_(`KK',`KK: kbdkey(KK); move',A,S,D,F,G,H,J,K,L)
+ textoffset = kbd_u/8
+ kbdkey(text=kbdsymb(58) ljust kbdsymb(59) ljust); move
+ kbdkey(text=kbdsymb(34) ljust kbdsymb(39) ljust); move
+ ] with .nw at Row3.sw-(0,kbdrowsep)
+ Enter: enterkey(text=tsmall(Enter),,
+ m4kbdarrow <- from last ""+(kbd_u/2,0) \
+ right kbd_u/2 then up kbd_u/5 ) \
+ with .ne at (Row2.e,Row3.n)-(movewid,0)
+Row5: [
+ ShiftL: kbdkey(text=tsmall(Shift) at 0.4 between Top.w and Top.e,
+ wdth=kbd_u*2.4, m4enterup at 0.15 between Top.w and Top.e); move
+ Loopover_(`KK',`KK: kbdkey(KK); move',Z,X,C,V,B,N,M)
+ textoffset = kbd_u/8
+ kbdkey(text=kbdsymb(60) ljust kbdsymb(44) ljust); move
+ kbdkey(text=kbdsymb(62) ljust kbdsymb(46) ljust); move
+ kbdkey(text=kbdsymb(63) ljust kbdsymb(47) ljust); move
+ v = Row2.wid-Here.x-kbd_u-movewid*2
+ ShiftR: kbdkey(text=tsmall(Shift) at 1/2 between Top.w and Top.e,wdth=v,
+ m4enterup at 0.15 between Top.w and Top.e); move
+ kbdkey(); move
+ ] with .nw at Row4.sw+(0,-kbdrowsep)
+Row6: [
+ w = 22/18*kbd_u
+ CtrlL: kbdkey(text=tsmall(Ctrl) rshift ljust,wdth=w); move
+ kbdkey(,wdth=w); move
+ kbdkey(text=tsmall(Alt) rshift ljust,wdth=w); move
+ s = Row2.wid-(7*w+8*movewid)
+ kbdkey(,wdth=s); move
+ kbdkey(text=tsmall(Alt) rshift ljust,wdth=w); move
+ kbdkey(,wdth=w); move
+ kbdkey(,wdth=w); move
+ CtrlR: kbdkey(text=tsmall(Ctrl) rshift ljust,wdth=w); move
+ ] with .nw at Row5.sw+(0,-kbdrowsep)
+Arrowkeys: [ iflatex(`command "{\sf\scriptsize"',`textht *=0.66')
+Row1:[ textoffset = kbd_u/20
+ kbdkey(text=`"Print" ljust "Screen" ljust "SysRQ" ljust'); move
+ textoffset = kbd_u/12
+ kbdkey(text="Scroll" ljust "Lock" ljust); move
+ kbdkey(text="Pause" ljust "Break" ljust); move
+ ]
+Row2: [ textoffset = kbd_u/12
+ kbdkey(text="Insert" ljust); move
+ kbdkey(text=tsmall(Home) ljust); move
+ kbdkey(text="Page" ljust "Up" ljust); move
+ ] with .nw at Row1.sw-(0,2*kbdrowsep)
+Row3: [ textoffset = kbd_u/12
+ Delete: kbdkey(text="Delete" ljust); move
+ End: kbdkey(text="End" ljust); move
+ kbdkey(text="Page" ljust "Down" ljust); move
+ ] with .nw at Row2.sw+(0,-kbdrowsep)
+Row5: [
+ move right Row3.End.w.x + movewid
+ Uparrow: kbdkey(,,m4kbdarrow up kbd_u/2 at Top)
+ ] with .nw at Row3.sw-(0,Row3.Delete.ht+2*kbdrowsep)
+Row6: [
+ kbdkey(,,m4kbdarrow left kbd_u/2 at Top); move
+ kbdkey(,,m4kbdarrow down kbd_u/2 at Top); move
+ kbdkey(,,m4kbdarrow right kbd_u/2 at Top); move
+ ] with .nw at Row5.sw-(0,kbdrowsep)
+
+ iflatex(`command "}%"',`textht *=(1/0.66)')
+ ] with .nw at Row1.ne+(movewid,0)
+Keypad: [ move down_ Arrowkeys.n.y-Arrowkeys.Row2.e.y; right_
+ textoffset = kbd_u/8
+Row2:[
+ kbdkey(text=tsmall(Num) ljust tsmall(Lock) ljust); move
+ iflatex(`command "{\large"',`textht *=1.5')
+ kbdkey(text=kbdsymb(47) ljust); move
+ kbdkey(text=kbdsymb(42) ljust); move
+ kbdkey(text=kbdsymb(45) ljust); move
+ iflatex(`command "}"')
+ ]
+Row3:[ textoffset = kbd_u/12
+ kbdkey(text="7" ljust tsmall(Home) ljust); move
+ kbdkey(text="8" ljust "" ljust,,m4kbdarrow up_ kbd_u/3 \
+ at 3/4 between Top.ne and Top.sw); move
+ kbdkey(text="9" ljust tsmall(PgUp) ljust); move
+ ] with .nw at Row2.sw+(0,-kbdrowsep)
+Row4:[ textoffset = kbd_u/12
+ kbdkey(text="4" ljust "" ljust,,m4kbdarrow left kbd_u/3 \
+ at 0.7 between Top.ne and Top.sw); move
+ kbdkey(text="5" ljust "" ljust); move
+ Six: kbdkey(text="6" ljust "" ljust,,m4kbdarrow right kbd_u/3 \
+ at 0.7 between Top.ne and Top.sw); move
+ ] with .nw at Row3.sw+(0,-kbdrowsep)
+Row5:[ textoffset = kbd_u/12
+ kbdkey(text="1" ljust tsmall(End) ljust); move
+ kbdkey(text="2" ljust "" ljust,,m4kbdarrow down kbd_u/3 \
+ at 0.7 between Top.ne and Top.sw); move
+ kbdkey(text="3" ljust tsmall(PgDn) ljust); move
+ ] with .nw at Row4.sw+(0,-kbdrowsep)
+Row6:[ textoffset = kbd_u/12
+ kbdkey(text="0" ljust tsmall(Ins) ljust,
+ wdth=Row4.wid-Row4.Six.wid-2*movewid); move
+ kbdkey(text=kbdsymb(46) ljust tsmall(Del) ljust); move
+ ] with .nw at Row5.sw+(0,-kbdrowsep)
+Col4: [ textoffset = kbd_u/12
+ iflatex(`command "{\large"',`textht *=1.5')
+ kbdkey(text="+" ljust,hght=Row3.n.y-Row4.s.y); move
+ iflatex(`command "}"',`textht /=1.5')
+ kbdkey(text=tsmall(Enter) ljust,hght=Row5.n.y-Row6.s.y) \
+ with .nw at last [].sw - (0,kbdrowsep)
+ ] with .ne at (Row2.e,Row3.n)
+
+ ] with .nw at Arrowkeys.ne+(movewid,0)
+
+iflatex(`command "}%"',
+ifsvg(`command "</g>"'))
+.PE
Property changes on: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/keyboardSVG.m4
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+LF
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/sfgSVG.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/sfgSVG.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/svg/sfgSVG.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -82,21 +82,54 @@
N2: sfgnode(,svg_fsize(2,120),,invis)
{ sfgarc(to N1 ->,,,ccw,s1) }
{ "p(1-p)svg_gamma+2`'svg_nu" at last [].M+(11bp__,0) above }
- { svg_choose(2,1) at last [].M+(-29bp__,8bp__) }
+ { svg_choose(2,1) at last [].M+(-19bp__,8bp__) }
{ sfgarc(to N0 ->,(1-p)svg_sup(2)`svg_gamma',above,ccw,s2) }
sfgline(right_ sfg_wid,`svg_nu'+2`svg_lambda',below,->)
N3: sfgnode(,svg_fsize(3,120),,invis)
{ sfgarc(to N2 ->,,,ccw,s1) }
{ "p`'svg_sup(2)(1-p)svg_gamma+3`'svg_nu" at last [].M+(0bp__,0) above }
- { svg_choose(3,2) at last [].M+(-43bp__,8bp__) }
+ { svg_choose(3,2) at last [].M+(-33bp__,8bp__) }
{ sfgarc(to N1 ->,,,ccw,s2) }
{ "p(1-p)`'svg_sup(2)`'svg_gamma" at last [].M+(8bp__,0) above }
- { svg_choose(3,1) at last [].M+(-26bp__,8bp__) }
+ { svg_choose(3,1) at last [].M+(-16bp__,8bp__) }
{ sfgarc(to N0 ->,(1-p)svg_sup(3)`svg_gamma',above,ccw,s2) }
sfgline(right_ sfg_wid*2/3,`svg_nu'+3`svg_lambda',below,->)
{"..." wid 0.3 ljust}
] with .nw at G3.sw+(0,-0.1)
+# https://tex.stackexchange.com/questions/637455/tikz-how-to-set-exact-position-of-node
+G5: [sfg_init( 1.75,0.25/2 ) # change node spacing and increase node size
+ Dstar: sfgnode(,* )
+ D0: sfgnode(at Dstar+(2,0),svg_small(<>)svg_sub(0) )
+ sfgline(,
+ svg_it(1-r`'svg_sub(`x-1,x')-q`'svg_sup(i)svg_sub(x-1`,'x,,,-0.8ex)),,->)
+ Ddots: sfgnode(,... )
+ sfgline(,svg_it(1-r`'svg_sub(x-4`,'x)-q`'svg_sup(i)svg_sub(x-4`,'x,,,-0.8ex)),
+ ,->)
+ D5: sfgnode(,svg_small(<>)svg_sub(5) )
+ DD: sfgnode(at D0+(0,-1.0),svg_symbol(&``#''8224;) )
+ sfgself(at Dstar,L,,,,0.5)
+ "svg_it(1-i`'svg_sub(x)-q`'svg_sub(x)svg_sup(a,,,-0.8ex))" wid 45bp__ \
+ at Dstar + (-0.3,0.25)
+ sfgself(at DD,D,1,above_,,0.5)
+ sfgself(at D5,R,,,,0.5)
+ "svg_it(1-q`'svg_sub(x)svg_sup(i,,,-0.8ex)-r`'svg_sub(x))" wid 47bp__ \
+ at D5 + (0.3,0.25)
+ sfgarc(from D0 to Dstar ->,svg_it(r`'svg_sub(x`,'x)),below_,ccw)
+ sfgarc(from Dstar to D0 ->,svg_it(i`'svg_sub(x)),above_,ccw)
+ sfgarc(from Dstar to DD ->,svg_it(q`'svg_sub(x)svg_sup(a,,,-0.8ex)),
+ above_ ljust_,ccw)
+ sfgline(from D0 to DD,svg_it(q`'svg_sup(i)svg_sub(x`,'x,,,-0.8ex)),ljust,->)
+ sfgarc(from Ddots to Dstar,svg_it(r`'svg_sub(j`,'x)),below_,ccw,,->)
+ sfgarc(from Ddots to DD ->,svg_it(q`'svg_sup(i)svg_sub(x-j`,'x)),
+ above_ rjust_,)
+ sfgarc(from D5 to Dstar ->,svg_it(r`'svg_sub(x)),below_,ccw)
+ sfgarc(from D5 to DD ->,svg_it(q`'svg_sup(i)svg_sub(x,,,-0.8ex)),
+ above_ rjust_,)
+ ] with .nw at G4.sw+(0,-0.15)
+#howbox_(,"G5")
+
+
move from (T.w,G4.s)-(7bp__,6bp__) to B.ne+(15bp__,6bp__)
command "</g>" # end font
.PE
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/tubedefs.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/tubedefs.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/examples/tubedefs.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -4,11 +4,11 @@
# Size parameters
define(`tubediam',`dimen_')
-define(`tubethick',`2')
+define(`tubethick',`2') # thick line thickness
define(`tubepindiam',`tubediam*3/8')
define(`tubeplatelen',`tubediam/2')
define(`tubegridlen',`tubediam*7/12')
-define(`tubcathlen',`tubeplatelen-tubethick bp__')
+define(`tubecathlen',`tubeplatelen-tubethick bp__')
define(`tubedotthick',`1.2')
define(`tubedotdiam',`tubediam/6')
define(`tgap',`tubediam*3/20')
@@ -125,7 +125,7 @@
`tubecathode(length,R)'
define(`tubecathode',`[
- box invis wid ifelse(`$1',,tubcathlen,`$1') ht tubeplatelen/6
+ box invis wid ifelse(`$1',,tubecathlen,`$1') ht tubeplatelen/6
ifinstr(`$2',R,
`line thick tubethick from last box.nw to last box.sw \
then to last box.se then to last box.ne',
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/gpic.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/gpic.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/gpic.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,7 +1,7 @@
divert(-1)
gpic.m4 Initialization for gpic.
-* Circuit_macros Version 9.8, copyright (c) 2022 J. D. Aplevich under *
+* Circuit_macros Version 9.9, copyright (c) 2022 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 *
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/lib3D.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/lib3D.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/lib3D.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -3,7 +3,7 @@
operations on argument triples representing
3D vectors or colors.
-* Circuit_macros Version 9.8, copyright (c) 2022 J. D. Aplevich under *
+* Circuit_macros Version 9.9, copyright (c) 2022 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 *
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/libSLD.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/libSLD.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/libSLD.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -2,7 +2,7 @@
libSLD.m4 Draft macros for single-line diagram elements
-* Circuit_macros Version 9.8, copyright (c) 2022 J. D. Aplevich under *
+* Circuit_macros Version 9.9, copyright (c) 2022 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 *
@@ -14,7 +14,8 @@
# These *DRAFT* definitions are for single-line diagram (SLD) elements
# with or without attached circuit breakers or slashes. Many other elements
# applicable to SLD drawings are already in libcct.m4. The contributions
-# and suggestions of Benjamin Vilmann are acknowledged with thanks.
+# and suggestions of Benjamin Vilmann and Peter Jan Randewijk are
+# acknowledged with thanks.
# The line
# include(libSLD.m4)
@@ -21,7 +22,7 @@
# loads these definitions for use in a diagram.
# Notes for 1-terminal SLD elements:
-# Argument 1 is normally the linespec of the stem to set the element direction
+# Argument 1 is normally the linespec of the stem to set the direction
# and length.; e.g., D1: sl_disk draws a default disk with stem named D1.
# For a 0-length stem (which has undefined direction):
# arg1 can also be U, D, L, R (for up, down, left, right),
@@ -30,13 +31,9 @@
# Zero-length stem examples: sl_box(U), sl_box(45 at Here+(1,0))
# Argument 2 contains semicolon (;)-separated key-value attributes
# of the element head as applicable: e.g., name=Carol; text="Stop"; lgth=expr
-# If argument 3 is blank then a plain stem is drawn. A non-blank argument 3
-# is C for a default closed breaker in the stem, O for an open breaker,
-# or X, /, or \ to put these symbols in the box; otherwise, key-value
-# pairs specify breaker details. If argument 3 begins with S: or Sn:
-# (where n is an integer) then an n-line slash symbol is drawn.
+# If argument 3 is blank then a plain stem is drawn as described below.
# The element body (head) can be named with name= . The default name is Head.
-# It is overlaid with or contained in a [] block.
+# The head is overlaid with or contained in a [] block.
# Notes for 2-terminal SLD elements:
# These obey the normal Circuit_macro two-terminal conventions.
@@ -45,27 +42,27 @@
# e.g., name=Name; text="text"; wdth=expr; ...
# Except for sl_drawout and sl_breaker which do not have series breakers
# or slashes, nonblank arguments 3 and 4 put a breaker slash symbol
-# in the input and output respectively.
+# in the input and output respectively as described below.
-# Notes for attached breakers:
+# Notes for attached breakers and slashes:
# Nonblank arguments 3 and 4 of the two-terminal elements and argument 3 of
-# the 1-terminal elements specify a breaker in the input, output, and stem
-# respectivlely. An O creates a default-size open breaker, C a closed
-# breaker; and an X, /, or \ inserts the corresponding mark in the box;
-# otherwise, the argument contains key-value pairs to specify the
-# details of the box; e.g., box=dotted 2bp__ shaded "green"
-# The separation of the breaker from the element body or head is given
-# by parameter sl_breakersep_ or the key sep=expr.
-# Arguments 3 and 4 of the two-terminal elements that begin with S: or Sn:
-# (where n is an integer) and argument 3 of the 1-terminal elements
-# specify an n-slash symbol rather than a breaker.
+# the 1-terminal elements specify a breaker in the input, output,
+# and stem respectivlely. A non-blank argument is C for a default
+# closed breaker in the stem, O for an open breaker, or X, /, or \ to
+# put these symbols in the box; if the argument begins with S: or Sn:
+# (where n is an integer) then an n-line slash symbol is drawn rather
+# than a breaker; otherwise or in addition, key-value pairs specify
+# details of the object. The separation of the breaker or slash
+# from the element body or head is given by parameter sl_breakersep_
+# or key sep=expr. If this key is in the body or head keys then it
+# applies to both 2-terminal stem lines; it can also be given for each
+# stem individually.
# Notes for composite elements within a [ ] block:
-# The current transformer macro sl_ct is composite, with internal
-# labels defined as appropriate to the element. The macro sl_transormer3
-# is composite, with 3 principal termianls and other defined points.
-# Macro sl_busbar is also composite, with internal labels P1 to Pnp,
-# Start, and End.
+# The current transformer macro sl_ct has internal labels defined as
+# appropriate to the element. The macro sl_transormer3 has 3 principal
+# termianls and other defined points. Macro sl_busbar has internal
+# labels P1 to Pnp, Start, and End.
define(`sldlib_')
ifdef(`libcct_',,`include(libcct.m4)divert(-1)')
@@ -84,7 +81,7 @@
define(`sl_loadlen_',`dimen_*0.45') # load length
define(`sl_transcale_',1) # transformer body scale factor
define(`sl_busthick_',linethick*2) # sl_bus line thickness
-define(`sl_busindent_',`min(dimen_/5,rp_len/5)') # bus end extension
+define(`sl_busindent_',`min(dimen_/5,rp_len/5)') # busbar end indent
# One-terminal elements ###################################################
@@ -460,11 +457,12 @@
breaker keys or S[n]: keys )'
`Draw the breaker slash in the element stem'
define(`m4_one',
-`pushkeys_(`$4',lgth:sl_breakersize_; sep:sl_breakersep_)dnl
+`pushkeys_(`$4',lgth:sl_breakersize_; sep:-1)define(`m4s_p',`ifelse(m4sep,(-1),
+ `pushkey_(`$3',sep,sl_breakersep_)`'m4sep`'popdef(`m4sep')',m4sep)')dnl
M4end: last line.end
{ifelse(regexp(`$4',^ *S),-1,
`ifelse(`$4',,,
- `line to last line.end-vec_(m4lgth+m4sep,0)
+ `line to last line.end-vec_(m4lgth+m4s_p,0)
pushdef(`m4bri',`ifelse(`$4',C,,`$4',O,`box=fill_(0)')')dnl
sl_breaker(to rvec_(m4lgth,0),`$4';m4bri;name=Br) popdef(`m4bri')')
$1(to M4end,`$3')',
@@ -473,7 +471,7 @@
`define(`m4in',`ifelse(`$4',S,1,`$4',S:,1,
`patsubst(`$4',.*S\([0-9][0-9]*\):?.*,\1)')')dnl
define(`m4inkey',`patsubst(`$4',^ *S[0-9]*:?)') pushkey_(m4inkey,name,SL,N)
- sl_slash(at M4end-vec_(m4lgth+m4sep*2/3,0),
+ sl_slash(at M4end-vec_(m4lgth+m4s_p*2/3,0),
m4inkey;name=m4name,m4in:) popdef(`m4name')')')}
popdef(`m4lgth',`m4sep')')
@@ -559,24 +557,28 @@
(Default breaker names are BrI and BrO)
(Default slash names are SLI and SLO)'
define(`m4_two',
-`pushkeys_(`$4',lgth:ifelse(`$2',,sl_ttboxlen_*2,`$2'); sep:sl_breakersep_)dnl
+`pushkeys_(`$4',lgth:ifelse(`$2',,sl_ttboxlen_*2,`$2'); sep:-1)dnl
+ define(`m4s_pI',`ifelse(m4sep,(-1),
+ `pushkey_(`$5',sep,sl_breakersep_) m4sep popdef(`m4sep')',m4sep)')dnl
+ define(`m4s_pO',`ifelse(m4sep,(-1),
+ `pushkey_(`$6',sep,sl_breakersep_) m4sep popdef(`m4sep')',m4sep)')dnl
ifelse(regexp(`$5',^ *S),-1,
`define(`m4il',`ifelse(`$5',,0,
- `pushkey_(`$5',lgth,sl_breakersize_) m4lgth popdef(`m4lgth')')')dnl
+ `pushkeys_(`$5',lgth:sl_breakersize_) m4lgth popdef(`m4lgth')')')dnl
define(`m4ol',`ifelse(`$6',,0,
`pushkey_(`$6',lgth,sl_breakersize_) m4lgth popdef(`m4lgth')')')dnl
- eleminit_(`$3',max(elen_,m4lgth+m4il*3.5+m4ol*3.5+m4sep*2))
+ eleminit_(`$3',max(elen_,m4lgth+m4il*3.5+m4ol*3.5+m4s_pI+m4s_pO))
M4end: last line.end
- { line to last line.c-vec_((m4lgth + m4il + m4ol + m4sep*2)/2,0)
+ { line to last line.c-vec_((m4lgth + m4il + m4ol + m4s_pI+m4s_pO)/2,0)
pushdef(`m4bri',`ifelse(`$5',,,`$5',C,,`$5',O,`box=fill_(0)')')dnl
ifelse(`$5',,,`sl_breaker(to rvec_(m4il,0),`$5';m4bri;name=BrI)
- line to rvec_(m4sep,0)')
+ line to rvec_(m4s_pI,0)')
$1(to rvec_(m4lgth,0),`$4',,,`$7',`$8')
pushdef(`m4bro',`ifelse(`$6',,,`$6',C,,`$6',O,`box=fill_(0)')')dnl
- ifelse(`$6',,,`line to rvec_(m4sep,0)
+ ifelse(`$6',,,`line to rvec_(m4s_pO,0)
sl_breaker(to rvec_(m4ol,0),`$6';m4bro;name=BrO)')
line to M4end popdef(`m4bri', `m4bro') }',
- `eleminit_(`$3',max(elen_,m4lgth+m4sep*4)) ; dnl slashes
+ `eleminit_(`$3',max(elen_,m4lgth+(m4s_pI+m4s_pO)*2)) ; dnl slashes
M4end: last line.end
{ $1(to M4end,`$4',,,`$7',`$8') }
ifelse(`$5',,,`define(`m4in',`ifelse(`$5',S,1,`$5',S:,1,
@@ -583,13 +585,13 @@
`patsubst(`$5',.*S\([0-9][0-9]*\):?.*,\1)')')dnl
define(`m4inkey',`patsubst(`$5',^ *S[0-9]*:?)')dnl
pushkey_(m4inkey,name,SLI,N)dnl
- {sl_slash(at rvec_(rp_len/2-m4lgth/2-m4sep,0),
+ {sl_slash(at rvec_(rp_len/2-m4lgth/2-m4s_pI,0),
m4inkey;name=m4name,m4in:)} popdef(`m4name')')
ifelse(`$6',,,`define(`m4on',`ifelse(`$6',S,1,`$6',S:,1,
`patsubst(`$6',.*S\([0-9][0-9]*\):*.*,\1)')')dnl
define(`m4onkey',`patsubst(`$6',^ *S[0-9]*:?)')dnl
pushkey_(m4onkey,name,SLO,N)dnl
- {sl_slash(at rvec_(rp_len/2+m4lgth/2+m4sep,0),
+ {sl_slash(at rvec_(rp_len/2+m4lgth/2+m4s_pO,0),
m4onkey;name=m4name,m4on:)} popdef(`m4name')') ')
line invis to M4end popdef(`m4lgth', `m4sep') ')
@@ -618,6 +620,7 @@
scale=expr (default 1);
grnd=degrees (type S or N);
stemlgth=expr (type L or S);
+ sep=expr (type S slashes to head separation);
type=N omits the stem and slashes
type=Sn draws n slashes, e.g., type=S2
Arg3 sets the stem direction'
@@ -635,15 +638,15 @@
line from L.c to L.c+vec_(0,-m4stemlgth)
Tc: Here popdef(`m4stemlgth')',
m4type,S,
- `C: circle rad sourcerad_*m4scale at Origin
- pushkey_(`$2',stemlgth,C.rad*4)dnl
+ `C: circle rad sourcerad_*m4scale*0.5 at Origin
+ pushkeys_(`$2',stemlgth:C.rad*6; sep:C.rad*2)dnl
Stem: line from C to C+vec_(m4stemlgth,0) chop C.rad chop 0; Tc: Here
ifelse(m4grnd,,,`ground(at C+(Rect_(C.rad,m4grnd)),,,m4grnd)'); \
pushdef(`m4n',`ifelse(m4type,S,2,`eval(patsubst(m4type,.*S))')')dnl
- sl_slash(at C+vec_(C.rad*2.5,0),,m4n:rp_ang*rtod_)
- popdef(`m4stemlgth',`m4n')',
+ sl_slash(at C+vec_(C.rad+m4sep,0),,m4n:rp_ang*rtod_)
+ popdef(`m4stemlgth',`m4sep',`m4n')',
m4type,N,
- `C: circle rad sourcerad_*m4scale at Origin
+ `C: circle rad sourcerad_*m4scale*0.5 at Origin
ifelse(m4grnd,,,`ground(at C+(Rect_(C.rad,m4grnd)),,,m4grnd)') ')
resetdir_ popdef(`m4type', `m4scale', `m4grnd' )
] with .Origin ifelse(`$1',,at Here,`$1') ')
@@ -662,11 +665,11 @@
[ tmp_ang = rp_ang
eleminit_(`$1',(m4npoints-1)*dimen_)
Start: last line.start; End: last line.end
+ Line: line from Start to End m4line; C: Line.c
M: move from Start to End chop m4indent
for_(1,m4npoints,1,
`P`'m4x: (m4x-1)/(m4npoints-1) between M.start and M.end dnl
ifinstr(m4port,D,` ;dot(at P`'m4x)')')
- Line: line from Start to End m4line; C: Line.c
point_(tmp_ang) ] popdef(`m4line', `m4port', `m4indent') ')
`sl_slash( at position, keys, [n:]R|L|U|D|degrees)
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/libcct.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/libcct.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/libcct.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,7 +1,7 @@
divert(-1)
libcct.m4
-* Circuit_macros Version 9.8, copyright (c) 2022 J. D. Aplevich under *
+* Circuit_macros Version 9.9, copyright (c) 2022 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 *
@@ -1727,7 +1727,7 @@
`$7']')
`diode(linespec,
- B|CR|D|F|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,
+ B|b|CR|D|F|G|L|LE[R]|P[R]|S|Sh|T|U|V|v|w|Z|chars,
[R][E])
Adding K to arg2 draws open arrowheads
Adding M draws a mid-arrowhead crossbar
@@ -1742,6 +1742,7 @@
define(`m4cts',`ifelse(
dma_,,LACR,
dma_,B,uLAZQuR,
+ dma_,b,uLAzQuR,
dma_,CR,LACRrb,
dma_,D,LuAHdQR,
dma_,F,LFR,
@@ -1806,6 +1807,7 @@
[u|d]v varicap diode-capacitor curved plate
Y bilateral core
Z zener bar
+ z zener bar outlined
arg 2: f= fill the arrowhead
M=arrowhead crossbar
R=right orientation
@@ -1936,6 +1938,13 @@
to rvec_(0,-m4dv/2-m4dy) \
then to rvec_(0, m4dv/2+m4dy) \
then to rvec_(m4dv/4,m4dv/2+m4dy)}')
+ sc_draw(`ddna_',z,dnl Outlined zener bar
+ `{line from rvec_(-m4dv/4,-m4dv/2-m4dy-lthick*2) \
+ to rvec_( lthick*0.7,-m4dv/2-m4dy) \
+ then to rvec_( lthick*0.7, m4dv/2+m4dy+lthick) }
+ {line from rvec_( m4dv/4, m4dv/2+m4dy+lthick*2) \
+ to rvec_(-lthick*0.7, m4dv/2+m4dy) \
+ then to rvec_(-lthick*0.7,-m4dv/2-m4dy-lthick) }')
ifinstr(ddna_,Q,dnl left arrowhead
`sc_draw(`ddna_',Qc,`define(`m4Qc')')sc_draw(`ddna_',Q,`undefine(`m4Qc')')dnl
define(`m4dn',`ifelse(m4a,u,m4dv/2,m4a,d,-m4dv/2,0)')dnl
@@ -1967,7 +1976,6 @@
`line from 0.5 between M4_s and M4_e to M4_e \
chop m4dh ifelse(m4a,,/2,m4a,d,/2+m4dv/4) chop 0')
')dnl
-
`em_arrows( type,degrees,length)
type=[N|I|E][D] N=nonionizing, I=ionizing,
E=simple; D=dot on arrow stem
@@ -2790,8 +2798,8 @@
`resized(factor,`macro name in quotes',args)
multiply element body size by factor'
-define(`resized',`define(`m4resiztmp',dimen_)define(`dimen_',(dimen_)*(`$1'))dnl
- $2(shift(shift($@))) define(`dimen_',m4resiztmp)')
+define(`resized',`pushdef(`dimen_',(dimen_)*(`$1'))dnl
+ $2(shift(shift($@))) popdef(`dimen_')')
`variable(`element', type, [+|-]angle,
length, at position)
@@ -3674,6 +3682,7 @@
In2: Here
In3: rvec_(0,-m4h/8)')
`$4'; resetdir_ ]')
+
`Signal-flow graph macros: labeled node,
directed labeled chopped straight line,
directed labeled chopped arc, and a self
@@ -3746,8 +3755,8 @@
`arc m4c_l patsubst(patsubst(`$1',.*<-,<-),->.*$,->) ifelse(`$4',ccw,ccw,cw)\
from Cintersect(Start,sfg_rad,C,arcrd,ifelse(`$4',ccw,R)) \
to Cintersect(C,arcrd,End,sfg_rad,ifelse(`$4',ccw,R)) with .c at C')
- ifelse(`$2',,,`{move to M; "iflatex(`$ `$2'$',` $2')" ifelse(`$3',,
- `sfgabove',`$3')}')
+ ifelse(`$2',,,`move to M; "iflatex(`$ `$2'$',` $2')" ifelse(`$3',,
+ `sfgabove',`$3')')
] with .Start at last line.start
move to last line.end
')
@@ -3767,7 +3776,7 @@
ifelse(`$7',,`{ arrow m4c_l from rvec_(0,ifelse(`$5',cw,,-)sfg_aht/2) \
to rvec_(0,ifelse(`$5',cw,-)sfg_aht/2) ht sfg_aht wid sfg_awid }')
ifelse(`$3',,,
- `"iflatex(`$ `$3'$',` $3')" ifelse(`$4',,`sfgabove',`$4')') }
+ `{"iflatex(`$ `$3'$',` $3')" ifelse(`$4',,`sfgabove',`$4')}') }
m4sfgselfcurve(,
ifelse(`$5',ccw,`ifinstr(`$7',->,<-)',`ifinstr(`$7',<-,<-)'))
resetdir_ ] with .Origin ifelse(`$1',,at Here,`$1')
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/libgen.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/libgen.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/libgen.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -2,7 +2,7 @@
libgen.m4 Base macros for dpic and gpic diagrams
-* Circuit_macros Version 9.8, copyright (c) 2022 J. D. Aplevich under *
+* Circuit_macros Version 9.9, copyright (c) 2022 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 *
@@ -44,7 +44,7 @@
`NeedDpicTools( path )
If path is empty then HOMELIB_ is used
e.g. NeedDpicTools or NeedDpicTools(/home/lib/)'
-define(`NeedDpicTools',`if "dpictools_" != "1" then { copy dnl
+define(`NeedDpicTools',`if dpicopt > 0 then { copy dnl
ifelse(`$1',,`"HOMELIB_`'dpictools.pic"',`"`$1'dpictools.pic"') }')
Processor shortcuts
@@ -184,7 +184,7 @@
define(`latexcommand',`command "ifmpost(verbatimtex) `$1' ifmpost(etex)"')
define(`m4announceprocessor',`dnl Do not change the format of the next line:
-`#' `$1' Version 9.8: ifelse(m4picprocessor,gpic,`Gpic',
+`#' `$1' Version 9.9: ifelse(m4picprocessor,gpic,`Gpic',
m4postprocessor,pstricks,`PSTricks',
m4postprocessor,pgf,`TikZ PGF',
m4postprocessor,mfpic,`Mfpic',
@@ -821,8 +821,8 @@
If string contains abc=expr; then
pushdef(`m4abc',(expr)) otherwise
pushdef(`m4abc',(default)).
- setkey_ uses define() instead of pushdef{}.
- Nonblank arg4 omits the parentheses.'
+ Nonblank arg4 omits the parentheses. The
+ expr and val may not contain ;'
define(`pushkey_',
`pushdef(`m4xt',index(`$1',`$2'=))ifelse(m4xt,-1,
`pushdef(key_prefix`'$2,`ifelse(`$3',,,ifelse(`$4',,(`$3'),`$3'))')',
@@ -833,6 +833,14 @@
substr(m4sktmp,0,index(m4sktmp,;))))')')dnl
popdef(`m4xt')')
+ `setkey_(string,key,default,[N])
+ string contains semicolon-separated
+ terms of the form key=val
+ If string contains abc=expr; then
+ define(`m4abc',(expr)) otherwise
+ define(`m4abc',(default)).
+ Nonblank arg4 omits the parentheses. The
+ expr and val may not contain ;'
define(`setkey_',
`define(`m4xt',index(`$1',`$2'=))ifelse(m4xt,-1,
`define(key_prefix`'$2,`ifelse(`$3',,,ifelse(`$4',,(`$3'),`$3'))')',
@@ -845,20 +853,32 @@
define(`key_prefix',`m4') # Could be locally redefined
- `pushkeys_(string,keysequence)
- Invoke pushkey_ on a sequence of terms.
- setkeys_(string,keysequence)
- Invoke setkey_ on a sequence of terms.
- Arg 2 is a sequence of semicolon (;)-separated
- terms of the form
- identifier:default value:N
- containing up to 3 fields separated by : '
-define(`pushkeys_',`Loopover_(`M4Z',`pushkey_(`$1',patsubst(M4Z,:,`,'))dnl',
- patsubst(`$2',;,`,'))')
-define(`setkeys_',`Loopover_(`M4Z',`setkey_(`$1',patsubst(M4Z,:,`,'))dnl',
- patsubst(`$2',;,`,'))')
+ `pushkeys_(string,keysequence,keysep,itemsep)
+ Invoke pushkey_ on a sequence of terms.
+ Arg 2 is a sequence of terms separated by
+ arg3 (default ;) of the form
+ identifier:default value:N
+ containing up to 3 fields separated by arg 4
+ (default :). The separators may not appear
+ elsewhere in the terms.'
+define(`pushkeys_',`Loopover_(`M4Z',
+ `pushkey_(`$1',patsubst(M4Z,ifelse(`$4',,:,`$4'),`,'))dnl',
+ patsubst(`$2',ifelse(`$3',,;,`$3'),`,'))')
- `String with exact typeset dimensions:
+ `setkeys_(string,keysequence,keysep,itemsep)
+ Invoke setkey_ on a sequence of terms.
+ Arg 2 is a sequence of terms separated by
+ arg3 (default ;) of the form
+ identifier:default value:N
+ containing up to 3 fields separated by arg 4
+ (default :). The separators may not appear
+ elsewhere in the terms.'
+define(`setkeys_',`Loopover_(`M4Z',
+ `setkey_(`$1',patsubst(M4Z,ifelse(`$4',,:,`$4'),`,'))dnl',
+ patsubst(`$2',ifelse(`$3',,;,`$3'),`,'))')
+
+ `s_box(text or other latex)
+ String with exact typeset dimensions:
Requires s_init(name), sinclude(filename.dim),
boxdims.sty, and processing twice. If there
are two or more args they are given to
@@ -873,29 +893,35 @@
"ifelse(`$2',,,`,shift($@))') \
wid s_wd(,`textwid') ht s_ht(,`textht')+s_dp')')
- `r_text(text,degrees)
+ `r_text(degrees,text,at position)
(requires PSTricks, pgf, or svg)'
define(`r_text',`define(`m4txt',
-`ifelse(index(`$1',"),0,`substr(`$1',1,eval(len(`$1')-2))',`$1')')dnl
+`ifelse(index(`$2',"),0,`substr(`$2',1,eval(len(`$2')-2))',`$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}"')',"m4txt")')
+`define(`m4rtang',`ifelse(`$1',,90,`$1')')dnl
+ifsvg(`svg_rot(m4rtang,"m4txt",`$3')')dnl
+ifpstricks(`"\rput[c]{m4rtang}(0,0){m4txt}" `$3'')dnl
+ifpgf(`"\pgftext[rotate=m4rtang]{m4txt}" `$3'')',
+"m4txt")')
define(`text_ang',90)
- `Like s_box but text is rotated text_ang degrees
+ `rs_box([angle=degrees;] text or other latex)
+ Like s_box but text is rotated text_ang degrees
+ (default 90) unless the angle= key is given.
+ The key must be a decimal number.
(requires PSTricks or pgf)'
define(`rs_box',
`define(`m4_k',ifdef(`m4_k',incr(m4_k),1))dnl
ifelse(`$2',,,`sprintf(')"ifdef(`s_name',,`{\bf !!}')dnl
\defboxdim{s_name`'_`'m4_k}{dnl
-ifelse(index(`$1',"),0,`substr(`$1',1,eval(len(`$1')-2))',`$1')}dnl
-ifpstricks(`\rput[c]{text_ang}(0,0)')ifpgf(`\pgftext[rotate=text_ang]'){dnl
-ifelse(index(`$1',"),0,`substr(`$1',1,eval(len(`$1')-2))',`$1')}"dnl
+pushkey_(`$1',angle,text_ang,N)define(`rs_arg',patsubst(`$1',.*;))dnl
+ifelse(index(rs_arg,"),0,`substr(rs_arg,1,eval(len(rs_arg)-2))',rs_arg)}dnl
+ifpstricks(`\rput[c]{m4angle}(0,0)')ifpgf(`\pgftext[rotate=m4angle]'){dnl
+ifelse(index(rs_arg,"),0,`substr(rs_arg,1,eval(len(rs_arg)-2))',rs_arg)}"dnl
ifelse(`$2',,,`,shift($@),shift($@))') \
- wid s_wd(,textwid)*cosd(text_ang) + (s_ht(,textht)+s_dp)*sind(text_ang) \
- ht (s_ht(,textht)+s_dp)*cosd(text_ang)+s_wd(,textwid)*sind(text_ang)')
+ wid s_wd(,textwid)*cosd(m4angle) + (s_ht(,textht)+s_dp)*sind(m4angle) ht \
+ (s_ht(,textht)+s_dp)*cosd(m4angle) \
+ +s_wd(,textwid)*sind(m4angle)popdef(`m4angle')')
`Initialize string index: s_init(name)'
define(`s_init',`define(`s_name',`$1')')
@@ -1490,7 +1516,7 @@
define(`m4cls',`(m4cdx^2+m4cdy^2)')dnl
define(`m4cq',`((m4cls+m4Cr1^2-m4Cr2^2)/2)')dnl
(m4cq/m4cls between `$1' and `$3') ifinstr(`$5',R,-,+)\
- (vscal_(sqrt(max(0,m4cls*m4Cr1^2-m4cq^2))/m4cls,-m4cdy,m4cdx))')
+ (vscal_(sqrt(abs(m4cls*m4Cr1^2-m4cq^2))/m4cls,-m4cdy,m4cdx))')
define(`cintersect',`Cintersect($@)')
`LCintersect(Name of line,Centre,rad,[R])
@@ -1749,6 +1775,8 @@
`outlined string' or `shaded string'
(mpost,PSTricks,pdf,tikz-pgf,postscript,svg
only)'
+ `The 1: after rgb is a divisor for the values
+ (xcolor manual p 16)'
ifelse(
m4postprocessor,pstricks,`define(`rgbstring',`ifelse(`$2',,`"$1"',
`sprintf("{rgb,1:red,%7.5f;green,%7.5f;blue,%7.5f}",`$1',`$2',`$3')')')',
@@ -1768,7 +1796,6 @@
[name],[D][F])
define colour for lines and text.
arg5 (svg only): D=draw, F=fill
- SVG values are 0 to 255
see also \usepackage{latexcolors} and
latexcolor.com'
define(`setrgb',`pushdef(`r_',`$1')pushdef(`g_',`$2')pushdef(`b_',`$3')dnl
@@ -1780,9 +1807,9 @@
m4postprocessor,svg,`
command "<g " \
ifinstr(`$5',F,,
- `+ sprintf("stroke=\"rgb(%g,%g,%g)\" ",round_(r_),round_(g_),round_(b_))') \
+ `+ sprintf("stroke=\"rgb(%g,%g,%g)\" ",color255(r_,g_,b_))') \
ifinstr(`$5',D,,
- `+ sprintf("fill=\"rgb(%g,%g,%g)\"", round_(r_),round_(g_),round_(b_))') \
+ `+ sprintf("fill=\"rgb(%g,%g,%g)\"", color255(r_,g_,b_))') \
+ ">"',
m4postprocessor,pgf,`
command sprintf("\definecolor{m4cl_}{rgb}{%7.5f,%7.5f,%7.5f}%%",r_,g_,b_)
@@ -1832,7 +1859,7 @@
shift(shift(shift($@)))
command "}%"',
m4postprocessor,svg,
- `setrgb(`$1',`$2',`$3',,ifsvg(F))
+ `setrgb(`$1',`$2',`$3',,F)
shift(shift(shift($@)))
resetrgb',
m4postprocessor,pgf,
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/liblog.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/liblog.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/liblog.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,7 +1,7 @@
divert(-1)
liblog.m4 Logic gates
-* Circuit_macros Version 9.8, copyright (c) 2022 J. D. Aplevich under *
+* Circuit_macros Version 9.9, copyright (c) 2022 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 *
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/mfpic.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/mfpic.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/mfpic.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,7 +1,7 @@
divert(-1)
mfpic.m4 Initialization for mfpic.
-* Circuit_macros Version 9.8, copyright (c) 2022 J. D. Aplevich under *
+* Circuit_macros Version 9.9, copyright (c) 2022 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 *
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/mpost.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/mpost.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/mpost.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,7 +1,7 @@
divert(-1)
mpost.m4 Initialization for metapost.
-* Circuit_macros Version 9.8, copyright (c) 2022 J. D. Aplevich under *
+* Circuit_macros Version 9.9, copyright (c) 2022 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 *
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/pgf.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/pgf.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/pgf.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,7 +1,7 @@
divert(-1)
pgf.m4 Initialization for Tikz-pgf.
-* Circuit_macros Version 9.8, copyright (c) 2022 J. D. Aplevich under *
+* Circuit_macros Version 9.9, copyright (c) 2022 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 *
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/postscript.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/postscript.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/postscript.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,7 +1,7 @@
divert(-1)
postscript.m4 Initialization for Postscript output.
-* Circuit_macros Version 9.8, copyright (c) 2022 J. D. Aplevich under *
+* Circuit_macros Version 9.9, copyright (c) 2022 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 *
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/psfrag.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/psfrag.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/psfrag.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -2,7 +2,7 @@
psfrag.m4 Initialization for dpic -f processing:
Postscript with psfrag strings
-* Circuit_macros Version 9.8, copyright (c) 2022 J. D. Aplevich under *
+* Circuit_macros Version 9.9, copyright (c) 2022 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 *
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/pstricks.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/pstricks.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/pstricks.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,7 +1,7 @@
divert(-1)
pstricks.m4 Initialization for PSTricks.
-* Circuit_macros Version 9.8, copyright (c) 2022 J. D. Aplevich under *
+* Circuit_macros Version 9.9, copyright (c) 2022 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 *
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/svg.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/svg.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/svg.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,7 +1,7 @@
divert(-1)
svg.m4 Initialization for SVG output.
-* Circuit_macros Version 9.8, copyright (c) 2022 J. D. Aplevich under *
+* Circuit_macros Version 9.9, copyright (c) 2022 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 *
@@ -207,6 +207,7 @@
define(`svg_circ',`svg_symbol(&`#'710;)')
define(`svg_deg',`svg_symbol(&`#'176;)')
define(`svg_equiv',`svg_symbol(&`#'8801;)')
+define(`svg_tilde',`svg_symbol(&`#'126;)')
')
define(`svgcolor',`sprintf("rgb(%g,%g,%g)",\
@@ -242,7 +243,7 @@
| sed -e \"s/x=\\"\([0-9.]*\)\\" y=\\"\([0-9.]*\)\\".*/\1 \2/\" dnl
> _file_.cor" )
if retcode != 0 then { print "
- Awk failure
+ Awk failure.
Awk and sed are required by svg_rot to rotate svg text.
" }
svgrot_k = 0
@@ -254,7 +255,7 @@
svgrot_i = 0
ifdef(`svg_rot_',,`
-# `svg_rot(degrees,"text" [at position])
+# `svg_rot(degrees,"text",[at position])
# Rotate text degrees ccw
# Requires svg_rot_init(filename)
# which uses both awk and sed.
@@ -263,9 +264,11 @@
if "$`'1" != "" then { svg_rang = -($`'1) } else { svg_rang = -90 }
if svgrot_k != 0 then { svgrot_i +=1
command sprintf("<g transform=\"rotate(%g %g %g)\">",svg_rang,\
- svg_rx[svgrot_i],svg_ry[svgrot_i]) }\
+ svg_rx[svgrot_i]+textht/2*sind(svg_rang),\
+ svg_ry[svgrot_i]+textht/2*(1-cosd(svg_rang))) }\
else { command sprintf("<g transform=\"rotate(%g)\">",svg_rang) }
-$`'2
+ if "$`'3"=="" then { $`'2 } \
+ else { $`'2 $`'3 - (sind(svg_rang),(cosd(svg_rang)-1))*textht/2 }
command "</g>" } }
define(`svg_rot_')
')
@@ -272,6 +275,25 @@
`# svg_rot'_init end
')
+ifelse(0,1,`
+# ifdef(`svg_rot_',,`
+## `svg_rot(degrees,"text" [at position])
+## Rotate text degrees ccw
+## Requires svg_rot_init(filename)
+## which uses both awk and sed.
+## The source must be processed twice by m4 and dpic.'
+# define svg_rot { if retcode != 0 then {$`'2} else {
+# if "$`'1" != "" then { svg_rang = -($`'1) } else { svg_rang = -90 }
+# if svgrot_k != 0 then { svgrot_i +=1
+# command sprintf("<g transform=\"rotate(%g %g %g)\">",svg_rang,\
+# svg_rx[svgrot_i],svg_ry[svgrot_i]) }\
+# else { command sprintf("<g transform=\"rotate(%g)\">",svg_rang) }
+#$`'2
+# command "</g>" } }
+# define(`svg_rot_')
+# ')
+')
+
# ---------------------------------------------------------------------------#
define(`thinlines_',`linethick = 0.4
Modified: trunk/Master/texmf-dist/doc/latex/circuit-macros/xfig.m4
===================================================================
--- trunk/Master/texmf-dist/doc/latex/circuit-macros/xfig.m4 2022-07-27 23:49:26 UTC (rev 63990)
+++ trunk/Master/texmf-dist/doc/latex/circuit-macros/xfig.m4 2022-07-28 20:05:13 UTC (rev 63991)
@@ -1,7 +1,7 @@
divert(-1)
xfig.m4 Initialization for xfig.
-* Circuit_macros Version 9.8, copyright (c) 2022 J. D. Aplevich under *
+* Circuit_macros Version 9.9, copyright (c) 2022 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 *
More information about the tex-live-commits
mailing list.