diff --git a/docs/users_guide/framework_basics/systems_of_units.md b/docs/users_guide/framework_basics/systems_of_units.md index 39254c9b..a45e8200 100644 --- a/docs/users_guide/framework_basics/systems_of_units.md +++ b/docs/users_guide/framework_basics/systems_of_units.md @@ -190,3 +190,70 @@ inline constexpr struct mag_pi final : magnitude ```cpp inline constexpr struct degree final : named_unit<{u8"°", "deg"}, mag_pi / mag<180> * si::radian> {} degree; ``` + + +## Unit symbols + +Units are available via their full names or through their short symbols. +To use a long version, it is enough to type: + +```cpp +quantity q1 = 42 * si::metre / si::second; +quantity q2 = 42 * si::kilo / si::hour; +``` + +To simplify how we spell it a short, user-friendly symbols are provided in a dedicated +subnamespace in systems definitions: + +```cpp +namespace si::unit_symbols { + +constexpr auto m = si::metre; +constexpr auto km = si::kilo; +constexpr auto s = si::second; +constexpr auto h = si::hour; + +} +``` + +Unit symbols introduce a lot of short identifiers into the current namespace. This is why they +are opt-in. A user has to explicitly "import" them from a dedicated `unit_symbols` namespace: + +=== "using-declaration" + + ```cpp + using namespace si::unit_symbols; + + quantity q1 = 42 * m / s; + quantity q2 = 42 * km / h; + ``` + +=== "using-directive" + + ```cpp + using si::unit_symbols::m; + using si::unit_symbols::km; + using si::unit_symbols::s; + using si::unit_symbols::h; + + quantity q1 = 42 * m / s; + quantity q2 = 42 * km / h; + ``` + +We also provide alternative object identifiers using Unicode characters in their names for most +unit symbols. The code using Unicode looks nicer, but it is harder to type on the keyboard. +This is why we provide both versions of identifiers for such units. + +=== "ASCII only" + + ```cpp + quantity resistance = 60 * kohm; + quantity capacitance = 100 * uF; + ``` + +=== "With Unicode glyphs" + + ```cpp + quantity resistance = 60 * kΩ; + quantity capacitance = 100 * µF; + ```