diff options
author | Karl Berry <karl@freefriends.org> | 2022-04-06 20:07:08 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-04-06 20:07:08 +0000 |
commit | 414f745665e727b2ccca08603445e0e99cbffe7e (patch) | |
tree | ea5a602a738c0ecfceae9824833b50b0d2f0c7bb /Master/texmf-dist/tex/latex/tikz-trackschematic | |
parent | 8e29dfd5c7ae138337a1707b1c2afab2423f4b2f (diff) |
tikz-trackschematic (6apr22)
git-svn-id: svn://tug.org/texlive/trunk@62966 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/tikz-trackschematic')
9 files changed, 413 insertions, 370 deletions
diff --git a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikz-trackschematic.sty b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikz-trackschematic.sty index c0f38a1b90e..77822d409f6 100644 --- a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikz-trackschematic.sty +++ b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikz-trackschematic.sty @@ -5,7 +5,7 @@ % 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. % \NeedsTeXFormat{LaTeX2e}% -\ProvidesPackage{tikz-trackschematic}[2022-02-15 v0.6.3 tikz-trackschematic]% +\ProvidesPackage{tikz-trackschematic}[2022-04-02 v0.7.0 tikz-trackschematic]% %%%%%%%%%%%%%%% % Package options %%%%%%%%%%%%%%% @@ -28,8 +28,9 @@ \usetikzlibrary{trackschematic-dev.symbology}% \usetikzlibrary{trackschematic-dev}% }{% - \PackageWarning{tikz-trackschematic}{development mode not available}{execute the dev-install.sh script provided by the package repository}% - \PackageWarning{tikz-trackschematic}{development mode not available}{continuing in normal mode}% + \PackageWarning{tikz-trackschematic}{development mode not available}% + \PackageWarning{tikz-trackschematic}{execute the script './build.sh --install-dev' provided by the package repository}% + \PackageWarning{tikz-trackschematic}{continuing in normal mode}% \usetikzlibrary{trackschematic.topology}% \usetikzlibrary{trackschematic.trafficcontrol}% \usetikzlibrary{trackschematic.vehicles}% diff --git a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.code.tex b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.code.tex index d7b2a632182..408695925b0 100644 --- a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.code.tex +++ b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.code.tex @@ -45,8 +45,7 @@ % \ifdefstring{\labelcontent}{}{}{% label NOT empty % \coordinate (label-coord) at (coord);% % \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default -% \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% -% \coordinate (label-coord) at ($(label-coord)+(\labelcoordX,\labelcoordY)$);% +% \path let \p1=\labelcoord in coordinate (label-coord) at ($(label-coord)+(\x1,\y1)$);% % }% % \node at (label-coord) {\footnotesize \labelcontent};% % }% diff --git a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.constructions.code.tex b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.constructions.code.tex index 8f6cc0b5358..c0542061228 100644 --- a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.constructions.code.tex +++ b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.constructions.code.tex @@ -1,6 +1,3 @@ -%!TEX TS-program = pdflatexmk -%!TEX root = ../test/test.tex -% %% symbol library for TikZ track schematics % % Copyright (c) 2018 - 2022, Martin Scheidt (ISC license) 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 index 8269bea35ef..d5565c56edd 100644 --- a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.electrics.code.tex +++ b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.electrics.code.tex @@ -1,6 +1,3 @@ -%!TEX TS-program = pdflatexmk -%!TEX root = ../test/test.tex -% %% symbol library for TikZ track schematics % % Copyright (c) 2018 - 2022, Martin Scheidt (ISC license) @@ -15,13 +12,6 @@ \RequirePackage{tikz,etoolbox}% \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 %%%%%%%%%%%%%%% @@ -126,8 +116,7 @@ \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)$);% + \path let \p1=\labelcoord in coordinate (label-coord) at ($(label-coord)+(\x1,\y1)$);% }% \node[\align] at (label-coord) {\footnotesize \labelcontent};% }% @@ -201,8 +190,7 @@ \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)$);% + \path let \p1=\labelcoord in coordinate (label-coord) at ($(label-coord)+(\x1,\y1)$);% }% \node[\align] at (label-coord) {\footnotesize \labelcontent};% }% @@ -277,8 +265,7 @@ \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)$);% + \path let \p1=\labelcoord in coordinate (label-coord) at ($(label-coord)+(\x1,\y1)$);% }% \node[\align] at (label-coord) {\footnotesize \labelcontent};% }% @@ -352,8 +339,7 @@ \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)$);% + \path let \p1=\labelcoord in coordinate (label-coord) at ($(label-coord)+(\x1,\y1)$);% }% \node[\align] at (label-coord) {\footnotesize \labelcontent};% }% @@ -428,8 +414,7 @@ \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)$);% + \path let \p1=\labelcoord in coordinate (label-coord) at ($(label-coord)+(\x1,\y1)$);% }% \node[\align] at (label-coord) {\footnotesize \labelcontent};% }% @@ -504,8 +489,7 @@ \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)$);% + \path let \p1=\labelcoord in coordinate (label-coord) at ($(label-coord)+(\x1,\y1)$);% }% \node[\align] at (label-coord) {\footnotesize \labelcontent};% }% @@ -588,8 +572,7 @@ \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)$);% + \path let \p1=\labelcoord in coordinate (label-coord) at ($(label-coord)+(\x1,\y1)$);% }% \node[\align] at (label-coord) {\footnotesize \labelcontent};% }% diff --git a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.measures.code.tex b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.measures.code.tex index c551ed0142e..4a80d5e8fe1 100644 --- a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.measures.code.tex +++ b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.measures.code.tex @@ -1,6 +1,3 @@ -%!TEX TS-program = pdflatexmk -%!TEX root = ../test/test.tex -% %% symbol library for TikZ track schematics % % Copyright (c) 2018 - 2022, Martin Scheidt (ISC license) @@ -15,13 +12,6 @@ \RequirePackage{tikz,etoolbox}% \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 %%%%%%%%%%%%%%% @@ -210,10 +200,6 @@ \def\labelcommand{#2}% beware of leading and tailing spaces! \def\labelcontent{#3}% % - \gettikzxy{\basecoord}{\basecoordX}{\basecoordY}% - \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default - \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% - } %% orientation setup \ifdefstring{\orientation}{left}{% orientation \def\align{right}% @@ -230,14 +216,14 @@ %% (0,0.75) (ts-hm-b1) (ts-hm-b2) %% (0,0)• • ------- • --------- • ----- •(ts-hm-l) label %% - \coordinate (ts-hm-l) at (0,\basecoordY);% + \path let \p1=\basecoord in coordinate (ts-hm-l) at (0,\y1);% \ifdefstring{\labelcoord}{(none)}{% \coordinate (ts-hm-b1) at (ts-hm-l);% \coordinate (ts-hm-b2) at (ts-hm-l);% }{% initialize if NOT default \coordinate (ts-hm-b1) at ($(ts-hm-l) + (0,0.5)$);% - \coordinate (ts-hm-b2) at ($(ts-hm-l) + (\labelcoordX,0.25)$);% - \coordinate (ts-hm-l) at ($(ts-hm-l) + (\labelcoordX,\labelcoordY)$);% + \path let \p1=\labelcoord in coordinate (ts-hm-b2) at ($(ts-hm-l) + (\x1,0.25)$);% + \path let \p1=\labelcoord in coordinate (ts-hm-l) at ($(ts-hm-l) + (\x1,\y1)$);% }% %% symbol \path[draw=\hectometercolor,dashed,shorten <=0.75cm]% diff --git a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.symbology.code.tex b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.symbology.code.tex index fa250629b94..7d70794f3f8 100644 --- a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.symbology.code.tex +++ b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.symbology.code.tex @@ -1,6 +1,3 @@ -%!TEX TS-program = pdflatexmk -%!TEX root = ../test/test.tex -% %% symbol library for TikZ track schematics % % Copyright (c) 2018 - 2022, Martin Scheidt (ISC license) @@ -97,10 +94,9 @@ \tsSymbol{clearing_point} & clearing point \\% \tsSymbol{block_clearing_point} & block clearing point \\% \tsSymbol{route_clearing_point} & route clearing point \\% - \tsSymbol{transmitter} & transmitter \\% - \tsSymbol{transmitter_forward} & transmitter effective forward \\% - \tsSymbol{transmitter_bidirectional}& transmitter bidirectional \\% - \tsSymbol{loop_transmitter} & loop transmitter \\% + \tsSymbol{balise_group} & unenumerated balise group (switchable) \\% + \tsSymbol{balise_individual} & individual balises (switchable) \\% + \tsSymbol{trackloop} & track loop transmitter \\% \tsSymbol{route} & route \\% \tsSymbol{direction_control} & direction control \\% \tsSymbol{platform} & platform \\% diff --git a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.topology.code.tex b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.topology.code.tex index 441964fb3b0..4d98af5fb19 100644 --- a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.topology.code.tex +++ b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.topology.code.tex @@ -1,6 +1,3 @@ -%!TEX TS-program = pdflatexmk -%!TEX root = ../test/test.tex -% %% symbol library for TikZ track schematics % % Copyright (c) 2018 - 2022, Martin Scheidt (ISC license) @@ -15,13 +12,6 @@ \RequirePackage{tikz,etoolbox}% \usetikzlibrary{calc,patterns}% % -% 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 %%%%%%%%%%%%%%% @@ -81,7 +71,7 @@ \newcommand\secondarytrack{}% just for safety \def\secondarytrack{\path[draw=\foreground,SecondaryTrack]}% \secondarytrack (coord1) -- (coord2); \newcommand\sidetrack{}% just for safety -\def\sidetrack{\path[draw,SecondaryTrack]}% alias for \secondarytrack +\def\sidetrack{\path[draw=\foreground,SecondaryTrack]}% alias for \secondarytrack % %% symbol definition \tikzset{% @@ -123,8 +113,7 @@ \coordinate (ts-tl-l) at (0,0);% \ifdefstring{\labelcoord}{(none)}{% default coord }{% initialize if NOT default - \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% - \coordinate (ts-tl-l) at ($(ts-tl-l)+(\labelcoordX,\labelcoordY)$);% + \path let \p1=\labelcoord in coordinate (ts-tl-l) at ($(ts-tl-l)+(\x1,\y1)$);% }% \node at (ts-tl-l) {\labelcontent};% }% @@ -301,8 +290,7 @@ \tikzset{every node/.style={text=\foreground}};% \coordinate (ts-y-l) at ($\branchfactor*(0,-8pt)$);% \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default - \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% - \coordinate (ts-y-l) at ($(ts-y-l)+(\labelcoordX,\labelcoordY)$);% + \path let \p1=\labelcoord in coordinate (ts-y-l) at ($(ts-y-l)+(\x1,\y1)$);% }% \node at (ts-y-l) {\footnotesize \labelcontent};% }% @@ -524,16 +512,14 @@ \ifdefstring{\labelcontentleft}{}{}{% label NOT empty \coordinate (ts-sy-l1) at ($(2pt,0) + \branchfactor*(0, 10pt)$);% \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default - \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% - \coordinate (ts-sy-l1) at ($(ts-sy-l1)+(\labelcoordX,\labelcoordY)$);% + \path let \p1=\labelcoord in coordinate (ts-sy-l1) at ($(ts-sy-l1)+(\x1,\y1)$);% }% \node[left] at (ts-sy-l1) {\footnotesize \labelcontentleft};% }% \ifdefstring{\labelcontentright}{}{}{% label NOT empty \coordinate (ts-sy-l2) at ($(2pt,0) + \branchfactor*(0,-10pt)$);% \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default - \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% - \coordinate (ts-sy-l2) at ($(ts-sy-l2)-(\labelcoordX,\labelcoordY)$);% + \path let \p1=\labelcoord in coordinate (ts-sy-l2) at ($(ts-sy-l2)+(\x1,\y1)$);% }% \node[right] at (ts-sy-l2) {\footnotesize \labelcontentright};% }% @@ -585,8 +571,7 @@ \tikzset{every node/.style={text=\foreground}};% \coordinate (ts-x-l) at ($(2pt,0) + \branchfactor*(0,-9pt)$);% \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default - \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% - \coordinate (ts-x-l) at ($(ts-x-l)+(\labelcoordX,\labelcoordY)$);% + \path let \p1=\labelcoord in coordinate (ts-x-l) at ($(ts-x-l)+(\x1,\y1)$);% }% \node[right] at (ts-x-l) {\footnotesize \labelcontent};% }% @@ -660,12 +645,11 @@ %% label \ifdefstring{\labelcontent}{}{}{% label NOT empty \tikzset{every node/.style={text=\foreground}};% - \coordinate (ts-dr-l) at ($\branchfactor*(0,-10pt)$);% + \coordinate (ts-dr-l) at ($\branchfactor*(0,-0.3)$);% \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default - \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% - \coordinate (ts-dr-l) at ($(ts-dr-l)+(\labelcoordX,\labelcoordY)$);% + \path let \p1=\labelcoord in coordinate (ts-dr-l) at ($(ts-dr-l)+(\x1,\y1)$);% }% - \node[right] at (ts-dr-l) {\footnotesize \labelcontent};% + \node at (ts-dr-l) {\footnotesize \labelcontent};% }% % }},% END pics/derailer/.style args={#1/#2/#3} @@ -678,4 +662,4 @@ % %%%%%%%%%%%%%%% \endinput% -%
\ No newline at end of file +% diff --git a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.trafficcontrol.code.tex b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.trafficcontrol.code.tex index 97978f5b072..253c5e21a97 100644 --- a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.trafficcontrol.code.tex +++ b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.trafficcontrol.code.tex @@ -1,6 +1,3 @@ -%!TEX TS-program = pdflatexmk -%!TEX root = ../test/test.tex -% %% symbol library for TikZ track schematics % % Copyright (c) 2018 - 2022, Martin Scheidt (ISC license) @@ -15,13 +12,6 @@ \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}% -}% -% %%%%%%%%%%%%%%% % tikz keys for multiple use %%%%%%%%%%%%%%% @@ -208,8 +198,7 @@ \ifdefstring{\labelcontent}{}{}{% label NOT empty \coordinate (ts-s-l) at ($\trafficfactor*\facefactor*(0,-0.4)$);% \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default - \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% - \coordinate (ts-s-l) at ($(ts-s-l)+(\labelcoordX,\labelcoordY)$);% + \path let \p1=\labelcoord in coordinate (ts-s-l) at ($(ts-s-l)+(\x1,\y1)$);% }% \node[\align] at (ts-s-l) {\footnotesize \labelcontent};% }% @@ -414,8 +403,7 @@ \tikzset{every node/.style={font=\sffamily,text=\foreground}};% \coordinate (ts-cp-l) at ($\trafficfactor*\facefactor*(0,0.25)$);% \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default - \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% - \coordinate (ts-cp-l) at ($(ts-cp-l)+(\labelcoordX,\labelcoordY)$);% + \path let \p1=\labelcoord in coordinate (ts-cp-l) at ($(ts-cp-l)+(\x1,\y1)$);% }% \node at (ts-cp-l) {\footnotesize \labelcontent};% }% @@ -438,25 +426,17 @@ }% % %%%%%%%%%%%%%%% -% symbol transmitter +% symbol trackloop %%%%%%%%%%%%%%% % command -\newcommand\transmitter{}% just for safety -\def\transmitter[#1]#2(#3)#4(#5){% \transmitter[options] at (coord) label (name); - \pic[#1] at (#3) {transmitter={#2/#4/#5}}% symbol -}% -\newcommand\balise{}% just for safety -\def\balise[#1]#2(#3)#4(#5){% \balise[options] at (coord) label (name); - \pic[type=balise,#1] at (#3) {transmitter={#2/#4/#5}}% symbol -}% \newcommand\trackloop{}% just for safety \def\trackloop[#1]#2(#3)#4(#5){% \trackloop[options] at (coord) label (name); - \pic[type=loop,#1] at (#3) {transmitter={#2/#4/#5}}% symbol + \pic[#1] at (#3) {trackloop={#2/#4/#5}}% symbol }% % symbol definition \tikzset{% - pics/transmitter/.default=,% - pics/transmitter/.style args={#1/#2/#3}{code={% + pics/trackloop/.default=,% + pics/trackloop/.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! @@ -473,62 +453,212 @@ }% end \ifdefstring{\trafficpractice} %% marker \tikzset{every path/.style={draw=\foreground}};% - \ifdefstring{\type}{balise}{% type balise - \path[line width=1pt,fill=\background] ($(-0.25,0)$) rectangle% - ($\trafficfactor*(0,-0.25) + (0.25,0)$);% balise marker - \ifdefstring{\face}{forward}{% face - \path ($\trafficfactor*(0,-0.05) + (0.1,0)$) -- ($\trafficfactor*(0,-0.125) + (0.2,0)$) --% - ($\trafficfactor*(0,-0.2) + (0.1,0)$) -- cycle;% arrow forward - }{% - \ifdefstring{\face}{backward}{% face - \path ($\trafficfactor*(0,-0.05) + (-0.1,0)$) -- ($\trafficfactor*(0,-0.125) + (-0.2,0)$) --% - ($\trafficfactor*(0,-0.2) + (-0.1,0)$) -- cycle;% arrow backward - }{ - \ifdefstring{\face}{bidirectional}{% face - \path ($\trafficfactor*(0,-0.05) + (0.1,0)$) -- ($\trafficfactor*(0,-0.125) + (0.2,0)$) --% - ($\trafficfactor*(0,-0.2) + (0.1,0)$) -- cycle;% arrow forward - \path ($\trafficfactor*(0,-0.05) + (-0.1,0)$) -- ($\trafficfactor*(0,-0.125) + (-0.2,0)$) --% - ($\trafficfactor*(0,-0.2) + (-0.1,0)$) -- cycle;% arrow backward - }{}% - }% - }% end \ifdefstring{\face} - }{% - \ifdefstring{\type}{loop}{% type loop - \path[line width=1pt] ($\trafficfactor*(0,-0.175)$) -- ++(-0.0625,-0.0625) -- ++(-0.2,0) -- ++(-0.125,0.125) -- ++(-0.1,0) -- ++(0,-0.125) -- ++(0.1,0) -- ++(0.125,0.125) -- ++(0.2,0) -- ++(0.125,-0.125) -- ++(0.2,0) -- ++(0.125,0.125) -- ++(0.1,0) -- ++(0,-0.125) -- ++(-0.1,0) -- ++(-0.125,0.125) -- ++(-0.2,0) -- cycle;% loop marker - }{% error message - \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/trafficcontrol/transmitter/type}{“balise“ OR “loop“ as key required}}% - }% - }% end \ifdefstring{\type} + \path[line width=1pt] ($\trafficfactor*(0,-0.175)$) -- ++(-0.0625,-0.0625) -- ++(-0.2,0) -- ++(-0.125,0.125) -- ++(-0.1,0) -- ++(0,-0.125) -- ++(0.1,0) -- ++(0.125,0.125) -- ++(0.2,0) -- ++(0.125,-0.125) -- ++(0.2,0) -- ++(0.125,0.125) -- ++(0.1,0) -- ++(0,-0.125) -- ++(-0.1,0) -- ++(-0.125,0.125) -- ++(-0.2,0) -- cycle;% loop marker %% label \ifdefstring{\labelcontent}{}{}{% label NOT empty \tikzset{every node/.style={font=\sffamily,text=\foreground}};% \coordinate (ts-tm-l) at ($\trafficfactor*(0,0.25)$);% \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default - \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% - \coordinate (ts-tm-l) at ($(ts-tm-l) + (\labelcoordX,\labelcoordY)$);% + \path let \p1=\labelcoord in coordinate (ts-tm-l) at ($(ts-tm-l)+(\x1,\y1)$);% }% \node at (ts-tm-l) {\footnotesize \labelcontent};% }% }},% end pics/transmitter/.style args={#1/#2/#3} % symbology entry - symbology_transmitter/.pic = {% - \maintrack (0,0) -- (6,0);% - \balise[] at (3,0) label ();% - },% - % symbology entry - symbology_transmitter_forward/.pic = {% + symbology_trackloop/.pic = {% \maintrack (0,0) -- (6,0);% - \balise[forward] at (3,0) label ();% + \trackloop[forward] at (3,0) label ();% },% +}% +% +%%%%%%%%%%%%%%% +% symbol balise +%%%%%%%%%%%%%%% +% command +\newcommand\balise{}% just for safety +\def\balise[#1]#2(#3)#4(#5){% \balise[options] at (coord) label (name); + \pic[#1] at (#3) {balise={#2/#4/#5}}% symbol +}% +\pgfkeys{% + /tikz/trackschematic/trafficcontrol/.is family,% + /tikz/trackschematic/trafficcontrol/.cd,% + %% route signal type + switched/.value forbidden,% + switched/.code={\settoggle{switched}{true}},% + /tikz/switched/.forward to=/tikz/trackschematic/trafficcontrol/switched,% + %% balises along the direction + along/.store in=\along,% array of integer + along=none,% DEFAULT + /tikz/along/.forward to=/tikz/trackschematic/trafficcontrol/along,% + %% balises oppose the direction + oppose/.store in=\oppose,% array of integer + oppose=none,% DEFAULT + /tikz/oppose/.forward to=/tikz/trackschematic/trafficcontrol/oppose,% + %% balises along the direction + along switched/.store in=\alongswitched,% array of integer + along switched=none,% DEFAULT + /tikz/along switched/.forward to=/tikz/trackschematic/trafficcontrol/along switched,% + %% balises oppose the direction + oppose switched/.store in=\opposeswitched,% array of integer + oppose switched=none,% DEFAULT + /tikz/oppose switched/.forward to=/tikz/trackschematic/trafficcontrol/oppose switched,% + %% display index number + index number/.value forbidden,% + index number/.code={\settoggle{index_number}{true}},% + /tikz/index/.forward to=/tikz/trackschematic/trafficcontrol/index number,% +}% +% options +\newtoggle{unnumberd}\settoggle{unnumberd}{true}% DEFAULT +\newtoggle{switched}\settoggle{switched}{false}% +\newtoggle{index_number}\settoggle{index_number}{false}% +% symbol definition +\tikzset{% + pics/balise/.default=,% + pics/balise/.style args={#1/#2/#3}{code={% + %% + %%%%%%%[steps]%%%%%% + %% 0. setup settings + %% 1. draw marker + %% 2. draw label + %%%%%%%%%%%%%%%%%%%% + %% 0. settings + \def\coordcommand{#1}% beware of leading and tailing spaces! + \def\labelcommand{#2}% beware of leading and tailing spaces! + \def\labelcontent{#3}% + %% + %% face setup + \ifdefstring{\face}{forward}{% face + \pgfmathsetmacro{\facefactor}{1}% + }{% + \ifdefstring{\face}{backward}{% face + \pgfmathsetmacro{\facefactor}{-1}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/face}{“forward“ OR “backward“ as key required}}% + }% + }% end \ifdefstring{\face} + %% + %% 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} + %% + %% number of balises known? + \ifdefstring{\along}{none}{}{% a number has been set + \settoggle{unnumberd}{false}% + }% + %% number of balises known? + \ifdefstring{\oppose}{none}{}{% a number has been set + \settoggle{unnumberd}{false}% + }% + %% number of balises known? + \ifdefstring{\alongswitched}{none}{}{% a number has been set + \settoggle{unnumberd}{false}% + }% + %% number of balises known? + \ifdefstring{\opposeswitched}{none}{}{% a number has been set + \settoggle{unnumberd}{false}% + }% + %% + %%%%%%%%%%%%%%%%%%%% + %% 1. marker + \tikzset{every path/.style={draw=\foreground,line width=0.75pt,rounded corners=0.2pt}};% + %% + \iftoggle{unnumberd}{% no number has been set + %% marker for undefined balises + \path[fill=\background] ($(-0.3,0)$) rectangle ($\trafficfactor*\facefactor*(0,-0.25) + (0.3,0)$);% balise marker + \iftoggle{switched}{% balises can be switched + \path[fill=\foreground] ($\trafficfactor*\facefactor*(0,-0.075) + (-0.225,0)$) rectangle% + ($\trafficfactor*\facefactor*(0,-0.175) + ( 0.225,0)$);% switch marker + }{}% + }{% a number has been set + %% marker for numbered balises + \ifdefstring{\along}{none}{}{ + \foreach \n in \along{% + \path[fill=\background] ($\n*\facefactor*(0.2,0)$) rectangle% + ($\n*\facefactor*(0.2,0) + (0.2 ,0) + \trafficfactor*\facefactor*(0,-0.25)$);% balise marker + \iftoggle{index_number}{% + \node[text=\foreground] at ($\n*\facefactor*(0.2,0) + (0.1,0) + \trafficfactor*\facefactor*(0,-0.125)$) {\tiny\n};% + }{}% + }% + }% + \ifdefstring{\oppose}{none}{}{ + \foreach \n in \oppose{% + \path[fill=\background] ($\n*\facefactor*(0.2,0)$) rectangle% + ($\n*\facefactor*(0.2,0) + (0.2 ,0) + \trafficfactor*\facefactor*(0,0.25)$);% balise marker + \iftoggle{index_number}{% + \node[text=\foreground] at ($\n*\facefactor*(0.2,0) + (0.1,0) + \trafficfactor*\facefactor*(0,0.125)$) {\tiny\n};% + }{}% + }% + }% + \ifdefstring{\alongswitched}{none}{}{ + \foreach \n in \alongswitched{% + \path[fill=\background] ($\n*\facefactor*(0.2,0)$) rectangle% + ($\n*\facefactor*(0.2,0) + (0.2 ,0) + \trafficfactor*\facefactor*(0,-0.25)$);% balise marker + \path[fill=\foreground] ($\n*\facefactor*(0.2,0) + (0.05,0) + \trafficfactor*\facefactor*(0,-0.05)$) rectangle% + ($\n*\facefactor*(0.2,0) + (0.15,0) + \trafficfactor*\facefactor*(0,-0.2)$);% switch marker + \iftoggle{index_number}{% + \node[text=\background] at ($\n*\facefactor*(0.2,0) + (0.1,0) + \trafficfactor*\facefactor*(0,-0.125)$) {\tiny\n};% + }{}% + }% + }% + \ifdefstring{\opposeswitched}{none}{}{ + \foreach \n in \opposeswitched{% + \path[fill=\background] ($\n*\facefactor*(0.2,0)$) rectangle% + ($\n*\facefactor*(0.2,0) + (0.2 ,0) + \trafficfactor*\facefactor*(0,0.25)$);% balise marker + \path[fill=\foreground] ($\n*\facefactor*(0.2,0) + (0.05,0) + \trafficfactor*\facefactor*(0,0.05)$) rectangle% + ($\n*\facefactor*(0.2,0) + (0.15,0) + \trafficfactor*\facefactor*(0,0.2)$);% switch marker + \iftoggle{index_number}{% + \node[text=\background] at ($\n*\facefactor*(0.2,0) + (0.1,0) + \trafficfactor*\facefactor*(0,0.125)$) {\tiny\n};% + }{}% + }% + }% + }% + %% + %%%%%%%%%%%%%%%%%%%% + %% 2. label + \ifdefstring{\labelcontent}{}{}{% label NOT empty + %% coord + \iftoggle{unnumberd}{% no number has been set + \coordinate (label-coord) at ($\trafficfactor*\facefactor*(0,-0.25)$);% + }{% + \coordinate (label-coord) at ($\trafficfactor*\facefactor*(0,-0.25) + (0.1,0)$);% + }% + \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default + \path let \p1=\labelcoord in coordinate (label-coord) at ($(label-coord)+(\x1,\y1)$);% + }% + %% label style + \tikzset{every node/.style={font=\sffamily,text=\foreground}};% + % + \ifdefstring{\trafficpractice}{left}{% + \tikzset{every node/.append style={left,align=right}};% + }{% + \tikzset{every node/.append style={right,align=left}};% + }% + \ifdefstring{\face}{forward}{% + \tikzset{every node/.append style={rotate=270}};% + }{% + \tikzset{every node/.append style={rotate=90}};% + }% + %% label + \node at (label-coord) {\footnotesize \labelcontent};% + }% + }},% end pics/balise/.style args={#1/#2/#3} % symbology entry - symbology_transmitter_bidirectional/.pic = {% + symbology_balise_group/.pic = {% \maintrack (0,0) -- (6,0);% - \balise[bidirectional] at (3,0) label ();% + \balise[forward] at (2,0) label (A);% + \balise[forward,switched] at (4,0) label (B);% },% - % symbology entry - symbology_loop_transmitter/.pic = {% + symbology_balise_individual/.pic = {% \maintrack (0,0) -- (6,0);% - \transmitter[type=loop] at (3,0) label ();% + \balise[forward,along={0,1,2}] at (2,0) label (A);% + \balise[forward,along switched={0,1,2}] at (4,0) label (B);% },% }% % @@ -636,8 +766,7 @@ \tikzset{every node/.style={font=\sffamily,text=\foreground}};% \coordinate (ts-ma-l) at ($\trafficfactor*\facefactor*(0,-0.6) + \facefactor*(0.3,0)$);% \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default - \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% - \coordinate (ts-ma-l) at ($(ts-ma-l) + (\labelcoordX,\labelcoordY)$);% + \path let \p1=\labelcoord in coordinate (ts-ma-l) at ($(ts-ma-l)+(\x1,\y1)$);% }% \node[\align] at (ts-ma-l) {\footnotesize \labelcontent};% }% @@ -701,8 +830,7 @@ \tikzset{every node/.style={font=\sffamily,text=\foreground}};% \coordinate (ts-bp-l) at ($\trafficfactor*\facefactor*(0,-0.6) + \facefactor*(0.3,0)$);% \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default - \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% - \coordinate (ts-bp-l) at ($(ts-bp-l) + (\labelcoordX,\labelcoordY)$);% + \path let \p1=\labelcoord in coordinate (ts-bp-l) at ($(ts-bp-l)+(\x1,\y1)$);% }% \node[\align] at (ts-bp-l) {\footnotesize \labelcontent};% }% @@ -767,8 +895,7 @@ \tikzset{every node/.style={font=\sffamily,text=\foreground}};% \coordinate (ts-dp-l) at ($\trafficfactor*\facefactor*(0,0.25)$);% \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default - \gettikzxy{\labelcoord}{\labelcoordX}{\labelcoordY}% - \coordinate (ts-dp-l) at ($(ts-dp-l)+(\labelcoordX,\labelcoordY)$);% + \path let \p1=\labelcoord in coordinate (ts-dp-l) at ($(ts-dp-l)+(\x1,\y1)$);% }% \node at (ts-dp-l) {\footnotesize \labelcontent};% }% diff --git a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.vehicles.code.tex b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.vehicles.code.tex index 46999714fb7..bcf7ee4a795 100644 --- a/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.vehicles.code.tex +++ b/Master/texmf-dist/tex/latex/tikz-trackschematic/tikzlibrarytrackschematic.vehicles.code.tex @@ -1,6 +1,3 @@ -%!TEX TS-program = pdflatexmk -%!TEX root = ../test/test.tex -% %% symbol library for TikZ track schematics % % Copyright (c) 2018 - 2022, Martin Scheidt (ISC license) @@ -15,13 +12,6 @@ \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}% }% @@ -68,7 +58,7 @@ %% 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 + \pic[parked,operation=undefined,forward,#1] at (#3) {vehicles={#2/#4/#5}}% symbol }% %% command: shunting movements \newcommand\shunting{}% just for safety @@ -112,7 +102,7 @@ run=none,% DEFAULT /tikz/run/.forward to=/tikz/trackschematic/vehicles/run,% %% label - label align/.store in=\labelalign,% (coord) + label align/.store in=\labelalign,% left, right OR center label align=center,% DEFAULT /tikz/label align/.forward to=/tikz/trackschematic/vehicles/label align,% %% train bend @@ -129,7 +119,7 @@ \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{single_bend}\settoggle{single_bend}{false}% \newtoggle{double_bend}\settoggle{double_bend}{false}% % %%%%%%%%%%%%%%% @@ -139,211 +129,169 @@ \tikzset{% pics/vehicles/.default=,% pics/vehicles/.style args={#1/#2/#3}{code={% - %% settings + %% + %%%%%%%[steps]%%%%%% + %% + %% 0. setup settings + %% 1. calculate coordinates + %% - calculation of vehicle coordinates: + %% + %% rear bend front bend + %% (ts-b-r1) (ts-b-f1) + %% (ts-v-r1)•__________•_______•__________•(ts-v-f1) + %% | \ + %% | label•(ts-v-l) •(ts-v-f) front tip + %% |__________ _______ __________ / + %% (ts-v-r2)• • • •(ts-v-f2) + %% (ts-b-r2) (ts-b-f2) + %% + %% - the base coord is depend on usage + %% for parked: (ts-v-l) + %% else: (ts-v-f) + %% + %% 2. set style for line and background + %% 3. draw arrows for speed indication + %% 4. draw vehicle shape + %% 5. draw operation mode + %% 6. draw label + %% + %%%%%%%%%%%%%%%%%%%% + %% 0. 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} + %% face setup + \ifdefstring{\face}{forward}{% face + \pgfmathsetmacro{\facefactor}{1}% + }{% + \ifdefstring{\face}{backward}{% face + \pgfmathsetmacro{\facefactor}{-1}% + }{% error message + \pgfkeys{/errors/unknown choice value={/tikz/trackschematic/face}{“forward“ OR “backward“ as key required}}% + }% + }% end \ifdefstring{\face} + %% bend setup + % determine number of bends and find front and rear bend from left to right + \ifdefstring{\bendleftcoord}{(none)}{}{% NOT default + \settoggle{single_bend}{true}% + \path \bendleftcoord;\pgfgetlastxy{\bendX}{\bendY}% absolut coord + \pgfmathsetmacro\bendfactor{1}% }% - \ifdefstring{\bendleftcoord}{(none)}{}{% initialize if NOT default - \gettikzxy{\bendleftcoord}{\bendleftX}{\bendleftY}% - \iftoggle{bend}{% + \ifdefstring{\bendrightcoord}{(none)}{}{% NOT default + \iftoggle{single_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} + \settoggle{single_bend}{false}% + \path \bendrightcoord;\pgfgetlastxy{\bendrightX}{\bendrightY} + \ifdimcomp{\bendrightX}{>}{\bendX}{% which one comes first? + \ifdefstring{\face}{forward}{% + \pgfmathsetmacro\frontBendfactor{1}% + \pgfmathsetmacro\rearBendfactor{-1}% + \pgfmathsetlengthmacro\frontBendX{\bendrightX}% + \pgfmathsetlengthmacro\rearBendX{\bendX}% + \pgfmathsetlengthmacro\rearBendY{\bendY}% + }{% face backward + \pgfmathsetmacro\frontBendfactor{-1}% + \pgfmathsetmacro\rearBendfactor{1}% + \pgfmathsetlengthmacro\frontBendX{\bendX}% + \pgfmathsetlengthmacro\rearBendX{\bendrightX}% + \pgfmathsetlengthmacro\rearBendY{\bendrightY}% }% - }{% 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}% + }{% {\bendrightX}{<}{\bendleftX}% + \ifdefstring{\face}{forward}{% + \pgfmathsetmacro\frontBendfactor{-1}% + \pgfmathsetmacro\rearBendfactor{1}% + \pgfmathsetlengthmacro\frontBendX{\bendX}% + \pgfmathsetlengthmacro\rearBendX{\bendrightX}% + \pgfmathsetlengthmacro\rearBendY{\bendrightY}% + }{% face backward + \pgfmathsetmacro\frontBendfactor{1}% + \pgfmathsetmacro\rearBendfactor{-1}% + \pgfmathsetlengthmacro\frontBendX{\bendrightX}% + \pgfmathsetlengthmacro\rearBendX{\bendX}% + \pgfmathsetlengthmacro\rearBendY{\bendY}% }% }% }{% 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} + \settoggle{single_bend}{true}% + \path \bendrightcoord;\pgfgetlastxy{\bendX}{\bendY}% absolut coord + \pgfmathsetmacro\bendfactor{-1}% }% }% - %% - %% 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)$);% + %%%%%%%%%%%%%%%%%%%% + %% 1. coordinate calculations + %% basic coords for corners + \iftoggle{is_parked}{% + \coordinate (ts-v-f1) at ($ 0.5*(\objectlength,0) + (0, 0.3)$);% + \coordinate (ts-v-f2) at ($ 0.5*(\objectlength,0) + (0,-0.3)$);% + \coordinate (ts-v-r1) at ($-0.5*(\objectlength,0) + (0, 0.3)$);% + \coordinate (ts-v-r2) at ($-0.5*(\objectlength,0) + (0,-0.3)$);% + }{% + \coordinate (ts-v-f1) at ($\facefactor*(-0.3,0) + (0, 0.3)$);% + \coordinate (ts-v-f2) at ($\facefactor*(-0.3,0) + (0,-0.3)$);% + \coordinate (ts-v-r1) at ($\facefactor*(-\objectlength,0) + (0, 0.3)$);% + \coordinate (ts-v-r2) at ($\facefactor*(-\objectlength,0) + (0,-0.3)$);% + }% + %% front tip for traveling direction + \iftoggle{is_parked}{% \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);% - }% + }{% + \coordinate (ts-v-f) at (0,0);% }% + %% bend - DEFAULT: no bend + \coordinate (ts-b-f1) at (ts-v-f1);% + \coordinate (ts-b-f2) at (ts-v-f2);% + \coordinate (ts-b-r1) at (ts-v-r1);% + \coordinate (ts-b-r2) at (ts-v-r2);% % - %% vehicle style + \iftoggle{single_bend}{% + % \bendX is a absolut coordinate + % make them relative to base + \path (0,0);\pgfgetlastxy{\baseX}{\baseY}% absolut coord + % calc bend position + \coordinate (ts-b-r1) at ($(-\baseX,0) + (\bendX, 0.3) + \facefactor*\bendfactor*( 0.1,0)$);% + \coordinate (ts-b-r2) at ($(-\baseX,0) + (\bendX,-0.3) + \facefactor*\bendfactor*(-0.1,0)$);% + % calc length from bend to end with factor ~0.7071 at 45 degree to a projected length + \pgfmathsetlengthmacro\bendlength{(\facefactor*\objectlength - \baseX + \bendX)*0.7071}% + \coordinate (ts-v-r1) at ($(ts-b-r1) + (-\bendlength,0) + \facefactor*\bendfactor*( 0.1,\bendlength) + (0,-0.1)$);% + \coordinate (ts-v-r2) at ($(ts-b-r2) + (-\bendlength,0) + \facefactor*\bendfactor*(-0.1,\bendlength) + (0, 0.1)$);% + }{}% + \iftoggle{double_bend}{% + % \bendX and \bendY are absolut coords + % make them relative to base + \path (0,0);\pgfgetlastxy{\baseX}{\baseY}% absolut coord + % calc bend position + \coordinate (ts-b-f1) at ($(-\baseX,0) + (\frontBendX, 0.3) + \facefactor*\frontBendfactor*(-0.1,0)$);% + \coordinate (ts-b-f2) at ($(-\baseX,0) + (\frontBendX,-0.3) + \facefactor*\frontBendfactor*( 0.1,0)$);% + \coordinate (ts-b-r1) at ($(-\baseX,0) + (\rearBendX, 0.3) + (0,-\baseY) + (0,\rearBendY) + \facefactor*\rearBendfactor*( 0.1,0)$);% + \coordinate (ts-b-r2) at ($(-\baseX,0) + (\rearBendX,-0.3) + (0,-\baseY) + (0,\rearBendY) + \facefactor*\rearBendfactor*(-0.1,0)$);% + % calc length from bend to end with factor ~1.4142 at 45 degree to a projected length + \pgfmathsetlengthmacro\bendlength{\facefactor*\objectlength - (\frontBendX - \rearBendX)*1.4142 - (\baseX - \frontBendX)}% + \coordinate (ts-v-r1) at ($(ts-b-r1) + (-\bendlength,0) + \facefactor*\rearBendfactor*(-0.1,0)$);% + \coordinate (ts-v-r2) at ($(ts-b-r2) + (-\bendlength,0) + \facefactor*\rearBendfactor*( 0.1,0)$);% + }{}% + %% + %%%%%%%%%%%%%%%%%%%% + %% 2. 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 + %% + %%%%%%%%%%%%%%%%%%%% + %% 3. arrow shapes + %% (order before vehicle shape due to background fill!) \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 + ($\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 @@ -351,14 +299,14 @@ \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 + \ifdefstring{\trainrun}{none}{}{% DEFAULT no 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 + ($\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 )$) --% @@ -367,10 +315,10 @@ }{% \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 + ($\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 )$) --% @@ -385,10 +333,10 @@ }{% \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 + ($\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 )$) --% @@ -414,19 +362,22 @@ \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 + %% + %%%%%%%%%%%%%%%%%%%% + %% 4. vehicle shape + \path (ts-v-f)% + -- (ts-v-f1) -- (ts-b-f1) -- (ts-b-r1) -- (ts-v-r1)% + -- (ts-v-r2) -- (ts-b-r2) -- (ts-b-f2) -- (ts-v-f2)% + -- cycle;% vehicle shape + %% + %%%%%%%%%%%%%%%%%%%% + %% 5. operation mode \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}}% @@ -434,10 +385,28 @@ }% end automatically_operated }% end manually_operated }% - % - %% label + %% + %%%%%%%%%%%%%%%%%%%% + %% 6. label + \iftoggle{is_parked}{% + \coordinate (ts-v-l) at (0,0);% DEFAULT center + }{% + \coordinate (ts-v-l) at ($\facefactor*-0.5*(\objectlength,0)$);% DEFAULT center + }% + \iftoggle{train_is_a_ghost}{% ghost train + \coordinate (ts-v-l) at ($(ts-v-l) + (0,0.16)$);% + }{}% + \ifdefstring{\operationmode}{manual}{% + \coordinate (ts-v-l) at ($(ts-v-l) + \facefactor*(-0.25,0)$);% + }{}% + \ifdefstring{\operationmode}{automatic}{% + \coordinate (ts-v-l) at ($(ts-v-l) + \facefactor*(-0.15,0)$);% + }{}% + \ifdefstring{\labelcoord}{(none)}{}{% initialize if NOT default + \path let \p1=\labelcoord in coordinate (ts-v-l) at ($(ts-v-l)+(\x1,\y1)$);% + }% \ifdefstring{\labelcontent}{}{}{% label NOT empty - \ifdefstring{\labelalign}{center}{% label align default + \ifdefstring{\labelalign}{center}{% DEFAULT label align center \def\labelanchor{center} }{% label align NOT default \ifdefstring{\labelalign}{left}{% label align left @@ -450,9 +419,10 @@ }% \ifdefstring{\labelalign}{right} }% \ifdefstring{\labelalign}{left} }% \ifdefstring{\labelalign}{center} - \node[text=\foreground,anchor=\labelanchor,align=\labelalign] at (ts-v-l) {\footnotesize\emph{\labelcontent}};% label + \node[text=\foreground,anchor=\labelanchor,align=\labelalign] at (ts-v-l) {\footnotesize \labelcontent};% label }% }},% END pics/vehicles/.style args={#1/#2/#3} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % symbology entry symbology_parked_vehicles/.pic = {% \secondarytrack (0,0) -- (6,0);% |