# Sjabloon:Val/doc

Ga naar: navigatie, zoeken

## Purpose

This template is used to easily present values in scientific notation, including uncertainty and/or units, as prescribed by Wikipedia's Manual of Style. It wraps the entire result in a {{nowrap}} block, so that it never gets broken into separate pieces at the end of a line. (See WP:NBSP for more information on the usage of non-breaking spaces.)

## Arguments

There are four ways this template can be used:

• `{{val|number}}` - for displaying values without uncertainty/significance.
• `{{val|number|uncertainty}}` - for displaying values with uncertainty like so {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}.
• `{{val|number|upper uncertainty|lower uncertainty}}` - for displaying values with uncertainty like so {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}.
• `{{val|number|(significance)}}` - for displaying values with significance like so {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}.

They all take roughly the same arguments

 1 The value (must be a valid number) 2 The (upper limit of) uncertainty (must be a valid number) or significance (must be a valid number in parenthesis) 3 The lower limit of uncertainty (must be a valid negative number) e The exponent for the power of 10 (optional). This will show up in the result as " × 10e". Values (arguments 1–3 and e) are run through code copied from {{delimitnum}} for readability, except for argument 2 when it is surrounded by parenthesis. This currently causes an error for large numbers, numbers that require high precision and numbers that have zeros after the decimal point. This last issue is being addressed, the other issues require changes to the Wikipedia software. u / ul Activate units and any markup / with a link to a page about the unit (optional / optional) up / upl Construct units, and this is the "per" unit that is the denominator / with a link to a page about the denominator (requires numerator from u or ul) Units for the number, specified by u and ul (and up and upl), are replaced by a more aesthetically pleasing HTML representation and can get a link (ul and upl only) if they are in the list found in {{val/unitswithlink}} or if they are supported by {{convert}}). You can specify units using just u; a good example is "ul=m/s", which gets translated to "m·s-1", or you can use u and up, as in "u/up"; a good examples if "ul=m|up=s", which gets translated to "m/s". p A prefix for the value (such as ∆, ⌀, etc.; optional). s A suffix for the value (such as %, optional). Prefixes (specified by p) and suffixes (specified by s) are put in front of or behind the value as is: this includes spaces. They are inside the nowrap block and will always be on the same line as the value. The parameters that previously provided this functionality (h for header and f for footer) are deprecated and will be ignored. end error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} errend error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} +errend & -errend error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} nocategory If set to any value, errors in the use of this template will not cause the page to be added to the Pages with incorrect formatting templates use category. This is useful for documentation and test pages that do not need to be fixed.

See {{val/test}} for a list of examples of the correct output of {{val}} and the errors it may return when incorrectly used.

## Errors

There is strict checking on the validity of arguments; any incorrect use will result in an error, which is displayed using {{FormattingError}}. Pages that contain incorrect use of this template will show up on Category:Pages with incorrect formatting templates use.

## Format convention

As mentioned before, {{val}} should produce formatting compliant with Wikipedia's Manual of Style. It currently produces formatting compliant with the U.S. Government Printing Office Style Manual, in rules 12.9e and 12.14, which requires that the decimal separator be a full stop; i.e. “decimal point” (.), requires comma-delimiting to the left of the decimal point for numbers with four or more digits to the left (values of {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} or more), and also requires space-delimiting to the right of the decimal point for numbers containing five or more digits to the right (e.g., {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} and {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} and {{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}).

Note that if {{val}} is used on numbers simultaneously comprising four or more digits to the left of the decimal point and five or more digits to the right, the resultant expression will delimited with commas left and spaces (actually non-selectable, non-breaking, narrow gaps) right (see below).

## Examples

 `{{val|1234567890}}` → error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} `{{val|1.23456789}}` → error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} `{{val|[[:Sjabloon:Xpd/code]][[:Sjabloon:Xpd/code]][[:Sjabloon:Xpd/code]]}}[[:Sjabloon:Xpd/code]][[:Sjabloon:Xpd/code]][[:Sjabloon:Xpd/code]][[:Sjabloon:Xpd/code]][[:Sjabloon:Xpd/code]][[:Sjabloon:Xpd/code]][[:Sjabloon:Xpd/code]][[:Sjabloon:Xpd/code]][[:Sjabloon:Xpd/code]][[:Sjabloon:Xpd/code]][[:Sjabloon:Xpd/code]]` → error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} [1] Uncertainty/significance `{{val|1.234|0.005}}` → error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} `{{val|1.234|+0.005|-0.006}}` → error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} `{{val|1.234|(5)}}` → error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} Exponents/units `{{val|1.234|e=5|u=m}}` → error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} `{{val|1.234|e=5|u=m2}}` → error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} `{{val|1.234|e=5|ul=m}}` → error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} `{{val|1.234|0.056|e=7}}` → error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} `{{val|1.23456|+0.00007|-0.00008|e=-9|ul=m/s}}` → error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} `{{val|1.234|0.056|e=7|ul=psi}}` → error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} `{{val|123.4|ul=USgal}}` → error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} `{{val|12.34|ul=mpgimp}}` → error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} Prefix/suffix `{{val|p=Δ |12.34|s=%}}` → error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}} Numerator/Denominator `{{val|1.234|e=7|ul=W|up=m2}}` → error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}
