diff --git a/examples/network.pdf b/examples/network.pdf new file mode 100644 index 0000000..3fc0f54 Binary files /dev/null and b/examples/network.pdf differ diff --git a/examples/network.tex b/examples/network.tex new file mode 100644 index 0000000..8a2c085 --- /dev/null +++ b/examples/network.tex @@ -0,0 +1,21 @@ +%!TEX TS-program = pdflatexmk + +% Copyright 2018 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. + +\documentclass[tikz,border=2]{standalone} + +\usepackage{lmodern} +\usepackage[prefix=]{xcolor-solarized} + +\def\rootTrackschematic{../../tikz-trackschematic} +\def\srcTrackschematic{\rootTrackschematic/src} +\input{\srcTrackschematic/topology.tikz} +\input{\srcTrackschematic/trafficControl.tikz} +\input{\srcTrackschematic/constructions.tikz} + +\begin{document} + \begin{tikzpicture}[font=\sffamily] + \input{network.tikz} + \end{tikzpicture} +\end{document} \ No newline at end of file diff --git a/examples/network.tikz b/examples/network.tikz new file mode 100644 index 0000000..a843f35 --- /dev/null +++ b/examples/network.tikz @@ -0,0 +1,18 @@ +%!TEX TS-program = pdflatexmk +%!TEX root = network.tex + +% Copyright 2018 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. + +\begin{scope}[shift={(-60,0)}] + \input{station_rebenau.tikz} +\end{scope} +\begin{scope}[shift={(10,-10)}] + \input{station_pockelsdorf.tikz} +\end{scope} +\begin{scope}[shift={(0,0)}] + \input{station_okerbach.tikz} +\end{scope} +\begin{scope}[shift={(60,0)}] + \input{station_schleinitz.tikz} +\end{scope} \ No newline at end of file diff --git a/examples/snippets/bridge_track_beneath.tikz b/examples/snippets/bridge_track_beneath.tikz index 8f0d990..84cb951 100644 --- a/examples/snippets/bridge_track_beneath.tikz +++ b/examples/snippets/bridge_track_beneath.tikz @@ -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. \draw[MainTrack] (-1,-1) -- ++(2,2); -\fill[white] (-1,-0.4) rectangle (1,0.4); +\fill[background] (-1,-0.4) rectangle (1,0.4); \draw[MainTrack] (-2.5,0) -- ++(5,0); \pic at (-1,0) {bridge_left=3}; \pic at (-2,0) {bridge_right=3}; \ No newline at end of file diff --git a/examples/snippets/bufferstop_backward.tikz b/examples/snippets/bufferstop_backward.tikz index ec0c45e..0b6f66c 100644 --- a/examples/snippets/bufferstop_backward.tikz +++ b/examples/snippets/bufferstop_backward.tikz @@ -4,5 +4,5 @@ % Copyright 2018 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. -\draw[MainTrack] (0,0) -- ++(2.5,0); +\draw[SideTrack] (0,0) -- ++(2.5,0); \pic at (0,0) {bufferstop_backward}; \ No newline at end of file diff --git a/examples/snippets/bufferstop_forward.tikz b/examples/snippets/bufferstop_forward.tikz index 62a1c2c..f42eb43 100644 --- a/examples/snippets/bufferstop_forward.tikz +++ b/examples/snippets/bufferstop_forward.tikz @@ -4,5 +4,5 @@ % Copyright 2018 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. -\draw[MainTrack] (-2.5,0) -- ++(2.5,0); +\draw[SideTrack] (-2.5,0) -- ++(2.5,0); \pic at (0,0) {bufferstop_forward}; \ No newline at end of file diff --git a/examples/snippets/combined_signal_forward.tikz b/examples/snippets/combined_signal_forward.tikz new file mode 100644 index 0000000..2b2b240 --- /dev/null +++ b/examples/snippets/combined_signal_forward.tikz @@ -0,0 +1,9 @@ +%!TEX TS-program = pdflatexmk +%!TEX root = ../../overview.tex + +% Copyright 2018 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. + +\draw[MainTrack] (-2.5,0) -- ++(5,0); +\pic at (0,0) {block_signal_forward}; +\pic at (0,0) {distant_signal_forward}; \ No newline at end of file diff --git a/examples/snippets/distant_speed_signal_backward.tikz b/examples/snippets/distant_speed_signal_backward.tikz index fc22f69..18527d0 100644 --- a/examples/snippets/distant_speed_signal_backward.tikz +++ b/examples/snippets/distant_speed_signal_backward.tikz @@ -5,5 +5,5 @@ % 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. \draw[MainTrack] (-2.5,0) -- ++(5,0); -\pic at (0,0) {distant_signal_backward=S}; +\pic at (0,0) {distant_signal_backward={S}}; % replace the S with desired speed or remove \ No newline at end of file diff --git a/examples/snippets/distant_speed_signal_forward.tikz b/examples/snippets/distant_speed_signal_forward.tikz index 9ed0a5a..18a4e4c 100644 --- a/examples/snippets/distant_speed_signal_forward.tikz +++ b/examples/snippets/distant_speed_signal_forward.tikz @@ -5,5 +5,5 @@ % 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. \draw[MainTrack] (-2.5,0) -- ++(5,0); -\pic at (0,0) {distant_signal_forward=S}; +\pic at (0,0) {distant_signal_forward={S}}; % replace the S with desired speed or remove \ No newline at end of file diff --git a/examples/snippets/hump.tikz b/examples/snippets/hump.tikz new file mode 100644 index 0000000..e749d78 --- /dev/null +++ b/examples/snippets/hump.tikz @@ -0,0 +1,8 @@ +%!TEX TS-program = pdflatexmk +%!TEX root = ../../overview.tex + +% Copyright 2018 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. + +\draw[SideTrack] (-2.5,0) -- ++(5,0); +\pic at (0,0) {hump}; \ No newline at end of file diff --git a/examples/snippets/interlocking.tikz b/examples/snippets/interlocking.tikz new file mode 100644 index 0000000..10da08e --- /dev/null +++ b/examples/snippets/interlocking.tikz @@ -0,0 +1,7 @@ +%!TEX TS-program = pdflatexmk +%!TEX root = ../../overview.tex + +% Copyright 2018 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. + +\pic at (0,0) {interlocking}; \ No newline at end of file diff --git a/examples/snippets/speed_signal_backward.tikz b/examples/snippets/speed_signal_backward.tikz index efdd071..eeb6f7d 100644 --- a/examples/snippets/speed_signal_backward.tikz +++ b/examples/snippets/speed_signal_backward.tikz @@ -5,5 +5,5 @@ % 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. \draw[MainTrack] (-2.5,0) -- ++(5,0); -\pic at (0,0) {speed_signal_backward=S}; +\pic at (0,0) {speed_signal_backward={S}}; % replace the S with desired speed or remove \ No newline at end of file diff --git a/examples/snippets/speed_signal_forward.tikz b/examples/snippets/speed_signal_forward.tikz index 436c689..49086e9 100644 --- a/examples/snippets/speed_signal_forward.tikz +++ b/examples/snippets/speed_signal_forward.tikz @@ -5,5 +5,5 @@ % 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. \draw[MainTrack] (-2.5,0) -- ++(5,0); -\pic at (0,0) {speed_signal_forward=S}; +\pic at (0,0) {speed_signal_forward={S}}; % replace the S with desired speed or remove \ No newline at end of file diff --git a/examples/snippets/track_distance.tikz b/examples/snippets/track_distance.tikz new file mode 100644 index 0000000..853ac04 --- /dev/null +++ b/examples/snippets/track_distance.tikz @@ -0,0 +1,9 @@ +%!TEX TS-program = pdflatexmk +%!TEX root = ../../overview.tex + +% Copyright 2018 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. + +\draw[MainTrack] (-2.5, 0.5) -- ++(5,0); +\pic at (0,-0.5) {track_distance={4,50}}; +\draw[MainTrack] (-2.5,-0.5) -- ++(5,0); \ No newline at end of file diff --git a/examples/snippets/track_number.tikz b/examples/snippets/track_number.tikz new file mode 100644 index 0000000..c623369 --- /dev/null +++ b/examples/snippets/track_number.tikz @@ -0,0 +1,8 @@ +%!TEX TS-program = pdflatexmk +%!TEX root = ../../overview.tex + +% Copyright 2018 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. + +\draw[MainTrack] (-2.5,0) -- ++(5,0); +\pic at (0, 0) {track_number={2}}; \ No newline at end of file diff --git a/examples/station_berg.tex b/examples/station_berg.tex index 230f0d4..69ecb73 100644 --- a/examples/station_berg.tex +++ b/examples/station_berg.tex @@ -31,11 +31,11 @@ \draw[SideTrack] ( 9 , 1) -- ++( 7,0); \draw[SideTrack] (14 , 1) -- ++( 1,1) -- ++(10,0); % track numbers - \node[fill=white] at (11.7, 1) {12}; - \node[fill=white] at (11.7,-1) {10}; - \node[fill=white] at (21.0, 2) { 3}; - \node[fill=white] at (21.0, 1) { 2}; - \node[fill=white] at (21.0, 0) { 1}; + \node[fill=background] at (11.7, 1) {12}; + \node[fill=background] at (11.7,-1) {10}; + \node[fill=background] at (21.0, 2) { 3}; + \node[fill=background] at (21.0, 1) { 2}; + \node[fill=background] at (21.0, 0) { 1}; % bufferstops \pic at ( 9, 1) {bufferstop_backward}; \pic at (11,-1) {bufferstop_backward}; diff --git a/examples/station_chamstadt.pdf b/examples/station_chamstadt.pdf new file mode 100644 index 0000000..b527f47 Binary files /dev/null and b/examples/station_chamstadt.pdf differ diff --git a/examples/station_chamstadt.tex b/examples/station_chamstadt.tex new file mode 100644 index 0000000..b71d821 --- /dev/null +++ b/examples/station_chamstadt.tex @@ -0,0 +1,183 @@ +%!TEX TS-program = pdflatexmk + +% Copyright 2018 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. + +\documentclass[tikz,border=2]{standalone} + +\usepackage{lmodern} +\usepackage[prefix=]{xcolor-solarized} + +\def\rootTrackschematic{../../tikz-trackschematic} +\def\srcTrackschematic{\rootTrackschematic/src} +\input{\srcTrackschematic/topology.tikz} +\input{\srcTrackschematic/constructions.tikz} +\input{\srcTrackschematic/vehicles.tikz} +\input{\srcTrackschematic/trafficControl.tikz} % Order 1 +\input{\srcTrackschematic/layoutSymbols_DE.tikz} % Order 2 (important) + +\begin{document} + \begin{tikzpicture}[font=\sffamily] + { % % stations + \tikzset{every node/.style={base00}}; + \node[right,align=left] at ( 5,1.3) {to and from\\ Berg}; + \node at (21,3.9) {{\LARGE Bf Chamstadt}}; + \node[left,align=right] at (37.5,1.3) {to and from\\ Dornroda}; + \node[left,align=right] at (36.5,4.0) {to and from\\ Ehrenstein}; + } + { % % tracks + \draw[MainTrack] ( 4.5, 0) -- ++(33, 0); + \draw[MainTrack] (15 , 0) -- ++( 1, 1) -- ++(14,0); + \draw[MainTrack] (14 , 0) -- ++( 1,-1) -- ++(10.5,0) -- ++( 1,1); + \draw[MainTrack] (27 , 1) -- ++( 1,-1); + \draw[MainTrack] (29 , 0) -- ++( 5, 5); + \draw[SideTrack] ( 9 , 1) -- ++( 7, 0); + % % track numbers + \node[fill=background] at (12.5, 1) {11}; + \node[fill=background] at (21.75, 1) { 1}; + \node[fill=background] at (21.75, 0) { 2}; + \node[fill=background] at (21.75,-1) { 3}; + % % bufferstops + \pic at ( 9, 1) {bufferstop_backward}; + % % turnouts + \pic at (14.8, 1) {derailer_left_forward}; + \node at (14.7, 0.6) {\footnotesize Gs7}; + \pic at (14,0) {turnout_right_forward}; + \pic at (14,0) {fouling_point_right_forward}; + \node at (14,0.2) {\footnotesize W1}; + \pic at (15,0) {turnout_left_forward}; + \pic at (15,0) {fouling_point_left_forward}; + \node at (15,-0.2) {\footnotesize W2}; + \pic at (16,1) {turnout_left_backward}; + \pic at (16,1) {fouling_point_left_backward}; + \node at (16,1.2) {\footnotesize W3}; + \pic at (26.5,0) {turnout_left_backward}; + \pic at (26.5,0) {fouling_point_left_backward}; + \node at (26.5,0.2) {\footnotesize W4}; + \pic at (27,1) {turnout_right_forward}; + \pic at (27,1) {fouling_point_right_forward}; + \node at (27,1.2) {\footnotesize W5}; + \pic at (28,0) {turnout_right_backward}; + \pic at (28,0) {fouling_point_right_backward}; + \node at (28,-0.2) {\footnotesize W6}; + \pic at (29,0) {turnout_left_forward}; + \pic at (29,0) {fouling_point_left_forward}; + \node at (29,-0.2) {\footnotesize W7}; + \pic at (30,1) {turnout_left_backward}; + \pic at (30,1) {fouling_point_left_backward}; + \node at (30.3,0.8) {\footnotesize W8}; + + % % platforms + \pic at (19,0) {platform_left}; + \pic at (19,1) {platform_right}; + } + { % % signals + \pic at ( 7.5, 0 ) {distant_signal_forward}; + \node[left] at ( 7.5,-0.4) {Va}; + \pic at (10, 0 ) {route_signal_forward}; + \pic at (10, 0 ) {distant_signal_forward}; + \node[left] at (10,-0.4) {A}; + \pic at (16,-1 ) {route_signal_backward}; + \node[right] at (16,-0.6) {P3}; + \pic at (18, 1 ) {route_signal_backward}; + \node[right] at (18, 1.4) {P1}; + \pic at (18, 0 ) {route_signal_backward}; + \node[right] at (18, 0.4) {P2}; + \pic at (24, 1 ) {route_signal_forward}; + \node[left] at (24, 0.6) {N1}; + \pic at (24, 0 ) {route_signal_forward}; + \node[left] at (24,-0.4) {N2}; + \pic at (25,-1 ) {route_signal_forward}; + \node[left] at (25,-1.4) {N3}; + \pic at (33, 0 ) {route_signal_backward}; + \pic at (33, 0 ) {distant_signal_backward}; + \node[right] at (33, 0.4) {F}; + \pic at (35.5, 0 ) {distant_signal_backward}; + \node[right] at (35.5, 0.4) {Vf}; + \pic[rotate=45] at (32.5, 2.5) {route_signal_backward}; + \pic[rotate=45] at (32.5, 2.5) {distant_signal_backward}; + \node[right,rotate=45] at (32.2, 2.8) {G}; + \pic[rotate=45] at (34, 4 ) {distant_signal_backward}; + \node[right,rotate=45] at (33.7, 4.3) {Vg}; + % % routes + \pic at (21,-1) {route_freight_backward}; + \pic at (22.5,-1) {route_freight_forward}; + \pic at (21,0) {route_passanger_backward}; + \pic at (22.5,0) {route_passanger_forward}; + \pic at (21,1) {route_passanger_backward}; + \pic at (22.5,1) {route_passanger_forward}; + } + { % % clearing points + \pic at (10 , 0) {clearing_point}; + \pic at (13 , 0) {clearing_point}; + \pic at (14 , 1) {clearing_point}; + \pic at (16 , 0) {clearing_point}; + \pic at (16 ,-1) {clearing_point}; + \pic[rotate=45] at (15.5, 0.5) {clearing_point}; + \pic at (18 , 1) {clearing_point}; + \pic at (18 , 0) {clearing_point}; + \pic at (24 , 1) {clearing_point}; + \pic at (24 , 0) {clearing_point}; + \pic at (26 , 1) {clearing_point}; + \pic at (25 ,-1) {clearing_point}; + \pic at (27 , 0) {clearing_point}; + \pic[rotate=-45] at (27.5, 0.5) {clearing_point}; + \pic[rotate= 45] at (29.5, 0.5) {clearing_point}; + \pic at (30.2, 0) {clearing_point}; + \pic at (33 , 0) {clearing_point}; + \pic[rotate= 45] at (30.2, 1.2) {clearing_point}; + \pic[rotate= 45] at (32 , 3 ) {clearing_point}; + } + { % % vehicles + \pic at ( 7 ,0) {train_direction_forward=2}; + \node at ( 6,0) {\emph{RB}}; + % \pic at (21.5,2) {train=3}; + % \node at (23 ,2) {\emph{WG}}; + \pic at (10.2,1) {train=1}; + \node at (10.7,1) {\emph{Tfz}}; + \pic at (16.5,-1) {train_direction_backward}; + \node at (18.5,-1) {\emph{GZ}}; + } + { % % hectometer posts + \tikzset{every node/.style={left,base00,rotate=-90},every path/.style={base00,dashed}}; + \node at (07.5,-2.75) { 7.200}; + \draw (07.5,-1.55) -- ++(0,0.7); + \node at (10.0,-2.75) { 8.200}; + \draw (10.0,-1.55) -- ++(0,0.7); + \node at (13.0,-2.75) { 8.400}; + \draw (13.0,-1.55) -- ++(0,1.1); + \node at (14.0, 2.25) { 8.500}; + \draw (14.0, 2.15) -- ++(0,-.8); + \node at (15.5, 2.25) { 8.550}; + \draw (15.5, 2.15) -- ++(0,-.8); + \node at (16.0,-2.75) { 8.600}; + \draw (16.0,-1.55) -- ++(0,0.3); + \node at (18.0, 2.25) { 8.700}; + \draw (18.0, 2.15) -- ++(0,-.3); + \node at (19.0, 2.25) { 8.750}; + \draw (19.0, 2.15) -- ++(0,-.8); + \node at (23.0, 2.25) { 9.000}; + \draw (23.0, 2.15) -- ++(0,-.8); + \node at (24.0, 2.25) { 9.100}; + \draw (24.0, 2.15) -- ++(0,-.8); + \node at (25.0,-2.75) { 9.150}; + \draw (25.0,-1.55) -- ++(0,0.0); + \node at (26.0, 2.25) { 9.200}; + \draw (26.0, 2.15) -- ++(0,-.8); + \node at (27.0,-2.75) { 9.250}; + \draw (27.0,-1.55) -- ++(0,1.1); + \node at (27.5,-2.75) { 9.300}; + \draw (27.5,-1.55) -- ++(0,1.1); + \node at (29.5,-2.75) { 9.450}; + \draw (29.5,-1.55) -- ++(0,1.1); + \node at (30.2,-2.75) { 9.500}; + \draw (30.2,-1.55) -- ++(0,1.1); + \node at (33.0,-2.75) { 9.900}; + \draw (33.0,-1.55) -- ++(0,1.3); + \draw (33.0, 0.85) -- ++(0,1.2) -- ++(-0.5,0.5); + \node at (35.5,-2.75) {10.900}; + \draw (35.5,-1.55) -- ++(0,1.3); + \draw (35.5, 0.85) -- ++(0,1.7) -- ++(-1.5,1.5); + } + \end{tikzpicture} +\end{document} \ No newline at end of file diff --git a/examples/station_okerbach.pdf b/examples/station_okerbach.pdf new file mode 100644 index 0000000..3580e3a Binary files /dev/null and b/examples/station_okerbach.pdf differ diff --git a/examples/station_okerbach.tex b/examples/station_okerbach.tex new file mode 100644 index 0000000..9056c98 --- /dev/null +++ b/examples/station_okerbach.tex @@ -0,0 +1,21 @@ +%!TEX TS-program = pdflatexmk + +% Copyright 2018 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. + +\documentclass[tikz,border=2]{standalone} + +\usepackage{lmodern} +\usepackage[prefix=]{xcolor-solarized} + +\def\rootTrackschematic{../../tikz-trackschematic} +\def\srcTrackschematic{\rootTrackschematic/src} +\input{\srcTrackschematic/topology.tikz} +\input{\srcTrackschematic/trafficControl.tikz} +\input{\srcTrackschematic/constructions.tikz} + +\begin{document} + \begin{tikzpicture}[font=\sffamily] + \input{station_okerbach.tikz} + \end{tikzpicture} +\end{document} \ No newline at end of file diff --git a/examples/station_okerbach.tikz b/examples/station_okerbach.tikz new file mode 100644 index 0000000..f75efc3 --- /dev/null +++ b/examples/station_okerbach.tikz @@ -0,0 +1,195 @@ +%!TEX TS-program = pdflatexmk +%!TEX root = station_okerbach.tex + +% Copyright 2018 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. + +%% coordinates +\coordinate (O2R-1) at ( 0,0); % track 1 to Rebenau +\coordinate (O2R-2) at ( 0,1); % track 2 to Rebenau +\coordinate (O2S-1) at (42,0); % track 1 to Schleinitz +\coordinate (O2S-2) at (42,1); % track 2 to Schleinitz + +{ %% stations + \tikzset{every node/.style={base00}}; + \node[right,align=left] at ( 0. , 2. ) {to and from\\ Rebenau}; + \node[left,align=right] at ( 3.5, 4.0) {Sidings (Workshop)}; + \node[left,align=right] at ( 3.5, 5.0) {Sidings (Habour)}; + \node[right,align=left] at (37.5,-1.5) {Sidings (Power Station)}; + \node at (15.5, 6.3) {{\LARGE Okerbach Gbf}}; + \node at (29.0, 6.3) {{\LARGE Okerbach Pbf}}; + \node[left,align=right] at (42,2) {to and from\\ Schleinitz}; +} +{ %% tracks + \draw[MainTrack] (O2R-1) -- (O2S-1); % track 1 + \draw[MainTrack] (O2R-2) -- (O2S-2); % track 2 + \draw[MainTrack] ( 5, 1) -- ++( 1,-1); % track W1/W2 + \draw[MainTrack] ( 7, 0) -- ++( 1, 1); % track W3/W4 + \draw[SideTrack] ( 7, 2) -- ++(-3, 3) -- ++(-0.5,0); % track 132 + \draw[MainTrack] ( 8, 0) -- ++( 1,-1) -- ++(13. ,0) -- ++( 1. , 1); % track 10 + \draw[MainTrack] ( 9, 1) -- ++( 1, 1) -- ++(11. ,0) -- ++( 1. ,-1); % track 13 + \draw[SideTrack] (10, 2) -- ++(-4, 0) -- ++(-2. ,2) -- ++(-0.5, 0); % track 131 + \draw[MainTrack] (10, 2) -- ++( 1, 1) -- ++( 9. ,0) -- ++( 1. ,-1); % track 14 + \draw[SideTrack] (11, 3) -- ++( 1, 1) -- ++( 7. ,0) -- ++( 1. ,-1); % track 15 + \draw[SideTrack] (19, 4) -- ++( 4, 0); % track 215 + \draw[MainTrack] (23, 1) -- ++( 1,-1); % track W16/W18 + \draw[SideTrack] (32, 0) -- ++( 1.5,-1.5) -- ++( 4, 0); % track 410 + \draw[MainTrack] (35, 0) -- ++( 1, 1); % track W21/W22 +} +{ %% track numbers + \node[fill=background,rotate=-45] at ( 4.4, 3.6) {131}; + \node[fill=background,rotate=-45] at ( 4.9, 4.1) {132}; + \node[fill=background] at (15.5,-1. ) { 10}; + \node[fill=background] at (15.5, 0. ) { 11}; + \node[fill=background] at (15.5, 1. ) { 12}; + \node[fill=background] at (15.5, 2. ) { 13}; + \node[fill=background] at (15.5, 3. ) { 14}; + \node[fill=background] at (15.5, 4. ) { 15}; + \node[fill=background] at (22. , 4. ) {215}; + \node[fill=background] at (29. , 0. ) { 1}; + \node[fill=background] at (29. , 1. ) { 2}; + \node[fill=background] at (36.5,-1.5) {410}; +} +{ %% bufferstops + \pic at ( 23, 4) {bufferstop_forward}; +} +{ %% turnouts + \pic at ( 5,1) {turnout_right_forward}; + \node at ( 5,1.2) {\footnotesize W1}; + % \pic at ( 5,1) {fouling_point_left_forward}; + \pic at ( 6,0) {turnout_right_backward}; + \node at ( 6,-0.2) {\footnotesize W2}; + % \pic at ( 6,0) {fouling_point_left_backward}; + \pic at ( 7,0) {turnout_left_forward}; + \node at ( 7,-0.2) {\footnotesize W3}; + % \pic at ( 7,0) {fouling_point_left_forward}; + \pic at ( 7,2) {turnout_right_backward}; + \node at ( 7,1.8) {\footnotesize W9}; + % \pic at ( 7,2) {fouling_point_right_backward}; + \pic at ( 8,1) {turnout_left_backward}; + \node at ( 8,1.2) {\footnotesize W4}; + % \pic at ( 8,1) {fouling_point_left_backward}; + \pic at ( 8,0) {turnout_right_forward}; + \node at ( 8,0.2) {\footnotesize W5}; + % \pic at ( 8,0) {fouling_point_right_forward}; + \pic at ( 8.5,2) {derailer_left_forward}; + \node[left,align=right] at ( 8.5,1.8) {\footnotesize Gs8}; + \pic at ( 9,1) {turnout_left_forward}; + \node at ( 9,0.8) {\footnotesize W6}; + % \pic at ( 9,1) {fouling_point_left_forward}; + \pic at (10,2) {turnout_left_forward}; + \pic at (10,2) {turnout_left_backward}; + \pic at (10,2) {slip_left_forward}; + \pic at (10,2) {slip_left_backward}; + \node[left,align=right] at ( 9.7,1.8) {\footnotesize W7ab}; + \node[right,align=left] at (10.3,2.2) {\footnotesize W7cd}; + % \pic at (10,2) {fouling_point_left_backward}; + % \pic at (10,2) {fouling_point_left_forward}; + \pic at (11,3) {turnout_left_forward}; + \node[left,align=right] at (11,3.1) {\footnotesize W10}; + % \pic at (11,3) {fouling_point_left_forward}; + + \pic at (19,4) {turnout_right_forward}; + \node at (19,4.2) {\footnotesize W11}; + % \pic at (19,4) {fouling_point_right_forward}; + \pic at (20,4) {derailer_right_backward}; + \node[right] at (20,3.8) {\footnotesize Gs12}; + \pic at (20,3) {turnout_right_backward}; + \node[right,align=left] at (20,3.1) {\footnotesize W13}; + % \pic at (20,3) {fouling_point_right_backward}; + \pic at (21,2) {turnout_right_backward}; + \node[right,align=left] at (21,2.1) {\footnotesize W14}; + % \pic at (21,2) {fouling_point_right_backward}; + \pic at (22,1) {turnout_right_backward}; + \node at (22,0.8) {\footnotesize W15}; + % \pic at (22,1) {fouling_point_left_backward}; + \pic at (23,1) {turnout_right_forward}; + \node at (23,1.2) {\footnotesize W16}; + % \pic at (23,1) {fouling_point_left_forward}; + \pic at (23,0) {turnout_left_backward}; + \node at (23,0.2) {\footnotesize W17}; + % \pic at (23,0) {fouling_point_left_backward}; + \pic at (24,0) {turnout_right_backward}; + \node at (24,-0.2) {\footnotesize W18}; + % \pic at (24,0) {fouling_point_left_backward}; + + \pic at (32,0) {turnout_right_forward}; + \node at (32,0.2) {\footnotesize W19}; + % \pic at (23,0) {fouling_point_right_forward}; + \pic at (34. ,-1.5) {derailer_left_backward}; + \node[right] at (34. ,-1.7) {\footnotesize Gs20}; + \pic at (35,0) {turnout_left_forward}; + \node at (35,-0.2) {\footnotesize W21}; + % \pic at (35,0) {fouling_point_left_forward}; + \pic at (36,1) {turnout_left_backward}; + \node at (36,1.2) {\footnotesize W22}; + % \pic at (36,1) {fouling_point_left_backward}; +} +{ %% platforms + \pic at (26,0) {platform_right=6}; + \pic at (26,1) {platform_left=6}; +} +{ %% signals + \pic at ( 1,0) {route_signal_forward}; + \node[left] at ( 1,-0.4) {A}; + \pic at ( 1,1) {route_signal_forward}; + \node[left] at ( 1, 0.6) {AA}; + \pic at ( 3,0) {shunt_limit_backward}; + \pic at ( 4,0) {shunt_signal_forward}; + \node[left] at ( 4,-0.4) {W2X}; + \pic at ( 4,1) {shunt_signal_forward}; + \node[left] at ( 4, 0.6) {W1X}; + \pic[rotate=-45] at (5.5,2.5) {shunt_signal_forward}; + \node[left,rotate=-45] at (5.3,2.3) {W9X1}; + \pic[rotate=-45] at (6. ,3. ) {shunt_signal_forward}; + \node[left,rotate=-45] at (5.8,2.8) {W9X2}; + \pic at (11,-1) {route_signal_backward}; + \node[right] at (11,-0.6) {P10}; + \pic at (11,0) {shunt_signal_backward}; + \node[right] at (11, 0.4) {W5Y}; + \pic at (11,1) {route_signal_backward}; + \node[right] at (11, 1.4) {P12}; + \pic at (12.5,2) {route_signal_backward}; + \node[right] at (12.5, 2.4) {P13}; + \pic at (13,3) {route_signal_backward}; + \node[right] at (13, 3.4) {P14}; + \pic at (13,4) {shunt_signal_backward}; + \node[right] at (13, 4.4) {W10Y}; + + \pic at (18. , 4) {shunt_signal_forward}; + \node[left] at (18, 3.6) {W11X}; + \pic at (18.5, 3) {route_signal_forward}; + \node[left] at (18.5, 2.6) {ZR14}; + \pic at (19.5, 2) {route_signal_forward}; + \node[left] at (19.5, 1.6) {ZR13}; + \pic at (20.5, 1) {route_signal_forward}; + \node[left] at (20.5, 0.6) {ZR12}; + \pic at (20.5, 0) {route_signal_forward}; + \node[left] at (20.5,-0.4) {ZR11}; + \pic at (20.5,-1) {route_signal_forward}; + \node[left] at (20.5,-1.4) {ZR10}; + \pic at (21. , 4) {shunt_signal_backward}; + \node[right] at (21. , 4.4) {W12Y}; + \pic at (25. ,1) {route_signal_backward}; + \node[right] at (25. , 1.4) {ZU2}; + \pic at (25. ,0) {route_signal_backward}; + \node[right] at (25. , 0.4) {ZU1}; + + \pic at (35. ,-1.5) {shunt_signal_backward}; + \node[right] at (35. ,-1.1) {W20Y}; + \pic at (33.5,0) {route_signal_forward}; + \node[left] at (33.5,-0.4) {N1}; + \pic at (33.5,1) {route_signal_forward}; + \node[left] at (33.5, 0.6) {N2}; + \pic at (37.5,1) {shunt_signal_backward}; + \node[right] at (37.5,1.4) {W22Y}; + \pic at (39.0,1) {shunt_limit_forward}; + \pic at (41.0,0) {route_signal_backward}; + \node[right] at (41.0, 0.4) {FF}; + \pic at (41.0,1) {route_signal_backward}; + \node[right] at (41.0, 1.4) {F}; +} +{ %% hectometer posts + \tikzset{every node/.style={base00,rotate=-90},every path/.style={base00,dashed}}; + % \draw (01.0,-0.85) -- ++(0,-0.7) node [right,align= left] {15.000}; +} \ No newline at end of file diff --git a/examples/station_pockelsdorf.pdf b/examples/station_pockelsdorf.pdf new file mode 100644 index 0000000..993abaf Binary files /dev/null and b/examples/station_pockelsdorf.pdf differ diff --git a/examples/station_pockelsdorf.tex b/examples/station_pockelsdorf.tex new file mode 100644 index 0000000..aa957e1 --- /dev/null +++ b/examples/station_pockelsdorf.tex @@ -0,0 +1,21 @@ +%!TEX TS-program = pdflatexmk + +% Copyright 2018 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. + +\documentclass[tikz,border=2]{standalone} + +\usepackage{lmodern} +\usepackage[prefix=]{xcolor-solarized} + +\def\rootTrackschematic{../../tikz-trackschematic} +\def\srcTrackschematic{\rootTrackschematic/src} +\input{\srcTrackschematic/topology.tikz} +\input{\srcTrackschematic/trafficControl.tikz} +\input{\srcTrackschematic/constructions.tikz} + +\begin{document} + \begin{tikzpicture}[font=\sffamily] + \input{station_pockelsdorf.tikz} + \end{tikzpicture} +\end{document} \ No newline at end of file diff --git a/examples/station_pockelsdorf.tikz b/examples/station_pockelsdorf.tikz new file mode 100644 index 0000000..3842f88 --- /dev/null +++ b/examples/station_pockelsdorf.tikz @@ -0,0 +1,106 @@ +%!TEX TS-program = pdflatexmk +%!TEX root = station_pockelsdorf.tex + +% Copyright 2018 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. + +%% coordinates +\coordinate (P2R) at ( 0, 0); % track to Rebenau +\coordinate (P2M) at ( 3,-4); % track to Mittelstadt +\coordinate (P2S) at (28, 0); % track to Schleinitz + +{ %% stations + \tikzset{every node/.style={base00}}; + \node[right,align=left] at ( 0, 1) {to and from\\ Rebenau}; + \node[left,align=right] at ( 3,-3) {to and from\\ Mittelstadt}; + \node at (13.5,3.3) {{\LARGE Pockelsdorf}}; + \node[right,align=left] at (26.5,-1.5) {Sidings}; + \node[left,align=right] at (28,1) {to and from\\ Schleinitz}; +} +{ %% tracks + \draw[MainTrack] ( P2R) -- (P2S); % track 1 + \draw[MainTrack] ( 5,0) -- ++(1,1) -- ++(14,0) -- ++(1,-1); % track 2 + \draw[MainTrack] ( 7,1) -- ++(1,1) -- ++(11,0) -- ++(1,-1); % track 3 + \draw[MainTrack] ( P2M) -- ++(5,5); + \draw[SideTrack] (22,0) -- ++(1.5,-1.5) -- ++(3,0); % track 10 +} +{ %% track numbers + \node[fill=background] at (13.5, 0) { 1}; + \node[fill=background] at (13.5, 1) { 2}; + \node[fill=background] at (13.5, 2) { 3}; + \node[fill=background] at (26. ,-1.5) {10}; +} +{ %% bufferstops + % \pic at ( 9, 1) {bufferstop_backward}; +} +{ %% turnouts + \pic at ( 5,0) {turnout_left_forward}; + \node at ( 5,-0.2) {\footnotesize W1}; + % \pic at ( 5,0) {fouling_point_left_forward}; + \pic at ( 7,1) {turnout_left_forward}; + \node at ( 7,0.8) {\footnotesize W2}; + % \pic at ( 7,1) {fouling_point_left_forward}; + \pic at ( 7,0) {turnout_left_forward}; + \pic at ( 7,0) {turnout_left_backward}; + \pic at ( 7,0) {slip_left_backward}; + \node[left,align=right] at (6.7, 0.2) {\footnotesize W3ab}; + \node[right,align=left] at (7.3,-0.2) {\footnotesize W3cd}; + % \pic at ( 7,0) {fouling_point_left_forward}; + % \pic at ( 7,0) {fouling_point_left_backward}; + \pic at ( 8,1) {turnout_left_backward}; + \node at ( 8,1.2) {\footnotesize W4}; + % \pic at ( 8,1) {fouling_point_left_backward}; + + \pic at (20,1) {turnout_right_backward}; + \node[right,align=left] at (19.9,1.2) {\footnotesize W5}; + % \pic at (20,1) {fouling_point_left_backward}; + \pic at (21,0) {turnout_right_backward}; + \node at (21,-0.2) {\footnotesize W6}; + % \pic at (21,0) {fouling_point_left_backward}; + \pic at (22,0) {turnout_right_forward}; + \node at (22,0.2) {\footnotesize W7}; + % \pic at (22,0) {fouling_point_left_forward}; + \pic at (24. ,-1.5) {derailer_left_backward}; + \node[right,align=left] at (24. ,-1.7) {\footnotesize Gs10}; +} +{ %% platforms + \pic at (10.5,0) {platform_right=6}; + \pic at (10.5,1) {platform_left=6}; + \pic at (10.5,2) {platform_right=6}; +} +{ %% signals + \pic at ( 1,0) {route_signal_forward}; + \node[left] at (1,-0.4) {A}; + \pic at ( 3,0) {shunt_limit_backward}; + \pic at ( 4,0) {shunt_signal_forward}; + \node[left] at ( 4,-0.4) {W1X}; + \pic[rotate=45] at (3.75,-3.25) {route_signal_forward}; + \node[left,rotate=45] at (4.05,-3.55) {B}; + \pic[rotate=45] at (5.25,-1.75) {shunt_limit_backward}; + \pic[rotate=45] at (6 ,-1 ) {shunt_signal_forward}; + \node[left,rotate=45] at (6.3,-1.3) {W3X}; + \pic at (9.5,0) {route_signal_backward}; + \node[right] at (9.5, 0.4) {P1}; + \pic at (9.5,1) {route_signal_backward}; + \node[right] at (9.5, 1.4) {P2}; + \pic at (9.5,2) {route_signal_backward}; + \node[right] at (9.5, 2.4) {P3}; + + \pic at (17.5,0) {route_signal_forward}; + \node[left] at (17.5,-0.4) {N1}; + \pic at (17.5,1) {route_signal_forward}; + \node[left] at (17.5, 0.6) {N2}; + \pic at (17.5,2) {route_signal_forward}; + \node[left] at (17.5, 1.6) {N3}; + \pic at (23.0,0) {shunt_signal_backward}; + \node[right] at (23,0.4) {W7Y}; + \pic at (25. ,-1.5) {shunt_signal_backward}; + \node[right] at (25. ,-1.1) {W10Y}; + \pic at (25.0,0) {shunt_limit_forward}; + \pic at (27.0,0) {route_signal_backward}; + \node[right] at (27.0, 0.4) {G}; +} +{ %% hectometer posts + \tikzset{every node/.style={base00,rotate=-90},every path/.style={base00,dashed}}; + % \draw (01.0,-0.85) -- ++(0,-0.7) node [right,align= left] {15.000}; +} \ No newline at end of file diff --git a/examples/station_rebenau.pdf b/examples/station_rebenau.pdf index 9498d4e..ff7908a 100644 Binary files a/examples/station_rebenau.pdf and b/examples/station_rebenau.pdf differ diff --git a/examples/station_rebenau.tikz b/examples/station_rebenau.tikz new file mode 100644 index 0000000..fd73e5e --- /dev/null +++ b/examples/station_rebenau.tikz @@ -0,0 +1,217 @@ +%!TEX TS-program = pdflatexmk +%!TEX root = station_rebenau.tex + +% Copyright 2018 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. + +%% coordinates +\coordinate (R2W-1) at ( 0,0); % track 1 to Wenden +\coordinate (R2W-2) at ( 0,1); % track 2 to Wenden +\coordinate (R2P) at (42,4); % track to Pockelsdorf +\coordinate (R2O-1) at (42,0); % track 1 to Okerbach +\coordinate (R2O-2) at (42,1); % track 2 to Okerbach + +{ %% stations + \tikzset{every node/.style={base00}}; + \node[right,align=left] at ( 0,2) {to and from\\ Wenden}; + \node[left,align=right] at ( 8,4.0) {Sidings}; + \node at (22.5,6.3) {{\LARGE Rebenau}}; + \node[left,align=right] at (42,2) {to and from\\ Okerbach}; + \node[left,align=right] at (42,5) {to and from\\ Pockelsdorf}; +} +{ %% tracks + \draw[MainTrack] (R2W-1) -- (R2O-1); % track 1 + \draw[MainTrack] ( 5, 0) -- ++( 1, 1); + \draw[MainTrack] (R2W-2) -- ++( 8, 0) -- ++(2,2) -- ++(26,0) -- ++(2,-2) -- (R2O-2); % track 3 + \draw[SideTrack] ( 9, 1) -- ++( 6, 0); % track 21 + \draw[SideTrack] ( 8, 4) -- ++( 7, 0); % track 41 + \draw[SideTrack] (12, 4) -- ++( 1,-1); + \draw[MainTrack] (14, 3) -- (15, 4) -- (R2P); % track 4 + \draw[MainTrack] (14, 0) -- ++( 1, 1) -- ++(18, 0); % track 2 + \draw[MainTrack] (15, 3) -- ++( 2,-2); + \draw[MainTrack] (16, 4) -- (17, 5) -- (29, 5) -- ++(5,-5); % track 5 + \draw[MainTrack] (28, 1) -- ++( 1, 1) -- ++( 5, 0) -- ++(2, 2); + \draw[SideTrack] (26, 5) -- ++( 1, 1) -- ++( 3, 0); % track 51 +} +{ %% track numbers + \node[fill=background] at ( 9.0, 4) {41}; + \node[fill=background] at (10.0, 1) {21}; + \node[fill=background] at (22.5, 0) { 1}; + \node[fill=background] at (22.5, 1) { 2}; + \node[fill=background] at (22.5, 3) { 3}; + \node[fill=background] at (22.5, 4) { 4}; + \node[fill=background] at (22.5, 5) { 5}; + \node[fill=background] at (29.0, 6) {51}; +} +{ %% bufferstops + \pic at ( 9, 1) {bufferstop_backward}; + \pic at (30, 6) {bufferstop_forward}; +} +{ %% turnouts + \pic at ( 5,0) {turnout_left_forward}; + \node at ( 5,-0.2) {\footnotesize W1}; + % \pic at ( 5,0) {fouling_point_left_forward}; + \pic at ( 6,1) {turnout_left_backward}; + \node at ( 6,1.2) {\footnotesize W2}; + % \pic at ( 6,1) {fouling_point_left_backward}; + \pic at (11,4) {derailer_left_forward}; + \node[left,align=right] at (11.1,4.2) {\footnotesize Gs41}; + \pic at (12,4) {turnout_right_forward}; + \node at (12,4.2) {\footnotesize W3}; + % \pic at (12,4) {fouling_point_right_forward}; + \pic at (13,3) {turnout_right_backward}; + \node at (13,2.8) {\footnotesize W4}; + % \pic at (13,3) {fouling_point_right_backward}; + \pic at (14,3) {turnout_left_forward}; + \node at (14,2.8) {\footnotesize W5}; + % \pic at (14,3) {fouling_point_left_forward}; + \pic at (15,4) {turnout_left_backward}; + \node at (15,4.2) {\footnotesize W6}; + % \pic at (15,4) {fouling_point_left_backward}; + \pic at (14,0) {turnout_left_forward}; + \node at (14,-0.2) {\footnotesize W10}; + % \pic at (14.0,0) {fouling_point_left_forward}; + \pic at (15,1) {turnout_left_backward}; + \node at (15,1.2) {\footnotesize W11}; + % \pic at (15,1) {fouling_point_left_backward}; + \pic at (14,1) {derailer_left_forward}; + \node[left,align=right] at (14.1,1.2) {\footnotesize Gs21}; + \pic at (15,3) {turnout_right_forward}; + \node at (15,3.2) {\footnotesize W8}; + % \pic at (15,3) {fouling_point_right_forward}; + \pic at (16,4) {turnout_left_forward}; + \node at (16,3.8) {\footnotesize W7}; + % \pic at (16,4) {fouling_point_left_forward}; + \pic at (17,1) {turnout_right_backward}; + \node at (17,0.8) {\footnotesize W9}; + % \pic at (17,1) {fouling_point_right_backward}; + + \pic at (28,1) {turnout_left_forward}; + \node at (28,0.8) {\footnotesize W15}; + % \pic at (28,1) {fouling_point_left_forward}; + \pic at (26,5) {turnout_left_forward}; + \node at (26,4.8) {\footnotesize W12}; + % \pic at (28,5) {fouling_point_right_forward}; + \pic [rotate=45] at (26.7,5.7) {derailer_right_backward}; + \node[right,align=left] at (26.8,5.6) {\footnotesize Gs51}; + \pic at (30,4) {turnout_right_forward}; + \pic at (30,4) {turnout_right_backward}; + \pic at (30,4) {slip_right_forward}; + \pic at (30,4) {slip_right_backward}; + \node[left,align=right] at (29.7,4.2) {\footnotesize W13ab}; + \node[right,align=left] at (30.3,3.8) {\footnotesize W13cd}; + % \pic at (30,4) {fouling_point_right_backward}; + % \pic at (30,4) {fouling_point_right_forward}; + \pic at (31,3) {turnout_right_forward}; + \pic at (31,3) {turnout_right_backward}; + \pic at (31,3) {slip_right_forward}; + \pic at (31,3) {slip_right_backward}; + \node[left,align=right] at (30.7,3.2) {\footnotesize W14ab}; + \node[right,align=left] at (31.3,2.8) {\footnotesize W14cd}; + % \pic at (31,3) {fouling_point_right_backward}; + % \pic at (31,3) {fouling_point_right_forward}; + \pic at (32,2) {turnout_right_forward=none}; + \pic at (32,2) {turnout_right_backward=none}; + \node[right,align=left] at (31.9,2.2) {\footnotesize K16}; + % \pic at (32,2) {fouling_point_right_backward}; + % \pic at (32,2) {fouling_point_right_forward}; + \pic at (33,1) {turnout_right_backward}; + \node[right,align=left] at (32.9,1.2) {\footnotesize W17}; + % \pic at (33,1) {fouling_point_right_backward}; + \pic at (34,0) {turnout_right_backward}; + \node at (34,-0.2) {\footnotesize W18}; + % \pic at (34,0) {fouling_point_right_backward}; + \pic at (35,3) {turnout_left_forward}; + \pic at (35,3) {turnout_left_backward}; + \pic at (35,3) {slip_left_forward}; + \pic at (35,3) {slip_left_backward}; + \node[left,align=right] at (34.7,2.8) {\footnotesize W19ab}; + \node[right,align=left] at (35.3,3.2) {\footnotesize W19cd}; + % \pic at (35,3) {fouling_point_left_backward}; + % \pic at (35,3) {fouling_point_left_forward}; + \pic at (36,4) {turnout_left_backward}; + \node at (36,4.2) {\footnotesize W20}; + % \pic at (36,4) {fouling_point_left_backward}; +} +{ %% platforms + \pic at (19.5,0) {platform_right=6}; + \pic at (19.5,1) {platform_left=6}; + \pic at (19.5,3) {platform_right=6}; +} +{ %% signals + \pic at ( 1,0) {route_signal_forward}; + \node[left] at (1,-0.4) {A}; + \pic at ( 1,1) {route_signal_forward}; + \node[left] at (1, 0.6) {AA}; + \pic at ( 3,0) {shunt_limit_backward}; + \pic at ( 4,0) {shunt_signal_forward}; + \node[left] at ( 4,-0.4) {W1X}; + \pic at ( 7,1) {shunt_signal_backward}; + \node[right] at ( 7, 1.4) {W2Y}; + \pic at ( 7,0) {shunt_signal_backward}; + \node[right] at ( 7, 0.4) {W1Y}; + \pic at (11,3) {shunt_signal_forward}; + \node[left] at (11, 2.6) {W4X}; + \pic at (10,4) {shunt_signal_forward}; + \node[left] at (10, 3.6) {41X}; + \pic at (13,0) {shunt_signal_forward}; + \node[left] at (13,-0.4) {W10X}; + \pic at (13,1) {shunt_signal_forward}; + \node[left] at (13, 0.6) {21X}; + \pic at (18.5,0) {route_signal_backward}; + \node[right] at (18.5, 0.4) {P1}; + \pic at (18.5,1) {route_signal_backward}; + \node[right] at (18.5, 1.4) {P2}; + \pic at (18.5,3) {route_signal_backward}; + \node[right] at (18.5, 3.4) {P3}; + \pic at (18.5,4) {route_signal_backward}; + \node[right] at (18.5, 4.4) {P4}; + \pic at (18.5,5) {route_signal_backward}; + \node[right] at (18.5, 5.4) {P5}; + + \pic at (24.5,5) {route_signal_forward}; + \node[left] at (24.5, 4.6) {N5}; + \pic at (26.5,1) {route_signal_forward}; + \node[left] at (26.5, 0.6) {N2}; + \pic at (26.5,3) {route_signal_forward}; + \node[left] at (26.5, 2.6) {N3}; + \pic at (26.5,4) {route_signal_forward}; + \node[left] at (26.5, 3.6) {N4}; + \pic at (27.5,6) {shunt_signal_backward}; + \node[right] at ( 27.5, 6.4) {51Y}; + \pic at (30.0,0) {route_signal_forward}; + \node[left] at (30.0,-0.4) {N1}; + \pic at (35.0,0) {shunt_signal_backward}; + \node[right] at ( 35, 0.4) {W18Y}; + \pic[rotate=-45] at (36.8,2.2) {shunt_signal_backward}; + \node[right,rotate=-45] at ( 37.0, 2.5) {W19Y}; + \pic at (37.0,4) {shunt_signal_backward}; + \node[right] at ( 37, 4.4) {W20Y}; + \pic at (39.0,1) {shunt_limit_forward}; + \pic at (39.0,4) {shunt_limit_forward}; + \pic at (41.0,0) {route_signal_backward}; + \node[right] at (41.0, 0.4) {FF}; + \pic at (41.0,1) {route_signal_backward}; + \node[right] at (41.0, 1.4) {F}; + \pic at (41.0,4) {route_signal_backward}; + \node[right] at (41.0, 4.4) {G}; +} +{ %% hectometer posts + \tikzset{every node/.style={base00,rotate=-90},every path/.style={base00,dashed}}; + \draw (01.0,-0.85) -- ++(0,-0.7) node [right,align= left] {15.000}; + \draw (14.5,-0.85) -- ++(0,-0.7) node [right,align= left] {15.800}; + \draw (14.5, 4.35) -- ++(0, 1.2) node [ left,align=right] {15.800}; + \draw (15.8,-0.35) -- ++(0,-1.2) node [right,align= left] {15.900}; + \draw (15.8, 4.35) -- ++(0, 1.2) node [ left,align=right] {15.900}; + \draw (18.5,-0.35) -- ++(0,-1.2) node [right,align= left] {16.000}; + \draw (22.5,-0.85) -- ++(0,-0.7) node [right,align= left] {16.300}; + \draw (24.5, 5.35) -- ++(0, 0.7) node [ left,align=right] {16.400}; + \draw (26.5,-0.35) -- ++(0,-1.2) node [right,align= left] {16.500}; + \draw (30.0,-0.85) -- ++(0,-0.7) node [right,align= left] {16.600}; + \draw (30.0, 6.35) -- ++(0, 0.3) node [ left,align=right] {16.600}; + \draw (30.0, 4.75) -- ++(0, 0.7); + \draw (31.5,-0.85) -- ++(0,-0.7) node [right,align= left] {16.700}; + \draw (31.5, 4.35) -- ++(0, 0.7) node [ left,align=right] {16.700}; + \draw (33.3,-0.35) -- ++(0,-1.2) node [right,align= left] {16.800}; + \draw (41.0,-0.35) -- ++(0,-1.2) node [right,align= left] {17.200}; +} \ No newline at end of file diff --git a/examples/station_schleinitz.pdf b/examples/station_schleinitz.pdf new file mode 100644 index 0000000..e1a3fe0 Binary files /dev/null and b/examples/station_schleinitz.pdf differ diff --git a/examples/station_schleinitz.tex b/examples/station_schleinitz.tex new file mode 100644 index 0000000..79ef126 --- /dev/null +++ b/examples/station_schleinitz.tex @@ -0,0 +1,21 @@ +%!TEX TS-program = pdflatexmk + +% Copyright 2018 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. + +\documentclass[tikz,border=2]{standalone} + +\usepackage{lmodern} +\usepackage[prefix=]{xcolor-solarized} + +\def\rootTrackschematic{../../tikz-trackschematic} +\def\srcTrackschematic{\rootTrackschematic/src} +\input{\srcTrackschematic/topology.tikz} +\input{\srcTrackschematic/trafficControl.tikz} +\input{\srcTrackschematic/constructions.tikz} + +\begin{document} + \begin{tikzpicture}[font=\sffamily] + \input{station_schleinitz.tikz} + \end{tikzpicture} +\end{document} \ No newline at end of file diff --git a/examples/station_schleinitz.tikz b/examples/station_schleinitz.tikz new file mode 100644 index 0000000..5d8bc0f --- /dev/null +++ b/examples/station_schleinitz.tikz @@ -0,0 +1,172 @@ +%!TEX TS-program = pdflatexmk +%!TEX root = station_schleinitz.tex + +% Copyright 2018 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. + +%% coordinates +\coordinate (S2O-1) at ( 0, 0); % track 1 to Okerbach +\coordinate (S2O-2) at ( 0, 1); % track 2 to Okerbach +\coordinate (S2P) at ( 0,-4); % track to Pockelsdorf +\coordinate (S2SB-1) at (44, 0); % track 1 to Schlossberg +\coordinate (S2SB-2) at (44, 1); % track 2 to Schlossberg + +{ %% stations + \tikzset{every node/.style={base00}}; + \node[right,align=left] at ( 0,2) {to and from\\ Okerbach}; + % \node[left,align=right] at ( 8,4.0) {Sidings}; + \node at ( 5.0,3.3) {{\LARGE Abzw Bülten}}; + \node at (30.0,5.3) {{\LARGE Schleinitz}}; + \node[left,align=right] at (44,2) {to and from\\ Schlossberg}; + \node[left,align=right,rotate=45] at (2,-1) {to and from\\ Pockelsdorf}; +} +{ %% tracks + \draw[MainTrack] (S2O-1) -- (S2SB-1); % track 2 + \draw[MainTrack] (S2O-2) -- (S2SB-2); % track 3 + \draw[MainTrack] (S2P) -- ++( 4, 4); % track to pockelsdorf + \draw[MainTrack] ( 5, 0) -- ++( 1, 1); % track W2/W3 + \draw[MainTrack] (16, 1) -- ++( 1,-1); % track W4/W5 + \draw[MainTrack] (18, 0) -- ++( 1, 1); % track W6/W7 + \draw[SideTrack] (23, 2) -- ++( -5, 0); % track 41 + \draw[MainTrack] (22, 0) -- ++( 1,-1) -- ++(13. ,0) -- ++( 1. , 1); % track 1 + \draw[MainTrack] (22, 1) -- ++( 1, 1) -- ++(13. ,0) -- ++( 1. ,-1); % track 4 + \draw[SideTrack] (24, 2) -- ++( 1, 1) -- ++(10. ,0) -- ++( 1. ,-1); % track 5 + \draw[SideTrack] (36,-1) -- ++( 5, 0); % track 11 + \draw[MainTrack] (38, 1) -- ++( 1,-1); % track W18/W19 +} +{ %% track numbers + \node[fill=background] at (19.0, 2) {41}; + \node[fill=background] at (30.0,-1) { 1}; + \node[fill=background] at (30.0, 0) { 2}; + \node[fill=background] at (30.0, 1) { 3}; + \node[fill=background] at (30.0, 2) { 4}; + \node[fill=background] at (30.0, 3) { 5}; + \node[fill=background] at (40.0,-1) {11}; +} +{ %% bufferstops + \pic at ( 18, 2) {bufferstop_backward}; + \pic at ( 41,-1) {bufferstop_forward}; +} +{ %% turnouts + \pic at ( 4,0) {turnout_left_backward}; + \node at ( 4,0.2) {\footnotesize W1}; + % \pic at ( 4,0) {fouling_point_left_backward}; + \pic at ( 5,0) {turnout_left_forward}; + \node at ( 5,-0.2) {\footnotesize W2}; + % \pic at ( 5,0) {fouling_point_left_forward}; + \pic at ( 6,1) {turnout_left_backward}; + \node at ( 6,1.2) {\footnotesize W3}; + % \pic at ( 6,1) {fouling_point_left_backward}; + \pic at (16,1) {turnout_right_forward}; + \node at (16,1.2) {\footnotesize W4}; + % \pic at (16,1) {fouling_point_right_forward}; + \pic at (17,0) {turnout_right_backward}; + \node at (17,-0.2) {\footnotesize W5}; + % \pic at (17,0) {fouling_point_right_backward}; + \pic at (18,0) {turnout_left_forward}; + \node at (18,-0.2) {\footnotesize W6}; + % \pic at (18,0) {fouling_point_left_forward}; + \pic at (19,1) {turnout_left_backward}; + \node at (19,1.2) {\footnotesize W7}; + % \pic at (19,1) {fouling_point_left_backward}; + \pic at (22,0) {turnout_right_forward}; + \node at (22,0.2) {\footnotesize W8}; + % \pic at (22,0) {fouling_point_right_forward}; + \pic at (22,1) {turnout_left_forward}; + \node at (22,0.8) {\footnotesize W9}; + % \pic at (22,1) {fouling_point_left_forward}; + \pic at (22,2) {derailer_left_forward}; + \node[left,align=right] at (22,1.8) {\footnotesize Gs10}; + \pic at (23,2) {turnout_left_backward}; + \node at (23,2.2) {\footnotesize W11}; + % \pic at (23,2) {fouling_point_left_backward}; + \pic at (24,2) {turnout_left_forward}; + \node at (24,1.8) {\footnotesize W12}; + % \pic at (24,2) {fouling_point_left_forward}; + + \pic at (36,-1) {turnout_left_forward}; + \node at (36,-1.2) {\footnotesize W13}; + % \pic at (36,-1) {fouling_point_left_forward}; + \pic at (36,2) {turnout_right_backward}; + \node[right,align=left] at (35.9,2.2) {\footnotesize W14}; + % \pic at (17,0) {fouling_point_right_backward}; + \pic at (37,1) {turnout_right_backward}; + \node at (37,0.8) {\footnotesize W17}; + % \pic at (37,1) {fouling_point_right_backward}; + \pic at (37,0) {turnout_left_backward}; + \node at (37,0.2) {\footnotesize W16}; + % \pic at (37,0) {fouling_point_left_backward}; + \pic at (37,-1) {derailer_left_backward}; + \node[right,align=left] at (37,-1.2) {\footnotesize Gs15}; + \pic at (38,1) {turnout_right_forward}; + \node at (38,1.2) {\footnotesize W18}; + % \pic at (38,1) {fouling_point_right_forward}; + \pic at (39,0) {turnout_right_backward}; + \node at (39,-0.2) {\footnotesize W19}; + % \pic at (39,0) {fouling_point_right_backward}; +} +{ %% platforms + \pic at (27,0) {platform_left=6}; + \pic at (27,1) {platform_right=6}; +} +{ %% signals + \pic at ( 2,0) {route_signal_forward}; + \node[left] at (2,-0.4) {19}; + \pic at ( 2,1) {route_signal_forward}; + \node[left] at (2, 0.6) {39}; + \pic[rotate=45] at (2.25,-1.75) {route_signal_forward}; + \node[left,rotate=45] at (2.5,-2.0) {49}; + \pic at ( 8,0) {route_signal_backward}; + \node[right] at (8, 0.4) {20}; + \pic at ( 8,1) {route_signal_backward}; + \node[right] at (8, 1.4) {30}; + \pic at (12,0) {route_signal_forward}; + \node[left] at (12,-0.4) {A}; + \pic at (12,1) {route_signal_forward}; + \node[left] at (12, 0.6) {AA}; + \pic at (14,0) {shunt_limit_backward}; + \pic at (15,0) {shunt_signal_forward}; + \node[left] at (15,-0.4) {W5X}; + \pic at (15,1) {shunt_signal_forward}; + \node[left] at (15, 0.6) {W4X}; + \pic at (21,1) {shunt_signal_forward}; + \node[left] at (21, 0.6) {W9X}; + \pic at (20.5,2) {shunt_signal_forward}; + \node[left] at (20.5, 1.6) {W10X}; + \pic at (24,-1) {route_signal_backward}; + \node[right] at (24,-0.6) {P1}; + \pic at (24, 0) {route_signal_backward}; + \node[right] at (24, 0.4) {P2}; + \pic at (26, 1) {route_signal_backward}; + \node[right] at (26, 1.4) {P3}; + \pic at (26, 2) {route_signal_backward}; + \node[right] at (26, 2.4) {P4}; + \pic at (26, 3) {shunt_signal_backward}; + \node[right] at (26, 3.4) {W12Y}; + + \pic at (34, 3) {shunt_signal_forward}; + \node[left] at (34, 2.6) {W14X}; + \pic at (34, 2) {route_signal_forward}; + \node[left] at (34, 1.6) {N4}; + \pic at (34, 1) {route_signal_forward}; + \node[left] at (34, 0.6) {N3}; + \pic at (34, 0) {route_signal_forward}; + \node[left] at (34,-0.4) {N2}; + \pic at (34,-1) {route_signal_forward}; + \node[left] at (34,-1.4) {N1}; + \pic at (38,-1) {shunt_signal_backward}; + \node[right] at (38,-0.6) {W15Y}; + \pic at (40,0) {shunt_signal_backward}; + \node[right] at (40,0.4) {W18Y}; + \pic at (40,1) {shunt_signal_backward}; + \node[right] at (40,1.4) {W19Y}; + \pic at (41.5,1) {shunt_limit_forward}; + \pic at (43.5,0) {route_signal_backward}; + \node[right] at (43.5, 0.4) {FF}; + \pic at (43.5,1) {route_signal_backward}; + \node[right] at (43.5, 1.4) {F}; +} +{ %% hectometer posts + \tikzset{every node/.style={base00,rotate=-90},every path/.style={base00,dashed}}; + % \draw (01.0,-0.85) -- ++(0,-0.7) node [right,align= left] {15.000}; +} \ No newline at end of file diff --git a/overview.pdf b/overview.pdf index 36a71b8..69eea4e 100644 Binary files a/overview.pdf and b/overview.pdf differ diff --git a/overview.tex b/overview.tex index fd5d355..99de305 100644 --- a/overview.tex +++ b/overview.tex @@ -7,8 +7,9 @@ \usepackage[margin=0pt]{geometry} \pagestyle{empty} -\usepackage{longtable} -\usepackage{tikz} +\usepackage{tabu,longtable} +\usepackage{tikz,adjustbox} +\usepackage{siunitx} \usepackage{listings} \lstset{ language=TeX, @@ -22,10 +23,10 @@ \renewcommand{\symbol}[1]{ - \begin{tikzpicture}[anchor=base,baseline=-3] + \adjustbox{valign=c}{\begin{tikzpicture}[scale=1.0,transform shape] \input{examples/snippets/#1} - \path (-3,-1.2) rectangle (3,1.2); % background rectangle to unify every cell containing a symbol - \end{tikzpicture} + \path (-3,-1.1) rectangle (3,1.1); % background rectangle to unify every cell containing a symbol + \end{tikzpicture}} } \newcommand{\code}[1]{\lstinputlisting[firstline=7]{\rootTrackschematic/examples/snippets/#1}} \newcommand{\colorsquare}[1]{ @@ -43,7 +44,7 @@ \begin{document} \centering - \begin{longtable}{|r|l|c|l|c|} + \begin{longtabu}{|r|l|c|l|c|} \hline No. & Name & Symbol & Code & File \\ \endhead @@ -51,8 +52,13 @@ \No & main track & \symbol{main_track.tikz} & \code{main_track.tikz} & \texttt{topology.tikz} \\ \hline \No & main line (double track) & \symbol{main_line.tikz} & \code{main_line.tikz} & \texttt{topology.tikz} \\ + \hline + \No & track distance (in \si{\metre}) & \symbol{track_distance.tikz} & \code{track_distance.tikz} & \texttt{topology.tikz} \\ \hline \No & side track & \symbol{side_track.tikz} & \code{side_track.tikz} & \texttt{topology.tikz} \\ + \hline + \No & track number & \symbol{track_number.tikz} & \code{track_number.tikz} + & \texttt{topology.tikz} \\ \hline \No & turnout left (forward) & \symbol{turnout_left_forward.tikz} & \code{turnout_left_forward.tikz} & \texttt{topology.tikz} \\ \hline @@ -151,6 +157,9 @@ \No & route signal (forward) & \symbol{route_signal_forward.tikz} & \code{route_signal_forward.tikz} & \texttt{trafficControl.tikz} \\ \hline \No & route signal (backward) & \symbol{route_signal_backward.tikz} & \code{route_signal_backward.tikz} & \texttt{trafficControl.tikz} \\ + \hline + \No & \parbox[c]{4cm}{combined signal\\(distant and block signal)} + & \symbol{combined_signal_forward.tikz} & \code{combined_signal_forward.tikz} & \texttt{trafficControl.tikz} \\ \hline \No & shunt signal (forward) & \symbol{shunt_signal_forward.tikz} & \code{shunt_signal_forward.tikz} & \texttt{trafficControl.tikz} \\ \hline @@ -206,5 +215,9 @@ \No & \parbox[c]{5cm}{bridge\\with track beneath} & \symbol{bridge_track_beneath.tikz} & \code{bridge_track_beneath.tikz} & \texttt{constructions.tikz} \\ \hline - \end{longtable} + \No & hump & \symbol{hump.tikz} & \code{hump.tikz} & \texttt{constructions.tikz} \\ + \hline + \No & interlocking & \symbol{interlocking.tikz} & \code{interlocking.tikz} & \texttt{constructions.tikz} \\ + \hline + \end{longtabu} \end{document} \ No newline at end of file diff --git a/src/constructions.tikz b/src/constructions.tikz index 26d5edd..b9d4fed 100644 --- a/src/constructions.tikz +++ b/src/constructions.tikz @@ -70,3 +70,34 @@ }, pics/bridge_right/.default=3, } +\tikzset{ + interlocking/.pic={ + { + \path[draw, line width=1pt] (-0.6,-0.4 ) rectangle ++(1.2,0.8); % building + \path[draw, fill] (-0.5,-0.3 ) rectangle ++(1.0,0.2); % table + \path[draw, fill] ( 0 , 0.15) circle (0.15); % human dot + } + }; +} +\tikzset{ + hump/.pic={ + { % upper side + \path[draw, line width=0.75pt] (-0.3, 0.1) -- ++(0,0.05); + \path[draw, line width=0.75pt] (-0.2, 0.1) -- ++(0,0.15); + \path[draw, line width=0.75pt] (-0.1, 0.1) -- ++(0,0.25); + \path[draw, line width=0.75pt] ( 0.0, 0.1) -- ++(0,0.35); + \path[draw, line width=0.75pt] ( 0.1, 0.1) -- ++(0,0.25); + \path[draw, line width=0.75pt] ( 0.2, 0.1) -- ++(0,0.15); + \path[draw, line width=0.75pt] ( 0.3, 0.1) -- ++(0,0.05); + % lower side + \path[draw, line width=0.75pt] (-0.3,-0.1) -- ++(0,-0.05); + \path[draw, line width=0.75pt] (-0.2,-0.1) -- ++(0,-0.15); + \path[draw, line width=0.75pt] (-0.1,-0.1) -- ++(0,-0.25); + \path[draw, line width=0.75pt] ( 0.0,-0.1) -- ++(0,-0.35); + \path[draw, line width=0.75pt] ( 0.1,-0.1) -- ++(0,-0.25); + \path[draw, line width=0.75pt] ( 0.2,-0.1) -- ++(0,-0.15); + \path[draw, line width=0.75pt] ( 0.3,-0.1) -- ++(0,-0.05); + } + }; +} + diff --git a/src/graphSymbols.tikz b/src/graphSymbols.tikz index 8794f9d..13d7e83 100644 --- a/src/graphSymbols.tikz +++ b/src/graphSymbols.tikz @@ -24,8 +24,8 @@ \tikzset{ pics/colon/.style args={#1}{ code={ - \path[draw,line width=1pt,fill=white] (-0.1,0) circle (0.1); - \path[draw,line width=1pt,fill=white] ( 0.1,0) circle (0.1); + \path[draw,line width=1pt,fill=background] (-0.1,0) circle (0.1); + \path[draw,line width=1pt,fill=background] ( 0.1,0) circle (0.1); \node at (0,-0.3) {#1}; } }, @@ -34,56 +34,56 @@ \tikzset{ pics/connexity/.style args={#1/#2}{ code={ - \draw [#1,line width=#2,rounded corners=8pt,fill=white] (-0.5,-0.3) rectangle (0.5,0.3); + \draw [#1,line width=#2,rounded corners=8pt,fill=background] (-0.5,-0.3) rectangle (0.5,0.3); } }, pics/connexity/.default=blue/1pt, } \tikzset{ approach/.pic={ - \path[draw, fill=white] (0,-0.1) -- ++(0.1,0.2) -- ++(-0.2,0) -- cycle; % triangle shape + \path[draw, fill=background] (0,-0.1) -- ++(0.1,0.2) -- ++(-0.2,0) -- cycle; % triangle shape }; } \tikzset{ tee/.pic={ - \path[draw, fill=black] (0,0) circle (0.05); + \path[draw, fill] (0,0) circle (0.05); }; } \tikzset{ block_start/.pic={ - \path[draw, fill=white] (-0.1,-0.1) rectangle ++(0.2,0.2); + \path[draw, fill=background] (-0.1,-0.1) rectangle ++(0.2,0.2); }; } \tikzset{ block_clearing/.pic={ - \path[draw, fill=white] (-0.1,-0.1) rectangle ++(0.2,0.2); + \path[draw, fill=background] (-0.1,-0.1) rectangle ++(0.2,0.2); \path[draw] (-0.1,-0.1) -- ++(0.2,0.2); }; } \tikzset{ route_start/.pic={ - \path[draw, fill=white] (0,0) circle (0.1); + \path[draw, fill=background] (0,0) circle (0.1); }; } \tikzset{ route_clearing/.pic={ - \path [draw, fill=white] (0,0) circle (0.1); + \path [draw, fill=background] (0,0) circle (0.1); \draw (-0.07,-0.07) -- ++(0.14,0.14); }; } \tikzset{ block_end/.pic={ - \path[draw, fill=white] (0,-0.1) -- ++(0.1,0.1) -- ++(-0.1,0.1) -- ++(-0.1,-0.1) -- cycle; + \path[draw, fill=background] (0,-0.1) -- ++(0.1,0.1) -- ++(-0.1,0.1) -- ++(-0.1,-0.1) -- cycle; }; } \tikzset{ flank_protection/.pic={ - \path[draw, fill=white] (0:0.1) arc (0:180:0.1) -- cycle; + \path[draw, fill=background] (0:0.1) arc (0:180:0.1) -- cycle; }; } \tikzset{ train_berth/.pic={ - \path[draw, fill=white] (-0.1,-0.15) rectangle ++(0.2,0.3); + \path[draw, fill=background] (-0.1,-0.15) rectangle ++(0.2,0.3); \path[draw, line width=0.75pt] (-0.05,-0.1) -- ++(0 ,0.2); \path[draw, line width=0.75pt] (-0.05, 0 ) -- ++(0.1,0 ); \path[draw, line width=0.75pt] ( 0.05,-0.1) -- ++(0 ,0.2); diff --git a/src/timeDistanceDiagram.tikz b/src/timeDistanceDiagram.tikz new file mode 100644 index 0000000..7853141 --- /dev/null +++ b/src/timeDistanceDiagram.tikz @@ -0,0 +1,251 @@ +%% library for drawing time distance diagrams +% +% Copyright 2018 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. + +\RequirePackage{etoolbox,tikz} +\usetikzlibrary{calc} + +%%% --[ USAGE ]-- %%% +%% assumption: • acceleration curve ends at Block +%%% -- first, define infrastructure and setting: +% % infrastructure x-axis position +% \def\StationA{0} +% \def\BkOne{2} +% \def\BkTwo{4} +% \def\BkCThree{6} +% \def\StationB{8} +% % OPTIONs 1: infrastructure settings +% \def\SightingDistance{0.1} +% \def\ApproachDistance{0.3} +% \def\ClearingDistance{0.4} +% \def\InterlockingTime{0.1} +% \def\Latency{0.1} +% % OPTIONs 2: diagramm settings +% \toggletrue{blockingTime} +% \toggletrue{trainMarker} +% \togglefalse{blockingTimeParts} +% \togglefalse{DEBUG} +% \toggletrue{blockingTimeFill} +%% -- second, define driving regime and train: +% % driving regime +% \def\Segments{\StationA/\BkOne/\ModeAcceleration, \BkOne/\BkTwo/\ModeCoasting, \BkTwo/\BkThree/\ModeCoasting, \BkThree/\StationB/\ModeDeceleration} +% % train with #1 speed, #2 acceleration, #3 deceleration, #4 train length +% \pic at (0,-2.8) {train_path=4.0/0.5/0.5/1.0}; + + +% % infrastructure defaults +\def\SightingDistance{0.4} +\def\ApproachDistance{1.0} +\def\ClearingDistance{0.2} +\def\InterlockingTime{0.1} +\def\Latency{0.1} +% +\def\Segments{} +\def\ModeCoasting{Coasting} % Default +\def\ModeAcceleration{Acceleration} +\def\ModeDeceleration{Deceleration} +\edef\mCoast{\ModeCoasting} % synonym +\edef\mAcc{\ModeAcceleration} % synonym +\edef\mDec{\ModeDeceleration} % synonym +% +\newtoggle{DEBUG} +\newtoggle{blockingTime} +\newtoggle{blockingTimeParts} +\newtoggle{trainMarker} +\newtoggle{blockingTimeFill} +\newtoggle{StartStopMarker} +\newtoggle{Acceleration} +\newtoggle{Coasting} +\newtoggle{Deceleration} +% +\settoggle{DEBUG}{false} +\settoggle{blockingTime}{true} +\settoggle{trainMarker}{true} +\settoggle{blockingTimeParts}{false} +\settoggle{blockingTimeFill}{true} +\settoggle{StartStopMarker}{true} +\settoggle{Acceleration}{false} +\settoggle{Coasting}{true} +\settoggle{Deceleration}{false} + +\newcounter{stationNum} +\def\StationNum{\stepcounter{stationNum}\Alph{stationNum}} +\newcounter{blockNum} +\def\BlockNum{\stepcounter{blockNum}\stepcounter{blockNum}\arabic{blockNum}} +\setcounter{stationNum}{0} +\setcounter{blockNum}{0} +\newcommand\ifTrainRun{\expandafter\ifdefstrequal\expandafter} + +% DEBUG +\iftoggle{DEBUG}{ + \newcommand\xcoord[2][center]{{% + \pgfpointanchor{#2}{#1}% + \pgfmathparse{\pgf@x/\pgf@xx}% + \pgfmathprintnumber{\pgfmathresult}% + }} + \newcommand\ycoord[2][center]{{% + \pgfpointanchor{#2}{#1}% + \pgfmathparse{\pgf@y/\pgf@yy}% + \pgfmathprintnumber{\pgfmathresult}% + }} +} + +\tikzset{ + pics/train_path/.style args={#1/#2/#3/#4}{ + code={ + % settings + \def\Speed{#1} + \def\Accel{#2} + \def\Decel{#3} + \def\TrainLength{#4} + \foreach \PositionA/\PositionB/\mode in \Segments { + % test for running direction + \newdimen\dimPosA %You can not use floating variables. Use dimens instead + \dimPosA = \PositionA cm % expand variable to \dimexpr for test \ifdimcomp{\dimexpr}{<}{\dimexpr}{⟨true⟩}{⟨false⟩} + \newdimen\dimPosB + \dimPosB = \PositionB cm % expand variable to \dimexpr for test \ifdimcomp{\dimexpr}{<}{\dimexpr}{⟨true⟩}{⟨false⟩} + \ifdimcomp{\dimPosA}{<}{\dimPosB}{ + \def\Run{-1} % train running from left to right + }{ + \def\Run{1} % train running from right to left + } + % blocking time top part + \coordinate (basePosA) at ($(\PositionA,0) + ( 0,\Run*\PositionA*\Speed^-1)$); + \coordinate (basePosB) at ($(basePosA) + (\PositionB-\PositionA,0)$); + \coordinate (egressPosB) at ($(\PositionB,0) + ( 0,\Run*\PositionB*\Speed^-1)$); + \coordinate (egressPosA) at ($(egressPosB) + (\PositionA-\PositionB,0)$); + \ifTrainRun{\mode}{\ModeAcceleration}{ + % mode acceleration + \coordinate (entryPosA) at ($(basePosA) + 2*\Speed^-1*(0,\Accel^-1)$); + \coordinate (entryPosB) at ($(entryPosA) + (\PositionB-\PositionA,0)$); + \coordinate (entryVector) at ($(entryPosA)!0.75!(basePosA)$); + \coordinate (egressVector) at ($(basePosA)!0.25!(egressPosB)$); + \coordinate (sightingPosA) at ($(entryPosA) + ( 0,\Latency)$); + }{ + % mode coasting & deceleration + \coordinate (approachPosA) at ($(basePosA) + ( 0,\ApproachDistance*\Speed^-1)$); + \coordinate (approachPosB) at ($(approachPosA)+ (\PositionB-\PositionA,0)$); + \coordinate (sightingPosA) at ($(approachPosA)+ ( 0,\SightingDistance*\Speed^-1)$); + } + \coordinate (sightingPosB) at ($(sightingPosA)+ (\PositionB-\PositionA,0)$); + \coordinate (beginPosA) at ($(sightingPosA)+ ( 0,\InterlockingTime)$); + \coordinate (beginPosB) at ($(beginPosA) + (\PositionB-\PositionA,0)$); + % blocking time bottom part + \ifTrainRun{\mode}{\ModeDeceleration}{ + % mode deceleration + \coordinate (exitPosB) at ($(egressPosB) + 2*\Speed^-1*(0,-\Decel^-1)$); + \coordinate (exitPosA) at ($(exitPosB) + (\PositionA-\PositionB,0)$); + \coordinate (clearingPosB) at ($(exitPosB) + ( 0,-\Latency)$); + \coordinate (exitVector) at ($(egressPosB)!0.25!(exitPosB)$); + \coordinate (baseVector) at ($(basePosA)!0.75!(egressPosB)$); + }{ + % mode coasting & acceleration + \coordinate (clearingPosB) at ($(egressPosB) + ( 0,-\ClearingDistance*\Speed^-1-\TrainLength*\Speed^-1)$); + } + \coordinate (clearingPosA) at ($(clearingPosB)+ (\PositionA-\PositionB,0)$); + \coordinate (endPosB) at ($(clearingPosB)+ ( 0,-\InterlockingTime)$); + \coordinate (endPosA) at ($(endPosB) + (\PositionA-\PositionB,0)$); + % finished coord calc for train run + % + % draw blocking time + \iftoggle{blockingTime}{ + \iftoggle{blockingTimeFill}{ + \fill [fill opacity=0.1] (beginPosA) -- (endPosA) -- (endPosB) -- (beginPosB) -- cycle; + }{} + \draw (beginPosA) -- (endPosA) -- (endPosB) -- (beginPosB) -- cycle; + }{} + % debug + \iftoggle{DEBUG}{ + \togglefalse{trainMarker} + \ifdimcomp{\dimPosA}{<}{\dimPosB}{ + \node[right,align=left,red] at ($(\PositionA +1,-0.5)$) {train run left to right}; + \node[right,align=left,red] at ($(\PositionA +1,-1 )$) {mode: \mode}; + }{ + \node[right,align=left,red] at ($(\PositionB +1,+5.5)$) {train run right to left}; + \node[right,align=left,red] at ($(\PositionB +1,+5 )$) {mode: \mode}; + } + \ifTrainRun{\mode}{\ModeAcceleration}{ + % mode acceleration + \def\DebugPointsPosA{basePosA, entryPosA, entryVector, sightingPosA, beginPosA, egressPosA, egressVector, clearingPosA, endPosA} + \def\DebugPointsPosB{basePosB, entryPosB, sightingPosB, beginPosB, egressPosB, clearingPosB, endPosB} + \draw[blue] (entryPosA) .. controls (entryVector) and (egressVector) .. (egressPosB) node [fill=black!10,midway,sloped] {\tiny \mode}; + \draw[red,dashed] (entryPosA)-- (entryVector)-- (egressVector) -- (egressPosB) -- cycle (entryPosA)--(egressVector) (entryVector)--(egressPosB); + }{ + \ifTrainRun{\mode}{\ModeDeceleration}{ + % mode deceleration + \def\DebugPointsPosA{basePosA, approachPosA, sightingPosA, beginPosA, egressPosA, exitPosA, clearingPosA, endPosA} + \def\DebugPointsPosB{basePosB, approachPosB, sightingPosB, beginPosB, baseVector, egressPosB, exitVector, exitPosB, clearingPosB, endPosB} + \draw [blue] (basePosA) .. controls (baseVector) and (exitVector) .. (exitPosB) node [fill=black!10,midway,sloped] {\tiny \mode}; + \draw[red,dashed,thin] (basePosA)-- (baseVector)-- (exitVector) -- (exitPosB) -- cycle (basePosA)--(exitVector) (baseVector)--(exitPosB); + }{ + % mode coasting + \def\DebugPointsPosA{basePosA, approachPosA, sightingPosA, beginPosA, egressPosA, clearingPosA, endPosA} + \def\DebugPointsPosB{basePosB, approachPosB, sightingPosB, beginPosB, egressPosB, clearingPosB, endPosB} + \draw [blue] (basePosA) -- (egressPosB) node [fill=black!10,midway,sloped] {\tiny \mode}; + } + } + \ifdimcomp{\dimPosA}{<}{\dimPosB}{ + \foreach \point in \DebugPointsPosA + \draw [red] (\point) circle[radius=.03] (\point) node [left] {\tiny \point~(\xcoord{\point},\ycoord{\point})}; + \foreach \point in \DebugPointsPosB + \draw [red] (\point) circle[radius=.03] (\point) node [right] {\tiny \point~(\xcoord{\point},\ycoord{\point})}; + }{ + \foreach \point in \DebugPointsPosA + \draw [red] (\point) circle[radius=.03] (\point) node [right] {\tiny \point~(\xcoord{\point},\ycoord{\point})}; + \foreach \point in \DebugPointsPosB + \draw [red] (\point) circle[radius=.03] (\point) node [left] {\tiny \point~(\xcoord{\point},\ycoord{\point})}; + } + }{} + % draw blocking time parts + \iftoggle{blockingTimeParts}{ + \draw [line width=0.25pt] (sightingPosA) -- (sightingPosB); + \draw [line width=0.25pt] (clearingPosA) -- (clearingPosB); + \ifTrainRun{\mode}{\ModeAcceleration}{ + % mode acceleration + }{ + % mode deceleration & coasting + \draw [line width=0.25pt] (approachPosA) -- (approachPosB); + \draw [line width=0.25pt] (basePosA) -- (basePosB); + } + \ifTrainRun{\mode}{\ModeDeceleration}{ + % mode deceleration + }{ + % mode acceleration & coasting + \draw [line width=0.25pt] (egressPosA) -- (egressPosB); + } + }{} + % draw train path + \iftoggle{trainMarker}{ + \ifTrainRun{\mode}{\ModeAcceleration}{ + % mode acceleration + \draw [line width=1pt] (entryPosA) .. controls (entryVector) and (egressVector) .. (egressPosB); + }{ + \ifTrainRun{\mode}{\ModeDeceleration}{ + % mode deceleration + \draw [line width=1pt] (basePosA) .. controls (baseVector) and (exitVector) .. (exitPosB); + }{ + % mode coasting + \draw [line width=1pt] (basePosA) -- (egressPosB); + } + } + }{} + % draw start and stop marker + \iftoggle{StartStopMarker}{ + \ifTrainRun{\mode}{\ModeAcceleration}{ + % Start Marker + \tikzset{every path/.style={solid,thin}}; + \draw ($(entryPosA) + (0.1,0)$) -- ++(-0.2,0); + \draw (entryPosA) circle[radius=.05] (entryPosA); + }{} + \ifTrainRun{\mode}{\ModeDeceleration}{ + % Stop Marker + \tikzset{every path/.style={solid,thin}}; + \draw ($(exitPosB) + (0.1,0)$) -- ++(-0.2,0); + \draw (exitPosB) circle[radius=.05] (exitPosB); + }{} + }{} + } + }},pics/train_path/.default=4.0/0.5/0.5/2.0, +} \ No newline at end of file diff --git a/src/topology.tikz b/src/topology.tikz index dc6ff6b..9974c75 100644 --- a/src/topology.tikz +++ b/src/topology.tikz @@ -5,8 +5,27 @@ % 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. \tikzset{MainTrack/.style={line width=2pt}} -\tikzset{SideTrack/.style={line width=1pt}} +\tikzset{SideTrack/.style={line width=0.7pt}} +\colorlet{background}{white} +\tikzset{ + pics/track_number/.style args={#1}{ + code={ + \node[fill=background,font=\sffamily] at (0,0) {#1}; % speed indicator + } + }, + pics/track_number/.default=, +} +\tikzset{ + pics/track_distance/.style args={#1}{ + code={ + \fill (0,0.96) -- ++(-0.1,-0.15) -- ++(0.2,0) -- cycle; % upper triangle + \node[baseline=(current bounding box.center),font=\sffamily] at (0,0.5) {#1}; % distance indicator + \fill (0,0.04) -- ++(-0.1,0.15) -- ++(0.2,0) -- cycle; % lower triangle + } + }, + pics/track_distance/.default=, +} \tikzset{ pics/turnout_left_forward/.style args={#1}{ code={ diff --git a/src/trafficControl.tikz b/src/trafficControl.tikz index 0b51345..93741e5 100644 --- a/src/trafficControl.tikz +++ b/src/trafficControl.tikz @@ -76,7 +76,7 @@ pics/distant_signal_forward/.style args={#1}{ code={ \path[draw, line width=1pt] (0,0) -- ++(0,-0.4) -- ++(0.4,0); % signal pole - \path[draw, line width=1pt] (0.7,-0.6) -- ++(0,0.4) -- ++ (-0.35,-0.2) -- cycle; % signal marker + \path[draw, fill=background, line width=1pt] (0.7,-0.6) -- ++(0,0.4) -- ++ (-0.35,-0.2) -- cycle; % signal marker \node[rotate=-90,font=\sffamily] at (0.9,-0.4) {#1}; % speed indicator } }, @@ -86,7 +86,7 @@ pics/distant_signal_backward/.style args={#1}{ code={ \path[draw, line width=1pt] (0,0) -- ++(0,0.4) -- ++(-0.4,0); % signal pole - \path[draw, line width=1pt] (-0.7,0.6) -- ++(0,-0.4) -- ++ (0.35,0.2) -- cycle; % signal marker + \path[draw, fill=background, line width=1pt] (-0.7,0.6) -- ++(0,-0.4) -- ++ (0.35,0.2) -- cycle; % signal marker \node[rotate=90,font=\sffamily] at (-0.9,0.4) {#1}; % speed indicator } }, @@ -97,7 +97,7 @@ code={ \path[draw, line width=1pt] (0,0) -- ++(0,-0.4) -- ++(0.4,0); % signal pole \path[draw, line width=1pt] (0.4,-0.2) -- ++(0,-0.4) -- ++ (0.35,0.2) -- cycle; % signal marker - \node[rotate=-90,font=\sffamily] at (0.9,-0.4) {#1}; % speed indicator + \node[rotate=-90,font=\sffamily] at (1.0,-0.4) {#1}; % speed indicator } }, pics/speed_signal_forward/.default=, @@ -107,7 +107,7 @@ code={ \path[draw, line width=1pt] (0,0) -- ++(0,0.4) -- ++(-0.4,0); % signal pole \path[draw, line width=1pt] (-0.4,0.2) -- ++(0,0.4) -- ++ (-0.35,-0.2) -- cycle; % signal marker - \node[rotate=90,font=\sffamily] at (-0.9,0.4) {#1}; % speed indicator + \node[rotate=90,font=\sffamily] at (-1.0,0.4) {#1}; % speed indicator } }, pics/speed_signal_backward/.default=, @@ -117,7 +117,7 @@ code={ \path[draw, line width=1pt] (0,0) -- ++(0,-0.4) -- ++(0.7,0); % signal pole \path[draw, line width=1pt] (0.7,-0.6) rectangle ++(0.4,0.4); % signal marker - \node[rotate=-90,font=\sffamily] at (1.2,-0.4) {#1}; % speed indicator + \node[rotate=-90,font=\sffamily] at (1.3,-0.4) {#1}; % speed indicator } }, pics/block_signal_forward/.default=, @@ -127,7 +127,7 @@ code={ \path[draw, line width=1pt] (0,0) -- ++(0,0.4) -- ++(-0.7,0); % signal pole \path[draw, line width=1pt] (-0.7,0.6) rectangle ++(-0.4,-0.4); % signal marker - \node[rotate=90,font=\sffamily] at (-1.2,0.4) {#1}; % speed indicator + \node[rotate=90,font=\sffamily] at (-1.3,0.4) {#1}; % speed indicator } }, pics/block_signal_backward/.default=, @@ -137,7 +137,7 @@ code={ \path[draw, line width=1pt] (0,0) -- ++(0,-0.4) -- ++(0.7,0); % signal pole \path[draw, line width=1pt] (0.9,-0.4) circle (0.2); % signal marker - \node[rotate=-90,font=\sffamily] at (1.2,-0.4) {#1}; % speed indicator + \node[rotate=-90,font=\sffamily] at (1.3,-0.4) {#1}; % speed indicator } }, pics/route_signal_forward/.default=, @@ -147,7 +147,7 @@ code={ \path[draw, line width=1pt] (0,0) -- ++(0,0.4) -- ++(-0.7,0); % signal pole \path[draw, line width=1pt] (-0.9,0.4) circle (0.2); % signal marker - \node[rotate=90,font=\sffamily] at (-1.2,0.4) {#1}; % speed indicator + \node[rotate=90,font=\sffamily] at (-1.3,0.4) {#1}; % speed indicator } }, pics/route_signal_backward/.default=, @@ -213,10 +213,14 @@ }; } \tikzset{ - clearing_point/.pic={ - \path[draw, line width=1pt] (0 ,-0.1) -- ++( 0 ,0.2); % marker - \path[draw, line width=1pt] (0.1, 0.1) -- ++(-0.2,0 ); % sign - }; + pics/clearing_point/.style args={#1}{ + code={ + \path[draw, line width=1pt] (0 ,-0.1) -- ++( 0 ,0.2); % marker + \path[draw, line width=1pt] (0.1, 0.1) -- ++(-0.2,0 ); % sign + \node[font=\sffamily] at (0,0.45) {#1}; % indicator + } + }, + pics/clearing_point/.default=, } \tikzset{ pics/transmitter_below/.style args={#1}{ @@ -224,7 +228,7 @@ \path[draw,line width=1pt,fill=#1] (-0.25,0) rectangle (0.25,-0.25); % turnout marker } }, - pics/transmitter_below/.default=white, + pics/transmitter_below/.default=background, } \tikzset{ pics/transmitter_below_forward/.style args={#1}{ @@ -233,7 +237,7 @@ \path[draw] (0.1,-0.05) -- (0.2,-0.125) -- (0.1,-0.2) -- cycle; } }, - pics/transmitter_below_forward/.default=white, + pics/transmitter_below_forward/.default=background, } \tikzset{ pics/transmitter_below_backward/.style args={#1}{ @@ -242,7 +246,7 @@ \path[draw] (-0.1,-0.05) -- (-0.2,-0.125) -- (-0.1,-0.2) -- cycle; } }, - pics/transmitter_below_backward/.default=white, + pics/transmitter_below_backward/.default=background, } \tikzset{ pics/transmitter_below_bidirectional/.style args={#1}{ @@ -252,7 +256,7 @@ \path[draw] (-0.1,-0.05) -- (-0.2,-0.125) -- (-0.1,-0.2) -- cycle; } }, - pics/transmitter_below_bidirectional/.default=white, + pics/transmitter_below_bidirectional/.default=background, } \tikzset{ pics/transmitter_above/.style args={#1}{ @@ -260,7 +264,7 @@ \path[draw,line width=1pt,fill=#1] (-0.25,0) rectangle (0.25,0.25); % turnout marker } }, - pics/transmitter_above/.default=white, + pics/transmitter_above/.default=background, } \tikzset{ pics/transmitter_above_forward/.style args={#1}{ @@ -269,7 +273,7 @@ \path[draw] (0.1,0.05) -- (0.2,0.125) -- (0.1,0.2) -- cycle; } }, - pics/transmitter_above_forward/.default=white, + pics/transmitter_above_forward/.default=background, } \tikzset{ pics/transmitter_above_backward/.style args={#1}{ @@ -278,7 +282,7 @@ \path[draw] (-0.1,0.05) -- (-0.2,0.125) -- (-0.1,0.2) -- cycle; } }, - pics/transmitter_above_backward/.default=white, + pics/transmitter_above_backward/.default=background, } \tikzset{ pics/transmitter_above_bidirectional/.style args={#1}{ @@ -288,5 +292,5 @@ \path[draw] (-0.1,0.05) -- (-0.2,0.125) -- (-0.1,0.2) -- cycle; } }, - pics/transmitter_above_bidirectional/.default=white, + pics/transmitter_above_bidirectional/.default=background, } \ No newline at end of file diff --git a/src/vehicles.tikz b/src/vehicles.tikz index c01d5d5..5b6b816 100644 --- a/src/vehicles.tikz +++ b/src/vehicles.tikz @@ -7,7 +7,7 @@ \tikzset{ pics/train/.style args={#1}{ code={ - \path[draw, line width=1pt, fill=white] (0,-0.3) -- ++(#1,0) -- ++(0,0.6) -- ++(-#1,0) -- cycle; % train shape + \path[draw, line width=1pt, fill=background] (0,-0.3) -- ++(#1,0) -- ++(0,0.6) -- ++(-#1,0) -- cycle; % train shape % \node at (-2,0) {\emph{#2}}; %label of train } }, @@ -16,7 +16,7 @@ \tikzset{ pics/train_moving_forward/.style args={#1}{ code={ - \path[draw, line width=1pt, fill=white] (0,0) -- +(-0.3,0.3) -- +(-#1,0.3) -- +(-#1,-0.3) -- +(-0.3,-0.3) -- cycle; % train shape + \path[draw, line width=1pt, fill=background] (0,0) -- +(-0.3,0.3) -- +(-#1,0.3) -- +(-#1,-0.3) -- +(-0.3,-0.3) -- cycle; % train shape \path[draw, line width=1pt] (-0.13,0.23) -- (0.1,0) -- (-0.13,-0.23); % arrow shape part 1 \path[draw, line width=1pt] (-0.03,0.23) -- (0.2,0) -- (-0.03,-0.23); % arrow shape part 2 % \node at (-2,0) {\emph{#2}}; %label of train @@ -27,7 +27,7 @@ \tikzset{ pics/train_moving_backward/.style args={#1}{ code={ - \path[draw, line width=1pt, fill=white] (0,0) -- +(0.3,-0.3) -- +(#1,-0.3) -- +(#1,0.3) -- +(0.3,0.3) -- cycle; % train shape + \path[draw, line width=1pt, fill=background] (0,0) -- +(0.3,-0.3) -- +(#1,-0.3) -- +(#1,0.3) -- +(0.3,0.3) -- cycle; % train shape \path[draw, line width=1pt] (0.13,0.23) -- (-0.1,0) -- (0.13,-0.23); % arrow shape part 1 \path[draw, line width=1pt] (0.03,0.23) -- (-0.2,0) -- (0.03,-0.23); % arrow shape part 2 % \node at (-2,0) {\emph{#2}}; %label of train @@ -38,7 +38,7 @@ \tikzset{ pics/train_direction_forward/.style args={#1}{ code={ - \path[draw, line width=1pt, fill=white] (0,0) -- +(-0.3,0.3) -- +(-#1,0.3) -- +(-#1,-0.3) -- +(-0.3,-0.3) -- cycle; % train shape + \path[draw, line width=1pt, fill=background] (0,0) -- +(-0.3,0.3) -- +(-#1,0.3) -- +(-#1,-0.3) -- +(-0.3,-0.3) -- cycle; % train shape % \node at (-2,0) {\emph{#2}}; %label of train } }, @@ -47,7 +47,7 @@ \tikzset{ pics/train_direction_backward/.style args={#1}{ code={ - \path[draw, line width=1pt, fill=white] (0,0) -- +(0.3,-0.3) -- +(#1,-0.3) -- +(#1,0.3) -- +(0.3,0.3) -- cycle; % train shape + \path[draw, line width=1pt, fill=background] (0,0) -- +(0.3,-0.3) -- +(#1,-0.3) -- +(#1,0.3) -- +(0.3,0.3) -- cycle; % train shape % \node at (-2,0) {\emph{#2}}; %label of train } }, @@ -73,21 +73,21 @@ } \tikzset{ train_automatic_forward/.pic={ - \path[draw, fill=black] (-0.15,0) -- ++(-0.15,0.15) -- ++(0,-0.3) -- cycle; % triangle + \path[draw, fill] (-0.15,0) -- ++(-0.15,0.15) -- ++(0,-0.3) -- cycle; % triangle }; } \tikzset{ train_automatic_backward/.pic={ - \path[draw, fill=black] (0.15,0) -- ++(0.15,0.15) -- ++(0,-0.3) -- cycle; % triangle + \path[draw, fill] (0.15,0) -- ++(0.15,0.15) -- ++(0,-0.3) -- cycle; % triangle }; } \tikzset{ train_human_forward/.pic={ - \path[draw, fill=black] (-0.4,0) circle (0.15); % dot + \path[draw, fill] (-0.4,0) circle (0.15); % dot }; } \tikzset{ train_human_backward/.pic={ - \path[draw, fill=black] (0.4,0) circle (0.15); % dot + \path[draw, fill] (0.4,0) circle (0.15); % dot }; } \ No newline at end of file