CarLaTeX
The [45th Annual Meeting of the TeX Users Group](https://tug.org/tug2024/) will take place in Prague.

Since we can use TikZ to draw a public transport map, see: https://gitlab.com/ada.loveless/tex-networks/-/tree/main?ref_type=heads, it would be useful to have a public transport map of Prague.

At least the metro lines and the main trams and buses that stop close to the meeting venue.

samcarter
Let's start with the most important things:

- the metro lines
- the approximate location of the [House at the Two Golden Bears](https://en.wikipedia.org/wiki/House_at_the_Two_Golden_Bears)


% !TeX TS-program = lualatex

\documentclass[tikz,border=4pt]{standalone}

\usepackage{tikz}
\usepackage{fontspec}
\usepackage{contour}

\setmainfont{Atkinson Hyperlegible}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{tikzlings}

\usetikzlibrary{ext.paths.ortho}

% from https://tex.stackexchange.com/a/478343/36296
\tikzset{connect with angle/.style={to path={%
let \p1=(\tikztostart),\p2=(\tikztotarget),\n1={sin(#1-atan2(\y2-\y1,\x2-\x1))} in
\ifdim\n1>0pt
-- ++(0,{((\y2-\y1)-(\x2-\x1)*tan(#1))/2})
-- ++({(\x2-\x1)},{(\x2-\x1)*tan(#1)})
-- (\tikztotarget)
\else
-- ++({((\x2-\x1)-(\y2-\y1)*cot(#1))/2},0)
-- ++({(\y2-\y1)*cot(#1)},{\y2-\y1})
-- (\tikztotarget)
\fi}}}

\colorlet{lineA}{green!70!black}
\colorlet{lineB}{orange!50!yellow}
\colorlet{lineC}{red}

\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.2cm,
rounded corners=0.3cm,
},
label/.style = {
font=\scriptsize,
},
line name/.style = {
label,
color=white,
minimum width=1em,
minimum height=1em,
inner sep=0pt,
},
]

\begin{pgfonlayer}{bg}
%\node[opacity=0.9] {\includegraphics[width=20cm]{a4_metro}};
%\draw[help lines, color=gray!50] (-10, -15) grid (10, 10);
\draw[river] (-2.2,-6) -- (-2.2,2.2) -- (2.8,2.2) -- (2.8,4.4) -- (-3,4.4) -- (-3,7);
\end{pgfonlayer}

\begin{pgfonlayer}{stops}

% Line A
\node[stop1] (Nemocnice Motol) at (-7.6,1.35) {};
\node[stop1] (Petřiny) at (-6.8,1.95) {};
\node[stop1] (Nádraží Veleslavín) at (-6.4,3.4) {};
\node[stop1] (Bořislavka) at (-5.4,3.4) {};
\node[stop1] (Dejvická) at (-4.4,3.4) {};
\node[stop1] (Malostranská) at (-3.05,1.8) {};
\node[stop1] (Staroměstská) at (-1.8,1.8) {};
\node[stop1] (Můstek) at (-0.8,1.05) {};
\node[stop1] (Muzeum) at (0.6,-0.15) {};
\node[stop1] (Náměstí Míru) at (1.5,-0.85) {};
\node[stop1] (Jiřího z Poděbrad) at (2.45,-0.85) {};
\node[stop1] (Flora) at (3.4,-0.85) {};
\node[stop1] (Želivského) at (4.35,-0.85) {};
\node[stop1] (Strašnická) at (5.25,-1.35) {};
\node[stop1] (Skalka) at (6.25,-1.6) {};
\node[stop1] (Depo Hostivař) at (7.4,-0.8) {};

% Line B
\node[stop1] (Černý Most) at (9.3,2.7) {};
\node[stop1] (Rajská zahrada) at (8.5,2.7) {};
\node[stop1] (Hloubětín) at (7.7,2.7) {};
\node[stop1] (Kolbenova) at (6.6,3.3) {};
\node[stop1] (Vysočanská) at (5.6,3.3) {};
\node[stop1] (Českomoravská) at (4.6,3.3) {};
\node[stop1] (Palmovka) at (3.8,3.1) {};
\node[stop1] (Invalidovna) at (3,2.3) {};
\node[stop1] (Křižíkova) at (2.4,1.7) {};
\node[stop1] (Florenc) at (1.3,1.4) {};
\node[stop1] (Náměstí Republiky) at (0.2,1.4) {};
%\node[stop1] (Můstek) at (-0.8,1.05) {};
\node[stop1] (Národní třída) at (-1.4,0.2) {};
\node[stop1] (Karlovo náměstí) at (-1.6,-0.9) {};
\node[stop1] (Anděl) at (-2.9,-0.9) {};
\node[stop1] (Smíchovské nádraží) at (-3.1,-2.4) {};
\node[stop1] (Jinonice) at (-4.5,-2.9) {};
\node[stop1] (Nové Butovice) at (-5.2,-2.9) {};
\node[stop1] (Hůrka) at (-5.8,-2.9) {};
\node[stop1] (Lužiny) at (-6.5,-2.9) {};
\node[stop1] (Luka) at (-7.2,-2.7) {};
\node[stop1] (Stodůlky) at (-7.8,-2.15) {};
\node[stop1] (Zličín) at (-8.6,-1.8) {};

% Line C
\node[stop1] (Letňany) at (6.6,4.7) {};
\node[stop1] (Prosek) at (5.4,4.9) {};
\node[stop1] (Střížkov) at (4.7,5.6) {};
\node[stop1] (Ládví) at (3.5,5.8) {};
\node[stop1] (Kobylisy) at (2.2,5.8) {};
\node[stop1] (Nádraží Holešovice) at (1.3,3.8) {};
\node[stop1] (Vltavská) at (1.3,2.6) {};
%    \node[stop1] (Florenc) at (1.3,1.4) {};
\node[stop1] (Hlavní nádraží) at (1.1,0.5) {};
%    \node[stop1] (Muzeum) at (0.6,-0.15) {};
\node[stop1] (I P Pavlova) at (0.2,-0.9) {};
\node[stop1] (Pražského povstání) at (0.6,-2.8) {};
\node[stop1] (Pankrác) at (1.2,-3.4) {};
\node[stop1] (Budějovická) at (1.8,-4) {};
\node[stop1] (Kačerov) at (2.4,-4.6) {};
\node[stop1] (Roztyly) at (3.4,-5) {};
\node[stop1] (Chodov) at (4.3,-5) {};
\node[stop1] (Opatov) at (5.2,-5) {};
\node[stop1] (Háje) at (6.0,-5) {};

\end{pgfonlayer}
%
\begin{pgfonlayer}{lines}
\pgfmathparse{0.1*tan(45/2)}
\let\offset\pgfmathresult

\draw[line, lineA]
(Nemocnice Motol) -|
(Petřiny) |-
(Nádraží Veleslavín) --
(Bořislavka) --
(Dejvická) -|
(Malostranská) --
(Staroměstská) --
(Můstek) --
(Muzeum) --
(Náměstí Míru) --
(Flora) --
(Želivského) -|
(Strašnická) |-
(Skalka) -|
(Depo Hostivař);

\draw[line, lineB]
(Černý Most) --
(Hloubětín) to[connect with angle=125]
(Kolbenova) --
(Vysočanská) --
(Českomoravská) -|
(Palmovka) --
(Invalidovna)  --
(Křižíkova) -- (2.2,1.4) --
(Florenc) --
(Náměstí Republiky) -- ++(-0.5,0) -- (-1.4,0.6) --
(Národní třída) -- ++(0,-1) --
(Karlovo náměstí)  --
(Anděl)  -|
(Smíchovské nádraží)  |-
(Jinonice)  --
(Nové Butovice)  --
(Hůrka) --
(Lužiny)  -- ++(-0.6,0) --
(Luka)  --
(Stodůlky) -- (-8.2,-1.8) --
(Zličín);

\draw[line, lineC]
(Letňany) -|
(Prosek) --
(Střížkov) |-
(Ládví) --
(Kobylisy) -|
(Nádraží Holešovice) --
(Vltavská) --
(Florenc) -- ++(0,-0.8) --
(Hlavní nádraží) -- (0.2,-0.5) --
(I P Pavlova) --
(Pražského povstání) --
(Pankrác) --
(Budějovická) --
(Kačerov) -- (2.9,-5) --
(Roztyly) --
(Chodov) --
(Opatov) --
(Háje);

\end{pgfonlayer}
%
\begin{pgfonlayer}{labels}
\node[font=\scriptsize, color=white, rotate=90] at (-3.0,6){Vltava};
\node[font=\scriptsize, color=white, rotate=90] at (-2.2,-4) {Vltava};
\foreach\stop/\placement/\anchor/\rotate in {
% Line A
Nemocnice Motol/below/north/0,
Petřiny/right/west/0,
Nádraží Veleslavín/above/south/0,
Bořislavka/below/north/0,
Dejvická/above/south/0,
Malostranská/left/east/0,
Staroměstská/below/north/0,
Můstek/below/north/0,
Muzeum/below/north/0,
Náměstí Míru/below/north/0,
Flora/below/north/0,
Želivského/above/south/0,
Strašnická/left/east/0,
Skalka/above/south/0,
Depo Hostivař/right/west/0,
% Line B
Černý Most/below/north/0,
Hloubětín/below/north/0,
Kolbenova/above/south/0,
Vysočanská/below/north/0,
Českomoravská/above/south/0,
Palmovka/left/east/0,
Invalidovna/right/west/0,
Křižíkova/below/north/0,
Florenc/below/north/0,
Náměstí Republiky/above/south/0,
Národní třída/left/east/0,
Karlovo náměstí/below/north/0,
Anděl/above/south/0,
Smíchovské nádraží/right/west/0,
Jinonice/above/south/0,
Nové Butovice/below/north/0,
Hůrka/above/south/0,
Lužiny/below/north/0,
Luka/left/east/0,
Stodůlky/right/west/0,
Zličín/below/north/0,
% Line C
Letňany/below/north/0,
Prosek/left/east/0,
Střížkov/right/west/0,
Ládví/above/south/0,
Kobylisy/above/south/0,
Nádraží Holešovice/left/east/0,
Vltavská/left/east/0,
Hlavní nádraží/right/west/0,
I P Pavlova/left/east/0,
Pražského povstání/left/east/0,
Pankrác/left/east/0,
Budějovická/left/east/0,
Kačerov/left/east/0,
Roztyly/below/north/0,
Chodov/above/south/0,
Opatov/below/north/0,
Háje/above/south/0%
} \node[label, \placement=0.05cm of \stop, rotate=\rotate, anchor=\anchor] {\contour{white}{\stop}};

\node[line name, fill=lineA, left=0.2cm of Nemocnice Motol] {A};
\node[line name, fill=lineA, above=0.2cm of Depo Hostivař] {A};
\node[line name, fill=lineB, right=0.2cm of Černý Most] {B};
\node[line name, fill=lineB, left=0.2cm of Zličín] {B};
\node[line name, fill=lineC, right=0.2cm of Letňany] {C};
\node[line name, fill=lineC, right=0.2cm of Háje] {C};

\path (-1.3,1.45) pic[scale=0.2] {bear};
\path (-1.1,1.45) pic[scale=0.2] {bear};
\end{pgfonlayer}

\end{tikzpicture}

\end{document}

![prague-1.png](/image?hash=8f70a15cdf4b205a3ec4af5c7edb1eae8d34d8d116447b7efdf40ed4e362292c)

Enter question or answer id or url (and optionally further answer ids/urls from the same question) from

Separate each id/url with a space. No need to list your own answers; they will be imported automatically.