You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

195 lines
9.2 KiB

5 months ago
  1. \documentclass{standalone}
  2. \usepackage{fontspec}
  3. \setmainfont{Andika}[
  4. StylisticSet=13
  5. ]
  6. \usepackage{tikz}
  7. \usetikzlibrary{positioning, calc}
  8. \newcommand\full{2}
  9. \newcommand\half{0.5*\full}
  10. \newcommand\station[4]{
  11. \directlua{
  12. tex.sprint("\\node[#4] (#1) {};")
  13. tex.sprint("\\fill[black] (#1) circle (.2);")
  14. tex.sprint("\\fill[white] (#1) circle (.1);")
  15. local x, y, dir = 0, 0, ""
  16. if "#3" == "above" then y = 0.5
  17. elseif "#3" == "below" then y = -0.5
  18. elseif "#3" == "left" then x, dir = -0.1, "left"
  19. elseif "#3" == "right" then x, dir = 0.2, "right"
  20. elseif "#3" == "above left" then x, y, dir = -0.2, 0.5, "left"
  21. elseif "#3" == "above right" then x, y, dir = 0.2, 0.5, "right"
  22. elseif "#3" == "below right" then x, y, dir = 0.2, -0.5, "right"
  23. elseif "#3" == "below left" then x, y, dir = -0.2, -0.5, "left"
  24. end
  25. \usepackage[margin=5mm]{geometry}
  26. local tag = ""
  27. if "#2" ~= "" and string.sub("#1", 1, 1) ~= "l" then
  28. tag = " {\\footnotesize\\bf #1}"
  29. end
  30. tex.sprint("\\node["..dir.."] (#1-lbl) at ($ (#1) + ("..x..","..y..") $) {{\\it #2}" .. tag .. "};")
  31. }
  32. }
  33. \begin{document}
  34. \begin{tikzpicture}[
  35. on grid,
  36. every path/.style={rounded corners = 5, line width=4},
  37. singletracked/.style={line width=2,dotted}
  38. ]
  39. \node (Origin) at (0, 0) {};
  40. %%% Stations
  41. \station{MZS}{Spawn}{below}{left=0 of Origin}
  42. \station{MZL}{Liztarp}{above}{left=\full of MZS}
  43. \station{KCM2}{}{}{left=\full of MZL}
  44. \station{KCM}{Port Marcy}{below left}{below=.3 of KCM2}
  45. \station{KCC}{Parkow}{below right}{above left=\full and \full of KCM2}
  46. \station{KCC2}{}{}{right=.3 of KCC}
  47. \station{KCY}{Yija}{left}{above=3*\full of KCC}
  48. \station{KCY2}{}{}{right=.3 of KCY}
  49. \station{KCY3}{}{}{right=.3 of KCY2}
  50. \station{TTS}{Tantsang}{below left}{above left=\full and \full of KCY}
  51. \station{TTS2}{}{}{below=.3 of TTS}
  52. \station{HEQ}{Qòhééhinyèè}{above}{above left = 2*\full and \full of TTS}
  53. \station{MZT}{Tisheongja}{above}{right=\full of MZS}
  54. \station{MZC}{New Citadel}{below}{right=\full of MZT}
  55. \station{XXH}{The Hole}{above}{right=\full of MZC}
  56. \station{KZK}{Kozdenen}{below left}{above right=\full and \full of XXH}
  57. \station{KZK2}{}{}{left=.3 of KZK}
  58. \station{RER}{Ŗijeləm}{left}{above=\full of KZK}
  59. \station{EPI}{i Êpcêm}{left}{above=\full of RER}
  60. \station{HLG}{Glitter Island}{left}{below=\full of TTS}
  61. \station{HLF}{Fliegenpilz}{left}{below=\full of HLG}
  62. \station{HLH}{Hummland Hbf.}{below left}{below=\full of HLF}
  63. \station{HLH2}{}{}{left=.3 of HLH}
  64. \station{HLA}{Auŕol Uraxe}{above}{left=1.5*\full of HLH}
  65. \station{IMP}{Imerśal Pfr.}{below}{right=5*\half of KCC}
  66. \node[above=.3 of IMP] (IMP2) {};
  67. \station{VAN}{Vansterél}{left}{right=2.5*\full of IMP2}
  68. \station{EKH}{Alnangaemak Harbor}{below left}{right=3*\full of KZK}
  69. \station{EKH2}{}{}{left=.3 of EKH}
  70. \station{XIO}{Iopvixen's}{below}{right=\full of EKH}
  71. \station{TTM}{Moshas}{right}{below right=\full and \full of KCM2}
  72. \station{TQT}{Þunan Ŋáce}{right}{below=\full of TTM}
  73. \station{TQT2}{}{}{left=.3 of TQT}
  74. \station{TQS}{Saxland}{right}{below right=3*\half and \full of TQT}
  75. \station{NAN}{Nārospiňt}{right}{below=\full of TQS}
  76. \station{ARY}{Yuɱa}{right}{color=red, below=\full of NAN}
  77. \station{AMA}{Amuj}{below}{below left=\full and \full of ARY}
  78. \station{AMA2}{}{}{above=.3 of AMA}
  79. \station{KZG}{Guardian Farm}{above}{left=1.5*\full of AMA}
  80. \station{AMM}{Mäġ}{below}{left=\full of KZG}
  81. \station{AYK}{Khaath Tran}{above}{right=2*\full of AMA}
  82. \station{AYR}{Ruôy Rûdak}{below}{right=\full of AYK}
  83. \station{FSL}{Fishland}{above}{right=\full of AYR}
  84. \station{SXG}{Slab Exchange}{below}{right=2*\full of KCY}
  85. \station{EDE}{Ettêre Ðiffyt}{above}{right=3*\full of SXG}
  86. \station{KCI}{Iron Farm}{right}{above=\full of KCY2}
  87. \station{UNG}{United Ŋations HQ}{above}{above right=\full and \full of KCI}
  88. \station{KCE}{Esane}{below}{right=\full of UNG}
  89. \station{KCS}{Šingtin Xeh}{below}{below right=\full and \full of KCY}
  90. \station{KCP}{Pereganesia}{above}{right=2*\full of KCS}
  91. \station{VAF}{Cyerin Forest}{left}{below right=\full and 2*\full of KCP}
  92. \station{EKG}{Enkavak Govt.}{below right}{above=\full of EKH}
  93. \station{EKE}{Ekativak}{right}{below=\full of EKH}
  94. \station{HEN}{Nóreesá}{below}{left= \full of HEQ}
  95. \station{DOR}{Rintìh}{right}{below left=\full and \full of HEN}
  96. \station{ZTZ}{Zotazil}{right}{below =\half of DOR}
  97. \station{ZTB}{Balijom}{right}{below =\half of ZTZ}
  98. \station{XXP}{Phoeŋix}{right}{below=\half of ZTB}
  99. \station{MRY}{Maryland}{right}{below left=\full and 1.5*\full of HLA}
  100. \station{TQN}{Ŋájaþáw}{above}{left=\full of TQT}
  101. \station{MBA}{Aberville B. L.}{below}{left=\full of TQN}
  102. \station{ZGW}{Ʒimh Gwynh}{above}{left=\full of MBA}
  103. \station{HEP}{Pámù}{right}{above=\full of TTS}
  104. \station{UOS}{Suboršnava}{left}{below=\full of AYK}
  105. \station{KTC}{Czägrÿxyx}{below}{right=\full of FSL}
  106. \station{FEC}{Cesarea}{above}{right=\full and\full of XIO}
  107. \station{FES}{Sidón y Biblos}{left}{above right=\full and \full of FEC}
  108. \station{XXM}{Mesa Temple}{left}{above=\half of FES}
  109. \station{XMB}{Marti's Base}{left}{above=\half of XXM}
  110. \station{XMV}{Marti's Village}{left}{above=\half of XMB}
  111. \station{EKA}{Gashanggak}{below}{above left=\full and \full of EKH}
  112. \station{EKN}{Ngishmgak}{right}{above left=\full and \full of EKA}
  113. \station{EKT}{Thurishgak}{right}{above=\half of EKN}
  114. \station{LRI}{Idanopolis}{left}{below left=\full and \full of AMA}
  115. \station{NBT}{Ŋibraltar}{left}{left=2*\full of KCM}
  116. %%% Lines
  117. % Northern
  118. \draw[red!50!black] (TTS) -- ++(\half, 0) -- ++(\half, -\half) -- (KCY) --
  119. (KCC) -- ++(0, -\half) -- ++(\half, -\half) -- (KCM2) -- (MZL) -- (MZS);
  120. \draw[red!50!black, singletracked] (MZS) -- (MZT) -- (MZC) -- (XXH);
  121. \draw[red!50!black] (XXH) -- ++(\half, 0) -- ++(\half, \half) -- (KZK) --
  122. (RER) -- (EPI);
  123. % Transversal
  124. \draw[green!50!black] (TTS) -- (HEP) -- ++(0,\half) -- ++(-\half, \half) --
  125. (HEQ) -- (HEN) -- ++(-\half, 0) -- ++(-\half, -\half) -- (DOR) -- (ZTZ) --
  126. (ZTB) -- (XXP);
  127. \draw[green!50!black] (TTS2) -- (HLG) -- (HLF) -- (HLH) -- ++(0, -\half) --
  128. ++(\half, -\half) -- (KCC);
  129. \draw[green!50!black] (KCC2) -- (IMP) -- (KZK2);
  130. \draw[green!50!black] (KZK) -- (EKH2);
  131. \draw[green!50!black] (EKH) -- (XIO) -- (FEC) -- ++(\half, 0) -- ++(\half,
  132. \half) -- (FES) -- (XXM) -- (XMB) -- (XMV);
  133. % Southern
  134. \draw[blue!75!black] (NBT) -- (KCM) -- ++(\half, 0) -- ++(\half,-\half) -- (TTM) -- (TQT) -- ++(0, -0.5*\half) --
  135. ++(\full, -\full) -- (TQS) -- (NAN) -- (ARY) -- ++(0, .3-\half) -- ++(-\half,
  136. -\half) -- (AMA2) -- ++(-\half,0) -- ++(-\half,-\half) -- (LRI);
  137. % Aquatic
  138. \draw[orange!50!red] (AMM) -- (KZG) -- (AMA) -- (AYK) -- (AYR) -- (FSL) --
  139. (KTC);
  140. % Slab
  141. \draw[black!50!white] (KCY3) -- (SXG) -- (EDE);
  142. % Šingcun
  143. \draw[green!50!blue] (KCE) -- (UNG) -- ++(-\half, 0) -- ++(-\half, -\half)
  144. -- (KCI) -- (KCY2) -- ++(0, -\half) -- ++(\half, -\half) -- (KCS) -- (KCP) --
  145. ++(3*\half, 0) -- ++(\half, -\half) -- (VAF) -- (VAN);
  146. % Enkavak Rail
  147. \draw[violet] (EKG) -- (EKH) -- (EKE);
  148. \draw[violet] (EKH) -- ++(0,\half) -- ++(-\half,\half) -- (EKA) -- ++(-\half,0) -- ++(-\half,\half) -- (EKN) -- (EKT);
  149. % Phoeŋix
  150. % North-Western
  151. \draw[pink!75!red] (HLH2) -- (HLA) -- ++(-\full, 0) -- ++(-\half, -\half) --
  152. (MRY);
  153. % Western
  154. \draw[brown!75!black] (TQT2) -- (TQN) -- (MBA) -- (ZGW);
  155. % Magenta Line
  156. \draw[magenta] (AYK) -- (UOS);
  157. %%% Key
  158. % Frame
  159. \fill[gray!33!white] (2*\full, -\full) rectangle (7.5*\full, -5.5*\full);
  160. % Title
  161. \node (Key-Title) at (9*\half, -3*\half) {\LARGE LINES};
  162. % Left
  163. \station{l-Cent}{Central}{left}{below left = \half and 2*\half of
  164. Key-Title}
  165. \draw[red!50!black] (l-Cent) -- ++(\half, 0);
  166. \station{l-Tran}{Transversal}{left}{below=.75*\half of l-Cent}
  167. \draw[green!50!black] (l-Tran) -- ++(\half, 0);
  168. \station{l-Sout}{Southern}{left}{below=.75*\half of l-Tran}
  169. \draw[blue!75!black] (l-Sout) -- ++(\half, 0);
  170. \station{l-Colo}{Colonial}{left}{below=.75*\half of l-Sout}
  171. \draw[brown!75!black] (l-Colo) -- ++(\half, 0);
  172. \station{l-West}{Western}{left}{below=.75*\half of l-Colo}
  173. \draw[pink!75!red] (l-West) -- ++(\half, 0);
  174. % Right
  175. \station{l-Shin}{Šingcun}{right}{below right =\half and 2*\half of Key-Title}
  176. \draw[green!50!blue] (l-Shin) -- ++(-\half, 0);
  177. \station{l-Slab}{Slab}{right}{below=.75*\half of l-Shin}
  178. \draw[black!50!white] (l-Slab) -- ++(-\half, 0);
  179. \station{l-Aqua}{Aquatic}{right}{below=.75*\half of l-Slab}
  180. \draw[orange!50!red] (l-Aqua) -- ++(-\half, 0);
  181. \station{l-Enka}{Enkavak Rail}{right}{below=.75*\half of l-Aqua}
  182. \draw[violet] (l-Enka) -- ++(-\half, 0);
  183. \station{l-Mage}{Transfortunate}{right}{below=.75*\half of l-Enka}
  184. \draw[magenta] (l-Mage) -- ++(-\half, 0);
  185. % Single tracked warning
  186. \station{l-Single}{Single tracked segment}{right}{below=3.5*\full of Key-Title}
  187. \draw[singletracked] (l-Single) -- ++(-\full, 0);
  188. % Map Title
  189. \node at (5*\full, 5*\full) {\bf\Huge Ŋəcraft Railways};
  190. \end{tikzpicture}
  191. \end{document}