#import "@preview/cetz:0.2.2" #import "@preview/fontawesome:0.4.0": * #set page( width: 120cm, height: 120cm, margin: 0cm, ) #set text( font: "Andika", stylistic-set: 13, size: 1cm ) #let thick = 0.5cm #let transit = fa-icon("bus") #let c = ( black: color.luma(0%), white: color.luma(100%), central: color.rgb(50%, 0%, 0%), transversal: color.rgb(0%, 50%, 0%), southern: color.rgb(0%, 0%, 50%), slab: color.luma(50%), western: color.rgb("#8f6030"), aquatic: color.rgb("#ff4000"), ngafrican: color.rgb("#ff8f8f"), transfortunate: color.rgb(100%, 0%, 100%), cuba: color.rgb("#b3b3ff"), archipelago: color.rgb("#fcba03"), transamujan: color.rgb("#924e7d"), forest: color.rgb("#4d8787"), corner: color.rgb("#be93e3"), local: color.luma(0%), ) #let pos = ( above : (x: 0, y: 2.5, anchor: "south"), below : (x: 0, y: -2, anchor: "north"), left : (x: -2, y: 0, anchor: "east"), right : (x: 2, y: 0, anchor: "west"), above-left : (x: -2, y: 2.5, anchor: "south-east"), above-right: (x: 2, y: 2.5, anchor: "south-west"), below-left : (x: -2, y: -2, anchor: "north-east"), below-right: (x: 2, y: -2, anchor: "north-west") ) #let mks(x, y, n, po) = (x: x, y: y, name: n, pos: po, phantom: none) #let mkp(x, y) = (x: x, y:y, phantom: true) #let stations = ( // Central line 0 tts1: mks( -47.7, 50, [Tantsang], none), _005: mkp( -35, 50), _000: mkp( -30, 45), kcy1: mks( -30, 30, [Yija], none), kcc1: mks( -30, 10, [Parkow], "below-right"), _001: mkp( -30, 5), _002: mkp( -25, 0), kcm1: mks( -20, 0, [Port Marcy], none), mzl1: mks( -10, 0, [Liztarp], "above"), mzs1: mks( 0, 0, [Spawn], "below"), mzt1: mks( 10, 0, [Tisheongja], "above"), mzc1: mks( 20, 0, [New Citadel], "below"), xvh1: mks( 30, 0, [Vee’s Hole], "below-right"), _003: mkp( 35, 0), _004: mkp( 40, 5), kzk1: mks( 40, 10, [Kozdenen #transit], "above-right"), rer1: mks( 40, 20, [R̦ijeləm], "right"), epi1: mks( 40, 30, [i Êpcêm], "right"), // Transversal 1 ort1: mks( -90, 35, [Todoian], "right"), xg21: mks( -90, 40, [Guam 2], "right"), xph1: mks( -90, 45, [Phoeŋix], "right"), ztb1: mks( -90, 50, [Balijom], "right"), ztz1: mks( -90, 55, [Zotazil], "right"), dof1: mks( -90, 60, [Froglight Junction #transit], "right"), _010: mkp( -90, 65), _011: mkp( -85, 70), dor1: mks( -80, 70, [Rintìh], "above"), hen1: mks( -70, 70, [Nóreesá], "below"), heq1: mks( -60, 70, [Qòhééhinyèè], "above"), _014: mkp( -55, 70), _015: mkp( -50, 65), hep1: mks( -50, 60, [Pámù], "left"), tts2: mks( -50, 50, [Tantsang], "left"), hlg1: mks( -50, 40, [Glitter Island], "left"), hlf1: mks( -50, 30, [Fliegenpilz], "left"), hlh1: mks( -50, 20, [Mitthumm City], "above-left"), _012: mkp( -50, 15), _013: mkp( -45, 10), kcc2: mks( -27.7, 10, [Parkow], none), imp1: mks( 0, 10, [Imerchal Pfr.], "below"), kzk2: mks( 42.3, 10, [], none), ekh1: mks( 70, 10, [Enkavak Harbour], "below-right"), xio1: mks( 90, 10, [Iopvixen’s Fort], "above"), xce1: mks( 100, 10, [Cesarea], "below"), _016: mkp( 105, 10), _017: mkp( 110, 15), xsb1: mks( 110, 20, [Sidón y Biblos], "right"), xmt1: mks( 110, 25, [Mesa Temple], "right"), xmb1: mks( 110, 30, [Marti’s base], "right"), xmv1: mks( 110, 35, [Marti’s village], "right"), // Southern 2 kcm2: mks( -20, -2.3, [Port Marcy], "below"), _020: mkp( -12.3, -2.3), _021: mkp( -10, -5), ttm1: mks( -10, -10, [Moshas], "right"), tqt1: mks( -10, -20, [Þunan Ŋáce], "right"), tqs1: mks( -10, -30, [Saxland], "right"), nan1: mks( -10, -40, [Nārospiňt], "right"), ary1: mks( -10, -50, [Yuɱa #transit], "right"), rpk1: mks( -10, -60, [Kanga], "right"), _022: mkp( -10, -65), _023: mkp( -15, -70), ama1: mks( -20, -70, [Drebzha], none), _024: mkp( -25, -70), _025: mkp( -30, -65), xsh1: mks( -30, -60, [Scarecrow Hbr.\ #transit], "right"), fpa1: mks( -30, -50, [Allium], "left"), arf1: mks( -30, -40, [Flagstaff], "left"), nbt1: mks( -30, -30, [Ŋibraltar], "left"), _026: mkp( -30, -5), _027: mkp( -27.7, -2.3), // Slab 3 kcy2: mks(-25.4, 30, [Yija], none), sxg1: mks( 0, 30, [Slab Exchange], "above"), edt1: mks( 20, 30, [Tordanniòge], "above"), // Western 4 vaz1: mks( -80, 10, [The Vazr], "right"), pet1: mks( -80, 0, [TTPD Era #transit], "right"), pe11: mks( -80, -10, [1989 Era #transit], "right"), _040: mkp( -80, -15), _041: mkp( -75, -20), zgw1: mks( -70, -20, [Ʒimh Gwynh], "below-left"), cba1: mks( -60, -20, [Anweigh], "below-right"), tqn1: mks( -40, -20, [Ŋájaþáw], "above"), tqt2: mks( -12.3, -20, [Þunan Ŋáce], none), // Aquatic 5 amm1: mks( -40, -100, [Mawg], "left"), kzg1: mks( -40, -90, [Blighted Shrine], "left"), _050: mkp( -40, -79.6), _051: mkp( -35, -74.6), ama2: mks( -20, -74.6, [Drebzha], none), ayk1: mks( 10, -74.6, [Kaath Tran], "below-left"), ayr1: mks( 20, -74.6, [Ruôy Rûdak], "below"), fst1: mks( 30, -74.6, [Tarpoenstad], none), trc1: mks( 40, -74.6, [Czägrÿxyx], "below"), xcc1: mks( 50, -74.6, [Capitol], "above"), xci1: mks( 60, -74.6, [Citadel Island], none), // Ŋafrican 6 mry1: mks( -80, 20, [Maryland], "above"), hla1: mks( -70, 20, [Auŕol Uraxe], "below"), hlh2: mks( -54.6, 20, [Mitthumm City], none), // Transfortunate 7 ayk2: mks( 10, -76.9, [Kaath Tran], none), rmj1: mks( 10, -90, [Madness Junction], "right"), awv1: mks( 10, -100, [V́aisi], none), _070: mkp( 10, -105), _071: mkp( 15, -110), han1: mks( 20, -110, [Hanebrug], "below"), // Cuba line 8 hlh3: mks( -52.3, 20, [Mitthum City], none), obr1: mks( -52.3, 0, [Oberia], "above-left"), _080: mkp( -52.3, -12.3), _081: mkp( -57.7, -17.7), cba2: mks( -60, -17.7, [Anweigh], none), _082: mkp( -62.3, -17.7), _083: mkp( -70, -27.7), cbv1: mks( -70, -30, [Chillvana], "left"), cbc1: mks( -70, -40, [Old Cuba], "left"), cbf1: mks( -70, -50, [Frostanamo Bay], none), _084: mkp( -70, -55), _085: mkp( -65, -60), cbm1: mks( -60, -60, [Faeran], "below-right"), cbn1: mks( -40, -60, [Mt. Navia], "above"), xsh2: mks( -32.3, -60, [Scarecrow Harbour], none), // Archipelago 9 cbm2: mks( -60, -62.3, [Faeran], none), svs1: mks(-60, -70, [Sta Wejs], "below"), // Transamujan 10 ama3: mks( -20, -76.9, [Drebzha], "below"), _100: mkp( -25, -76.9), _101: mkp( -30, -81.9), lri1: mks( -30, -90, [Idanopolis], "right"), // Local -- Enkavak a eke1: mks( 70, 0, [Ekativak], "right"), ekh2: mks( 70, 7.3, [Enkavak Harbour], none), ekn1: mks( 70, 20, [Ngishmgak], "left"), ekt1: mks( 70, 30, [Thurishgak], "left"), _a00: mkp( 70, 12), _a01: mkp( 80, 17), ekg1: mks( 80, 20, [Enkavak Govt.], "above"), // Local -- Shingtsun b kce1: mks( -27.7, 60, [Esane], "right"), ung1: mks( -27.7, 50, [United Ŋations HQ], "right"), kci1: mks( -27.7, 40, [North Yija], "right"), kcy3: mks( -27.7, 30, [Yija], "above-right"), _b00: mkp( -27.7, 25), _b01: mkp( -25, 22.3), kcs1: mks( -20, 22.3, [Shingtin Xeh], "above-right"), kcp1: mks( 0, 22.3, [Peregansia], "below"), vaf1: mks( 20, 22.3, [Cyerin Forest], "above"), van1: mks( 30, 22.3, [Vanstérelle], "below"), // Local -- Fishland c fst2: mks( 30, -72.3, [Tarpoenstad], "above-left"), fsn1: mks( 30, -60, [Northern Plains], "left"), // Local -- Kyaw Cen Sheep d kcc3: mks( -32.3, 10, [Parkow], none), kch1: mks( -32.3, 0, [Sheep Isl.], "left"), // Local -- Imerchal e imc1: mks( -10, 12.3, [West Chalmosique], "above"), imp2: mks( 0, 12.3, [], none), imq1: mks( 10, 12.3, [Quépichal], "right"), _e00: mkp( 17.7, 20), vaf2: mks( 20, 20, [Cyerin Forest], none), // Forest 11 ams1: mks( -30, -72.3, [Shangu], "above-left"), ama4: mks( -20, -72.3, [Drebzha], none), sak1: mks( -10, -72.3, [Kuzhgub Peninsula], "right"), // Local -- Aistóv́y f awr1: mks( 0, -102.3, [Rikížmüs], "below"), awv2: mks( 10, -102.3, [V́aisi], "above-left"), awm1: mks( 20, -102.3, [Meǯjaiti], "below"), awk1: mks( 30, -102.3, [Kentóv́us], "above"), // Local -- Everglacier g cbf2: mks(-72.3, -50, [Frostanamo Bay], "left"), cbe1: mks(-72.3, -60, [Everglacier Nat’l Park], "left"), // Corner 12 dcj1: mks(62.3, -60, [Dchâjâ Mountain], "right"), xci2: mks(62.3, -74.6, [Citadel Island], "right"), crv1: mks(62.3, -90, [Vizdanja], "right"), // Key _00a: mks(110, -20, [Central], "right"), _00b: mkp(100, -20), _01a: mks(110, -25, [Transversal], "right"), _01b: mkp(100, -25), _02a: mks(110, -30, [Southern], "right"), _02b: mkp(100, -30), _03a: mks(110, -35, [Slab], "right"), _03b: mkp(100, -35), _04a: mks(110, -40, [Western], "right"), _04b: mkp(100, -40), _05a: mks(110, -45, [Aquatic], "right"), _05b: mkp(100, -45), _06a: mks(110, -50, [Ŋafrican], "right"), _06b: mkp(100, -50), _07a: mks(110, -55, [Transfortunate], "right"), _07b: mkp(100, -55), _08a: mks(110, -60, [Cuba], "right"), _08b: mkp(100, -60), _09a: mks(110, -65, [Archipelago], "right"), _09b: mkp(100, -65), _10a: mks(110, -70, [Transamujan], "right"), _10b: mkp(100, -70), _11a: mks(110, -75, [Forest], "right"), _11b: mkp(100, -75), _12a: mks(110, -80, [Corner], "right"), _12b: mkp(100, -80), _x0a: mks(110, -85, [Local], "right"), _x0b: mkp(100, -85), _x1a: mks(110, -90, [In Construction], "right"), _x1b: mkp(100, -90), ) ========================== #let lines = ( ("central", "tts1", "_005", "_000", "kcy1", "kcc1", "_001", "_002", "kcm1", "mzl1", "mzs1", "mzt1", "mzc1", "xvh1", "_003", "_004", "kzk1", "rer1", "epi1"), ("transversal", "ort1", "xg21", "xph1", "ztb1", "ztz1", "dof1", "_010", "_011", "dor1", "hen1", "heq1", "_014", "_015", "hep1", "tts2", "hlg1", "hlf1", "hlh1", "_012", "_013", "kcc1", "imp1", "kzk2", "ekh1", "xio1", "xce1", "_016", "_017", "xsb1", "xmt1", "xmt1", "xmb1", "xmv1"), ("southern", "kcm2", "_020", "_021", "ttm1", "tqt1", "tqs1", "nan1", "ary1", "rpk1", "_022", "_023", "ama1", "_024", "_025", "xsh1", "fpa1", "arf1", "nbt1", "_026", "_027", "kcm2"), ("slab", "kcy2", "sxg1", "edt1"), ("western", "pet1", "pe11", "_040", "_041", "zgw1", "cba1", "tqn1", "tqt2"), ("aquatic", "amm1", "kzg1", "_050", "_051", "ama2", "ayk1", "ayr1", "fst1", "trc1", "xcc1", "xci1"), ("ngafrican", "mry1", "hla1", "hlh2"), ("transfortunate", "ayk2", "rmj1", "awv1"), ("cuba", "hlh3", "obr1", "_080", "_081", "cba2", "_082", "_083", "cbv1", "cbc1", "cbf1"), ("cuba", "cbm1", "cbn1", "xsh2"), ("archipelago", "cbm2", "svs1"), ("transamujan", "ama3", "_100", "_101", "lri1"), ("local", "eke1", "ekh2", "ekn1", "ekt1"), ("local", "ekh2", "_a00", "_a01", "ekg1"), ("local", "kce1", "ung1", "kci1", "kcy3", "_b00", "_b01", "kcs1", "kcp1", "vaf1", "van1"), ("local", "fst2", "fsn1"), ("local", "kcc3", "kch1"), ("local", "imp2", "imq1", "_e00", "vaf2"), ("forest", "ams1", "ama4", "sak1"), ("local", "awr1", "awv2", "awm1", "awk1"), ("local", "cbf2", "cbe1"), ("corner", "crv1", "xci2", "dcj1"), // Key ("central", "_00a", "_00b"), ("transversal", "_01a", "_01b"), ("southern", "_02a", "_02b"), ("slab", "_03a", "_03b"), ("western", "_04a", "_04b"), ("aquatic", "_05a", "_05b"), ("ngafrican", "_06a", "_06b"), ("transfortunate", "_07a", "_07b"), ("cuba", "_08a", "_08b"), ("archipelago", "_09a", "_09b"), ("transamujan", "_10a", "_10b"), ("forest", "_11a", "_11b"), ("corner", "_12a", "_12b"), ("local", "_x0a", "_x0b"), ) #let clines = ( ("western", "vaz1", "pet1"), ("cuba", "cbf1", "_084", "_085", "cbm1"), ("transfortunate", "awv1", "_070", "_071", "han1"), ("local", "imc1", "imp2"), // Key ("local", "_x1a", "_x1b") ) #align(center + horizon, cetz.canvas( length: 0.5cm, { import cetz.draw: * for (n, ..l) in lines { let coords = l.map(it => (stations.at(it).x, stations.at(it).y)) line(..coords, stroke: thick + c.at(n),) } for (n, ..l) in clines { let coords = l.map(it => (stations.at(it).x, stations.at(it).y)) line(..coords, stroke: (paint: c.at(n), dash: "loosely-dotted", thickness: thick/2)) } for (code, s) in stations { if s.phantom != none {continue} circle((s.x, s.y), s: none, fill: c.black, radius: 1.5, name: code) circle((s.x, s.y), s: none, fill: c.white, radius: 0.75) if s.pos != none { if code.starts-with("_") { let label = [#s.name] content( (s.x + pos.at(s.pos).x, s.y + pos.at(s.pos).y), anchor: pos.at(s.pos).anchor, label ) } else { let label = [#s.name *#upper(code.slice(0, 3))*] content( (s.x + pos.at(s.pos).x, s.y + pos.at(s.pos).y), anchor: pos.at(s.pos).anchor, label ) } } } content((60, 60), text(size: 5cm,)[*Ŋəcraft Railways*]) content((105, -10), text(size: 2cm)[*Key*]) } ))