Files
SuperminarenandClaude Sonnet 5.5 874838f525 Swedish adaptation: Instegscertifikat and HAREC
- Editions replaced by INSTEG, HAREC and UPPGRADERING (Instegscertifikat -> HAREC)
- Question pool optional; simulator, homework tool and solutions switch off without one
- All UI strings, templates, renderers and project JS localised to sv-SE
  (decimal comma, Swedish non-breaking-space rules, Å/Ä/Ö in Morse table)
- DARC branding, membership CTA and German links removed; attribution footer added
- Page names centralised in src/pages.py
- README and docs rewritten in Swedish

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-10 15:03:02 +02:00

1234 lines
44 KiB
TeX

\PassOptionsToPackage{locale=DE}{siunitx}
\PassOptionsToPackage{straightvoltages, europeanresistors, european inductor}{circuitikz}
\usepackage[locale=DE]{siunitx}
\usepackage{ifthen}
\usepackage{mathtools}
\usepackage{unicode-math}
\setmathfont{Libertinus Math}
\usepackage{circuitikz}
\makeatletter
\let\empty\relax
\makeatother
\usepackage{pgfplots}
\usepackage{pgfmath}
\usepackage{pgfplotstable}
\usepackage{etoolbox}
\usepackage{xcolor}
\usepackage{MnSymbol}
\usepackage{wasysym}
\usepackage{tikz-dimline}
\AtBeginDocument{\RenewCommandCopy\qty\SI} % Fix um qty doppeldefinition zu vermeiden
\usepackage{tikz-3dplot}
%\usepackage{filecontents}% removed as obsolete
%TODO remove?
\usepackage{varwidth}
\usepackage{pgf-spectra}
\usepgfspectralibrary{pgfplots}
% TODO
% hier mal hart forciert, weil if ggf nicht geht?
% define colormap and check if cmyk is enforced
%\def\test#1{cmyk}
%\ifx\XC@tgt@mod\test
% \pgfplotsset{colormap={slategraywhite}{cmyk=(0,0,0,.8) cmyk=(0,0,0,0)}}
%\else
\pgfplotsset{colormap={slategraywhite}{rgb255=(50,50,50) rgb255=(255,255,255)}}
%\fi
\usetikzlibrary{math,perspective,intersections,arrows,arrows.meta,positioning,calc,shapes.symbols,decorations.pathmorphing,patterns,shapes.geometric,matrix,3d,backgrounds,babel,pgfplots.polar,decorations.pathreplacing,calligraphy,decorations.text,svg.path,optics}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=1.18}
\DeclareSIUnit{\baud}{Bd}
\sisetup{
range-phrase=--,
range-units=single
}
\usepackage[euler]{textgreek}
% Setze die Enden der optischen Pfeile etc. auf 60 grad:
\ctikzset{
opto end arrow={Triangle},
tunable end arrow={Triangle}
}
% Grundsätzlich alle Pfeile als Triangle TODO, danach suchen und dann loeschen!
\tikzset{
myarrow/.style={-Triangle}
}
\ctikzset{
resistor=european,
voltage=straight
}
\tikzstyle{digitalNumber}=[draw=DARCgray, fill=white, minimum width=0.5, minimum height=0.5, rounded corners=1, font=\bfseries]
% Gekritzelte Linie (Bild 315)
\pgfdeclaredecoration{penciline}{initial}{
\state{initial}[width=+\pgfdecoratedinputsegmentremainingdistance,
auto corner on length=1mm,]{
\pgfpathcurveto%
{% From
\pgfqpoint{\pgfdecoratedinputsegmentremainingdistance}
{\pgfdecorationsegmentamplitude}
}
{% Control 1
\pgfmathrand
\pgfpointadd{\pgfqpoint{\pgfdecoratedinputsegmentremainingdistance}{0pt}}
{\pgfqpoint{-\pgfdecorationsegmentaspect
\pgfdecoratedinputsegmentremainingdistance}%
{\pgfmathresult\pgfdecorationsegmentamplitude}
}
}
{%TO
\pgfpointadd{\pgfpointdecoratedinputsegmentlast}{\pgfpoint{1pt}{1pt}}
}
}
\state{final}{}
}
% Bandplan bänder in Bild 750 und 749
\let\band\relax% conflict… requires cleanup … \providecommand?
\newcommand{\band}[7]{%
\draw[draw=red] (-5,#1) rectangle (5,#2);
\draw ( 40,#1) node[right,rotate=0, text=red](){\footnotesize\textbf{\SI{#6}{#7}}};
\draw ( 20,#1) node[rotate=0](){\footnotesize\SI{#3}{#5}};
\draw (-20,#2) node[rotate=0](){\footnotesize\SI{#4}{#5}};
}
\let\bandB\relax% conflict… requires cleanup … \providecommand?
\newcommand{\bandB}[7]{%
\draw[draw=red] (-5,#1) rectangle (5,#2);
\draw ( 40,#1) node[right,rotate=0, text=red](){\footnotesize\textbf{\SI{#6}{#7}}};
\draw ( 20,#1) node[rotate=0,above](){\footnotesize\SI{#3}{#5}};
\draw (-20,#2) node[rotate=0,above](){\footnotesize\SI{#4}{#5}};
}
\newcommand{\bandC}[7]{%
\draw[draw=red] (#1,-5) rectangle (#2,5);
\draw (#1, 65.0) node[rotate=-90, text=red](){\footnotesize\textbf{\SI{#6}{#7}}};
\draw (#1, 27.5) node[rotate=-90](){\footnotesize\SI{#3}{#5}};
\draw (#2,-27.5) node[rotate=-90](){\footnotesize\SI{#4}{#5}};
}
\newcommand{\bandD}[5]{%
\draw[draw=red] (#1,-5) rectangle (#2,5);
\draw (#1+50000000, 27.5) node[rotate=-90](){\footnotesize\SI{#3}{#5}};
\draw (#2+50000000,-27.5) node[rotate=-90](){\footnotesize\SI{#4}{#5}};
}
% Symbol für das Gleichstrom
\newcommand{\textdirectcurrent}{%
\settowidth{\dimen0}{$=$}%
\vbox to .85ex {\offinterlineskip
\hbox to \dimen0{\leaders\hrule\hfill}
\vskip.35ex
\hbox to \dimen0{%
\leaders\hrule\hskip.2\dimen0\hfill
\leaders\hrule\hskip.2\dimen0\hfill
\leaders\hrule\hskip.2\dimen0
}
\vfill
}%
}
\newcommand{\mathdirectcurrent}{\mathrel{\textdirectcurrent}}
% Zum Messen von Abständen
\makeatletter
\newcommand{\Distance}[3]{% from https://tex.stackexchange.com/q/56353/121799
\tikz@scan@one@point\pgfutil@firstofone($#1-#2$)\relax
\pgfmathsetmacro{#3}{round(0.99626*veclen(\the\pgf@x,\the\pgf@y)/0.0283465)/1000}
}
\makeatother
% Bemaßung zeichnen:
\NewDocumentCommand\DARCmeasure{O{black} O{middle} m m m m m}{% 1:[color], 2:[top], 3:start, 4:end, 5:shift, 6:rotate, 7:text
\path($(#3)+(#5)$) coordinate(start);
\path($(#4)+(#5)$) coordinate(end);
\ifthenelse{\equal{#2}{top}}{
\draw ($(start)!0.5!(end)$) coordinate(middle);
\node[rotate=#6, anchor=south] (text) at (middle) {\textcolor{#1}{#7}};
\draw[draw=#1, |Triangle-] (start) -- (middle);
\draw[draw=#1, |Triangle-] (end) -- (middle);
}{
\node[rotate=#6] (text) at ($(start)!0.5!(end)$) {\textcolor{#1}{#7}};
\draw[draw=#1, |Triangle-] (start) -- (text.west);
\draw[draw=#1, |Triangle-] (end) -- (text.east);
}
}
% Magic von Marei zur Skalierung der Bilder
\makeatletter
\ExplSyntaxOn
\box_new:N \l_ptxcd_image_box
\cs_if_exist:NF \if@DARCinQuestion {\newif\if@DARCinQuestion}
\fp_if_exist:NF \l_ptxcd_tmp_fp {\fp_new:N \l_ptxcd_tmp_fp}
\fp_set:Nn \l_ptxcd_tmp_fp {1}
\int_new:N \g_DARC_image_fail_int
\seq_new:N \g__DARC_image_fail_seq
\dim_new:N \l__DARC_image_width_dim
\box_new:N \l_ptxcd_image_orig_box
\newcommand*{\getDarcImageFactor}{\fp_use:N \l_ptxcd_tmp_fp}
\NewDocumentCommand{\DARCimageOnly}{smm}{
\setmathfont{Libertinus Math}
\ptxcd_image_autoscale_setup:nnn {#1} {#2} {#3}
\usepackage{geometry}
\usepackage{}
\geometry{paperwidth=\box_wd:N \l_ptxcd_image_box, paperheight=\box_ht_plus_dp:N \l_ptxcd_image_box,margin=0pt}
\pagestyle{empty}
\setlength{\topskip}{0pt}% necessary because otherwhise \topskip could exceed \paperheight
\begin{document}
\box_use:N \l_ptxcd_image_box
\end{document}
}
\seq_new:N \g__ptxcd_image_size_seq
\prop_new:N \g__ptxcd_image_size_cache_prop
\bool_new:N \l__ptxcd_disable_autoscale_bool
\newcommand*{\disableDARCautoscale}{\bool_set_true:N \l__ptxcd_disable_autoscale_bool}
\cs_new:Nn \ptxcd_image_autoscale_setup:nnn {
\prop_if_in:NnTF \g__ptxcd_image_size_cache_prop {#2} {
\fp_set:Nn \l_ptxcd_tmp_fp {\prop_item:Nn \g__ptxcd_image_size_cache_prop {#2}}
\hbox_gset:Nn \l_ptxcd_image_box {
\tikzset{x=\fp_use:N \l_ptxcd_tmp_fp cm,y=\fp_use:N \l_ptxcd_tmp_fp cm}
\file_if_exist_input:n {img/#2}%
\ifvmode\else\unskip\fi
}
\seq_gput_right:Nx \g__ptxcd_image_size_seq {#2=\prop_item:Nn \g__ptxcd_image_size_cache_prop {#2}}
} {
\hbox_gset:Nn \l_ptxcd_image_orig_box {
\file_if_exist_input:n {img/#3}%
\ifvmode\else\unskip\fi%
}
\bool_if:NT \l__ptxcd_disable_autoscale_bool \use_iii:nnnn
\IfBooleanTF{#1}{
\box_gset_eq:NN \l_ptxcd_image_box \l_ptxcd_image_orig_box
} {
\dim_compare:nNnTF {\box_wd:N \l_ptxcd_image_orig_box} = {\c_zero_dim} {
\fp_set:Nn \l_ptxcd_tmp_fp {1}
} {
\if@DARCinQuestion
\dim_compare:nTF {#2 =\linewidth} {
\dim_set:Nn \l__DARC_image_width_dim {\columnwidth}
} {
\dim_set:Nn \l__DARC_image_width_dim {#2}
}
\else
\dim_set:Nn \l__DARC_image_width_dim {#2}
\fi
\fp_set:Nn \l_ptxcd_tmp_fp {\dim_to_decimal_in_unit:nn {\l__DARC_image_width_dim} {\box_wd:N \l_ptxcd_image_orig_box}}
\hbox_gset:Nn \l_ptxcd_image_box {
\tikzset{x=\fp_use:N \l_ptxcd_tmp_fp cm,y=\fp_use:N \l_ptxcd_tmp_fp cm}
\file_if_exist_input:n {img/#3}%
\ifvmode\else\unskip\fi
}
\bool_lazy_and:nnT
{ \dim_compare_p:nNn {\box_wd:N \l_ptxcd_image_box} < {\l__DARC_image_width_dim -1em} }
{ ! \dim_compare_p:nNn {\box_wd:N \l_ptxcd_image_box} = {\box_wd:N \l_ptxcd_image_orig_box}}
{
\fp_set:Nn \l_ptxcd_tmp_fp { 1 + \dim_to_decimal_in_unit:nn {\l__DARC_image_width_dim- \box_wd:N \l_ptxcd_image_orig_box} {\box_wd:N \l_ptxcd_image_box - \box_wd:N \l_ptxcd_image_orig_box} * (\l_ptxcd_tmp_fp -1)}
\hbox_gset:Nn \l_ptxcd_image_box {
\tikzset{x=\fp_use:N \l_ptxcd_tmp_fp cm,y=\fp_use:N \l_ptxcd_tmp_fp cm}
\file_if_exist_input:n {img/#3}%
\ifvmode\else\unskip\fi
}
}
\dim_compare:nNnTF {\box_wd:N \l_ptxcd_image_box} = {\box_wd:N \l_ptxcd_image_orig_box} {
\seq_gput_right:Nx \g__ptxcd_image_size_seq {#3=1}
}{
\seq_gput_right:Nx \g__ptxcd_image_size_seq {#3=\fp_use:N \l_ptxcd_tmp_fp}
}
}
}
}
}
\newcommand*{\DARCimageCache}[1]{
\prop_gset_from_keyval:Nn \g__ptxcd_image_size_cache_prop {#1}
}
\hook_gput_code:nnn {enddocument/afterlastpage}{write-DARCimage-size-cache}{
\iow_now:Ne \@auxout {
\exp_not:N \DARCimageCache{
\seq_use:Nn \g__ptxcd_image_size_seq {,}
}
}
}
\NewDocumentCommand{\DARCimage}{sO{Bild~till~provfrågan~\l_ptxcd_question_tl}mm}{
\par\smallskip
\begingroup
\ptxcd_image_autoscale_setup:nnn {#1} {#3} {#4}
\dim_compare:nNnTF {\box_wd:N \l_ptxcd_image_box} > {\linewidth}
{
\makebox[\linewidth][r]{\box_use:N \l_ptxcd_image_box}
} {
\makebox[\linewidth][c]{\box_use:N \l_ptxcd_image_box}
}
\endgroup
}
\ExplSyntaxOff
\makeatother
% Neue TL, wird bald in einem zukünftigen circuittikz sein:
% https://github.com/circuitikz/circuitikz/issues/694
\makeatletter
\newif\ifpgf@circ@bare@tline
\ctikzset{bipoles/tline/bare/.is if=pgf@circ@bare@tline}
\pgfcircdeclarebipolescaled{RF}
{
\savedmacro{\recessright}{\edef\recessright{\ifpgf@circ@bare@tline -0.4\else 0.0\fi}}
\anchor{center right}{\northeast \advance\pgf@x by -0.4\pgf@y\pgf@y=0pt}
\anchor{top right}{\northeast \advance\pgf@x by -0.4\pgf@y}
\anchor{bottom right}{\northeast \advance\pgf@x by -0.4\pgf@y\pgf@y=-\pgf@y}
\anchor{center left}{\northeast \advance\pgf@x by -0.4\pgf@y\pgf@x=-\pgf@x\pgf@y=0pt}
\anchor{top left}{\northeast \advance\pgf@x by -0.4\pgf@y\pgf@x=-\pgf@x}
\anchor{bottom left}{\northeast \advance\pgf@x by -0.4\pgf@y\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
\anchor{right}{\northeast \advance\pgf@x by \recessright\pgf@y\pgf@y=0pt}
}
{\ctikzvalof{bipoles/tline/height}}
{tline}
{\ctikzvalof{bipoles/tline/height}}
{\ctikzvalof{bipoles/tline/width}}
{
\pgf@circ@res@step=.4\pgf@circ@res@up % the size of the ellipsis is proportional to the height
\pgfscope
\pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{\pgf@circ@res@left+\pgf@circ@res@step}{\pgf@circ@res@up}}
\pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
\pgfpathlineto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@down}}
\pgfpatharc{-90}{90}{\pgf@circ@res@step and \pgf@circ@res@up}
\pgf@circ@draworfill
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{\pgf@circ@res@up}}
\pgfpatharc{-90}{90}{-\pgf@circ@res@step and -\pgf@circ@res@up}
\pgfusepath{stroke}
\endpgfscope
\ifpgf@circ@bare@tline\else
\pgfsetlinewidth{\pgfstartlinewidth}
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@right-\pgf@circ@res@step}{0pt}}
\pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0pt}}
\pgfusepath{stroke}
\fi
}
\makeatother
% Neues mikrofon, wird irgendwann teil von circuit tikzi und kann dann hier
% gelöscht werden: https://github.com/circuitikz/circuitikz/issues/689
% <
\makeatletter
\ctikzset{bipoles/tlmic/height/.initial=.5}
\ctikzset{bipoles/tlmic/depth/.initial=.5}
\ctikzset{bipoles/tlmic/width/.initial=.5}%
\pgfcircdeclarebipolescaled{misc}
{}
{\ctikzvalof{bipoles/tlmic/depth}}
{tlmic}
{\ctikzvalof{bipoles/tlmic/height}}
{\ctikzvalof{bipoles/tlmic/width}}{
\pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
\pgfpathcircle{\pgfpoint{0pt}{0pt}}{\pgf@circ@res@up}
\pgf@circ@draworfill
\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
\pgfusepath{draw}
}
\pgfcirc@activate@bipole@simple{l}{tlmic}
\makeatother
% />
% Power Plug
\makeatletter
\ctikzset{bipoles/plug/height/.initial=.5}
\ctikzset{bipoles/plug/width/.initial=.5}%
\pgfcircdeclarebipolescaled{misc}
{}
{\ctikzvalof{bipoles/plug/height}}
{plug}
{\ctikzvalof{bipoles/plug/height}}
{\ctikzvalof{bipoles/plug/width}}{
%\pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
\pgfpathcircle{\pgfpoint{0pt}{0pt}}{\pgf@circ@res@up}
\pgfusepath{fill}
%\pgfpathmoveto{\pgfpoint{\pgf@circ@res@left}{\pgf@circ@res@up}}
%\pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@up}}
%\pgfusepath{draw}
% Plus:
\color{black}
\pgfsetstrokecolor{black}
\pgfpathrectangle{\pgfpoint{0.0\pgf@circ@res@step}{-0.1\pgf@circ@res@step}}{\pgfpoint{-0.2\pgf@circ@res@step}{+0.1\pgf@circ@res@step}}%
\pgfusepath{fill}
}
\pgfcirc@activate@bipole@simple{l}{plug}
\makeatother
%% bgenerator und bgeneratorshape block
% Eine submission nach circuittikz wurde durchgeführt:
% https://github.com/circuitikz/circuitikz/pull/693
% <
\makeatletter
%
\def\pgfcirc@twoport@draw@narrowsine#1{% #1 -> y shift
\pgfscope
\pgfsetlinewidth{\pgfstartlinewidth}
\pgftransformyshift{#1\pgf@circ@res@step}
\pgfpathmoveto{\pgfpoint{.125\pgf@circ@res@step}{0\pgf@circ@res@step}}
\pgfpathsine{\pgfpoint{.125\pgf@circ@res@step}{.125\pgf@circ@res@step}}
\pgfpathcosine{\pgfpoint{.125\pgf@circ@res@step}{-.125\pgf@circ@res@step}}
\pgfpathsine{\pgfpoint{.125\pgf@circ@res@step}{-.125\pgf@circ@res@step}}
\pgfpathcosine{\pgfpoint{.125\pgf@circ@res@step}{.125\pgf@circ@res@step}}
\pgfusepath{draw}
\endpgfscope
}
%
\ctikzset{bipoles/bgenerator/width/.initial=.7}
\pgfcirc@define@twoports{blocks}
{}
{\ctikzvalof{bipoles/bgenerator/width}}
{bgenerator}
{\ctikzvalof{bipoles/bgenerator/width}}
{\ctikzvalof{bipoles/bgenerator/width}}
{
\pgfcirc@twoport@draw@narrowsine{0.25}{0}
\pgfcirc@twoport@draw@narrowsine{0.0}{0}
\pgfcirc@twoport@draw@narrowsine{-0.25}{0}
\pgftext[x=0.45\pgf@circ@res@left]{\ctikzvalof{bipoles/twoport/text}}
}
\pgfcirc@activate@bipole@simple{l}{bgenerator}
\makeatother
%>
%Q-Generator TODO: Update pull request
\makeatletter
%
\ctikzset{bipoles/qgenerator/width/.initial=.7}
\pgfcirc@define@twoports{blocks}
{}
{\ctikzvalof{bipoles/qgenerator/width}}
{qgenerator}
{\ctikzvalof{bipoles/qgenerator/width}}
{\ctikzvalof{bipoles/qgenerator/width}}
{
\pgfcirc@twoport@draw@narrowsine{0.45}{0}
\pgfcirc@twoport@draw@narrowsine{0.20}{0}
\pgfcirc@twoport@draw@narrowsine{-0.05}{0}
\pgftext[x=0.45\pgf@circ@res@left,y=0.25\pgf@circ@res@up]{\ctikzvalof{bipoles/twoport/text}}
\pgfpathmoveto{\pgfpoint{-0.7\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{ 0.7\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
\pgfusepath{draw}
\pgfpathrectangle{\pgfpoint{-0.7\pgf@circ@res@step}{-0.7\pgf@circ@res@step}}{\pgfpoint{1.4\pgf@circ@res@step}{0.2\pgf@circ@res@step}}
\pgfusepath{draw}
\pgfpathmoveto{\pgfpoint{-0.7\pgf@circ@res@step}{-0.85\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{ 0.7\pgf@circ@res@step}{-0.85\pgf@circ@res@step}}
\pgfusepath{draw}
}
\pgfcirc@activate@bipole@simple{l}{qgenerator}
\makeatother
%Clock-Generator in PR committed
\makeatletter
%
\ctikzset{bipoles/cgenerator/width/.initial=.7}
\pgfcirc@define@twoports{blocks}
{}
{\ctikzvalof{bipoles/cgenerator/width}}
{cgenerator}
{\ctikzvalof{bipoles/cgenerator/width}}
{\ctikzvalof{bipoles/cgenerator/width}}
{
\pgfpathmoveto{\pgfpoint{-0.70\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{-0.42\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{-0.42\pgf@circ@res@step}{+0.35\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{-0.14\pgf@circ@res@step}{+0.35\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{-0.14\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{+0.14\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{+0.14\pgf@circ@res@step}{+0.35\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{+0.42\pgf@circ@res@step}{+0.35\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{+0.42\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{+0.70\pgf@circ@res@step}{-0.35\pgf@circ@res@step}}
\pgfusepath{draw}
}
\pgfcirc@activate@bipole@simple{l}{cgenerator}
\makeatother
%Sine Table: in PR committed
\makeatletter
%
\ctikzset{bipoles/sinetable/width/.initial=.7}
\pgfcirc@define@twoports{blocks}
{}
{\ctikzvalof{bipoles/sinetable/width}}
{sinetable}
{\ctikzvalof{bipoles/sinetable/width}}
{\ctikzvalof{bipoles/sinetable/width}}
{
\pgfcirc@twoport@draw@sine{0.0}{0}
\pgfcirc@set@arrows{tunable}{}{latex}
\pgfpathmoveto{\pgfpoint{-0.70\pgf@circ@res@step}{-0.70\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{+0.70\pgf@circ@res@step}{-0.70\pgf@circ@res@step}}
\pgfusepath{draw}
\pgfpathmoveto{\pgfpoint{-0.70\pgf@circ@res@step}{-0.70\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{-0.70\pgf@circ@res@step}{+0.70\pgf@circ@res@step}}
\pgfusepath{draw}
}
\pgfcirc@activate@bipole@simple{l}{sinetable}
\makeatother
%Register: in pull request committed
\makeatletter
%
\ctikzset{bipoles/register/width/.initial=.7}
\pgfcirc@define@twoports{blocks}
{
\savedanchor\northwest{
\pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
\pgf@y=\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
\pgf@y=.5\pgf@y
\pgf@x=-\ctikzvalof{bipoles/twoport/width}\pgf@circ@scaled@Rlen
\pgf@x=.5\pgf@x
}
\anchor{clk}{\northwest\pgf@y=0.5\pgf@y}
}
{\ctikzvalof{bipoles/register/width}}
{register}
{\ctikzvalof{bipoles/register/width}}
{\ctikzvalof{bipoles/register/width}}
{
\pgfpathmoveto{\pgfpoint{-1.00\pgf@circ@res@step}{+0.70\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{-0.60\pgf@circ@res@step}{+0.50\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{-1.00\pgf@circ@res@step}{+0.30\pgf@circ@res@step}}
\pgfusepath{draw}
}
\pgfcirc@activate@bipole@simple{l}{register}
\makeatother
%% Bias-T, wurde in PR committed
\makeatletter
\ctikzset{bipoles/biast/width/.initial=.7}
\pgfcirc@define@twoports{blocks}
{}
{\ctikzvalof{bipoles/biast/width}}
{biast}
{\ctikzvalof{bipoles/biast/width}}
{\ctikzvalof{bipoles/biast/width}}
{
\pgfpathmoveto{\pgfpoint{-0.80\pgf@circ@res@step}{-0.50\pgf@circ@res@step}} % Line to Plate 1
\pgfpathlineto{\pgfpoint{-0.50\pgf@circ@res@step}{-0.50\pgf@circ@res@step}}
\pgfpathmoveto{\pgfpoint{-0.50\pgf@circ@res@step}{-0.50\pgf@circ@res@step}} % Plate 1
\pgfpathlineto{\pgfpoint{-0.50\pgf@circ@res@step}{-0.20\pgf@circ@res@step}}
\pgfpathmoveto{\pgfpoint{-0.50\pgf@circ@res@step}{-0.50\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{-0.50\pgf@circ@res@step}{-0.80\pgf@circ@res@step}}
\pgfpathmoveto{\pgfpoint{-0.30\pgf@circ@res@step}{-0.50\pgf@circ@res@step}} % Plate 1
\pgfpathlineto{\pgfpoint{-0.30\pgf@circ@res@step}{-0.20\pgf@circ@res@step}}
\pgfpathmoveto{\pgfpoint{-0.30\pgf@circ@res@step}{-0.50\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{-0.30\pgf@circ@res@step}{-0.80\pgf@circ@res@step}}
\pgfpathmoveto{\pgfpoint{-0.30\pgf@circ@res@step}{-0.50\pgf@circ@res@step}} % Line to Center
\pgfpathlineto{\pgfpoint{ 0.00\pgf@circ@res@step}{-0.50\pgf@circ@res@step}}
\pgfusepath{draw}
\pgfpathcircle{\pgfpoint{ 0.00\pgf@circ@res@step}{-0.50\pgf@circ@res@step}}{0.075\pgf@circ@res@step}
\pgfusepath{fill}
\pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{-0.50\pgf@circ@res@step}} % Line to Right
\pgfpathlineto{\pgfpoint{ 0.80\pgf@circ@res@step}{-0.50\pgf@circ@res@step}}
\pgfusepath{draw}
\pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{-0.50\pgf@circ@res@step}} % Line to Coils
\pgfpathlineto{\pgfpoint{ 0.00\pgf@circ@res@step}{-0.20\pgf@circ@res@step}}
\pgfusepath{draw}
\pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{-0.20\pgf@circ@res@step}} % Arc1
\pgfpatharc{-90}{90}{0.09\pgf@circ@res@step}
\pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{-0.02\pgf@circ@res@step}} % Arc2
\pgfpatharc{-90}{90}{0.09\pgf@circ@res@step}
\pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{+0.16\pgf@circ@res@step}} % Arc3
\pgfpatharc{-90}{90}{0.09\pgf@circ@res@step}
\pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{+0.36\pgf@circ@res@step}} % Arc4
\pgfpatharc{-90}{90}{0.09\pgf@circ@res@step}
\pgfusepath{draw}
\pgfpathmoveto{\pgfpoint{ 0.00\pgf@circ@res@step}{+0.52\pgf@circ@res@step}} % Line to Coils
\pgfpathlineto{\pgfpoint{ 0.00\pgf@circ@res@step}{+0.80\pgf@circ@res@step}}
\pgfusepath{draw}
}
\pgfcirc@activate@bipole@simple{l}{biast}
\makeatother
%% variable allpass filter
% Eine submission nach circuittikz wurde durchgeführt:
% https://github.com/circuitikz/circuitikz/pull/693
\makeatletter
\ctikzset{bipoles/vallpass/width/.initial=.7}
\pgfcirc@define@twoports{blocks}
{}
{\ctikzvalof{bipoles/vallpass/width}}
{vallpass}
{\ctikzvalof{bipoles/vallpass/width}}
{\ctikzvalof{bipoles/vallpass/width}}
{
\pgfcirc@twoport@draw@sine{0.5}{0}
\pgfcirc@twoport@draw@sine{0.0}{0}
\pgfcirc@twoport@draw@sine{-0.5}{0}
\pgfcirc@set@arrows{tunable}{}{latex}
\pgfpathmoveto{\pgfpoint{0.7\pgf@circ@res@left}{0.5\pgf@circ@res@down}}
\pgfpathlineto{\pgfpoint{0.7\pgf@circ@res@right}{0.8\pgf@circ@res@up}}
\pgfusepath{draw}
}
\pgfcirc@activate@bipole@simple{l}{vallpass}
\makeatother
%% ngenerator committed to PR
% <
\makeatletter
%
\ctikzset{bipoles/ngenerator/width/.initial=.7}
\pgfcirc@define@twoports{blocks}
{}
{\ctikzvalof{bipoles/ngenerator/width}}
{ngenerator}
{\ctikzvalof{bipoles/ngenerator/width}}
{\ctikzvalof{bipoles/ngenerator/width}}
{
\pgfcirc@twoport@draw@sine{0.5}{0}
\pgftext[y=-0.35\pgf@circ@res@up]{\ctikzvalof{bipoles/twoport/text}}
}
\pgfcirc@activate@bipole@simple{l}{ngenerator}
\makeatother
%>
% Camera wurde zu PR committed
\makeatletter
\ctikzset{bipoles/camera/height/.initial=1.2}
\ctikzset{bipoles/camera/depth/.initial=.3}
\ctikzset{bipoles/camera/width/.initial=.4}
\pgfcircdeclarebipolescaled{misc}
{}
{\ctikzvalof{bipoles/camera/depth}}
{camera}
{\ctikzvalof{bipoles/camera/height}}
{\ctikzvalof{bipoles/camera/width}}{
\pgfpathrectanglecorners{\pgfpoint{\pgf@circ@res@left}{.7\pgf@circ@res@up}}
{\pgfpoint{\pgf@circ@res@right}{\pgf@circ@res@down}}
\pgfpathmoveto{\pgfpoint{0.5\pgf@circ@res@left}{.7\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@left}{\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{0.8\pgf@circ@res@right}{\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{0.5\pgf@circ@res@right}{.7\pgf@circ@res@up}}
\pgfpathclose
\pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
\pgf@circ@draworfill
}
\pgfcirc@activate@bipole@simple{l}{camera}
\makeatother
% TRX
\makeatletter
\ctikzset{bipoles/trx/width/.initial=1}
\ctikzset{bipoles/trx/height/.initial=.4}
\pgfcirc@define@twoports{blocks}
{
\anchor{plus}{\northeast \advance\pgf@y by -0.2\pgf@x\pgf@x=-\pgf@x}
\anchor{minus}{\northeast \advance\pgf@y by -0.2\pgf@x\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
}
{\ctikzvalof{bipoles/trx/height}}
{trx}
{\ctikzvalof{bipoles/trx/height}}
{\ctikzvalof{bipoles/trx/width}}
{
% VFO-Rad:
\pgfpathcircle{\pgfpoint{0.60\pgf@circ@res@step}{0.00\pgf@circ@res@step}}{0.25\pgf@circ@res@step}
\pgfpathcircle{\pgfpoint{0.68\pgf@circ@res@step}{0.10\pgf@circ@res@step}}{0.06\pgf@circ@res@step}
% Lautstärke und Rauschsperre:
\pgfpathcircle{\pgfpoint{-0.8\pgf@circ@res@step}{+0.15\pgf@circ@res@step}}{0.1\pgf@circ@res@step}
\pgfpathcircle{\pgfpoint{-0.8\pgf@circ@res@step}{-0.15\pgf@circ@res@step}}{0.1\pgf@circ@res@step}
% Bildschirm:
\pgfpathrectangle{\pgfpoint{-0.55\pgf@circ@res@step}{-0.25\pgf@circ@res@step}}{\pgfpoint{+0.75\pgf@circ@res@step}{+0.5\pgf@circ@res@step}}%
\pgfusepath{draw}
}
\pgfcirc@activate@bipole@simple{l}{trx}
\makeatother
% SWR, wurde committed
\makeatletter
\ctikzset{bipoles/swr/width/.initial=0.6}
\ctikzset{bipoles/swr/height/.initial=.4}
\pgfcirc@define@twoports{blocks}
{}
{\ctikzvalof{bipoles/swr/height}}
{swr}
{\ctikzvalof{bipoles/swr/height}}
{\ctikzvalof{bipoles/swr/width}}
{
% Bildschirm:
\pgfpathrectangle{\pgfpoint{-0.6\pgf@circ@res@step}{-0.4\pgf@circ@res@step}}{\pgfpoint{+1.2\pgf@circ@res@step}{+0.9\pgf@circ@res@step}}%
\pgfusepath{draw}
% Zeiger:
\pgfpathmoveto{\pgfpoint{+0.30\pgf@circ@res@step}{-0.40\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{-0.30\pgf@circ@res@step}{+0.35\pgf@circ@res@step}}
\pgfusepath{draw}
\pgfpathmoveto{\pgfpoint{-0.30\pgf@circ@res@step}{-0.40\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{+0.30\pgf@circ@res@step}{+0.35\pgf@circ@res@step}}
\pgfusepath{draw}
}
\pgfcirc@activate@bipole@simple{l}{swr}
\makeatother
% Power Supply
% wurde committed
\makeatletter
\ctikzset{bipoles/power/width/.initial=1}
\ctikzset{bipoles/power/height/.initial=.4}
\pgfcirc@define@twoports{blocks}
{
\anchor{u1}{\northeast \advance\pgf@y by -0.2\pgf@x\pgf@x=-\pgf@x}
\anchor{u2}{\northeast \advance\pgf@y by -0.2\pgf@x\pgf@x=-\pgf@x\pgf@y=-\pgf@y}
\anchor{plus}{\northeast \advance\pgf@y by -0.2\pgf@x \advance\pgf@x by -0.25\pgf@x}
\anchor{minus}{\northeast \advance\pgf@y by -0.2\pgf@x\pgf@y=-\pgf@y \advance\pgf@x by -0.25\pgf@x}
}
{\ctikzvalof{bipoles/power/height}}
{power}
{\ctikzvalof{bipoles/power/height}}
{\ctikzvalof{bipoles/power/width}}
{
% Plus:
\color{red}
\pgfsetstrokecolor{red}
\pgfpathcircle{\pgfpoint{0.75\pgf@circ@res@step}{0.20\pgf@circ@res@step}}{0.075\pgf@circ@res@step}%
\pgfusepath{fill}
\pgfpathmoveto{\pgfpoint{0.50\pgf@circ@res@step}{0.20\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{0.60\pgf@circ@res@step}{0.20\pgf@circ@res@step}}
\pgfpathmoveto{\pgfpoint{0.55\pgf@circ@res@step}{0.25\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{0.55\pgf@circ@res@step}{0.15\pgf@circ@res@step}}
\pgfusepath{stroke}
% Minus:
\color{black}
\pgfsetstrokecolor{black}
\pgfpathcircle{\pgfpoint{0.75\pgf@circ@res@step}{-0.20\pgf@circ@res@step}}{0.075\pgf@circ@res@step}%
\pgfusepath{fill}
\pgfpathmoveto{\pgfpoint{0.50\pgf@circ@res@step}{-0.20\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{0.60\pgf@circ@res@step}{-0.20\pgf@circ@res@step}}
\pgfusepath{stroke}
% Displays:
\pgfpathrectangle{\pgfpoint{-0.5\pgf@circ@res@step}{0.00\pgf@circ@res@step}}{\pgfpoint{+0.4\pgf@circ@res@step}{+0.25\pgf@circ@res@step}}%
\pgfpathrectangle{\pgfpoint{-0.0\pgf@circ@res@step}{0.00\pgf@circ@res@step}}{\pgfpoint{+0.4\pgf@circ@res@step}{+0.25\pgf@circ@res@step}}%
% Poti:
\pgfpathcircle{\pgfpoint{-0.30\pgf@circ@res@step}{-0.20\pgf@circ@res@step}}{0.075\pgf@circ@res@step}%
\pgfusepath{draw}
% Switch:
\pgfpathrectangle{\pgfpoint{-0.9\pgf@circ@res@step}{0.00\pgf@circ@res@step}}{\pgfpoint{+0.15\pgf@circ@res@step}{+0.25\pgf@circ@res@step}}%
\pgfpathmoveto{\pgfpoint{-0.90\pgf@circ@res@step}{0.125\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{-0.75\pgf@circ@res@step}{0.125\pgf@circ@res@step}}
\pgfusepath{draw}
}
\pgfcirc@activate@bipole@simple{l}{power}
\makeatother
% TODO muss skalierbar und konnektierbar werden:
\newcommand{\AsymCloud}[3]{
\begin{scope}[shift={#1},scale=#3]
\draw (-1.6,-0.7) .. controls (-2.3,-1.1)
and (-2.7,0.3) .. (-1.7,0.3)coordinate(asy1) .. controls (-1.6,0.7)
and (-1.2,0.9) .. (-0.8,0.7) .. controls (-0.5,1.5)
and (0.6,1.3) .. (0.7,0.5) .. controls (1.5,0.4)
and (1.2,-1) .. (0.4,-0.6)coordinate(asy2) .. controls (0.2,-1)
and (-0.2,-1) .. (-0.5,-0.7) .. controls (-0.9,-1)
and (-1.3,-1) .. cycle;
\node at ($(asy1)!0.5!(asy2)$) {#2};
\end{scope}
}
% TV, has been comitted to PR
\makeatletter
\ctikzset{bipoles/tv/width/.initial=0.6}
\ctikzset{bipoles/tv/height/.initial=.4}
\pgfcirc@define@twoports{blocks}
{}
{\ctikzvalof{bipoles/tv/height}}
{tv}
{\ctikzvalof{bipoles/tv/height}}
{\ctikzvalof{bipoles/tv/width}}
{
\pgfsetlinewidth{2\pgflinewidth} % double in size
% Beine:
\pgfpathmoveto{\pgfpoint{+0.60\pgf@circ@res@step}{-1.10\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{+0.30\pgf@circ@res@step}{-0.70\pgf@circ@res@step}}
\pgfusepath{draw}
%
\pgfpathmoveto{\pgfpoint{-0.60\pgf@circ@res@step}{-1.10\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{-0.30\pgf@circ@res@step}{-0.70\pgf@circ@res@step}}
\pgfusepath{draw}
}
\pgfcirc@activate@bipole@simple{l}{tv}
\makeatother
% Oberwellen: in PR committed
\makeatletter
\ctikzset{monopoles/harmonics/width/.initial=0.5}%
% additional shape with the harmonics
\pgfdeclareshape{harmonics}{
\savedmacro{\ctikzclass}{\edef\ctikzclass{RF}}
\saveddimen{\scaledRlen}{\pgfmathsetlength{\pgf@x}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}}
\anchor{center}{\pgfpointorigin}
\savedanchor{\northeast}{
\pgfmathsetlength{\pgf@circ@scaled@Rlen}{\ctikzvalof{\ctikzclass/scale}\pgf@circ@Rlen}
\pgf@circ@res@step=\ctikzvalof{monopoles/harmonics/width}\pgf@circ@scaled@Rlen
\pgf@x=\pgf@circ@res@step
\pgf@y=\pgf@circ@res@step
}
\anchor{text}{
\northeast
\pgf@y=\dimexpr\pgf@y+.5\dp\pgfnodeparttextbox-.5\ht\pgfnodeparttextbox\relax
}
\anchor{top}{\northeast\pgf@x=0pt}
\anchor{right}{\northeast\pgf@y=0pt}
\anchor{left}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
\anchor{bottom}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
\anchor{north}{\northeast\pgf@x=0pt}
\anchor{north east}{\northeast}
\anchor{east}{\northeast\pgf@y=0pt}
\anchor{south east}{\northeast\pgf@y=-\pgf@y}
\anchor{south}{\northeast\pgf@y=-\pgf@y\pgf@x=0pt}
\anchor{south west}{\northeast\pgf@y=-\pgf@y\pgf@x=-\pgf@x}
\anchor{west}{\northeast\pgf@x=-\pgf@x\pgf@y=0pt}
\anchor{north west}{\northeast\pgf@x=-\pgf@x}
\pgf@circ@draw@component{
\pgf@circ@scaled@Rlen=\scaledRlen
\pgf@circ@res@step=\ctikzvalof{monopoles/waves/width}\pgf@circ@scaled@Rlen
\pgf@circ@res@step=0.5\pgf@circ@res@step
\pgf@circ@setcolor
\pgfscope
% define a triangle for clipping the waves
\pgfpathmoveto{\pgfpoint{-2\pgf@circ@res@step}{0pt}}
\pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{1\pgf@circ@res@step}}
\pgfpathlineto{\pgfpoint{2.1\pgf@circ@res@step}{-1\pgf@circ@res@step}}
\pgfpathclose
\pgfusepath{clip}
% ...and build the waves as clipped circles
\c@pgf@counta=32\pgf@circ@res@other=0.125\pgf@circ@res@step
\pgfmathloop%
\ifnum\c@pgf@counta>1
\pgfpathcircle{\pgfpoint{-2\pgf@circ@res@step}{0pt}}{\the\c@pgf@counta*\pgf@circ@res@other}
\advance\c@pgf@counta-1\relax%
\repeatpgfmathloop
\pgfusepath{draw}
\endpgfscope
}
}
\makeatother
% morse code
\newcommand{\MorseDotLength}{2pt}
\newcommand{\MorseDahLength}{9pt}
\newcommand{\MorseThickness}{1.5pt}
\newcommand{\MorseCharSep}{\hspace{9pt}}
\newcommand{\MorseWordSep}{\hspace{21pt}}
\newcommand{\MorseDit}{\raisebox{0.5ex}{\rule{\MorseDotLength}{\MorseThickness}\hspace{\MorseDotLength}}}
\newcommand{\MorseDah}{\raisebox{0.5ex}{\rule{\MorseDahLength}{\MorseThickness}\hspace{\MorseDotLength}}}
\newcommand{\smartphone}[3] % #1 = (x,y); #2 = width; #3 = name
{
% äußeres Rechteck
\node (#3) at #1 [draw, minimum width=#2*1, minimum height=#2*1.7, rounded corners=0.1*#2] {};
% Bildschirm
\node (#3_screen) at #1 [draw, minimum width=#2*0.8, minimum height=#2*1.2] {};
% Home-Button
\node [draw, circle, minimum size=#2*0.15, inner sep=0, below=#2*0.05 of #3_screen] {};
% Lautsprecher
\node [draw, fill, inner sep=0, minimum width=#2*0.6, minimum height=0.005cm, above=#2*0.1 of #3_screen] {};
}
\newcommand{\computer}[2] % #1 = (x,y); #2 = name
{
% Bildschirm
\draw (#1) node [draw, anchor=center, minimum width=1.0cm, minimum height=0.5cm, rounded corners=0.5, double] (#2) {};
% Tastatur
\draw (#2.south) ++(0,-0.05) node [draw, anchor=north, minimum width=1.0cm, minimum height=0.04cm, rounded corners=0.5, inner sep=0] {};
}
% Kommandos für TRX-Bildschirme
\newcommand{\dist}{0.25}
%
\newcommand{\swr}[6]{% 1:x1 2:y1 3:x2 4:y2 5:percent 6:Label
\pgfmathsetlengthmacro \val {(#1)+(#5)*((#3)-(#1))}
\fill[gray] (#1,#2) rectangle (\val,#4);
\draw[very thick] (#1,#2) rectangle (#3,#4);
\foreach \i in {1,...,4} {
\pgfmathsetlengthmacro \x {(#1)+(\i-1)*((#3)-(#1))/3}
\node at (\x,#2-1.25*\dist) {\ifthenelse{\i=4}{$\infty$}{\i}};
}
\node[anchor=west,inner sep=0,outer sep=0] at (#1,#4+1.25*\dist) {#6};
}
%
\newcommand{\alc}[6]{% 1:x1 2:y1 3:x2 4:y2 5:percent 6:Label
\pgfmathsetlengthmacro \val {(#1)+(#5)*((#3)-(#1))}
\pgfmathsetlengthmacro \alcmax {(#1)+(0.66)*((#3)-(#1))}
\fill[gray] (#1,#2) rectangle (\val,#4);
\draw[very thick] (#1,#2) rectangle (#3,#4);
\draw[ultra thick, DARCgreen] (#1,#2-0.5*\dist) -- (\alcmax,#2-0.5*\dist);
\draw[ultra thick, DARCred] (\alcmax,#2-0.5*\dist) -- (#3,#2-0.5*\dist);
\node[anchor=west,inner sep=0,outer sep=0] at (#1,#4+1.25*\dist) {#6};
}
%
\newcommand{\pwr}[5]{% 1:x1 2:y1 3:x2 4:y2 5:percent
\pgfmathsetlengthmacro \val {(#1)+(#5)*((#3)-(#1))}
\fill[gray] (#1,#2) rectangle (\val,#4);
\draw[very thick] (#1,#2) rectangle (#3,#4);
\foreach \l [count=\i from 1] in {\ifthenelse{\boolean{labels}}{}{P}1,5,10,15,20} {
\pgfmathsetlengthmacro \x {(#1)+(\i-1)*((#3)-(#1))/4}
\node at (\x,#2-1.25*\dist) {\l};
}
\foreach \l [count=\i from 1] in {\ifthenelse{\boolean{labels}}{}{S}1,3,5,7,9,+20,+40} {
\pgfmathsetlengthmacro \x {(#1)+(\i-1)*((#3)-(#1))/6}
\node at (\x,#4+1.25*\dist) {\l};
}
}
%
\newcommand{\vol}[5]{% 1:x1 2:y1 3:x2 4:y2 5:percent
\pgfmathsetlengthmacro \val {(#1)+(#5)*((#3)-(#1))}
\fill[gray] (#1,#2) rectangle (\val,#4);
\draw[very thick] (#1,#2) rectangle (#3,#4);
\node at (#1,#2-1.25*\dist) {0};
\node at (#3,#2-1.25*\dist) {100};
\draw (#1,#4+\dist) node [loudspeakershape, rotate=-90, scale=0.5*\getDarcImageFactor, anchor=south east] {};
}
%
\newcommand{\qrg}[2]{% 1:x1 2:y1
\node[circuitikz/seven seg/color on=black, seven segment val=1 dot none box off, anchor=west, circuitikz/displays/scale=0.9*\getDarcImageFactor, circuitikz/seven seg/thickness=4pt*0.9*\getDarcImageFactor] at (#1,#2) (z1) {};
\node[circuitikz/seven seg/color on=black, seven segment val=4 dot none box off, anchor=west, circuitikz/displays/scale=0.9*\getDarcImageFactor, circuitikz/seven seg/thickness=4pt*0.9*\getDarcImageFactor] at (z1.east) (z2){};
\node[circuitikz/seven seg/color on=black, seven segment val=4 dot on box off, anchor=west, circuitikz/displays/scale=0.9*\getDarcImageFactor, circuitikz/seven seg/thickness=4pt*0.9*\getDarcImageFactor] at (z2.east) (z3){};
\node[circuitikz/seven seg/color on=black, seven segment val=3 dot none box off, anchor=west, circuitikz/displays/scale=0.9*\getDarcImageFactor, circuitikz/seven seg/thickness=4pt*0.9*\getDarcImageFactor] at (z3.east) (z4){};
\node[circuitikz/seven seg/color on=black, seven segment val=1 dot none box off, anchor=west, circuitikz/displays/scale=0.9*\getDarcImageFactor, circuitikz/seven seg/thickness=4pt*0.9*\getDarcImageFactor] at (z4.east) (z5){};
\node[circuitikz/seven seg/color on=black, seven segment val=5 dot on box off, anchor=west, circuitikz/displays/scale=0.9*\getDarcImageFactor, circuitikz/seven seg/thickness=4pt*0.9*\getDarcImageFactor] at (z5.east) (z6){};
\node[circuitikz/seven seg/color on=black, seven segment val=0 dot none box off, anchor=west, circuitikz/displays/scale=0.9*\getDarcImageFactor, circuitikz/seven seg/thickness=4pt*0.9*\getDarcImageFactor] at (z6.east) (z7){};
}
%
\newcommand{\mdl}[4] {% 1:mod 2:tx/rx
\draw ($(z7.east)+(0,\dist)$) node[anchor=west](){#1}; %mod
\draw ($(z7.east)-(0,\dist)$) node[anchor=west](){#2}; % rx tx
}
\makeatletter
\pgfdeclareshape{semi}{%
\inheritsavedanchors[from=circle]
\inheritanchorborder[from=circle]
\inheritanchor[from=circle]{center}
\inheritanchor[from=circle]{north}
\inheritanchor[from=circle]{south}
\inheritanchor[from=circle]{west}
\inheritanchor[from=circle]{east}
\backgroundpath{%
\centerpoint
\pgfsetlinewidth{2pt}
\pgfsetstrokecolor{DARCgray}
\pgfpathcircle{\pgfpoint{\pgf@x}{\pgf@y}}{\radius}
\pgfusepath{stroke}
\pgfsetfillcolor{DARCblue}
\pgfpathcircle{\pgf@anchor@semi@north}{0.25*\radius}
\pgfpathcircle{\pgf@anchor@semi@south}{0.25*\radius}
\pgfpathcircle{\pgf@anchor@semi@east}{0.25*\radius}
\pgfpathcircle{\pgf@anchor@semi@west}{0.25*\radius}
\pgfusepath{fill}
}
}
\makeatother
\makeatletter
\pgfdeclareshape{donn}{%
\inheritsavedanchors[from=circle]
\inheritanchorborder[from=circle]
\inheritanchor[from=circle]{center}
\inheritanchor[from=circle]{north}
\inheritanchor[from=circle]{south}
\inheritanchor[from=circle]{west}
\inheritanchor[from=circle]{east}
\backgroundpath{%
\centerpoint
\pgfsetlinewidth{2pt}
\pgfsetstrokecolor{DARCgray}
\pgfpathcircle{\pgfpoint{\pgf@x}{\pgf@y}}{\radius}
\pgfusepath{stroke}
\pgfsetfillcolor{DARCblue}
\pgfpathcircle{\pgf@anchor@donn@north}{0.25*\radius}
\pgfpathcircle{\pgf@anchor@donn@south}{0.25*\radius}
\pgfpathcircle{\pgf@anchor@donn@east}{0.25*\radius}
\pgfpathcircle{\pgf@anchor@donn@west}{0.25*\radius}
\pgfusepath{fill}
\pgfpathmoveto{\centerpoint}
\pgfpathcircle{\pgfpointpolar{45}{2*\radius}}{0.25*\radius}
\pgfusepath{fill}
}
}
\makeatother
\makeatletter
\pgfdeclareshape{acce}{%
\inheritsavedanchors[from=circle]
\inheritanchorborder[from=circle]
\inheritanchor[from=circle]{center}
\inheritanchor[from=circle]{north}
\inheritanchor[from=circle]{south}
\inheritanchor[from=circle]{west}
\inheritanchor[from=circle]{east}
\backgroundpath{%
\centerpoint
\pgfsetlinewidth{2pt}
\pgfsetstrokecolor{DARCgray}
\pgfpathcircle{\pgfpoint{\pgf@x}{\pgf@y}}{\radius}
\pgfusepath{stroke}
\pgfsetfillcolor{DARCblue}
\pgfpathcircle{\pgf@anchor@acce@north}{0.25*\radius}
\pgfpathcircle{\pgf@anchor@acce@south}{0.25*\radius}
\pgfpathcircle{\pgf@anchor@acce@west}{0.25*\radius}
\pgfusepath{fill}
\pgfsetlinewidth{1pt}
\pgfsetstrokecolor{DARCred}
\pgfpathcircle{\pgf@anchor@acce@east}{0.25*\radius}
\pgfusepath{stroke}
}
}
\makeatother
\makeatletter
%% Solar Panel
\ctikzset{bipoles/solar/height/.initial=.6}
\ctikzset{bipoles/solar/width/.initial=.3}
\pgfcircdeclarebipolescaled{batteries}
{}
{\ctikzvalof{bipoles/solar/height}}
{solar}
{\ctikzvalof{bipoles/solar/height}}
{\ctikzvalof{bipoles/solar/width}}
{
\pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{0}}
\pgfpathlineto{\pgfpoint{\pgf@circ@res@right}{0}}
\pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{0}}
\pgfpathlineto{\pgfpoint{\pgf@circ@res@left}{0}}
\pgfusepath{draw}
\pgf@circ@setlinewidth{bipoles}{\pgfstartlinewidth}
\ifpgf@circ@fixbatteries
\pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{\pgf@circ@res@down}}
\pgfusepath{draw}
\pgfsetlinewidth{3\pgflinewidth}
\pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{.5\pgf@circ@res@down}}
\else
\pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{.33\pgf@circ@res@left}{\pgf@circ@res@down}}
\pgfusepath{draw}
\pgfsetlinewidth{3\pgflinewidth}
\pgfpathmoveto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{.33\pgf@circ@res@right}{.5\pgf@circ@res@down}}
\fi
\pgfusepath{draw}
\pgfsetlinewidth{\pgfstartlinewidth}
\pgf@circ@fill@strokecolor
\pgf@circ@set@optoarrow@style
\pgfpathmoveto{\pgfpoint{0.6\pgf@circ@res@right}{2.2\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{-0.4\pgf@circ@res@right}{1.2\pgf@circ@res@up}}
\pgfusepath{draw}
\pgfpathmoveto{\pgfpoint{1.2\pgf@circ@res@right}{2.0\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{0.2\pgf@circ@res@right}{1.0\pgf@circ@res@up}}
\pgfusepath{draw}
}
\pgfcirc@activate@bipole@opt{v}{batteries}{solar}{solar}{\circuitikzbasekey/bipole/is voltage=true,
\circuitikzbasekey/bipole/is voltageoutsideofsymbol=true}
\makeatother
% Channel Coder
\makeatletter
\ctikzset{bipoles/channelcoder/width/.initial=.7}
\pgfcirc@define@twoports{blocks}
{}
{\ctikzvalof{bipoles/channelcoder/width}}
{channelcoder}
{\ctikzvalof{bipoles/channelcoder/width}}
{\ctikzvalof{bipoles/channelcoder/width}}
{
\pgfcirc@twoport@draw@splitline
%
\pgf@circ@text@strokecolor
\pgftext[center,x=0.55\pgf@circ@res@left,y=0.6\pgf@circ@res@up]{\tiny 01}
\pgftext[center,x=0.30\pgf@circ@res@right,y=0.6\pgf@circ@res@down]{\tiny 01+01}
}
\pgfcirc@activate@bipole@simple{l}{channelcoder}
\makeatother
% Channel Decoder
\makeatletter
\ctikzset{bipoles/channeldecoder/width/.initial=.7}
\pgfcirc@define@twoports{blocks}
{}
{\ctikzvalof{bipoles/channeldecoder/width}}
{channeldecoder}
{\ctikzvalof{bipoles/channeldecoder/width}}
{\ctikzvalof{bipoles/channeldecoder/width}}
{
\pgfcirc@twoport@draw@splitline
%
\pgf@circ@text@strokecolor
\pgftext[center,x=0.25\pgf@circ@res@left,y=0.6\pgf@circ@res@up]{\tiny 01+01}
\pgftext[center,x=0.55\pgf@circ@res@right,y=0.6\pgf@circ@res@down]{\tiny 01}
}
\pgfcirc@activate@bipole@simple{l}{channeldecoder}
\makeatother
% Source Coder
\makeatletter
\ctikzset{bipoles/sourcecoder/width/.initial=.7}
\pgfcirc@define@twoports{blocks}
{}
{\ctikzvalof{bipoles/sourcecoder/width}}
{sourcecoder}
{\ctikzvalof{bipoles/sourcecoder/width}}
{\ctikzvalof{bipoles/sourcecoder/width}}
{
\pgfcirc@twoport@draw@splitline
%
\pgf@circ@text@strokecolor
\pgftext[center,x=0.30\pgf@circ@res@left,y=0.6\pgf@circ@res@up]{\tiny 0101}
\pgftext[center,x=0.55\pgf@circ@res@right,y=0.6\pgf@circ@res@down]{\tiny 01}
}
\pgfcirc@activate@bipole@simple{l}{sourcecoder}
\makeatother
% Source Decoder
\makeatletter
\ctikzset{bipoles/sourcedecoder/width/.initial=.7}
\pgfcirc@define@twoports{blocks}
{}
{\ctikzvalof{bipoles/sourcedecoder/width}}
{sourcedecoder}
{\ctikzvalof{bipoles/sourcedecoder/width}}
{\ctikzvalof{bipoles/sourcedecoder/width}}
{
\pgfcirc@twoport@draw@splitline
%
\pgf@circ@text@strokecolor
\pgftext[center,x=0.55\pgf@circ@res@left,y=0.6\pgf@circ@res@up]{\tiny 01}
\pgftext[center,x=0.30\pgf@circ@res@right,y=0.6\pgf@circ@res@down]{\tiny 0101}
}
\pgfcirc@activate@bipole@simple{l}{sourcedecoder}
\makeatother
% Mapper
\makeatletter
\ctikzset{bipoles/mapper/width/.initial=.7}
\pgfcirc@define@twoports{blocks}
{}
{\ctikzvalof{bipoles/mapper/width}}
{mapper}
{\ctikzvalof{bipoles/mapper/width}}
{\ctikzvalof{bipoles/mapper/width}}
{
\pgfcirc@twoport@draw@splitline
%
\pgf@circ@text@strokecolor
\pgftext[center,x=0.55\pgf@circ@res@left,y=0.6\pgf@circ@res@up]{\tiny 01}
%
\pgfpathmoveto{\pgfpoint{0.50\pgf@circ@res@right}{-0.25\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{0.50\pgf@circ@res@right}{-0.75\pgf@circ@res@up}}
\pgfusepath{draw}
%
\pgfpathmoveto{\pgfpoint{0.25\pgf@circ@res@right}{-0.50\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@right}{-0.50\pgf@circ@res@up}}
\pgfusepath{draw}
%
\pgfpathcircle{\pgfpoint{0.65\pgf@circ@res@right}{-0.65\pgf@circ@res@up}}{0.05\pgf@circ@res@up}
\pgfusepath{fill}
%
\pgfpathcircle{\pgfpoint{0.35\pgf@circ@res@right}{-0.65\pgf@circ@res@up}}{0.05\pgf@circ@res@up}
\pgfusepath{fill}
%
\pgfpathcircle{\pgfpoint{0.65\pgf@circ@res@right}{-0.35\pgf@circ@res@up}}{0.05\pgf@circ@res@up}
\pgfusepath{fill}
%
\pgfpathcircle{\pgfpoint{0.35\pgf@circ@res@right}{-0.35\pgf@circ@res@up}}{0.05\pgf@circ@res@up}
\pgfusepath{fill}
%
}
\pgfcirc@activate@bipole@simple{l}{mapper}
\makeatother
% Demapper
\makeatletter
\ctikzset{bipoles/demapper/width/.initial=.7}
\pgfcirc@define@twoports{blocks}
{}
{\ctikzvalof{bipoles/demapper/width}}
{demapper}
{\ctikzvalof{bipoles/demapper/width}}
{\ctikzvalof{bipoles/demapper/width}}
{
\pgfcirc@twoport@draw@splitline
%
\pgf@circ@text@strokecolor
%
\pgfpathmoveto{\pgfpoint{0.50\pgf@circ@res@left}{+0.25\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{0.50\pgf@circ@res@left}{+0.75\pgf@circ@res@up}}
\pgfusepath{draw}
%
\pgfpathmoveto{\pgfpoint{0.25\pgf@circ@res@left}{+0.50\pgf@circ@res@up}}
\pgfpathlineto{\pgfpoint{0.75\pgf@circ@res@left}{+0.50\pgf@circ@res@up}}
\pgfusepath{draw}
%
\pgfpathcircle{\pgfpoint{0.65\pgf@circ@res@left}{+0.65\pgf@circ@res@up}}{0.05\pgf@circ@res@up}
\pgfusepath{fill}
%
\pgfpathcircle{\pgfpoint{0.35\pgf@circ@res@left}{+0.65\pgf@circ@res@up}}{0.05\pgf@circ@res@up}
\pgfusepath{fill}
%
\pgfpathcircle{\pgfpoint{0.65\pgf@circ@res@left}{+0.35\pgf@circ@res@up}}{0.05\pgf@circ@res@up}
\pgfusepath{fill}
%
\pgfpathcircle{\pgfpoint{0.35\pgf@circ@res@left}{+0.35\pgf@circ@res@up}}{0.05\pgf@circ@res@up}
\pgfusepath{fill}
%
\pgftext[center,x=0.55\pgf@circ@res@right,y=-0.6\pgf@circ@res@up]{\tiny 01}
}
\pgfcirc@activate@bipole@simple{l}{demapper}
\makeatother