More examples
See the testcases at Val/test.

## Performance impact

For most uses, in the text of articles, Template:Val will not restrict performance, but when used inside the wikitext markup of large templates, there are some restrictions. When displaying integer amounts, Template:Val has an internal expansion depth of 15 levels, but for numbers with decimal portions, it uses 22 levels, or more.

The unit you will add is required to have a link version and a non-link version for stylistic reasons (including the ability of editors to avoid overlinking). The link version will be added to Val/unitswithlink to process the `ul` and `upl` parameters. The non-link version might need to be added to Val/units to process the `u` and `up` parameter; it depends on whether or not the unit needs markup, or if the characters users will give to the `ul` or `u` parameter are different than what is displayed, or if "technical reasons" are discovered. (See below.)

Note these points before adding units:

• For composite units you should probably link the whole, not individual units. For example the line you add would say ` |m·s-1=[[Velocity|m·s{{sup|−1}}]]` linking to Velocity, not `|m*s-1=[[Metre|m]]·[[Second|s]]{{sup|−1}}`. List of common physics notations has many examples of composite units that have there own page.
• The val user can compose their own divisor unit from an existing unit, writing `{{val|ul=m|upl=s}}` to render there own "{{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}" with two links: `m` to Meter and `s` to Second.
• The val user can compose their own multiplier units by using the `end` parameter to prepend a string. For example, to prepend "{{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}", they could write `{{val|333|end=&nbsp;Ma|ul=uBP}}`, rendering "{{#invoke:Error|error|Error in {{val}}: first argument is not a valid number or requires too much precision to display.|tag=}}". These cannot be linked.

The technique involves activating "Show changes" to catch unintended changes that are otherwise difficult to detect in any of the many pages using val that would be affected.

1. Edit {{Val/unitswithlink/test}}. The LHS of the "=" sign is what val users will give to the `ul` (or `upl`) parameter. Activate "Show preview". This will run your test data through val, which would be similar to running val itself in a sandbox. Prove the intended link and markup here because you will not be able to show a preview in the next steps. Copy what you will be adding to the wiki with the next steps. Save the page to serve as a "current list".
2. Edit {{Val/unitswithlink}}. Paste the identical line proven in step 1. Sort order is not important. Show changes, and then save.
3. If the unit will display differently from what is typed into `u=`, edit {{Val/units}}. Paste the identical line, and remove any links from the RHS of the "=" sign, being careful to leave any rendering work. Show changes, and then save.
4. Important. Run `{{Val|u=}}` and `{{Val|ul=}}` in a sandbox and verify that your unit has an identical appearance in both cases. Edit {{Val/units}} to make any corrections. (The discrepancy occurred for technical reasons.)

The last step is an important to the manual of style for dates and numbers.

• Q: Why should I use val?
A1: {{Val}} formats numbers:
A2: It preserves spacing:
• It makes sure the value does not wrap at the end of a line, so that it can always be read as a single value on one line in the text.
• It spaces the various parts of the value where they should be
A3: It automates the markup for, and a link to a displayed unit.
A4: Val helps make Wikipedia more consistent. It adheres to the Wikipedia Manual of Style for numbers. Updates to the Wikipedia Manual of Style for numbers can be applied to this template, and result in automatic modification on values that use val. All this makes sure all values on all pages have the same look and feel because they will all use the same spacing, font size, positioning, etc, and makes updating and checking by the bots easier because they can recognize a value for what it is.
• Q: Why not use [itex]?
A: For the same reasons [[Help:Math#Pros_of_HTML|HTML might be preferred over Sjabloon:TeX]]:
• Because the font in math tags differs both in face and size from the prose, which can disturb the layout of a page when used inline with the prose.
• You cannot cut and paste a bitmap image rendered by the Latex.
• Images are slower to load and use more bandwidth, which is especially bad for the mobile version of Wikipedia.
• [itex] does not automatically adhere to the Wikipedia Manual of Style for numbers.
• Q: Are there any known issues with val?
A1: Because numbers can only be stored with a limited precision by Wikipedia servers, val cannot handle very large numbers, such as 123456789123456789. This is reported using a {{FormattingError}}, so it should be easy to spot. Since there is very limited use for such large numbers, there is no fix planned for this.
A2: This template has been in full use on many pages for quite some time without major problems or breaking changes. Technically, there is no good reason not to try val.
• Q: How should I use val?