%!TEX TS-program = pdflatexmk % Copyright (c) 2018 - 2022, 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{tikz-trackschematic} % loading the library \begin{document} \begin{tikzpicture}[font=\sffamily] { % station names \tikzset{every node/.style={foreground!50!background}}; \node[right,align=left] at ( 2,1.3) {to and from\\ Arnau}; \node at (21,3.3) {{\LARGE Bf Berg}}; \node[left,align=right] at (38,1.3) {to and from\\ Chamstadt}; } % coordinates \coordinate (A) at ( 1.5, 0); \coordinate (B) at (38.5, 0); \coordinate (E1) at ( 9 , 1); \coordinate (E2) at (11 ,-1); \coordinate (E3) at (25 , 2); \coordinate (H1) at (15 , 2); \coordinate (H2) at (26 , 1); \coordinate (Y1) at (14 , 0); \coordinate (Y2) at (15 , 0); \coordinate (Y3) at (14 , 1); \coordinate (Y4) at (16 , 1); \coordinate (Y5) at (27 , 0); \coordinate (Y6) at (12.8,-1); \coordinate (S1) at ( 7 , 0); \coordinate (S2) at (10 , 0); \coordinate (S3) at (18 , 0); \coordinate (S4) at (18 , 1); \coordinate (S5) at (24 , 0); \coordinate (S6) at (24 , 1); \coordinate (S7) at (30 , 0); \coordinate (S8) at (33 , 0); \coordinate (T1) at ( 6 , 0); \coordinate (T2) at (10.2, 1); \coordinate (T3) at (23 , 2); \coordinate (T4) at (34 , 0); \coordinate (P1) at (21 , 0); \coordinate (P2) at (21 , 1); \coordinate (HM) at (0,-1.85); { %% topology % tracks \maintrack (A) -- (B); \maintrack (Y2) -- (Y4) -- (H2) -- (Y5); \secondarytrack (E1) -- (Y4); \secondarytrack (E2) -- ++( 2,0) -- (Y1); \secondarytrack (Y3) -- (H1) -- (E3); % track numbers \tracklabel at (11.7, 1) label (12); \tracklabel at (11.7,-1) label (10); \tracklabel at (21 , 2) label (3); \tracklabel at (P2) label (2); \tracklabel at (P1) label (1); % bufferstops \bufferstop[backward] at (E1); \bufferstop[backward] at (E2); \bufferstop[forward] at (E3); % turnouts \tikzset{every node/.style={fouling point}}; \turnout[backward,branch=right] at (Y1) label (W1); \turnout[forward ,branch=left ] at (Y2) label (W2); \turnout[forward ,branch=left ] at (Y3) label (W3); \turnout[backward,branch=right] at (Y4) label (W4); \turnout[backward,branch=left ] at (Y5) label (W5); \derailer[forward,branch=right] at (Y6) label (Gs6); } { %% traffic control % signals \distantsignal[forward] at (S1) label (Va); \signal[distant,route,forward] at (S2) label (A); \routesignal[backward] at (S3) label (P1); \routesignal[backward] at (S4) label (P2); \routesignal[forward] at (S5) label (N1); \routesignal[forward] at (S6) label (N2); \signal[distant,route,backward] at (S7) label (F); \distantsignal[backward] at (S8) label (Vf); % routes \route[backward] at (20,0); \route[forward] at (22,0); \route[backward] at (20,1); \route[forward] at (22,1); % clearing points \tikzset{every node/.style={backward}}; \clearingpoint[] at (10 , 0) label (); \clearingpoint[] at (12.3,-1) label (); \clearingpoint[] at (12.8, 0) label (); \clearingpoint[] at (13.4, 1) label (); \clearingpoint[] at (14.9, 1) label (); \coordinate (H3) at ($(Y2)!0.5!(Y4)$); % using tikz calc library \clearingpoint[rotate=45] at (H3) label (); \coordinate (H4) at ($(Y3)!0.8!(H1)$); % using tikz calc library \clearingpoint[rotate=45] at (H4) label (); \clearingpoint[] at (16 , 0) label (); \clearingpoint[] at (18 , 1) label (); \clearingpoint[] at (18 , 0) label (); \clearingpoint[] at (24 , 1) label (); \clearingpoint[] at (24 , 0) label (); \clearingpoint[] at (26 , 0) label (); \clearingpoint[] at (27.5, 0) label (); \coordinate (H5) at ($(Y5)!0.8!(H2)$); % using tikz calc library \clearingpoint[rotate=315] at (H5) label (); \clearingpoint[] at (30 , 0) label (); } { %% vehicles \train[run=normal,forward] at (T1) label (RB); \train[run=fast,backward] at (T4) label (IC); \parkedvehicles[length=3cm] at (T3) label (WG); \parkedvehicles[length=1cm] at (T2) label (Tfz); } { %% constructions % platforms \platform[side=right] at (P2); \platform[side=left ] at (P1); } { %% measures % hectometer posts \tikzset{hectometer base={(HM)},orientation=right}; \hectometer[] at (S1) label ( 7.200); \hectometer[] at (S2) label ( 8.200); \hectometer[] at (12.8,-1) label ( 8.400); \hectometer[] at (16 , 0) label ( 8.600); \hectometer[] at (S3) label ( 8.700); \hectometer[] at (19 , 0) label ( 8.750); \hectometer[] at (23 , 0) label ( 9.000); \hectometer[] at (S5) label ( 9.100); \hectometer[] at (26 , 0) label ( 9.200); \hectometer[] at (27.5, 0) label ( 9.300); \hectometer[] at (S7) label ( 9.500); \hectometer[] at (S8) label (10.500); } \end{tikzpicture} \end{document}