Difference between revisions of "Units"

From Wiki
Jump to navigation Jump to search
Line 102: Line 102:
  
 
In due time there will be a few more options. Numbers are formatted cf the digits mechanism (not discussed here).   
 
In due time there will be a few more options. Numbers are formatted cf the digits mechanism (not discussed here).   
 +
 +
===Expressing Physical quantities===
 +
 +
A physical quantity is number plus unit, and should not be split. A simple way to do this follows - define your own macro:
 +
 +
<texcode>
 +
\define[3]\physicalquantityle{\hbox{#1 \times \lunit{10^#2 #3}}}
 +
</texcode>
 +
 +
You can then write
 +
\physicalquantityle{number}{exponent}{unit}
 +
 +
This seems to give better results than any other way I have found of combining digits and units.
 +
 +
The full range of  variants allow expression of physical quantities with and without exponents, with units in long form or not:
 +
<texcode>
 +
\define[2]\physicalquantity{\hbox{\unit{#1 #2}}}
 +
%  \physicalquantity{number}{unit} -- gives short form of unit
 +
\define[2]\physicalquantityl{\hbox{\lunit{#1 #2}}}
 +
%  \physicalquantityl{number}{unit} -- gives long form of unit
 +
\define[3]\physicalquantitye{\hbox{#1 \times \lunit{10^#2 #3}}}
 +
%  \physicalquantitye{number}{exponent}{unit} -- gives short form of unit
 +
\define[3]\physicalquantityle{\hbox{#1 \times \lunit{10^#2 #3}}}
 +
%  \physicalquantityle{number}{exponent}{unit} -- gives long form of unit</texcode>
 +
</texcode>
 +
 +
 +
You can also  do ranges of units, that are otherwise messy to code up on an individual basis
 +
 +
 +
<texcode>
 +
\define[3]\physicalquantityspread{\hbox{#1\endash \lunit{#2 #3}}}
 +
</texcode>
 +
 +
You can then write:
 +
\physicalquantityspread{start}{end}{unit}
 +
 +
 +
 +
  
 
[[Category:Math]]
 
[[Category:Math]]
 
[[Category:Physics]]
 
[[Category:Physics]]
 
[[Category:Modules]]
 
[[Category:Modules]]

Revision as of 06:53, 15 September 2011

< Math Physics >

The units module comes with ConTeXt's default distribution, and can be accessed via \usemodule[units].

However, in MkIV we have integrated an upgrade to this mechanism so if you're using that version you might want to skip this first part.

The following is copied from the source file m-units.tex and only slightly modified:


  • Scientific units can be typeset in math mode pretty well, but occasionally one has to take care of spacing.

Furthermore, entering these units is not that natural as wanted. Therefore this module presents a more natural way of doing things, like:

\usemodule[units]
1.23 \Cubic \Meter \Per \Second

This example shows that we use the order in which we say things, instead of typeset things. There is no dedicated manual for this module, but an article (in dutch) has been published in [Maps#21], the journal of the NTG.


  • This runtime loadable module implements a way of defining units. The core macro is \dimension, a rather clever one that is able to cooperate with some other dimension related macros. As said, this module enables user to enter:
\usemodule[units]
Some 10 \Square \Meter \Per \Second\ or more.

(Note that the space after \Second needs to be explicitly specified; otherwise, it will get eaten.)


  • Units act upon signals that they insert in the text, in case no quantity is given you need to start the unit sequence using \Unit
\usemodule[units]
Units of measurement is \Unit \Milli \Meter

The units itself are implemented as synonyms.

\definesynonyms [unit] [units] [\unitmeaning]
\setupsynonyms [unit] [textstyle=\dimension]

This definition means that we can ask for the meaning of a unit using \unitmeaning and get a list of used units by saying \placelistofunits.

We have to use the command \unitmeaning instead of \meaning, simply because the latter is a TeX primitive we don't want to lose. We use the label text mechanism for translations.


Macros defined in units

External link: [How Many? A Dictionary of Units of Measurement]

Using the built-in command

In MkIV you can use the built-in \unit command. This time we don't use commands, if only because it is somewhat cumbersome. Let's give a few examples:

10 \unit{km/h}
\unit{10 km/h}
\unit{~1 km/h}
\unit{KiloMeter/Hour}
\unit{10 cubic meter / second}
\unit{kilo pascal square meter / second}
\unit{kilo pascal square meter / kelvin second }$
\unit{10 AC}
$\frac{10 \unit{m/s}}{20 \unit{m/s}}$
{\ss 30 \unit{kilo pascal square meter / second kelvin}}
\unit{123.22^-3 km/s}
\unit{123.22e-3 km/s}

The command works in text as well as in math mode and spaces are normally ignored. You can define your own command:

\defineunits[un][alternative=text,separator=medium]

Valid separators are cdot, big, medium, and space with the first being the default. You can later tune the rendering with

\setupunits[un][separator=cdot]

In due time there will be a few more options. Numbers are formatted cf the digits mechanism (not discussed here).

Expressing Physical quantities

A physical quantity is number plus unit, and should not be split. A simple way to do this follows - define your own macro:

\define[3]\physicalquantityle{\hbox{#1 \times \lunit{10^#2 #3}}}

You can then write \physicalquantityle{number}{exponent}{unit}

This seems to give better results than any other way I have found of combining digits and units.

The full range of variants allow expression of physical quantities with and without exponents, with units in long form or not:

\define[2]\physicalquantity{\hbox{\unit{#1 #2}}}
%  \physicalquantity{number}{unit} -- gives short form of unit
\define[2]\physicalquantityl{\hbox{\lunit{#1 #2}}}
%  \physicalquantityl{number}{unit} -- gives long form of unit
\define[3]\physicalquantitye{\hbox{#1 \times \lunit{10^#2 #3}}}
%  \physicalquantitye{number}{exponent}{unit} -- gives short form of unit
\define[3]\physicalquantityle{\hbox{#1 \times \lunit{10^#2 #3}}}
%  \physicalquantityle{number}{exponent}{unit} -- gives long form of unit

</texcode>


You can also do ranges of units, that are otherwise messy to code up on an individual basis


\define[3]\physicalquantityspread{\hbox{#1\endash \lunit{#2 #3}}}

You can then write: \physicalquantityspread{start}{end}{unit}