%!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.vehicles.code.tex}% % %%%%%%%%%%%%%%% % Requirements %%%%%%%%%%%%%%% \RequirePackage{tikz,etoolbox}% \usetikzlibrary{calc}% % % 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}% }% % \ifdeflength{\objectlength}{}{% Not defined, so define it! \newlength{\objectlength}% }% \setlength{\objectlength}{4cm}% % %%%%%%%%%%%%%%% % 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 OR backward face/.store in=\face,% /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}},% %% operation operation mode/.store in=\operationmode,% manual, automatic OR undefined operation mode=none,% DEFAULT /tikz/operation/.forward to=/tikz/trackschematic/operation mode,% %% length length/.store in=\objectlength,% default length 4cm /tikz/length/.forward to=/tikz/trackschematic/length,% %% label shift label/.store in=\labelcoord,% (coord) shift label=(none),% DEFAULT /tikz/shift label/.forward to=/tikz/trackschematic/shift label,% }% % %%%%%%%%%%%%%%% % commands %%%%%%%%%%%%%%% % %% command: parked vehicles \newcommand\parkedvehicles{}% just for safety \def\parkedvehicles[#1]#2(#3)#4(#5){% \parkedvehicles[options] at (coord) label (name); \pic[parked,operation=undefined,#1] at (#3) {vehicles={#2/#4/#5}}% symbol }% %% command: shunting movements \newcommand\shunting{}% just for safety \def\shunting[#1]#2(#3)#4(#5){% \shunting[options] at (coord) label (name); \pic[shunting mode,operation=undefined,#1] at (#3) {vehicles={#2/#4/#5}}% symbol }% %% command: train run \newcommand\train{}% just for safety \def\train[#1]#2(#3)#4(#5){% \train[options] at (coord) label (name); \pic[train mode,operation=undefined,#1] at (#3) {vehicles={#2/#4/#5}}% symbol }% % %%%%%%%%%%%%%%% % tikz keys %%%%%%%%%%%%%%% \pgfkeys{% /tikz/trackschematic/vehicles/.is family,% /tikz/trackschematic/vehicles/.cd,% %% parked vehicles parked/.value forbidden,% parked/.code={\settoggle{is_parked}{true}},% /tikz/parked/.forward to=/tikz/trackschematic/vehicles/parked,% %% shunting mode shunting mode/.value forbidden,% shunting mode/.code={\settoggle{in_shunting_mode}{true}},% /tikz/shunting mode/.forward to=/tikz/trackschematic/vehicles/shunting mode,% %% shunting movement movement/.value forbidden,% movement/.code={\settoggle{is_shunting}{true}},% /tikz/movement/.forward to=/tikz/trackschematic/vehicles/movement,% %% train mode train mode/.value forbidden,% train mode/.code={\settoggle{in_train_mode}{true}},% /tikz/train mode/.forward to=/tikz/trackschematic/vehicles/train mode,% %% ghost train ghost train/.value forbidden,% ghost train/.code={\settoggle{train_is_a_ghost}{true}},% /tikz/ghost/.forward to=/tikz/trackschematic/vehicles/ghost train,% %% train run run/.store in=\trainrun,% slow, normal, fast OR none run=none,% DEFAULT /tikz/run/.forward to=/tikz/trackschematic/vehicles/run,% %% label label align/.store in=\labelalign,% (coord) label align=center,% DEFAULT /tikz/label align/.forward to=/tikz/trackschematic/vehicles/label align,% %% train bend bend right at/.store in=\bendrightcoord,% (coord) bend right at=(none),% DEFAULT /tikz/bend right at/.forward to=/tikz/trackschematic/vehicles/bend right at,% bend left at/.store in=\bendleftcoord,% (coord) bend left at=(none),% DEFAULT /tikz/bend left at/.forward to=/tikz/trackschematic/vehicles/bend left at,% }% % options \newtoggle{is_parked}\settoggle{is_parked}{false}% \newtoggle{in_shunting_mode}\settoggle{in_shunting_mode}{false}% \newtoggle{is_shunting}\settoggle{is_shunting}{false}% \newtoggle{in_train_mode}\settoggle{in_train_mode}{false}% \newtoggle{train_is_a_ghost}\settoggle{train_is_a_ghost}{false}% \newtoggle{bend}\settoggle{bend}{false}% \newtoggle{double_bend}\settoggle{double_bend}{false}% % %%%%%%%%%%%%%%% % symbol definition %%%%%%%%%%%%%%% % \tikzset{% pics/vehicles/.default=,% pics/vehicles/.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}% %% bend % determine number of bends and % find front and back bend from head to tail \ifdefstring{\bendrightcoord}{(none)}{}{% initialize if NOT default \gettikzxy{\bendrightcoord}{\bendrightX}{\bendrightY}% \settoggle{bend}{true}% \ifdefstring{\face}{forward}{% \pgfmathsetlengthmacro\forwardbendX{\bendrightX}% \pgfmathsetlengthmacro\forwardbendY{\bendrightY}% \pgfmathsetlengthmacro\bendlength{\objectlength + \bendrightX}% \pgfmathsetmacro\forwardbendTYPE{1}% }{% face backward \pgfmathsetlengthmacro\backwardbendX{\bendrightX}% \pgfmathsetlengthmacro\backwardbendY{\bendrightY}% \pgfmathsetlengthmacro\bendlength{\objectlength - \bendrightX}% \pgfmathsetmacro\backwardbendTYPE{1}% }% END \ifdefstring{\face}{forward} }% \ifdefstring{\bendleftcoord}{(none)}{}{% initialize if NOT default \gettikzxy{\bendleftcoord}{\bendleftX}{\bendleftY}% \iftoggle{bend}{% \settoggle{double_bend}{true}% \ifdefstring{\face}{forward}{% \ifdimcomp{\bendrightX}{>}{\bendleftX}{% \pgfmathsetlengthmacro\forwardbendX{\bendrightX}% \pgfmathsetmacro\forwardbendTYPE{1}% \pgfmathsetlengthmacro\backwardbendX{\bendleftX}% \pgfmathsetlengthmacro\backwardbendY{\bendleftY}% \pgfmathsetmacro\backwardbendTYPE{-1}% }{% {\bendrightX}{<}{\bendleftX} \pgfmathsetlengthmacro\forwardbendX{\bendleftX}% \pgfmathsetmacro\forwardbendTYPE{-1}% \pgfmathsetlengthmacro\backwardbendX{\bendrightX}% \pgfmathsetlengthmacro\backwardbendY{\bendrightY}% \pgfmathsetmacro\backwardbendTYPE{1} }% }{% face backward \ifdimcomp{\bendrightX}{<}{\bendleftX}{% \pgfmathsetlengthmacro\backwardbendX{\bendrightX}% \pgfmathsetmacro\backwardbendTYPE{-1}% \pgfmathsetlengthmacro\forwardbendX{\bendleftX}% \pgfmathsetlengthmacro\forwardbendY{\bendleftY}% \pgfmathsetmacro\forwardbendTYPE{1}% }{% {\bendrightX}{>}{\bendleftX} \pgfmathsetlengthmacro\backwardbendX{\bendleftX}% \pgfmathsetmacro\backwardbendTYPE{1}% \pgfmathsetlengthmacro\forwardbendX{\bendrightX}% \pgfmathsetlengthmacro\forwardbendY{\bendrightY}% \pgfmathsetmacro\forwardbendTYPE{-1}% }% }% }{% NOT double bend \settoggle{bend}{true}% \ifdefstring{\face}{forward}{% \pgfmathsetlengthmacro\forwardbendX{\bendleftX}% \pgfmathsetlengthmacro\forwardbendY{\bendleftY}% \pgfmathsetlengthmacro\bendlength{\objectlength + \bendleftX}% \pgfmathsetmacro\forwardbendTYPE{-1}% }{% face backward \pgfmathsetlengthmacro\backwardbendX{\bendleftX}% \pgfmathsetlengthmacro\backwardbendY{\bendleftY}% \pgfmathsetlengthmacro\bendlength{\objectlength - \bendleftX}% \pgfmathsetmacro\backwardbendTYPE{-1}% }% END \ifdefstring{\face}{forward} }% }% %% %% calculation of vehicle coordinates %% %% backward bend forward bend %% (ts-b-b1) (ts-b-f1) %% (ts-v-4)•_______•_______•_______•(ts-v-1) %% / \ %% backward (ts-v-r)• label•(ts-v-l) •(ts-v-f) forward %% \_______ _______ _______/ %% (ts-v-3)• • • •(ts-v-2) %% (ts-b-b2) (ts-b-f2) %% \iftoggle{is_parked}{% vehicle parked \coordinate (ts-v-1) at ($ 0.5*(\objectlength,0) + (0, 0.3)$);% \coordinate (ts-v-2) at ($ 0.5*(\objectlength,0) + (0,-0.3)$);% \coordinate (ts-v-3) at ($-0.5*(\objectlength,0) + (0,-0.3)$);% \coordinate (ts-v-4) at ($-0.5*(\objectlength,0) + (0, 0.3)$);% \coordinate (ts-v-f) at ($ 0.5*(\objectlength,0) + (0, 0 )$);% \coordinate (ts-v-r) at ($-0.5*(\objectlength,0) + (0, 0 )$);% \iftoggle{bend}{% currently not supported for parked vehicles % \coordinate (ts-b-f1) at (ts-v-1);% % \coordinate (ts-b-f2) at (ts-v-2);% % \coordinate (ts-b-b1) at (ts-v-4);% % \coordinate (ts-b-b2) at (ts-v-3);% }{% NOT bend \coordinate (ts-b-f1) at (ts-v-1);% \coordinate (ts-b-f2) at (ts-v-2);% \coordinate (ts-b-b1) at (ts-v-4);% \coordinate (ts-b-b2) at (ts-v-3);% }% \ifdefstring{\labelcoord}{(none)}{% \coordinate (ts-v-l) at (0,0);% }{% initialize if NOT default \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% \coordinate (ts-v-l) at (\labelcoordX,\labelcoordY);% }% }{% vehicle NOT parked \ifdefstring{\face}{forward}{% face \pgfmathsetmacro{\facefactor}{1}% \coordinate (ts-v-1) at (-0.3, 0.3);% \coordinate (ts-v-2) at (-0.3,-0.3);% \coordinate (ts-v-f) at (0,0);% \iftoggle{double_bend}{% \coordinate (ts-v-3) at ($(-\objectlength,-0.3) + (0,\backwardbendY)$);% \coordinate (ts-v-4) at ($(-\objectlength, 0.3) + (0,\backwardbendY)$);% \coordinate (ts-v-r) at ($(-\objectlength, 0 ) + (0,\backwardbendY)$);% \coordinate (ts-b-f1) at ($( \forwardbendX, 0.3) + \forwardbendTYPE*(-0.1,0)$);% \coordinate (ts-b-f2) at ($( \forwardbendX,-0.3) + \forwardbendTYPE*( 0.1,0)$);% \coordinate (ts-b-b1) at ($(\backwardbendX, 0.3) + \backwardbendTYPE*( 0.1,0) + (0,\backwardbendY)$);% \coordinate (ts-b-b2) at ($(\backwardbendX,-0.3) + \backwardbendTYPE*(-0.1,0) + (0,\backwardbendY)$);% }{% NOT double bend \iftoggle{bend}{% \coordinate (ts-b-f1) at ($( \forwardbendX, 0.3) + \forwardbendTYPE*(-0.1,0)$);% \coordinate (ts-b-f2) at ($( \forwardbendX,-0.3) + \forwardbendTYPE*( 0.1,0)$);% \coordinate (ts-b-b1) at (ts-b-f1);% \coordinate (ts-b-b2) at (ts-b-f2);% \coordinate (ts-v-3) at ($(-\objectlength,-0.2) + \forwardbendTYPE*(0,-\bendlength) + \forwardbendTYPE*( 0.2,0)$);% \coordinate (ts-v-4) at ($(-\objectlength, 0.2) + \forwardbendTYPE*(0,-\bendlength) + \forwardbendTYPE*(-0.2,0)$);% \coordinate (ts-v-r) at ($(-\objectlength, 0 ) + \forwardbendTYPE*(0,-\bendlength)$);% }{% NOT bend \coordinate (ts-b-f1) at (ts-v-1);% \coordinate (ts-b-f2) at (ts-v-2);% \coordinate (ts-v-3) at ($(-\objectlength,0) + (0,-0.3)$);% \coordinate (ts-v-4) at ($(-\objectlength,0) + (0, 0.3)$);% \coordinate (ts-b-b1) at (ts-v-4);% \coordinate (ts-b-b2) at (ts-v-3);% \coordinate (ts-v-r) at ($(-\objectlength,0)$);% }% }% }{% \ifdefstring{\face}{backward}{% face \pgfmathsetmacro{\facefactor}{-1}% \coordinate (ts-v-3) at (0.3,-0.3);% \coordinate (ts-v-4) at (0.3, 0.3);% \coordinate (ts-v-r) at (0,0);% \iftoggle{double_bend}{% \coordinate (ts-v-1) at ($( \objectlength, 0.3) + (0,\forwardbendY)$);% \coordinate (ts-v-2) at ($( \objectlength,-0.3) + (0,\forwardbendY)$);% \coordinate (ts-v-f) at ($( \objectlength, 0 ) + (0,\forwardbendY)$);% \coordinate (ts-b-f1) at ($( \forwardbendX, 0.3) + \forwardbendTYPE*( 0.1,0) + (0,\forwardbendY)$);% \coordinate (ts-b-f2) at ($( \forwardbendX,-0.3) + \forwardbendTYPE*(-0.1,0) + (0,\forwardbendY)$);% \coordinate (ts-b-b1) at ($(\backwardbendX, 0.3) + \backwardbendTYPE*(-0.1,0)$);% \coordinate (ts-b-b2) at ($(\backwardbendX,-0.3) + \backwardbendTYPE*( 0.1,0)$);% }{% NOT double bend \iftoggle{bend}{% \coordinate (ts-b-b1) at ($( \backwardbendX, 0.3) + \backwardbendTYPE*( 0.1,0)$);% \coordinate (ts-b-b2) at ($( \backwardbendX,-0.3) + \backwardbendTYPE*(-0.1,0)$);% \coordinate (ts-b-f1) at (ts-b-b1);% \coordinate (ts-b-f2) at (ts-b-b2);% \coordinate (ts-v-1) at ($( \objectlength, 0.2) + \backwardbendTYPE*(0,-\bendlength) + \backwardbendTYPE*( 0.2,0)$);% \coordinate (ts-v-2) at ($( \objectlength,-0.2) + \backwardbendTYPE*(0,-\bendlength) + \backwardbendTYPE*(-0.2,0)$);% \coordinate (ts-v-f) at ($( \objectlength, 0 ) + \backwardbendTYPE*(0,-\bendlength)$);% }{% NOT bend \coordinate (ts-b-b1) at (ts-v-4);% \coordinate (ts-b-b2) at (ts-v-3);% \coordinate (ts-v-1) at ($(\objectlength,0) + (0, 0.3)$);% \coordinate (ts-v-2) at ($(\objectlength,0) + (0,-0.3)$);% \coordinate (ts-b-f1) at (ts-v-1);% \coordinate (ts-b-f2) at (ts-v-2);% \coordinate (ts-v-f) at ($(\objectlength,0)$);% }% }% }{% error message \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/face}{“forward“ OR “backward“ as key required}}% }% }% end \ifdefstring{\face} %% label coord for NOT parked \ifdefstring{\labelcoord}{(none)}{% \coordinate (ts-v-l) at ($\facefactor*-0.5*(\objectlength,0) + (0,0)$);% }{% initialize if NOT default \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% \coordinate (ts-v-l) at (\labelcoordX,\labelcoordY);% }% }% % %% vehicle style \iftoggle{in_train_mode}{% train mode \iftoggle{train_is_a_ghost}{% ghost train \tikzset{every path/.style={draw=\foreground, line width=0.8pt, dashed}};% \coordinate (ts-v-l) at ($(ts-v-l) + (0,0.16)$);% }{% normal train \tikzset{every path/.style={draw=\foreground, line width=1pt, fill=\background}};% }% }{% shunting mode \tikzset{every path/.style={draw=\foreground, double, double distance=0.5mm, line width=0.3pt, fill=\background}};% }% % %% arrow shapes \iftoggle{is_shunting}{% arrow for shunting \iftoggle{in_shunting_mode}{% shunting mode \fill[draw=none,fill=\background] ($\facefactor*(-0.3, 0.3)$) --% ($\facefactor*(-0.1, 0.3)$) --% ($\facefactor*( 0.2, 0 )$) --% ($\facefactor*(-0.1,-0.3)$) --% ($\facefactor*(-0.3,-0.3)$) -- cycle;% \background fill \path[line cap=rect,fill=none] ($\facefactor*(-0.1, 0.3)$) --% ($\facefactor*( 0.2, 0 )$) --% ($\facefactor*(-0.1,-0.3)$);% arrow shape }{% train mode \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/vehicle/movement}{movement can only be combined with shunting}}% }% }{}% end \iftoggle{shunting_movement} \ifdefstring{\trainrun}{none}{}{% arrow for train \iftoggle{in_train_mode}{% train mode \ifdefstring{\trainrun}{slow}{% \fill[draw=none,fill=\background] ($\facefactor*(-0.3, 0.3)$) --% ($\facefactor*(-0.1, 0.3)$) --% ($\facefactor*( 0.2, 0 )$) --% ($\facefactor*(-0.1,-0.3)$) --% ($\facefactor*(-0.3,-0.3)$) -- cycle;% \background fill \path[fill=none] ($\facefactor*(-0.15, 0.3)$) --% ($\facefactor*(-0.1 , 0.3)$) --% ($\facefactor*( 0.2 , 0 )$) --% ($\facefactor*(-0.1 ,-0.3)$) --% ($\facefactor*(-0.15,-0.3)$);% arrow shape }{% \ifdefstring{\trainrun}{normal}{% \fill[draw=none,fill=\background] ($\facefactor*(-0.3, 0.3)$) --% ($\facefactor*( 0.1, 0.3)$) --% ($\facefactor*( 0.4, 0 )$) --% ($\facefactor*( 0.1,-0.3)$) --% ($\facefactor*(-0.3,-0.3)$) -- cycle;% \background fill \path[fill=none] ($\facefactor*(-0.15, 0.3)$) --% ($\facefactor*(-0.1 , 0.3)$) --% ($\facefactor*( 0.2 , 0 )$) --% ($\facefactor*(-0.1 ,-0.3)$) --% ($\facefactor*(-0.15,-0.3)$);% arrow shape part 1 \path[fill=none] ($\facefactor*( 0.05, 0.3)$) --% ($\facefactor*( 0.1 , 0.3)$) --% ($\facefactor*( 0.4 , 0 )$) --% ($\facefactor*( 0.1 ,-0.3)$) --% ($\facefactor*( 0.05,-0.3)$);% arrow shape part 2 % }{% \ifdefstring{\trainrun}{fast}{% \fill[draw=none,fill=\background] ($\facefactor*(-0.3, 0.3)$) --% ($\facefactor*( 0.3, 0.3)$) --% ($\facefactor*( 0.6, 0 )$) --% ($\facefactor*( 0.3,-0.3)$) --% ($\facefactor*(-0.3,-0.3)$) -- cycle;% \background fill \path[fill=none] ($\facefactor*(-0.15, 0.3)$) --% ($\facefactor*(-0.1 , 0.3)$) --% ($\facefactor*( 0.2 , 0 )$) --% ($\facefactor*(-0.1 ,-0.3)$) --% ($\facefactor*(-0.15,-0.3)$);% arrow shape part 1 \path[fill=none] ($\facefactor*( 0.05, 0.3)$) --% ($\facefactor*( 0.1 , 0.3)$) --% ($\facefactor*( 0.4 , 0 )$) --% ($\facefactor*( 0.1 ,-0.3)$) --% ($\facefactor*( 0.05,-0.3)$);% arrow shape part 2 \path[fill=none] ($\facefactor*( 0.25, 0.3)$) --% ($\facefactor*( 0.3 , 0.3)$) --% ($\facefactor*( 0.6 , 0 )$) --% ($\facefactor*( 0.3 ,-0.3)$) --% ($\facefactor*( 0.25,-0.3)$);% arrow shape part 3 % }{%error message \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/vehicles/run}{“normal“, “slow“, “fast“ OR “none“ as key required}}% }% }% }% }{% shunting mode \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/vehicle/run}{run can only be combined with train}}% }% end \iftoggle{in_train_mode} }% end \ifdefstring{\trainrun}{none} % end arrow shapes % %% vehicle shape \path (ts-v-1) -- (ts-v-f) -- (ts-v-2) -- (ts-b-f2) -- (ts-b-b2) -- (ts-v-3) -- (ts-v-r) -- (ts-v-4) -- (ts-b-b1) -- (ts-b-f1) -- cycle;% vehicle shape % %% operated \iftoggle{is_parked}{}{% vehicle NOT parked \ifdefstring{\operationmode}{manual}{% \path[draw=none, fill=\foreground] ($\facefactor*(-0.4,0)$) circle (0.15);% dot \coordinate (ts-v-l) at ($(ts-v-l) + \facefactor*(-0.25,0)$);% }{ \ifdefstring{\operationmode}{automatic}{% \path[draw=none, fill=\foreground] ($\facefactor*(-0.15,0)$) -- ++($\facefactor*(-0.15,0) +(0,0.15)$) -- ++(0,-0.3) -- cycle;% triangle \coordinate (ts-v-l) at ($(ts-v-l) + \facefactor*(-0.15,0)$);% }{% \ifdefstring{\operationmode}{undefined}{}{% \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/operation}{“manual“, “automatic“ OR “undefined“ as key required}}% }% }% end automatically_operated }% end manually_operated }% % %% label \ifdefstring{\labelcontent}{}{}{% label NOT empty \ifdefstring{\labelalign}{center}{% label align default \def\labelanchor{center} }{% label align NOT default \ifdefstring{\labelalign}{left}{% label align left \def\labelanchor{east} }{% \ifdefstring{\labelalign}{right}{% label align left \def\labelanchor{west} }{% NOT center, left, or right \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/label align}{“center“, “left“ OR “right“ as key required}}% }% \ifdefstring{\labelalign}{right} }% \ifdefstring{\labelalign}{left} }% \ifdefstring{\labelalign}{center} \node[text=\foreground,anchor=\labelanchor,align=\labelalign] at (ts-v-l) {\footnotesize\emph{\labelcontent}};% label }% }},% END pics/vehicles/.style args={#1/#2/#3} % symbology entry symbology_parked_vehicles/.pic = {% \secondarytrack (0,0) -- (6,0);% \parkedvehicles[] at (3,0) label ();% },% % symbology entry symbology_train_shunt_mode/.pic = {% \maintrack (0,0) -- (6,0);% \shunting[forward] at (5,0) label ();% },% % symbology entry symbology_train_shunting/.pic = {% \maintrack (0,0) -- (6,0);% \shunting[movement,forward] at (5,0) label ();% },% % symbology entry symbology_train/.pic = {% \maintrack (0,0) -- (6,0);% \train[forward] at (5,0) label ();% },% % symbology entry symbology_train_moving_slow/.pic = {% \maintrack (0,0) -- (6,0);% \train[run=slow,forward] at (5,0) label ();% },% % symbology entry symbology_train_moving/.pic = {% \maintrack (0,0) -- (6,0);% \train[run=normal,forward] at (5,0) label ();% },% % symbology entry symbology_train_moving_fast/.pic = {% \maintrack (0,0) -- (6,0);% \train[run=fast,forward] at (5,0) label ();% },% % symbology entry symbology_train_ghost/.pic = {% \maintrack (0,0) -- (6,0);% \train[ghost,forward] at (5,0) label ();% },% % symbology entry symbology_train_drive_automatic/.pic = {% \maintrack (0,0) -- (6,0);% \train[operation=automatic,forward] at (5,0) label ();% },% % symbology entry symbology_train_drive_human/.pic = {% \maintrack (0,0) -- (6,0);% \train[operation=manual,forward] at (5,0) label ();% },% }% % %%%%%%%%%%%%%%% \endinput% %