From 8108f8772a3191c3087e5989a5b5277c27270ef0 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 2 Jan 2021 22:20:07 +0000 Subject: tikz-trackschematic (2jan21) git-svn-id: svn://tug.org/texlive/trunk@57300 c570f23f-e606-0410-a88d-b1316a301751 --- .../tikzlibrarytrackschematic.electrics.code.tex | 611 +++++++++++++++++++++ 1 file changed, 611 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.electrics.code.tex (limited to 'Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.electrics.code.tex') diff --git a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.electrics.code.tex b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.electrics.code.tex new file mode 100644 index 00000000000..70956611e63 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.electrics.code.tex @@ -0,0 +1,611 @@ +%!TEX TS-program = pdflatexmk +%!TEX root = ../test/test.tex +% +%% symbol library for TikZ track schematics +% +% Copyright (c) 2018 - 2021, Martin Scheidt (ISC license) +% +% Permission to use, copy, modify, and/or distribute this file for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. +% +\ProvidesFileRCS{tikzlibrarytrackschematic.electrics.code.tex}% +% +%%%%%%%%%%%%%%% +% global settings +%%%%%%%%%%%%%%% +\RequirePackage{tikz,etoolbox,lmodern}% +\usetikzlibrary{calc,intersections,arrows.meta}% +% +% https://tex.stackexchange.com/questions/56353/extract-x-y-coordinate-of-an-arbitrary-point-on-curve-in-tikz +\providecommand{\gettikzxy}[3]{% + \tikz@scan@one@point\pgfutil@firstofone#1\relax% + \edef#2{\the\pgf@x}% + \edef#3{\the\pgf@y}% +}% +% +%%%%%%%%%%%%%%% +% tikz keys for multiple use +%%%%%%%%%%%%%%% +% +\pgfkeys{% + /tikz/trackschematic/.is family,% + /tikz/trackschematic/.cd,% + %% color foreground + foreground/.store in=\foreground,% + foreground=black,% DEFAULT + /tikz/foreground/.forward to=/tikz/trackschematic/foreground,% + %% color background + background/.store in=\background,% + background=white,% DEFAULT + /tikz/background/.forward to=/tikz/trackschematic/background,% + %% face + face/.value required,% forward, backward OR bidirectional + face/.store in=\face,% forward, backward OR bidirectional + /tikz/face/.forward to=/tikz/trackschematic/face,% + /tikz/forward/.code={\pgfkeys{/tikz/trackschematic/face=forward}},% + /tikz/backward/.code={\pgfkeys{/tikz/trackschematic/face=backward}},% + /tikz/bidirectional/.code={\pgfkeys{/tikz/trackschematic/face=bidirectional}},% + %% traffic practice + traffic practice/.value required,% left OR right + traffic practice/.store in=\trafficpractice,% + /tikz/traffic practice/.forward to=/tikz/trackschematic/traffic practice,% + /tikz/position/.forward to=/tikz/trackschematic/traffic practice,% + %% label + shift label/.store in=\labelcoord,% (coord) + shift label=(none),% DEFAULT + /tikz/shift label/.forward to=/tikz/trackschematic/shift label,% +}% +\tikzset{traffic practice=right}% +% +\definecolor{ts-signal-blue}{HTML}{013ADF}% +% tikz keys +\pgfkeys{% + /tikz/trackschematic/electrics/.is family,% + /tikz/trackschematic/electrics/.cd,% + %% color hectometer + signal color/.store in=\signalcolor,% + signal color=ts-signal-blue,% DEFAULT + /tikz/electrics signal color/.forward to=/tikz/trackschematic/electrics/signal color,% +}% +%%%%%%%%%%%%%%%% +% symbol distant power off +%%%%%%%%%%%%%%% +%% command +\newcommand\distantpoweroff{}% just for safety +\def\distantpoweroff[#1]#2(#3)#4(#5){% \distantpoweroff[options] at (coord) label (name); + \pic[#1] at (#3) {distant_power_off={#2/#4/#5}}% symbol +}% +%% +%% symbol definition +\tikzset{% + pics/distant_power_off/.default=,% + pics/distant_power_off/.style args={#1/#2/#3}{code={% + %% settings + \def\coordcommand{#1}% beware of leading and tailing spaces! + \def\labelcommand{#2}% beware of leading and tailing spaces! + \def\labelcontent{#3}% + %% symbol marker + % + %% traffic practice setup + \ifdefstring{\trafficpractice}{left}{% branch + \pgfmathsetmacro{\trafficfactor}{-1}% + }{% + \ifdefstring{\trafficpractice}{right}{% branch + \pgfmathsetmacro{\trafficfactor}{1}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/trafficcontrol/traffic practice}{“left“ OR “right“ as key required}}% + }% + }% end \ifdefstring{\trafficpractice} + %% face setup + \ifdefstring{\face}{forward}{% face + \pgfmathsetmacro{\facefactor}{1}% + \def\align{left}% + }{% + \ifdefstring{\face}{backward}{% face + \pgfmathsetmacro{\facefactor}{-1}% + \def\align{right}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/face}{“forward“ OR “backward“ as key required}}% + }% + }% end \ifdefstring{\face} + % + %% signal pole + \path[draw=\foreground,line width=1pt] (0,0) -- ++($\trafficfactor*\facefactor*(0,-0.4)$) -- ++($\facefactor*(0.4,0)$);% signal pole + %% signal marker + \path[draw=\foreground,line width=0.1pt,double=\background,double distance=0.5pt,fill=\signalcolor,rounded corners=0.1pt]% + ($\trafficfactor*\facefactor*(0,-0.15) + \facefactor*( 0.4,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.25) + \facefactor*(-0.25,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.25) + \facefactor*( 0.25,0)$) --% + ++($\trafficfactor*\facefactor*(0, 0.25) + \facefactor*( 0.25,0)$) -- cycle;% sign + \path[fill=\background]% + ($\trafficfactor*\facefactor*(0,-0.3) + \facefactor*( 0.45,0)$) rectangle% + ++($\trafficfactor*\facefactor*(0,-0.05) + \facefactor*(-0.1,0)$)% + ($\trafficfactor*\facefactor*(0,-0.5) + \facefactor*( 0.45,0)$) rectangle% + ++($\trafficfactor*\facefactor*(0, 0.05) + \facefactor*(-0.1,0)$);% symbol + %% label + \tikzset{every node/.style={text=\foreground,inner sep=1pt}};% + \ifdefstring{\labelcontent}{}{}{% label NOT empty + \coordinate (label-coord) at ($\trafficfactor*\facefactor*(0,-0.4)$);% + \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default + \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% + \coordinate (label-coord) at ($(label-coord)+(\labelcoordX,\labelcoordY)$);% + }% + \node[\align] at (label-coord) {\footnotesize \labelcontent};% + }% + }},% END of pics/distant_power_off/.style args={#1/#2/#3} + % symbology entry + symbology_distant_power_off/.pic = {% + \maintrack (0,0) -- (6,0);% + \distantpoweroff[forward] at (3,0) label ();% + },% +}% +% +%%%%%%%%%%%%%%%% +% symbol power off +%%%%%%%%%%%%%%% +%% command +\newcommand\poweroff{}% just for safety +\def\poweroff[#1]#2(#3)#4(#5){% \poweroff[options] at (coord) label (name); + \pic[#1] at (#3) {power_off={#2/#4/#5}}% symbol +}% +%% +%% symbol definition +\tikzset{% + pics/power_off/.default=,% + pics/power_off/.style args={#1/#2/#3}{code={% + %% settings + \def\coordcommand{#1}% beware of leading and tailing spaces! + \def\labelcommand{#2}% beware of leading and tailing spaces! + \def\labelcontent{#3}% + %% symbol marker + % + %% traffic practice setup + \ifdefstring{\trafficpractice}{left}{% branch + \pgfmathsetmacro{\trafficfactor}{-1}% + }{% + \ifdefstring{\trafficpractice}{right}{% branch + \pgfmathsetmacro{\trafficfactor}{1}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/trafficcontrol/traffic practice}{“left“ OR “right“ as key required}}% + }% + }% end \ifdefstring{\trafficpractice} + %% face setup + \ifdefstring{\face}{forward}{% face + \pgfmathsetmacro{\facefactor}{1}% + \def\align{left}% + }{% + \ifdefstring{\face}{backward}{% face + \pgfmathsetmacro{\facefactor}{-1}% + \def\align{right}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/face}{“forward“ OR “backward“ as key required}}% + }% + }% end \ifdefstring{\face} + % + %% signal pole + \path[draw=\foreground,line width=1pt] (0,0) -- ++($\trafficfactor*\facefactor*(0,-0.4)$) -- ++($\facefactor*(0.4,0)$);% signal pole + %% signal marker + \path[draw=\foreground,line width=0.1pt,double=\background,double distance=0.5pt,fill=\signalcolor,rounded corners=0.1pt]% + ($\trafficfactor*\facefactor*(0,-0.15) + \facefactor*( 0.4,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.25) + \facefactor*(-0.25,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.25) + \facefactor*( 0.25,0)$) --% + ++($\trafficfactor*\facefactor*(0, 0.25) + \facefactor*( 0.25,0)$) -- cycle;% sign + \path[fill=\background]% + ($\trafficfactor*\facefactor*(0,-0.3) + \facefactor*( 0.5,0)$) rectangle% + ++($\trafficfactor*\facefactor*(0,-0.05) + \facefactor*(-0.1,0)$)% + ($\trafficfactor*\facefactor*(0,-0.5) + \facefactor*( 0.5,0)$) rectangle% + ++($\trafficfactor*\facefactor*(0, 0.05) + \facefactor*(-0.1,0)$)% + ($\trafficfactor*\facefactor*(0,-0.3) + \facefactor*( 0.3,0)$) rectangle% + ++($\trafficfactor*\facefactor*(0,-0.2) + \facefactor*( 0.05,0)$);% symbol + %% label + \tikzset{every node/.style={text=\foreground,inner sep=1pt}};% + \ifdefstring{\labelcontent}{}{}{% label NOT empty + \coordinate (label-coord) at ($\trafficfactor*\facefactor*(0,-0.4)$);% + \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default + \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% + \coordinate (label-coord) at ($(label-coord)+(\labelcoordX,\labelcoordY)$);% + }% + \node[\align] at (label-coord) {\footnotesize \labelcontent};% + }% + }},% END of pics/power_off/.style args={#1/#2/#3} + % symbology entry + symbology_power_off/.pic = {% + \maintrack (0,0) -- (6,0);% + \poweroff[forward] at (3,0) label ();% + },% +}% +% +%%%%%%%%%%%%%%%% +% symbol power on +%%%%%%%%%%%%%%% +%% command +\newcommand\poweron{}% just for safety +\def\poweron[#1]#2(#3)#4(#5){% \poweron[options] at (coord) label (name); + \pic[#1] at (#3) {power_on={#2/#4/#5}}% symbol +}% +%% +%% symbol definition +\tikzset{% + pics/power_on/.default=,% + pics/power_on/.style args={#1/#2/#3}{code={% + %% settings + \def\coordcommand{#1}% beware of leading and tailing spaces! + \def\labelcommand{#2}% beware of leading and tailing spaces! + \def\labelcontent{#3}% + %% symbol marker + % + %% traffic practice setup + \ifdefstring{\trafficpractice}{left}{% branch + \pgfmathsetmacro{\trafficfactor}{-1}% + }{% + \ifdefstring{\trafficpractice}{right}{% branch + \pgfmathsetmacro{\trafficfactor}{1}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/trafficcontrol/traffic practice}{“left“ OR “right“ as key required}}% + }% + }% end \ifdefstring{\trafficpractice} + %% face setup + \ifdefstring{\face}{forward}{% face + \pgfmathsetmacro{\facefactor}{1}% + \def\align{left}% + }{% + \ifdefstring{\face}{backward}{% face + \pgfmathsetmacro{\facefactor}{-1}% + \def\align{right}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/face}{“forward“ OR “backward“ as key required}}% + }% + }% end \ifdefstring{\face} + % + %% signal pole + \path[draw=\foreground,line width=1pt] (0,0) -- ++($\trafficfactor*\facefactor*(0,-0.4)$) -- ++($\facefactor*(0.4,0)$);% signal pole + %% signal marker + \path[draw=\foreground,line width=0.1pt,double=\background,double distance=0.5pt,fill=\signalcolor,rounded corners=0.1pt]% + ($\trafficfactor*\facefactor*(0,-0.15) + \facefactor*( 0.4,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.25) + \facefactor*(-0.25,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.25) + \facefactor*( 0.25,0)$) --% + ++($\trafficfactor*\facefactor*(0, 0.25) + \facefactor*( 0.25,0)$) -- cycle;% sign + \path[fill=\background]% + ($\trafficfactor*\facefactor*(0,-0.3) + \facefactor*( 0.475,0)$) rectangle% + ++($\trafficfactor*\facefactor*(0,-0.05) + \facefactor*(-0.11,0)$)% + ($\trafficfactor*\facefactor*(0,-0.5) + \facefactor*( 0.475,0)$) rectangle% + ++($\trafficfactor*\facefactor*(0, 0.05) + \facefactor*(-0.11,0)$);% symbol part1 + \path[fill=\background]% + ($\trafficfactor*\facefactor*(0,-0.3) + \facefactor*( 0.325,0)$) rectangle% + ++($\trafficfactor*\facefactor*(0,-0.2) + \facefactor*( 0.05,0)$);% symbol part2 + %% label + \tikzset{every node/.style={text=\foreground,inner sep=1pt}};% + \ifdefstring{\labelcontent}{}{}{% label NOT empty + \coordinate (label-coord) at ($\trafficfactor*\facefactor*(0,-0.4)$);% + \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default + \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% + \coordinate (label-coord) at ($(label-coord)+(\labelcoordX,\labelcoordY)$);% + }% + \node[\align] at (label-coord) {\footnotesize \labelcontent};% + }% + }},% END of pics/power_on/.style args={#1/#2/#3} + % symbology entry + symbology_power_on/.pic = {% + \maintrack (0,0) -- (6,0);% + \poweron[forward] at (3,0) label ();% + },% +}% +% +%%%%%%%%%%%%%%%% +% symbol distant pantograph down +%%%%%%%%%%%%%%% +%% command +\newcommand\distantpantographdown{}% just for safety +\def\distantpantographdown[#1]#2(#3)#4(#5){% \distantpantographdown[options] at (coord) label (name); + \pic[#1] at (#3) {distant_pantograph_down={#2/#4/#5}}% symbol +}% +%% +%% symbol definition +\tikzset{% + pics/distant_pantograph_down/.default=,% + pics/distant_pantograph_down/.style args={#1/#2/#3}{code={% + %% settings + \def\coordcommand{#1}% beware of leading and tailing spaces! + \def\labelcommand{#2}% beware of leading and tailing spaces! + \def\labelcontent{#3}% + %% symbol marker + % + %% traffic practice setup + \ifdefstring{\trafficpractice}{left}{% branch + \pgfmathsetmacro{\trafficfactor}{-1}% + }{% + \ifdefstring{\trafficpractice}{right}{% branch + \pgfmathsetmacro{\trafficfactor}{1}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/trafficcontrol/traffic practice}{“left“ OR “right“ as key required}}% + }% + }% end \ifdefstring{\trafficpractice} + %% face setup + \ifdefstring{\face}{forward}{% face + \pgfmathsetmacro{\facefactor}{1}% + \def\align{left}% + }{% + \ifdefstring{\face}{backward}{% face + \pgfmathsetmacro{\facefactor}{-1}% + \def\align{right}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/face}{“forward“ OR “backward“ as key required}}% + }% + }% end \ifdefstring{\face} + % + %% signal pole + \path[draw=\foreground,line width=1pt] (0,0) -- ++($\trafficfactor*\facefactor*(0,-0.4)$) -- ++($\facefactor*(0.4,0)$);% signal pole + %% signal marker + \path[draw=\foreground,line width=0.1pt,double=\background,double distance=0.5pt,fill=\signalcolor,rounded corners=0.1pt]% + ($\trafficfactor*\facefactor*(0,-0.15) + \facefactor*( 0.4,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.25) + \facefactor*(-0.25,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.25) + \facefactor*( 0.25,0)$) --% + ++($\trafficfactor*\facefactor*(0, 0.25) + \facefactor*( 0.25,0)$) -- cycle;% sign + \path[fill=\background]% + ($\trafficfactor*\facefactor*(0,-0.23) + \facefactor*( 0.35,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.2)$) -- ++($\facefactor*(-0.05,0)$) --% + ++($\trafficfactor*\facefactor*(0, 0.15)$) -- cycle% + ($\trafficfactor*\facefactor*(0,-0.57) + \facefactor*( 0.45,0)$) --% + ++($\trafficfactor*\facefactor*(0, 0.2)$) -- ++($\facefactor*(0.05,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.15)$) -- cycle;% symbol + %% label + \tikzset{every node/.style={text=\foreground,inner sep=1pt}};% + \ifdefstring{\labelcontent}{}{}{% label NOT empty + \coordinate (label-coord) at ($\trafficfactor*\facefactor*(0,-0.4)$);% + \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default + \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% + \coordinate (label-coord) at ($(label-coord)+(\labelcoordX,\labelcoordY)$);% + }% + \node[\align] at (label-coord) {\footnotesize \labelcontent};% + }% + }},% END of pics/distant_pantograph_down/.style args={#1/#2/#3} + % symbology entry + symbology_distant_pantograph_down/.pic = {% + \maintrack (0,0) -- (6,0);% + \distantpantographdown[forward] at (3,0) label ();% + },% +}% +% +% +%%%%%%%%%%%%%%%% +% symbol pantograph down +%%%%%%%%%%%%%%% +%% command +\newcommand\pantographdown{}% just for safety +\def\pantographdown[#1]#2(#3)#4(#5){% \pantographdown[options] at (coord) label (name); + \pic[#1] at (#3) {pantograph_down={#2/#4/#5}}% symbol +}% +%% +%% symbol definition +\tikzset{% + pics/pantograph_down/.default=,% + pics/pantograph_down/.style args={#1/#2/#3}{code={% + %% settings + \def\coordcommand{#1}% beware of leading and tailing spaces! + \def\labelcommand{#2}% beware of leading and tailing spaces! + \def\labelcontent{#3}% + %% symbol marker + % + %% traffic practice setup + \ifdefstring{\trafficpractice}{left}{% branch + \pgfmathsetmacro{\trafficfactor}{-1}% + }{% + \ifdefstring{\trafficpractice}{right}{% branch + \pgfmathsetmacro{\trafficfactor}{1}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/trafficcontrol/traffic practice}{“left“ OR “right“ as key required}}% + }% + }% end \ifdefstring{\trafficpractice} + %% face setup + \ifdefstring{\face}{forward}{% face + \pgfmathsetmacro{\facefactor}{1}% + \def\align{left}% + }{% + \ifdefstring{\face}{backward}{% face + \pgfmathsetmacro{\facefactor}{-1}% + \def\align{right}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/face}{“forward“ OR “backward“ as key required}}% + }% + }% end \ifdefstring{\face} + % + %% signal pole + \path[draw=\foreground,line width=1pt] (0,0) -- ++($\trafficfactor*\facefactor*(0,-0.4)$) -- ++($\facefactor*(0.4,0)$);% signal pole + %% signal marker + \path[draw=\foreground,line width=0.1pt,double=\background,double distance=0.5pt,fill=\signalcolor,rounded corners=0.1pt]% + ($\trafficfactor*\facefactor*(0,-0.15) + \facefactor*( 0.4,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.25) + \facefactor*(-0.25,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.25) + \facefactor*( 0.25,0)$) --% + ++($\trafficfactor*\facefactor*(0, 0.25) + \facefactor*( 0.25,0)$) -- cycle;% sign + \path[fill=\background]% + ($\trafficfactor*\facefactor*(0,-0.18) + \facefactor*( 0.4 ,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.03) + \facefactor*( 0.03,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.38)$) --% + ++($\trafficfactor*\facefactor*(0,-0.03) + \facefactor*(-0.03,0)$) --% + ++($\trafficfactor*\facefactor*(0, 0.03) + \facefactor*(-0.03,0)$) --% + ++($\trafficfactor*\facefactor*(0, 0.38)$) -- cycle;% symbol + %% label + \tikzset{every node/.style={text=\foreground,inner sep=1pt}};% + \ifdefstring{\labelcontent}{}{}{% label NOT empty + \coordinate (label-coord) at ($\trafficfactor*\facefactor*(0,-0.4)$);% + \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default + \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% + \coordinate (label-coord) at ($(label-coord)+(\labelcoordX,\labelcoordY)$);% + }% + \node[\align] at (label-coord) {\footnotesize \labelcontent};% + }% + }},% END of pics/pantograph_down/.style args={#1/#2/#3} + % symbology entry + symbology_pantograph_down/.pic = {% + \maintrack (0,0) -- (6,0);% + \pantographdown[forward] at (3,0) label ();% + },% +}% +% +% +%%%%%%%%%%%%%%%% +% symbol pantograph up +%%%%%%%%%%%%%%% +%% command +\newcommand\pantographup{}% just for safety +\def\pantographup[#1]#2(#3)#4(#5){% \pantographup[options] at (coord) label (name); + \pic[#1] at (#3) {pantograph_up={#2/#4/#5}}% symbol +}% +%% +%% symbol definition +\tikzset{% + pics/pantograph_up/.default=,% + pics/pantograph_up/.style args={#1/#2/#3}{code={% + %% settings + \def\coordcommand{#1}% beware of leading and tailing spaces! + \def\labelcommand{#2}% beware of leading and tailing spaces! + \def\labelcontent{#3}% + %% symbol marker + % + %% traffic practice setup + \ifdefstring{\trafficpractice}{left}{% branch + \pgfmathsetmacro{\trafficfactor}{-1}% + }{% + \ifdefstring{\trafficpractice}{right}{% branch + \pgfmathsetmacro{\trafficfactor}{1}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/trafficcontrol/traffic practice}{“left“ OR “right“ as key required}}% + }% + }% end \ifdefstring{\trafficpractice} + %% face setup + \ifdefstring{\face}{forward}{% face + \pgfmathsetmacro{\facefactor}{1}% + \def\align{left}% + }{% + \ifdefstring{\face}{backward}{% face + \pgfmathsetmacro{\facefactor}{-1}% + \def\align{right}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/face}{“forward“ OR “backward“ as key required}}% + }% + }% end \ifdefstring{\face} + % + %% signal pole + \path[draw=\foreground,line width=1pt] (0,0) -- ++($\trafficfactor*\facefactor*(0,-0.4)$) -- ++($\facefactor*(0.4,0)$);% signal pole + %% signal marker + \path[draw=\foreground,line width=0.1pt,double=\background,double distance=0.5pt,fill=\signalcolor,rounded corners=0.1pt]% + ($\trafficfactor*\facefactor*(0,-0.15) + \facefactor*( 0.4,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.25) + \facefactor*(-0.25,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.25) + \facefactor*( 0.25,0)$) --% + ++($\trafficfactor*\facefactor*(0, 0.25) + \facefactor*( 0.25,0)$) -- cycle;% sign + \path[fill=\background]% + ($\trafficfactor*\facefactor*(0,-0.4 ) + \facefactor*( 0.62,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.03) + \facefactor*(-0.03,0)$) --% + ++($\facefactor*(-0.38,0)$) --% + ++($\trafficfactor*\facefactor*(0, 0.03) + \facefactor*(-0.03,0)$) --% + ++($\trafficfactor*\facefactor*(0, 0.03) + \facefactor*( 0.03,0)$) --% + ++($\facefactor*( 0.38,0)$) -- cycle;% symbol + %% label + \tikzset{every node/.style={text=\foreground,inner sep=1pt}};% + \ifdefstring{\labelcontent}{}{}{% label NOT empty + \coordinate (label-coord) at ($\trafficfactor*\facefactor*(0,-0.4)$);% + \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default + \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% + \coordinate (label-coord) at ($(label-coord)+(\labelcoordX,\labelcoordY)$);% + }% + \node[\align] at (label-coord) {\footnotesize \labelcontent};% + }% + }},% END of pics/pantograph_up/.style args={#1/#2/#3} + % symbology entry + symbology_pantograph_up/.pic = {% + \maintrack (0,0) -- (6,0);% + \pantographup[forward] at (3,0) label ();% + },% +}% +% +% +%%%%%%%%%%%%%%%% +% symbol wire limit +%%%%%%%%%%%%%%% +%% command +\newcommand\wirelimit{}% just for safety +\def\wirelimit[#1]#2(#3)#4(#5){% \wirelimit[options] at (coord) label (name); + \pic[#1] at (#3) {wire_limit={#2/#4/#5}}% symbol +}% +%% +%% symbol definition +\tikzset{% + pics/wire_limit/.default=,% + pics/wire_limit/.style args={#1/#2/#3}{code={% + %% settings + \def\coordcommand{#1}% beware of leading and tailing spaces! + \def\labelcommand{#2}% beware of leading and tailing spaces! + \def\labelcontent{#3}% + %% symbol marker + % + %% traffic practice setup + \ifdefstring{\trafficpractice}{left}{% branch + \pgfmathsetmacro{\trafficfactor}{-1}% + }{% + \ifdefstring{\trafficpractice}{right}{% branch + \pgfmathsetmacro{\trafficfactor}{1}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/trafficcontrol/traffic practice}{“left“ OR “right“ as key required}}% + }% + }% end \ifdefstring{\trafficpractice} + %% face setup + \ifdefstring{\face}{forward}{% face + \pgfmathsetmacro{\facefactor}{1}% + \def\align{left}% + }{% + \ifdefstring{\face}{backward}{% face + \pgfmathsetmacro{\facefactor}{-1}% + \def\align{right}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/face}{“forward“ OR “backward“ as key required}}% + }% + }% end \ifdefstring{\face} + % + %% signal pole + \path[draw=\foreground,line width=1pt] (0,0) -- ++($\trafficfactor*\facefactor*(0,-0.4)$) -- ++($\facefactor*(0.4,0)$);% signal pole + %% signal marker + \path[draw=\foreground,line width=0.1pt,double=\background,double distance=0.5pt,fill=\signalcolor,rounded corners=0.1pt]% + ($\trafficfactor*\facefactor*(0,-0.15) + \facefactor*( 0.4,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.25) + \facefactor*(-0.25,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.25) + \facefactor*( 0.25,0)$) --% + ++($\trafficfactor*\facefactor*(0, 0.25) + \facefactor*( 0.25,0)$) -- cycle;% sign + \path[fill=\background]% + ($\trafficfactor*\facefactor*(0,-0.25) + \facefactor*( 0.4 ,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.15) + \facefactor*(-0.15,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.15) + \facefactor*( 0.15,0)$) --% + ++($\trafficfactor*\facefactor*(0, 0.15) + \facefactor*( 0.15,0)$) -- cycle;% symbol + \path[fill=\signalcolor]% + ($\trafficfactor*\facefactor*(0,-0.3 ) + \facefactor*( 0.4 ,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.1 ) + \facefactor*(-0.1 ,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.1 ) + \facefactor*( 0.1 ,0)$) --% + ++($\trafficfactor*\facefactor*(0, 0.1 ) + \facefactor*( 0.1 ,0)$) -- cycle;% symbol + \path[fill=\background]% + ($\trafficfactor*\facefactor*(0,-0.35) + \facefactor*( 0.4 ,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.05) + \facefactor*(-0.05,0)$) --% + ++($\trafficfactor*\facefactor*(0,-0.05) + \facefactor*( 0.05,0)$) --% + ++($\trafficfactor*\facefactor*(0, 0.05) + \facefactor*( 0.05,0)$) -- cycle;% symbol + %% label + \tikzset{every node/.style={text=\foreground,inner sep=1pt}};% + \ifdefstring{\labelcontent}{}{}{% label NOT empty + \coordinate (label-coord) at ($\trafficfactor*\facefactor*(0,-0.4)$);% + \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default + \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% + \coordinate (label-coord) at ($(label-coord)+(\labelcoordX,\labelcoordY)$);% + }% + \node[\align] at (label-coord) {\footnotesize \labelcontent};% + }% + }},% END of pics/wire_limit/.style args={#1/#2/#3} + % symbology entry + symbology_wire_limit/.pic = {% + \maintrack (0,0) -- (6,0);% + \wirelimit[forward] at (3,0) label ();% + },% +}% +% +% +%%%%%%%%%%%%%%% +% TODO: +% * documentation +% +%%%%%%%%%%%%%%% +\endinput% +% \ No newline at end of file -- cgit v1.2.3