\documentclass[tikz]{standalone} \usepackage{tikz} \usepackage{fontspec} \usepackage{contour} \setmainfont{Atkinson Hyperlegible} \usetikzlibrary{shapes.geometric} \usetikzlibrary{calc} \usetikzlibrary{positioning} \usetikzlibrary{arrows.meta} \definecolor{one}{RGB}{243,155,154} \definecolor{two}{RGB}{176,0,68} \definecolor{three}{RGB}{213,173,0} \definecolor{four}{RGB}{227,0,11} \definecolor{five}{RGB}{0,150,94} \definecolor{six}{RGB}{149,107,37} \definecolor{seven}{RGB}{255,204,0} \definecolor{fifteen}{RGB}{247,171,99} \definecolor{sixteen}{RGB}{94,107,175} \definecolor{twentyone}{RGB}{227,0,11} \definecolor{twentytwo}{RGB}{253,195,0} \definecolor{twentythree}{RGB}{228,142,0} \definecolor{twentyfour}{RGB}{140,29,117} \definecolor{twentysix}{RGB}{243,155,154} \input{../shapes.tex} \pgfdeclarelayer{bg} \pgfdeclarelayer{lines} \pgfdeclarelayer{stops} \pgfdeclarelayer{labels} \pgfdeclarelayer{legend} \pgfsetlayers{bg,lines,stops,labels,main,legend} \contourlength{.2ex} \begin{document} \begin{tikzpicture}[ river/.style = { line width=0.5cm, cyan!50, rounded corners=0.5cm, -{Triangle Cap}, }, railway line/.style = { color=gray, line width=0.075cm, rounded corners=0.5cm, }, railway/.style = { railway line, {Latex[length=5mm]}-{Latex[length=5mm]}, }, stop/.style = { rounded corners=0.1cm, line width=0.05cm, fill=white, draw, shape=stop, anchor=center, minimum height=0.2cm, }, stop1/.style = { stop, minimum width=0.2cm, }, stop2/.style = { stop, minimum width=0.4cm, }, stop3/.style = { stop, minimum width=0.6cm, }, stop4/.style = { stop, minimum width=0.8cm, }, line/.style = { line width=0.15cm, rounded corners=0.1cm, }, label/.style = { font=\scriptsize, }, line name/.style = { label, color=white, minimum width=1em, minimum height=1em, inner sep=0pt, }, ] % \begin{pgfonlayer}{legend} % % \draw[railway line] (-7,-8.5) -- ++(0,0.5); % \node[stop2] (Legend2) at (-7,-8.5) {}; % \node[stop1, above=0.4cm of Legend2.two half] (Legend1) {}; % \node[stop1, above=0.3cm of Legend1] (Legend0) {}; % \draw[line] (Legend2.south two half) -- (Legend1.north center) -- (Legend0); % \draw[line] (Legend2.south one half) -- ++(0,0.5) -- ++(-0.3,0); % \node[stop2] (Legend2) at (-7,-8.5) {}; % \node[stop1, above=0.4cm of Legend2.two half] (Legend1) {}; % \node[stop1, above=0.3cm of Legend1] (Legend0) {}; % \node[line name, fill=black, above=0.2cm of Legend0] {\bf E}; % \node[label, left=0.05cm of Legend1] {Karlsplatz}; % \node[label, left=0.05cm of Legend0] {Museum}; % \node[label, left=0.05cm of Legend2] {Bahnhof}; % % \node[label, anchor=west] at (-6.7,-8.5) {Halt mit Umstieg}; % \node[label, anchor=west] at (-6.7,-8.0) {Halt}; % \node[label, anchor=west] at (-6.7,-7.5) {Endhaltestelle}; % \end{pgfonlayer} \begin{pgfonlayer}{bg} % \draw[help lines, color=gray!10] (-10, -15) grid[step=0.1] (10, 10); % \draw[help lines, color=gray!50] (-10, -15) grid (10, 10); \draw[river] (10,1.5) -- (-1.5, 1.5) -- ++(-5.5,5.5); \end{pgfonlayer} \begin{pgfonlayer}{stops} \node[stop3, rotate=90] (Hauptbahnhof) at (-0.5, -1.4) {}; \node[stop3, rotate=90] (Betriebshof) at (-0.5, 0.4) {}; \node[stop2] (Jahnstr) at (0, 2.1) {}; \node[stop2, above=0.3cm of Jahnstr] (Bunsengymnasium) {}; \node[stop2, above=0.3cm of Bunsengymnasium] (Technologiepark) {}; \node[stop2, rotate=-45] (Heiligenbergschule) at ($(Technologiepark)+(0.7,0.9)$) {}; \node[stop2, rotate=90] (Volkshochschule) at (0.5,0.5) {}; \node[stop2, rotate=90] (Campus Bergheim) at (1.2,0.5) {}; \node[stop2, rotate=90] (Altes Hallenbad) at (1.9,0.5) {}; \node[stop4, rotate=-45] (Bismarckplatz) at ($(3.1,0.5)+(45:0.1)$) {}; \node[stop2] (Brückenstr) at (3.2,2.1) {}; \node[stop2, above=0.3cm of Brückenstr] (Kußmaulstr) {}; \node[stop2, above=0.3cm of Kußmaulstr] (Blumenthalstr) {}; % Handschuhsheim \node[stop2, rotate=45] (Kapellenweg) at ($(Blumenthalstr)+(-0.7,0.9)$) {}; \node[stop4] (Hans-Thoma-Platz) at ($(Heiligenbergschule)!0.5!(Kapellenweg)+(0,0.9)$) {}; \node[stop3, above=0.6cm of Hans-Thoma-Platz.two quarter, anchor=one half] (Biethsstr) {}; \node[stop3, above=0.6cm of Biethsstr.center, anchor=center] (Burgstr) {}; % Bergheim \node[stop4, rotate=90] (Seegarten) at (2.3,-1.5) {}; \node[stop4, rotate=90] (Stadtbücherei) at (1.8,-1.5) {}; \node[stop3, rotate=90] (Stadtwerke) at (0.7,-1.4) {}; \node[stop1,rotate=45] (Gneisenaustr Süd) at ($(Hauptbahnhof.center)-(2.4,-1.5)$) {}; % Wieblingen \node[stop1, rotate=45, above left=0.5cm of Gneisenaustr Süd.center, anchor=center] (Berufsschule) {}; \node[stop1, rotate=45, above left=0.5cm of Berufsschule.center, anchor=center] (Ochsenkopf) {}; \node[stop1] (SRH Campus) at ($(Ochsenkopf.center)-(0.3,-0.6)$){}; \node[stop1, above=0.3cm of SRH Campus] (Wieblingen Mitte) {}; \node[stop1, above=0.3cm of Wieblingen Mitte] (Taubenfeld) {}; % Weststadt \node[stop2] (Römerkreis Süd) at (1.3,-2.1) {}; \node[stop2, rotate=45] (Christuskirche) at ($(Römerkreis Süd)-(-0.5,0.7)$) {}; \node[stop1] (Ringstr) at ($(Stadtwerke.one half)-(-0.1,0.2)-(0.6,0.6)$) {}; \node[stop1, below left=0.3cm of Ringstr] (Montpellierbrücke) {}; % Südstadt-Rohrbach \node[stop2] (S-Bahnhof Weststadt-Südstadt) at ($(Christuskirche)-(-0.5,0.7)$) {}; \def\laststop{S-Bahnhof Weststadt-Südstadt} \foreach\stop in {Bergfriedhof,Bethanienkrankenhaus,Rheinstr,Markscheide,Eichendorffplatz,Rohrbach Markt,Ortenauer Str,Freiburger Str,Rohrbach Süd}{ \expandafter\node[stop2, below=0.3cm of \laststop] (\stop) {}; \xdef\laststop{\stop} } % Leimen \node[stop1, below=0.4cm of Rohrbach Süd.two half] (Zementwerk) {}; \def\laststop{Zementwerk} \foreach\stop in {Johannes-Reidel-Str,Georgi-Marktplatz,Kurpfalzcentrum,Moltkestr,Leimen Friedhof}{ \expandafter\node[stop1, below=0.3cm of \laststop] (\stop) {}; \xdef\laststop{\stop} } \node[stop2, rotate=45, anchor=two half] (Hauptbahnhof Süd) at (-1.5, -2.5) {}; \node[stop1] (Czernybrücke) at (-1.6, 0.2) {}; \node[stop2, rotate=45, anchor=two half] (Gadamerplatz) at (-2.7,-1.3) {}; \node[stop1, rotate=45, above left=0.7cm of Gadamerplatz.two half, anchor=center] (Eppelheimer Terrasse) {}; \node[stop1, anchor=center] (Henkel Teroson Str) at ($(Eppelheimer Terrasse)+(-0.5,0.5)-(0.3,0.0)$){}; \def\laststop{Henkel Teroson Str} \foreach\stop in {Marktstr,Kranichweg Stotz,Jakobsgasse,Eppelheimer Rathaus,Eppelheim Kirchheimer Str}{ \expandafter\node[stop1, left=0.3cm of \laststop] (\stop) {}; \xdef\laststop{\stop} } \node[stop1] (Rudolf-Diesel-Str) at ($(Hauptbahnhof Süd.one half)-(-0.8,0.8)-(0,0.3)$) {}; \def\laststop{Rudolf-Diesel-Str} \foreach\stop in {Messplatz,Ilse-Krall-Str,Albert-Fritz-Str,Odenwaldstr,Kirchheim Rathaus,Kirchheim Friedhof}{ \expandafter\node[stop1, below=0.3cm of \laststop] (\stop) {}; \xdef\laststop{\stop} } \end{pgfonlayer} \begin{pgfonlayer}{lines} \pgfmathparse{0.1*tan(45/2)} \let\offset\pgfmathresult \draw[railway] ($(0.1,-3.5)-(7.2,-7.2)$) node[label, above, anchor=south west] {Mannheim} -- (0.1,-3.5) -- ++(3,0) -- ++(4.5,4.5) -- ++(1,0) node[label, below, anchor=north] {Neckargemünd}; \draw[railway] ($(0.1,-3.5)-(7.2,-7.2)$) -- (0.1,-3.5) -- ++(0,-3) -- ++(0,-4.7) node[label, right, anchor=south west] {Karlsruhe}; \draw[line, twentysix] (Burgstr.center) -- (Biethsstr.center) -- (Hans-Thoma-Platz.three quarter) -- ($(Hans-Thoma-Platz.south three quarter)-(0,\offset)$) -- (Kapellenweg.one half) -- ($(Blumenthalstr.north one half)-(0,\offset)$) -- (Kußmaulstr.one half) -- (Brückenstr.one half) -- (Bismarckplatz.north one half) -- (Bismarckplatz.one half) -- ($(2.7,0.6)+(2*\offset,0)$) {[rounded corners=0.2cm] -- (Altes Hallenbad.two half) } -- (Campus Bergheim.two half) -- (Volkshochschule.two half) -- (Betriebshof.two half) -- ($(Czernybrücke)+(0.4,0.4)$) -- (Czernybrücke) -- ($(Gadamerplatz.one half)+(-0.2,0.2)$) -- (Gadamerplatz.one half) -- (Hauptbahnhof Süd.one half) -- ($(Hauptbahnhof Süd.one half)-(-0.8,0.8)$) -- (Rudolf-Diesel-Str) -- (Messplatz) -- (Ilse-Krall-Str) -- (Albert-Fritz-Str) -- (Odenwaldstr) -- (Kirchheim Rathaus) -- (Kirchheim Friedhof) ; \draw[line, twentyone] (Hauptbahnhof.two half) -- ($(Hauptbahnhof.north two half)-(0.1,0)$) |- (Betriebshof.one half) {[rounded corners=0.2cm] -| (Jahnstr.one half) } -- (Bunsengymnasium.one half) -- (Technologiepark.one half) {[rounded corners=0.15cm] -- ($(Technologiepark.north one half)+(0,\offset)$) -- (Heiligenbergschule.south one half) } -- (Heiligenbergschule.north one half) -- ($(Hans-Thoma-Platz.south one half)+(0,\offset)$) -- (Hans-Thoma-Platz.one half) ; \draw[line, twentyone] (Jahnstr.one half) {[rounded corners=0.3cm] |- (Volkshochschule.one half) } -- (Campus Bergheim.one half) {[rounded corners=0.2cm] -- (Altes Hallenbad.one half) } {[rounded corners=0.2cm] -| ($(Seegarten.south two half)+(0.2,0)$) } -- (Stadtbücherei.two half) -- (Stadtwerke.two half) {[rounded corners=0.2cm] -- (Hauptbahnhof.two half) } ; \draw[line, twentytwo] (Bismarckplatz.two half) -- (3.3,0.3) {[rounded corners=0.8cm] |- (Stadtbücherei.north one half) } -- (Stadtbücherei.one half) -- ($(Stadtwerke.one half)-(-0.1,0.2)$) -- (Ringstr) -- (Montpellierbrücke) -- ($(Hauptbahnhof Süd.two half)+(0.8,-0.8)$) -- (Hauptbahnhof Süd.two half) -- (Gadamerplatz.two half) -- (Eppelheimer Terrasse) -- ($(Eppelheimer Terrasse)+(-0.5,0.5)$) -- (Henkel Teroson Str) -- (Marktstr) -- (Kranichweg Stotz) -- (Jakobsgasse) -- (Eppelheimer Rathaus) -- (Eppelheim Kirchheimer Str) ; \draw[line, twentythree] (Bismarckplatz.three quarter) -- ($(3.1,0.3)+(0,\offset)$) {[rounded corners=0.6cm] |- (Stadtbücherei.north two quarter) } -- (Stadtbücherei.two quarter) -| ($(Römerkreis Süd.south two half)+(0,\offset)$) -- (Christuskirche.two half) {[rounded corners=0.15cm] -- ($(S-Bahnhof Weststadt-Südstadt.north two half)+(0,\offset)$) } -- (S-Bahnhof Weststadt-Südstadt.two half) -- (Bergfriedhof.two half) -- (Bethanienkrankenhaus.two half) -- (Rheinstr.two half) -- (Markscheide.two half) -- (Eichendorffplatz.two half) -- (Rohrbach Markt.two half) -- (Ortenauer Str.two half) -- (Freiburger Str.two half) -- (Rohrbach Süd.two half) -- (Zementwerk) -- (Johannes-Reidel-Str) -- (Georgi-Marktplatz) -- (Kurpfalzcentrum) -- (Moltkestr) -- (Leimen Friedhof) ; \draw[line, twentyfour] (Rohrbach Süd.one half) -- (Freiburger Str.one half) -- (Ortenauer Str.one half) -- (Rohrbach Markt.one half) -- (Eichendorffplatz.one half) -- (Markscheide.one half) -- (Rheinstr.one half) -- (Bethanienkrankenhaus.one half) -- (Bergfriedhof.one half) -- (S-Bahnhof Weststadt-Südstadt.one half) -- ($(S-Bahnhof Weststadt-Südstadt.north one half)-(0,\offset)$) -- (Christuskirche.one half) {[rounded corners=0.15cm] -- ($(Römerkreis Süd.south one half)-(0,\offset)$) } |- (Stadtwerke.one half) {[rounded corners=0.3cm] -- ($(Hauptbahnhof.south one half)+(0.1,0)$) -| ($(Betriebshof.north center)-(0.3,0)$) } {[rounded corners=0.5cm] -| (Jahnstr.two half) } -- (Bunsengymnasium.two half) -- (Technologiepark.two half) -- ($(Technologiepark.north two half)-(0,\offset)$) -- (Heiligenbergschule.south two half) -- (Heiligenbergschule.north two half) -- ($(Hans-Thoma-Platz.south two quarter)-(0,\offset)$) -- (Hans-Thoma-Platz.two quarter) -- (Biethsstr.one half) -- (Burgstr.one half) ; \draw[line, five, -{Latex[length=5mm]}] (Burgstr.two half) -- ($(Burgstr.two half)+(0,1.0)$) node[right, anchor=west, label] {Weinheim} node[below right=0.3cm, line name, fill=five, rounded corners=0pt] {\bf 5} ; \draw[line, five, -{Latex[length=5mm]}] (Taubenfeld) -- ++(0,0.3) -- ++(-0.5,0.5) node[above left=-0.2cm, label, anchor=south east] {Mannheim} node[below left, line name, fill=five, rounded corners=0pt, anchor=north east] {\bf 5} ; \draw[line, five] (Burgstr.two half) -- (Biethsstr.two half) -- (Hans-Thoma-Platz.two half) -- ($(Hans-Thoma-Platz.south two half)+(0,\offset)$) {[rounded corners=0.15cm] -- (Kapellenweg.two half) -- ($(Blumenthalstr.north two half)+(0,\offset)$) } -- (Blumenthalstr.two half) -- (Kußmaulstr.two half) -- (Brückenstr.two half) -- ($(3.3,0.9)+(0,2*\offset)$) -- (Bismarckplatz.north two quarter) -- (Bismarckplatz.two quarter) -- ($(2.9,0.3)+(0,2*\offset)$) {[rounded corners=0.4cm] |- (Seegarten.north three quarter) } -- (Stadtbücherei.three quarter) -- (Stadtwerke.three quarter) -- (Hauptbahnhof.three quarter) -- ($(Hauptbahnhof.center)-(0.9, 0)$) -- (Gneisenaustr Süd.center) -- (Berufsschule.center) -- (Ochsenkopf.center) -- ($(Ochsenkopf.center)-(0.3,-0.3)$) -- (SRH Campus.center) -- (SRH Campus.center) -- (Wieblingen Mitte.center) -- (Taubenfeld.center) ; \end{pgfonlayer} \begin{pgfonlayer}{labels} \node[font=\scriptsize, color=white] at (4.0,1.5){Neckar}; \node[font=\scriptsize, color=white, rotate=-45] at (-3.5,3.5) {Neckar}; \foreach\stop/\placement/\anchor/\rotate in { Hauptbahnhof/left/north/0, Betriebshof/above left/north west/0, Jahnstr/left/east/0, Brückenstr/right/west/0, Kußmaulstr/right/west/0, Blumenthalstr/right/west/0, Kapellenweg/right/west/0, Bismarckplatz/below right/north west/0, Jahnstr/left/east/0, Bunsengymnasium/left/east/0, Technologiepark/left/east/0, Heiligenbergschule/left/east/0, Hans-Thoma-Platz/right/west/0, Biethsstr/right/west/0, Volkshochschule/above right/west/60, Campus Bergheim/above right/west/60, Altes Hallenbad/above right/west/60, Seegarten/right/east/-30, Stadtbücherei/right/east/-30, Stadtwerke/right/east/-30, Römerkreis Süd/right/west/0, Ringstr/below right/west/-45, Montpellierbrücke/below right/west/-45, Gneisenaustr Süd/right/west/45, Berufsschule/right/west/45, Ochsenkopf/right/west/45, SRH Campus/left/east/0, Wieblingen Mitte/left/east/0, Taubenfeld/left/east/0, Christuskirche/right/west/0, S-Bahnhof Weststadt-Südstadt/right/west/0, Bergfriedhof/right/west/0, Bethanienkrankenhaus/right/west/0, Rheinstr/right/west/0, Markscheide/right/west/0, Eichendorffplatz/right/west/0, Rohrbach Markt/right/west/0, Ortenauer Str/right/west/0, Freiburger Str/right/west/0, Rohrbach Süd/right/west/0, Zementwerk/right/west/0, Johannes-Reidel-Str/right/west/0, Georgi-Marktplatz/right/west/0, Kurpfalzcentrum/right/west/0, Moltkestr/right/west/0, Leimen Friedhof/right/west/0, Hauptbahnhof Süd/left/north east/0, Gadamerplatz/left/east/45, Eppelheimer Terrasse/left/east/45, Czernybrücke/above/south/45, Henkel Teroson Str/below/east/45, Marktstr/below/east/45, Kranichweg Stotz/below/east/45, Jakobsgasse/below/east/45, Eppelheimer Rathaus/below/east/45, Eppelheim Kirchheimer Str/below/east/45, Rudolf-Diesel-Str/left/east/0, Messplatz/left/east/0, Ilse-Krall-Str/left/east/0, Albert-Fritz-Str/left/east/0, Odenwaldstr/left/east/0, Kirchheim Rathaus/left/east/0, Kirchheim Friedhof/left/east/0, Burgstr/right/west/0% } \node[label, \placement=0.05cm of \stop, rotate=\rotate, anchor=\anchor] {\contour{white}{\stop}}; \node[line name, fill=twentytwo, left=0.2cm of Eppelheim Kirchheimer Str] {\bf 22}; \node[line name, fill=twentysix, right=0.2cm of Kirchheim Friedhof] {\bf 26}; \node[line name, fill=twentythree, left=0.2cm of Leimen Friedhof] {\bf 23}; \node[line name, fill=twentyfour, left=0.2cm of Rohrbach Süd] {\bf 24}; \node[line name, fill=twentyone, left=0.2cm of Hans-Thoma-Platz] {\bf 21}; \node[line name, fill=twentysix, left=0.2cm of Burgstr] {\bf 26}; \node[line name, fill=twentyfour, left=0.6cm of Burgstr] {\bf 24}; \node[line name, fill=twentytwo, right=0.2cm of Bismarckplatz] {\bf 22}; \node[line name, fill=twentythree, right=0.6cm of Bismarckplatz] {\bf 23}; \end{pgfonlayer} \end{tikzpicture} \end{document} % vim: nospell conceallevel=0