Railynx (pronounced rail-lynx, /ˈreɪl ˌlɪŋks/) is a Typst package for drawing rail track diagrams using a concise and expressive syntax. It allows you to render tracks, switches, buffer stops, platforms and arrows in a structured and configurable way, all with readable symbolic input.
📦 Designed for transportation enthusiasts who need schematic track diagrams in their Typst documents.
|
|
🚃 Usage
Quick Start
To use this package, simply add the following code to your document:
#import "@preview/railynx:0.1.0": railynx
#railynx(
2,
("1e 2e", "1sr 2sl", ""),
)
Parameters
| Name | Default | Description |
|---|---|---|
rail |
(Required) | Number of vertical rail tracks. |
nodes |
(Required) | Operation expressions of horizontal nodes. |
base-index |
1 |
Base number for track indexing. |
rail-space |
1cm |
Horizontal spacing between tracks. |
node-space |
1cm |
Vertical spacing between node rows. |
breakable |
true |
Whether the diagram block can break across pages. |
fill |
none |
Background fill color of the diagram block. |
stroke |
none |
Border stroke color of the diagram block. |
rail-stroke |
1.5pt + blue |
Stroke style for tracks and switches. |
switch-tension |
0 |
Controls the curve tension for switches. |
platform-fill |
blue |
Fill color for platforms. |
arrow-dx |
0.2 |
Horizontal offset for arrows. |
arrow-fill |
none |
Fill color for arrowheads. |
arrow-stroke |
blue |
Stroke color for arrows. |
🧮 Node Syntax
The type of each node element in the nodes array can be str or an array[str], representing a horizontal row in the diagram.
Operation Reference
| Syntax | Description |
|---|---|
Ne |
Toggle a vertical rail segment at index N. |
NE |
Render a buffer stop at index N. |
Nsr / Nsl |
Draw a right/left switch starting at index N. |
NSr / NSl |
Draw a complete right/left switch from index N. |
Npr / Npl |
Draw a platform on right/left side of index N. |
NPr / NPl |
Draw a wide platform on right/left side of index N for two tracks. |
Nadr / Nadl / Naur / Naul |
Draw a down/up arrow (directional marker) on right/left side of index N. |
Each node element contains one or more operation expressions, like "0e 2e 0adl 2aur" or ("0e", "2e", "0adl", "2aur"). Notably, if a node is an empty string (""), it will simply extend all existing rails by one node space.
🛠 Error Handling
Railynx clearly flags invalid input with error blocks, including invalid argument types, out-of-bounds references and malformed operations. If you encounter other errors during compilation, please create an issue.