diff options
Diffstat (limited to 'Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-math-numberprinting.tex')
-rw-r--r-- | Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-math-numberprinting.tex | 792 |
1 files changed, 428 insertions, 364 deletions
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-math-numberprinting.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-math-numberprinting.tex index c3afcc8b234..9cd4a9a6dd6 100644 --- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-math-numberprinting.tex +++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-math-numberprinting.tex @@ -1,32 +1,33 @@ -\section{Number Printing} -\label{pgfmath-numberprinting}% +\section{Number Printing} +\label{pgfmath-numberprinting} -{\emph{An extension by Christian Feuers\"anger}} +{\emph{An extension by Christian Feuersänger}} \medskip \noindent -\pgfname\ supports number printing in different styles and rounds to arbitrary precision. +\pgfname\ supports number printing in different styles and rounds to arbitrary +precision. \begin{command}{\pgfmathprintnumber\marg{x}} - Generates pretty-printed output for the (real) number \meta{x}. The - input number \meta{x} is parsed using |\pgfmathfloatparsenumber| - which allows arbitrary precision. + Generates pretty-printed output for the (real) number \meta{x}. The input + number \meta{x} is parsed using |\pgfmathfloatparsenumber| which allows + arbitrary precision. - Numbers are typeset in math mode using the current set of number - printing options, see below. Optional arguments can also be provided - using |\pgfmathprintnumber[|\meta{options}|]|\meta{x}. + Numbers are typeset in math mode using the current set of number printing + options, see below. Optional arguments can also be provided using + |\pgfmathprintnumber[|\meta{options}|]|\meta{x}. \end{command} \begin{command}{\pgfmathprintnumberto\marg{x}\marg{macro}} - Returns the resulting number into \meta{macro} - instead of typesetting it directly. + Returns the resulting number into \meta{macro} instead of typesetting it + directly. \end{command} \begin{key}{/pgf/number format/fixed} - Configures |\pgfmathprintnumber| to round the number to a fixed - number of digits after the period, discarding any trailing zeros. - + Configures |\pgfmathprintnumber| to round the number to a fixed number of + digits after the period, discarding any trailing zeros. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,fixed,precision=2} \pgfmathprintnumber{4.568}\hspace{1em} @@ -36,14 +37,13 @@ \pgfmathprintnumber{123456.12345} \end{codeexample} - See section~\ref{sec:number:styles} for how to change the - appearance. + See section~\ref{sec:number:styles} for how to change the appearance. \end{key} \begin{key}{/pgf/number format/fixed zerofill=\marg{boolean} (default true)} - Enables or disables zero filling for any number drawn in fixed point - format. - + Enables or disables zero filling for any number drawn in fixed point + format. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,fixed,fixed zerofill,precision=2} \pgfmathprintnumber{4.568}\hspace{1em} @@ -52,8 +52,10 @@ \pgfmathprintnumber{24415.98123}\hspace{1em} \pgfmathprintnumber{123456.12345} \end{codeexample} - This key affects numbers drawn with |fixed| or |std| styles (the - latter only if no scientific format is chosen). + % + This key affects numbers drawn with |fixed| or |std| styles (the latter + only if no scientific format is chosen). + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,std,fixed zerofill,precision=2} \pgfmathprintnumber{4.568}\hspace{1em} @@ -62,16 +64,14 @@ \pgfmathprintnumber{123456.12345} \end{codeexample} - See section~\ref{sec:number:styles} for how to change the - appearance. + See section~\ref{sec:number:styles} for how to change the appearance. \end{key} \begin{key}{/pgf/number format/sci} - Configures |\pgfmathprintnumber| to display numbers in scientific - format, that means sign, mantissa and exponent (basis~$10$). The - mantissa is rounded to the desired |precision| (or |sci precision|, - see below). - + Configures |\pgfmathprintnumber| to display numbers in scientific format, + that means sign, mantissa and exponent (basis~$10$). The mantissa is + rounded to the desired |precision| (or |sci precision|, see below). + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,sci,precision=2} \pgfmathprintnumber{4.568}\hspace{1em} @@ -81,14 +81,13 @@ \pgfmathprintnumber{123456.12345} \end{codeexample} -See section~\ref{sec:number:styles} for how to change the exponential -display style. + See section~\ref{sec:number:styles} for how to change the exponential + display style. \end{key} \begin{key}{/pgf/number format/sci zerofill=\marg{boolean} (default true)} - Enables or disables zero filling for any number drawn in scientific - format. - + Enables or disables zero filling for any number drawn in scientific format. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,sci,sci zerofill,precision=2} \pgfmathprintnumber{4.568}\hspace{1em} @@ -97,26 +96,28 @@ display style. \pgfmathprintnumber{24415.98123}\hspace{1em} \pgfmathprintnumber{123456.12345} \end{codeexample} - As with |fixed zerofill|, this option does only affect numbers drawn - in |sci| format (or |std| if the scientific format is chosen). + % + As with |fixed zerofill|, this option does only affect numbers drawn in + |sci| format (or |std| if the scientific format is chosen). - See section~\ref{sec:number:styles} for how to change the - exponential display style. + See section~\ref{sec:number:styles} for how to change the exponential + display style. \end{key} \begin{stylekey}{/pgf/number format/zerofill=\marg{boolean} (default true)} - Sets both |fixed zerofill| and |sci zerofill| at once. + Sets both |fixed zerofill| and |sci zerofill| at once. \end{stylekey} \begin{keylist}{/pgf/number format/std,% - /pgf/number format/std=\meta{lower e}, - /pgf/number format/std=\meta{lower e}:\meta{upper e}} - Configures |\pgfmathprintnumber| to a standard algorithm. It chooses - either |fixed| or |sci|, depending on the order of magnitude. Let - $n=s \cdot m \cdot 10^e$ be the input number and $p$ the current - precision. If $-p/2 \le e \le 4$, the number is displayed using - |fixed| format. Otherwise, it is displayed using |sci| format. - + /pgf/number format/std=\meta{lower e}, + /pgf/number format/std=\meta{lower e}:\meta{upper e}% +} + Configures |\pgfmathprintnumber| to a standard algorithm. It chooses either + |fixed| or |sci|, depending on the order of magnitude. Let $n=s \cdot m + \cdot 10^e$ be the input number and $p$ the current precision. If $-p/2 \le + e \le 4$, the number is displayed using |fixed| format. Otherwise, it is + displayed using |sci| format. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,std,precision=2} \pgfmathprintnumber{4.568}\hspace{1em} @@ -125,22 +126,26 @@ display style. \pgfmathprintnumber{24415.98123}\hspace{1em} \pgfmathprintnumber{123456.12345} \end{codeexample} - The parameters can be customized using the optional integer - argument(s): if $\text{\meta{lower e}} \le e \le \text{\meta{upper - e}}$, the number is displayed in |fixed| format, otherwise in - |sci| format. Note that \meta{lower e} should be negative for useful - results. The precision used for the scientific format can be - adjusted with |sci precision| if necessary. + % + The parameters can be customized using the optional integer argument(s): if + $\text{\meta{lower e}} \le e \le \text{\meta{upper e}}$, the number is + displayed in |fixed| format, otherwise in |sci| format. Note that + \meta{lower e} should be negative for useful results. The precision used + for the scientific format can be adjusted with |sci precision| if + necessary. \end{keylist} \begin{keylist}{/pgf/number format/relative*=\meta{exponent base 10}} - Configures |\pgfmathprintnumber| to format numbers relative to an - order of magnitude, $10^r$, where $r$ is an integer number. + Configures |\pgfmathprintnumber| to format numbers relative to an order of + magnitude, $10^r$, where $r$ is an integer number. + + This key addresses different use-cases. + + \paragraph{First use-case:} - This key addresses different use-cases. - - \paragraph{First use-case:} provide a unified format for a - \emph{sequence} of numbers. Consider the following test: + provide a unified format for a \emph{sequence} of numbers. Consider the + following test: + % \begin{codeexample}[] \pgfkeys{/pgf/number format/relative*={1}} \pgfmathprintnumber{6.42e-16}\hspace{1em} @@ -149,24 +154,26 @@ display style. \pgfmathprintnumber{20.6}\hspace{1em} \pgfmathprintnumber{87} \end{codeexample} - \noindent With any other style, the |6.42e-16| would have been - formatted as an isolated number. Here, it is rounded to |0| because - when viewed relative to $10^1$ (the exponent $1$ is the argument for - |relative|), it has no significant digits. - + % + \noindent With any other style, the |6.42e-16| would have been formatted as + an isolated number. Here, it is rounded to |0| because when viewed relative + to $10^1$ (the exponent $1$ is the argument for |relative|), it has no + significant digits. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/relative*={2}} \pgfmathprintnumber{123.345}\hspace{1em} \pgfmathprintnumber{0.0012}\hspace{1em} \pgfmathprintnumber{0.0014}\hspace{1em} \end{codeexample} - \noindent The example above applies the initial |precision=2| to - |123.345| -- relative to $100$. Two significant digits of |123.345| - relative to $100$ are |123|. Note that the ``$2$ significant digits - of |123.345|'' translates to ``round |1.2345| to $2$ digits'', which - would yield |1.2300|. Similarly, the other two numbers are |0| - compared to $100$ using the given |precision|. - + % + \noindent The example above applies the initial |precision=2| to |123.345| + -- relative to $100$. Two significant digits of |123.345| relative to $100$ + are |123|. Note that the ``$2$ significant digits of |123.345|'' translates + to ``round |1.2345| to $2$ digits'', which would yield |1.2300|. Similarly, + the other two numbers are |0| compared to $100$ using the given + |precision|. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/relative*={-3}} \pgfmathprintnumber{123.345}\hspace{1em} @@ -174,81 +181,87 @@ display style. \pgfmathprintnumber{0.0014}\hspace{1em} \end{codeexample} - \paragraph{Second use-case:} improve rounding in the presence of - \emph{inaccurate} numbers. Let us suppose that some - limited-precision arithmetics resulted in the result |123456999| - (like the |fpu| of \pgfname). You know that its precision is about - five or six significant digits. And you want to provide a fixed - point output. In this case, the trailing digits |....999| are a - numerical artifact due to the limited precision. Use - |relative*=3,precision=0| to eliminate the artifacts: + \paragraph{Second use-case:} + + improve rounding in the presence of \emph{inaccurate} numbers. Let us + suppose that some limited-precision arithmetics resulted in the result + |123456999| (like the |fpu| of \pgfname). You know that its precision is + about five or six significant digits. And you want to provide a fixed point + output. In this case, the trailing digits |....999| are a numerical + artifact due to the limited precision. Use |relative*=3,precision=0| to + eliminate the artifacts: + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,relative*={3},precision=0} \pgfmathprintnumber{123456999}\hspace{1em} \pgfmathprintnumber{123456999.12} \end{codeexample} - \noindent Here, |precision=0| means that we inspect |123456.999| and - round that number to $0$ digits. Finally, we move the period back to - its initial position. Adding |relative style=fixed| results in fixed - point output format: + % + \noindent Here, |precision=0| means that we inspect |123456.999| and round + that number to $0$ digits. Finally, we move the period back to its initial + position. Adding |relative style=fixed| results in fixed point output + format: + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,relative*={3},precision=0,relative style=fixed} \pgfmathprintnumber{123456999}\hspace{1em} \pgfmathprintnumber{123456999.12} \end{codeexample} - \noindent Note that there is another alternative for this use-case - which is discussed later: the |fixed relative| style. + % + \noindent Note that there is another alternative for this use-case which is + discussed later: the |fixed relative| style. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,fixed relative,precision=6} \pgfmathprintnumber{123456999}\hspace{1em} \pgfmathprintnumber{123456999.12} \end{codeexample} - - You might wonder why there is an asterisk in the key's name. The - short answer is: there is also a \declareandlabel{/pgf/number - format/relative} number printer which does unexpected things. The - key |relative*| repairs this. Existing code will still use the old - behavior. - - Technically, the key works as follows: as already explained above, - |relative*=3| key applied to |123456999.12| moves the period by - three positions and analyzes |123456.99912|. Mathematically - speaking, we are given a number $x = \pm m \cdot 10^e$ and we - attempt to apply |relative*=|$r$. The method then rounds $x / 10^r$ - to |precision| digits. Afterwards, it multiplies the result by - $10^r$ and typesets it. + + You might wonder why there is an asterisk in the key's name. The short + answer is: there is also a \declareandlabel{/pgf/number format/relative} + number printer which does unexpected things. The key |relative*| repairs + this. Existing code will still use the old behavior. + + Technically, the key works as follows: as already explained above, + |relative*=3| key applied to |123456999.12| moves the period by three + positions and analyzes |123456.99912|. Mathematically speaking, we are + given a number $x = \pm m \cdot 10^e$ and we attempt to apply + |relative*=|$r$. The method then rounds $x / 10^r$ to |precision| digits. + Afterwards, it multiplies the result by $10^r$ and typesets it. \end{keylist} \begin{stylekey}{/pgf/number format/every relative} - A style which configures how the |relative| method finally displays - its results. + A style which configures how the |relative| method finally displays its + results. - The initial configuration is + The initial configuration is + % \begin{codeexample}[code only] \pgfkeys{/pgf/number format/every relative/.style=std} \end{codeexample} - Note that rounding is turned off when the resulting style is being - evaluated (since |relative| already rounded the number). + Note that rounding is turned off when the resulting style is being + evaluated (since |relative| already rounded the number). - Although supported, I discourage from using |fixed zerofill| or - |sci zerofill| in this context -- it may lead to a suggestion of higher - precision than is actually used (because |fixed zerofill| might - simply add |.00| although there was a different information before - |relative| rounded the result). + Although supported, I discourage from using |fixed zerofill| or + |sci zerofill| in this context -- it may lead to a suggestion of higher + precision than is actually used (because |fixed zerofill| might simply add + |.00| although there was a different information before |relative| rounded + the result). \end{stylekey} \begin{key}{/pgf/number format/relative style=\marg{options}} - The same as |every relative/.append style=|\marg{options}. + The same as |every relative/.append style=|\marg{options}. \end{key} \begin{keylist}{/pgf/number format/fixed relative} - Configures |\pgfmathprintnumber| to format numbers in a similar way - to the |fixed| style, but the |precision| is interpreted relatively - to the number's exponent. + Configures |\pgfmathprintnumber| to format numbers in a similar way to the + |fixed| style, but the |precision| is interpreted relatively to the + number's exponent. - The motivation is to get the same rounding effect as for |sci|, but - to display the number in the |fixed| style: + The motivation is to get the same rounding effect as for |sci|, but to + display the number in the |fixed| style: + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,fixed relative,precision=3} \pgfmathprintnumber{1000.0123}\hspace{1em} @@ -259,35 +272,33 @@ display style. \pgfmathprintnumber{1003.75}\hspace{1em} \pgfmathprintnumber{1006.75}\hspace{1em} \end{codeexample} - - The effect of |fixed relative| is that the number is rounded to - \emph{exactly} the first \meta{precision} non-zero digits, no matter - how many leading zeros the number might have. - - Use |fixed relative| if you want |fixed| and if you know that only - the first $n$ digits are correct. Use |sci| if you need a scientific - display style and only the first $n$ digits are correct. - - Note that |fixed relative| ignores the |fixed zerofill| flag. - - See also the |relative*| key. Note that the - |relative=|\marg{exponent} key explicitly moves the period to some - designated position before it attempts to round the - number. Afterwards, it ``rounds from the right'', i.e.\ it rounds to - that explicitly chosen digit position. In contrast to that, - |fixed relative| ``rounds from the left'': it takes the \emph{first} - non-zero digit, temporarily places the period after this digit, and - rounds that number. The rounding style |fixed| leaves the period - where it is, and rounds everything behind that digit. The |sci| - style is similar to |fixed relative|. -\end{keylist} + The effect of |fixed relative| is that the number is rounded to + \emph{exactly} the first \meta{precision} non-zero digits, no matter how + many leading zeros the number might have. -\begin{key}{/pgf/number format/int detect} - Configures |\pgfmathprintnumber| to detect integers - automatically. If the input number is an integer, no period is - displayed at all. If not, the scientific format is chosen. + Use |fixed relative| if you want |fixed| and if you know that only the + first $n$ digits are correct. Use |sci| if you need a scientific display + style and only the first $n$ digits are correct. + + Note that |fixed relative| ignores the |fixed zerofill| flag. + + See also the |relative*| key. Note that the |relative=|\marg{exponent} key + explicitly moves the period to some designated position before it attempts + to round the number. Afterwards, it ``rounds from the right'', i.e.\ it + rounds to that explicitly chosen digit position. In contrast to that, + |fixed relative| ``rounds from the left'': it takes the \emph{first} + non-zero digit, temporarily places the period after this digit, and rounds + that number. The rounding style |fixed| leaves the period where it is, and + rounds everything behind that digit. The |sci| style is similar to |fixed + relative|. +\end{keylist} +\begin{key}{/pgf/number format/int detect} + Configures |\pgfmathprintnumber| to detect integers automatically. If the + input number is an integer, no period is displayed at all. If not, the + scientific format is chosen. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,int detect,precision=2} \pgfmathprintnumber{15}\hspace{1em} @@ -296,27 +307,29 @@ display style. \pgfmathprintnumber{0.01}\hspace{1em} \pgfmathprintnumber{0} \end{codeexample} + % \end{key} \begin{command}{\pgfmathifisint\marg{number constant}\marg{true code}\marg{false code}} - A command which does the same check as |int detect|, but it invokes - \meta{true code} if the \meta{number constant} actually is an - integer and the \meta{false code} if not. + A command which does the same check as |int detect|, but it invokes + \meta{true code} if the \meta{number constant} actually is an integer and + the \meta{false code} if not. - As a side-effect, |\pgfretval| will contain the parsed number, - either in integer format or as parsed floating point number. + As a side-effect, |\pgfretval| will contain the parsed number, either in + integer format or as parsed floating point number. - The argument \meta{number constant} will be parsed with - |\pgfmathfloatparsenumber|. + The argument \meta{number constant} will be parsed with + |\pgfmathfloatparsenumber|. + % \begin{codeexample}[] 15 \pgfmathifisint{15}{is an int: \pgfretval.}{is no int}\hspace{1em} 15.5 \pgfmathifisint{15.5}{is an int: \pgfretval.}{is no int} \end{codeexample} + % \end{command} \begin{key}{/pgf/number format/int trunc} - Truncates every number to integers (discards any digit after the - period). + Truncates every number to integers (discards any digit after the period). \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,int trunc} \pgfmathprintnumber{4.568}\hspace{1em} @@ -325,11 +338,12 @@ display style. \pgfmathprintnumber{24415.98123}\hspace{1em} \pgfmathprintnumber{123456.12345} \end{codeexample} + % \end{key} \begin{key}{/pgf/number format/frac} - Displays numbers as fractionals. - + Displays numbers as fractionals. + % \begin{codeexample}[width=3cm] \pgfkeys{/pgf/number format/frac} \pgfmathprintnumber{0.333333333333333}\hspace{1em} @@ -348,13 +362,14 @@ display style. \pgfmathprintnumber{-6} \end{codeexample} -\begin{key}{/pgf/number format/frac TeX=\marg{\textbackslash macro} (initially \texttt{\textbackslash frac})} - Allows to use a different implementation for |\frac| inside of the - |frac| display type. -\end{key} + \begin{key}{/pgf/number format/frac TeX=\marg{\textbackslash macro} (initially \texttt{\textbackslash frac})} + Allows to use a different implementation for |\frac| inside of the + |frac| display type. + \end{key} -\begin{key}{/pgf/number format/frac denom=\meta{int} (initially empty)} - Allows to provide a custom denominator for |frac|. + \begin{key}{/pgf/number format/frac denom=\meta{int} (initially empty)} + Allows to provide a custom denominator for |frac|. + % \begin{codeexample}[width=3cm] \pgfkeys{/pgf/number format/.cd,frac, frac denom=10} \pgfmathprintnumber{0.1}\hspace{1em} @@ -363,11 +378,13 @@ display style. \pgfmathprintnumber{-0.6}\hspace{1em} \pgfmathprintnumber{-1.4}\hspace{1em} \end{codeexample} -\end{key} -\begin{key}{/pgf/number format/frac whole=\mchoice{true,false} (initially true)} - Configures whether complete integer parts shall be placed in front - of the fractional part. In this case, the fractional part will be - less then $1$. Use |frac whole=false| to avoid whole number parts. + \end{key} + % + \begin{key}{/pgf/number format/frac whole=\mchoice{true,false} (initially true)} + Configures whether complete integer parts shall be placed in front of + the fractional part. In this case, the fractional part will be less + then $1$. Use |frac whole=false| to avoid whole number parts. + % \begin{codeexample}[width=3cm] \pgfkeys{/pgf/number format/.cd,frac, frac whole=false} \pgfmathprintnumber{20.1}\hspace{1em} @@ -376,237 +393,260 @@ display style. \pgfmathprintnumber{-5.6}\hspace{1em} \pgfmathprintnumber{-1.4}\hspace{1em} \end{codeexample} -\end{key} -\begin{key}{/pgf/number format/frac shift=\marg{integer} (initially 4)} - In case you experience problems because of stability problems, try - experimenting with a different |frac shift|. Higher shift values $k$ - yield higher sensitivity to inaccurate data or inaccurate - arithmetics. - - Technically, the following happens. If $r < 1$ is the fractional - part of the mantissa, then a scale $i = 1/r \cdot 10^k$ is computed - where $k$ is the shift; fractional parts of $i$ are neglected. The - value $1/r$ is computed internally, its error is amplified. - - If you still experience stability problems, use |\usepackage{fp}| in - your preamble. The |frac| style will then automatically employ the - higher absolute precision of |fp| for the computation of $1/r$. -\end{key} + \end{key} + % + \begin{key}{/pgf/number format/frac shift=\marg{integer} (initially 4)} + In case you experience problems because of stability problems, try + experimenting with a different |frac shift|. Higher shift values $k$ + yield higher sensitivity to inaccurate data or inaccurate arithmetics. + + Technically, the following happens. If $r < 1$ is the fractional part + of the mantissa, then a scale $i = 1/r \cdot 10^k$ is computed where + $k$ is the shift; fractional parts of $i$ are neglected. The value + $1/r$ is computed internally, its error is amplified. + + If you still experience stability problems, use |\usepackage{fp}| in + your preamble. The |frac| style will then automatically employ the + higher absolute precision of |fp| for the computation of $1/r$. + \end{key} \end{key} \begin{key}{/pgf/number format/precision=\marg{number}} - Sets the desired rounding precision for any display operation. For - scientific format, this affects the mantissa. + Sets the desired rounding precision for any display operation. For + scientific format, this affects the mantissa. \end{key} \begin{key}{/pgf/number format/sci precision=\meta{number or empty} (initially empty)} - Sets the desired rounding precision only for |sci| styles. + Sets the desired rounding precision only for |sci| styles. - Use |sci precision={}| to restore the initial configuration (which - uses the argument provided to |precision| for all number styles). + Use |sci precision={}| to restore the initial configuration (which uses the + argument provided to |precision| for all number styles). \end{key} \begin{key}{/pgf/number format/read comma as period=\mchoice{true,false} (initially false)} - This is one of the few keys which allows to customize the number parser. If this switch is turned on, a comma is read just as a period. + This is one of the few keys which allows to customize the number parser. If + this switch is turned on, a comma is read just as a period. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/read comma as period} \pgfmathprintnumber{1234,56} \end{codeexample} - This is typically undesired as it can cause side--effects with math parsing instructions. However, it is supported to format input numbers or input tables. Consider |use comma| to typeset the result with a comma as well. + % + This is typically undesired as it can cause side-effects with math parsing + instructions. However, it is supported to format input numbers or input + tables. Consider |use comma| to typeset the result with a comma as well. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd, - read comma as period, - use comma} + read comma as period, + use comma} \pgfmathprintnumber{1234,56} \end{codeexample} + % \end{key} + \subsection{Changing display styles}% -\label{sec:number:styles}% +\label{sec:number:styles} -You can change the way how numbers are displayed. For example, if you -use the `\texttt{fixed}' style, the input number is rounded to the -desired precision and the current fixed point display style is used to -typeset the number. The same is applied to any other format: first, -rounding routines are used to get the correct digits, afterwards a -display style generates proper \TeX-code. +You can change the way how numbers are displayed. For example, if you use the +`\texttt{fixed}' style, the input number is rounded to the desired precision +and the current fixed point display style is used to typeset the number. The +same is applied to any other format: first, rounding routines are used to get +the correct digits, afterwards a display style generates proper \TeX-code. \begin{key}{/pgf/number format/set decimal separator=\marg{text}} - Assigns \marg{text} as decimal separator for any fixed point numbers - (including the mantissa in sci format). + Assigns \marg{text} as decimal separator for any fixed point numbers + (including the mantissa in sci format). - Use |\pgfkeysgetvalue{/pgf/number format/set decimal separator}\value| - to get the current separator into |\value|. + Use |\pgfkeysgetvalue{/pgf/number format/set decimal separator}\value| to + get the current separator into |\value|. \end{key} \begin{stylekey}{/pgf/number format/dec sep=\marg{text}} - Just another name for |set decimal separator|. + Just another name for |set decimal separator|. \end{stylekey} \begin{key}{/pgf/number format/set thousands separator=\marg{text}} - Assigns \marg{text} as thousands separator for any fixed point - numbers (including the mantissa in sci format). - + Assigns \marg{text} as thousands separator for any fixed point numbers + (including the mantissa in sci format). + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd, - fixed, - fixed zerofill, - precision=2, - set thousands separator={}} + fixed, + fixed zerofill, + precision=2, + set thousands separator={}} \pgfmathprintnumber{1234.56} \end{codeexample} + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd, - fixed, - fixed zerofill, - precision=2, - set thousands separator={}} + fixed, + fixed zerofill, + precision=2, + set thousands separator={}} \pgfmathprintnumber{1234567890} \end{codeexample} \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd, - fixed, - fixed zerofill, - precision=2, - set thousands separator={.}} + fixed, + fixed zerofill, + precision=2, + set thousands separator={.}} \pgfmathprintnumber{1234567890} \end{codeexample} + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd, - fixed, - fixed zerofill, - precision=2, - set thousands separator={,}} + fixed, + fixed zerofill, + precision=2, + set thousands separator={,}} \pgfmathprintnumber{1234567890} \end{codeexample} + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd, - fixed, - fixed zerofill, - precision=2, - set thousands separator={{{,}}}} + fixed, + fixed zerofill, + precision=2, + set thousands separator={{{,}}}} \pgfmathprintnumber{1234567890} \end{codeexample} - The last example employs commas and disables the default - comma-spacing. + % + The last example employs commas and disables the default comma-spacing. - Use |\pgfkeysgetvalue{/pgf/number format/set thousands separator}\value| - to get the current separator into |\value|. + Use |\pgfkeysgetvalue{/pgf/number format/set thousands separator}\value| to + get the current separator into |\value|. \end{key} \begin{stylekey}{/pgf/number format/1000 sep=\marg{text}} - Just another name for |set thousands separator|. + Just another name for |set thousands separator|. \end{stylekey} \begin{key}{/pgf/number format/1000 sep in fractionals=\marg{boolean} (initially false)} - Configures whether the fractional part should also be grouped into - groups of three digits. + Configures whether the fractional part should also be grouped into groups + of three digits. - The value |true| will active the |1000 sep| for both, integer and - fractional parts. The value |false| will active |1000 sep| only for the integer part. + The value |true| will active the |1000 sep| for both, integer and + fractional parts. The value |false| will active |1000 sep| only for the + integer part. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd, - fixed, - precision=999, - set thousands separator={\,}, - 1000 sep in fractionals, - } + fixed, + precision=999, + set thousands separator={\,}, + 1000 sep in fractionals, + } \pgfmathprintnumber{1234.1234567} \end{codeexample} + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd, - fixed,fixed zerofill, - precision=9, - set thousands separator={\,}, - 1000 sep in fractionals, - } + fixed,fixed zerofill, + precision=9, + set thousands separator={\,}, + 1000 sep in fractionals, + } \pgfmathprintnumber{1234.1234567} \end{codeexample} + % \end{key} \begin{key}{/pgf/number format/min exponent for 1000 sep=\marg{number} (initially 0)} - Defines the smallest exponent in scientific notation which is - required to draw thousand separators. The exponent is the number of - digits minus one, so $\meta{number}=4$ will use thousand separators - starting with $1e4 = 10000$. + Defines the smallest exponent in scientific notation which is required to + draw thousand separators. The exponent is the number of digits minus one, + so $\meta{number}=4$ will use thousand separators starting with $1e4 = + 10000$. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd, - int detect, - 1000 sep={\,}, - min exponent for 1000 sep=0} + int detect, + 1000 sep={\,}, + min exponent for 1000 sep=0} \pgfmathprintnumber{5000}; \pgfmathprintnumber{1000000} \end{codeexample} \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd, - int detect, - 1000 sep={\,}, - min exponent for 1000 sep=4} + int detect, + 1000 sep={\,}, + min exponent for 1000 sep=4} \pgfmathprintnumber{1000}; \pgfmathprintnumber{5000} \end{codeexample} + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd, - int detect, - 1000 sep={\,}, - min exponent for 1000 sep=4} + int detect, + 1000 sep={\,}, + min exponent for 1000 sep=4} \pgfmathprintnumber{10000}; \pgfmathprintnumber{1000000} \end{codeexample} - \noindent A value of |0| disables this feature (negative values are - ignored). + % + \noindent A value of |0| disables this feature (negative values are + ignored). \end{key} \begin{key}{/pgf/number format/use period} - A predefined style which installs periods ``\texttt{.}'' as decimal - separators and commas ``\texttt{,}'' as thousands separators. This - style is the default. - + A predefined style which installs periods ``\texttt{.}'' as decimal + separators and commas ``\texttt{,}'' as thousands separators. This style is + the default. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,fixed,precision=2,use period} \pgfmathprintnumber{12.3456} \end{codeexample} + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,fixed,precision=2,use period} \pgfmathprintnumber{1234.56} \end{codeexample} + % \end{key} \begin{key}{/pgf/number format/use comma} - A predefined style which installs commas ``\texttt{,}'' as decimal - separators and periods ``\texttt{.}'' as thousands separators. - + A predefined style which installs commas ``\texttt{,}'' as decimal + separators and periods ``\texttt{.}'' as thousands separators. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,fixed,precision=2,use comma} \pgfmathprintnumber{12.3456} \end{codeexample} + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,fixed,precision=2,use comma} \pgfmathprintnumber{1234.56} \end{codeexample} + % \end{key} \begin{key}{/pgf/number format/skip 0.=\marg{boolean} (initially false)} - Configures whether numbers like $0.1$ shall be typeset as $.1$ or - not. + Configures whether numbers like $0.1$ shall be typeset as $.1$ or not. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd, - fixed, - fixed zerofill,precision=2, - skip 0.} + fixed, + fixed zerofill,precision=2, + skip 0.} \pgfmathprintnumber{0.56} \end{codeexample} + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd, - fixed, - fixed zerofill,precision=2, - skip 0.=false} + fixed, + fixed zerofill,precision=2, + skip 0.=false} \pgfmathprintnumber{0.56} \end{codeexample} + % \end{key} \begin{key}{/pgf/number format/showpos=\marg{boolean} (initially false)} - Enables or disables the display of plus signs for non-negative - numbers. + Enables or disables the display of plus signs for non-negative numbers. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/showpos} \pgfmathprintnumber{12.345} @@ -621,190 +661,214 @@ display style generates proper \TeX-code. \pgfkeys{/pgf/number format/.cd,showpos,sci} \pgfmathprintnumber{12.345} \end{codeexample} + % \end{key} \begin{stylekey}{/pgf/number format/print sign=\marg{boolean}} - A style which is simply an alias for |showpos=|\marg{boolean}. + A style which is simply an alias for |showpos=|\marg{boolean}. \end{stylekey} \begin{key}{/pgf/number format/sci 10e} - Uses $m \cdot 10^e$ for any number displayed in scientific format. - + Uses $m \cdot 10^e$ for any number displayed in scientific format. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,sci,sci 10e} \pgfmathprintnumber{12.345} \end{codeexample} + % \end{key} \begin{key}{/pgf/number format/sci 10\textasciicircum e} - The same as `|sci 10e|'. + The same as `|sci 10e|'. \end{key} \begin{key}{/pgf/number format/sci e} - Uses the `$1e{+}0$' format which is generated by common scientific - tools for any number displayed in scientific format. - + Uses the `$1e{+}0$' format which is generated by common scientific tools + for any number displayed in scientific format. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,sci,sci e} \pgfmathprintnumber{12.345} \end{codeexample} + % \end{key} \begin{key}{/pgf/number format/sci E} - The same with an uppercase `\texttt{E}'. - + The same with an uppercase `\texttt{E}'. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,sci,sci E} \pgfmathprintnumber{12.345} \end{codeexample} + % \end{key} \begin{key}{/pgf/number format/sci subscript} - Typesets the exponent as subscript for any number displayed in - scientific format. This style requires very little space. - + Typesets the exponent as subscript for any number displayed in scientific + format. This style requires very little space. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,sci,sci subscript} \pgfmathprintnumber{12.345} \end{codeexample} + % \end{key} \begin{key}{/pgf/number format/sci superscript} - Typesets the exponent as superscript for any number displayed in - scientific format. This style requires very little space. - + Typesets the exponent as superscript for any number displayed in scientific + format. This style requires very little space. + % \begin{codeexample}[] \pgfkeys{/pgf/number format/.cd,sci,sci superscript} \pgfmathprintnumber{12.345} \end{codeexample} + % \end{key} \begin{key}{/pgf/number format/sci generic=\marg{keys}} - Allows to define an own number style for the scientific - format. Here, \meta{keys} can be one of the following choices (omit - the long key prefix): - -\begin{key}{/pgf/number format/sci generic/mantissa sep=\marg{text} (initially empty)} - Provides the separator between a mantissa and the exponent. It might - be |\cdot|, for example, -\end{key} -\begin{key}{/pgf/number format/sci generic/exponent=\marg{text} (initially empty)} - Provides text to format the exponent. The actual exponent is - available as argument |#1| (see below). -\end{key} - + Allows to define an own number style for the scientific format. Here, + \meta{keys} can be one of the following choices (omit the long key prefix): + + \begin{key}{/pgf/number format/sci generic/mantissa sep=\marg{text} (initially empty)} + Provides the separator between a mantissa and the exponent. It might be + |\cdot|, for example, + \end{key} + % + \begin{key}{/pgf/number format/sci generic/exponent=\marg{text} (initially empty)} + Provides text to format the exponent. The actual exponent is available + as argument |#1| (see below). + \end{key} + % \begin{codeexample}[] \pgfkeys{ - /pgf/number format/.cd, - sci, - sci generic={mantissa sep=\times,exponent={10^{#1}}}} + /pgf/number format/.cd, + sci, + sci generic={mantissa sep=\times,exponent={10^{#1}}}} \pgfmathprintnumber{12.345}; \pgfmathprintnumber{0.00012345} \end{codeexample} - The \meta{keys} can depend on three parameters, namely on |#1| which - is the exponent, |#2| containing the flags entity of the floating - point number and |#3| is the (unprocessed and unformatted) - mantissa. + % + The \meta{keys} can depend on three parameters, namely on |#1| which is the + exponent, |#2| containing the flags entity of the floating point number and + |#3| is the (unprocessed and unformatted) mantissa. - Note that |sci generic| is \emph{not} suitable to modify the - appearance of fixed point numbers, nor can it be used to format the - mantissa (which is typeset like fixed point numbers). Use |dec sep|, - |1000 sep| and |print sign| to customize the mantissa. + Note that |sci generic| is \emph{not} suitable to modify the appearance of + fixed point numbers, nor can it be used to format the mantissa (which is + typeset like fixed point numbers). Use |dec sep|, |1000 sep| and + |print sign| to customize the mantissa. \end{key} +\begin{key}{/pgf/number format/retain unit mantissa=\mchoice{true,false} (initially true)} + Allows to omit a unit mantissa. + % +\begin{codeexample}[] +\pgfkeys{ + /pgf/number format/.cd, + sci, retain unit mantissa=false} +\pgfmathprintnumber{10.5}; +\pgfmathprintnumber{10}; +\pgfmathprintnumber{1010}; +\pgfmathprintnumber[precision=1]{-1010}; +\end{codeexample} + % + The feature is applied after rounding to the desired precision: if the + remaining mantissa is equal to~$1$, it will be omitted. It applies to all + styles involving the scientific format (including |std|). +\end{key} \begin{key}{/pgf/number format/\protect\atmarktext dec sep mark=\marg{text}} - Will be placed right before the place where a decimal separator - belongs to. However, \marg{text} will be inserted even if there is - no decimal separator. It is intended as place-holder for auxiliary - routines to find alignment positions. + Will be placed right before the place where a decimal separator belongs to. + However, \marg{text} will be inserted even if there is no decimal + separator. It is intended as place-holder for auxiliary routines to find + alignment positions. - This key should never be used to change the decimal separator! - Use |dec sep| instead. + This key should never be used to change the decimal separator! + Use |dec sep| instead. \end{key} \begin{key}{/pgf/number format/\protect\atmarktext sci exponent mark=\marg{text}} - Will be placed right before exponents in scientific notation. It is - intended as place-holder for auxiliary routines to find alignment - positions. + Will be placed right before exponents in scientific notation. It is + intended as place-holder for auxiliary routines to find alignment + positions. - This key should never be used to change the exponent! + This key should never be used to change the exponent! \end{key} \begin{key}{/pgf/number format/assume math mode=\marg{boolean} (default true)} - Set this to |true| if you don't want any checks for math mode. The - initial setting checks whether math mode is active using - |\pgfutilensuremath| for each final number. - - Use |assume math mode=true| if you know that math mode is active. In - that case, the final number is typeset as-is, no further checking is - performed. -\end{key} + Set this to |true| if you don't want any checks for math mode. The initial + setting checks whether math mode is active using |\pgfutilensuremath| for + each final number. + Use |assume math mode=true| if you know that math mode is active. In that + case, the final number is typeset as-is, no further checking is performed. +\end{key} \begin{stylekey}{/pgf/number format/verbatim} - A style which configures the number printer to produce verbatim text - output, i.\,e., it doesn't contain \TeX\ macros. + A style which configures the number printer to produce verbatim text + output, i.\,e., it doesn't contain \TeX\ macros. + % \begin{codeexample}[] \pgfkeys{ - /pgf/fpu, - /pgf/number format/.cd, - sci, - verbatim} + /pgf/fpu, + /pgf/number format/.cd, + sci, + verbatim} \pgfmathprintnumber{12.345}; \pgfmathprintnumber{0.00012345}; \pgfmathparse{exp(15)} \pgfmathprintnumber{\pgfmathresult} \end{codeexample} - The style resets |1000 sep|, |dec sep|, |print sign|, |skip 0.| and - sets |assume math mode|. Furthermore, it installs a |sci generic| - format for verbatim output of scientific numbers. + % + The style resets |1000 sep|, |dec sep|, |print sign|, |skip 0.| and sets + |assume math mode|. Furthermore, it installs a |sci generic| format for + verbatim output of scientific numbers. - However, it will still respect |precision|, |fixed zerofill|, - |sci zerofill| and the overall styles |fixed|, |sci|, |int detect| - (and their variants). It might be useful if you intend to write - output files. + However, it will still respect |precision|, |fixed zerofill|, |sci + zerofill| and the overall styles |fixed|, |sci|, |int detect| (and their + variants). It might be useful if you intend to write output files. \end{stylekey} + + %-------------------------------------------------- % \subsubsection{Defining own display styles} % You can define own display styles, although this may require some insight into \TeX-programming. Here are two examples: % \begin{enumerate} -% \item A new fixed point display style: The following code defines a new style named `\texttt{my own fixed point style}' which uses $1{\cdot}00$ instead of $1.00$. +% \item A new fixed point display style: The following code defines a new style named `\texttt{my own fixed point style}' which uses $1{\cdot}00$ instead of $1.00$. % \begin{lstlisting} % \def\myfixedpointstyleimpl#1.#2\relax{% -% #1{\cdot}#2% +% #1{\cdot}#2% % }% % \def\myfixedpointstyle#1{% -% \pgfutilensuremath{% -% \ifpgfmathfloatroundhasperiod -% \expandafter\myfixedpointstyleimpl#1\relax -% \else -% #1% -% \fi -% }% +% \pgfutilensuremath{% +% \ifpgfmathfloatroundhasperiod +% \expandafter\myfixedpointstyleimpl#1\relax +% \else +% #1% +% \fi +% }% % } % \pgfkeys{/my own fixed point style/.code={% -% \let\pgfmathprintnumber@fixed@style=\myfixedpointstyle} +% \let\pgfmathprintnumber@fixed@style=\myfixedpointstyle} % }% % \end{lstlisting} -% You only need to overwrite the macro \lstinline!\pgfmathprintnumber@fixed@style!. This macro takes one argument (the result of any numerical computations). The \TeX-boolean \lstinline!\ifpgfmathfloatroundhasperiod! is true if and only if the input number contains a period. +% You only need to overwrite the macro \lstinline!\pgfmathprintnumber@fixed@style!. This macro takes one argument (the result of any numerical computations). The \TeX-boolean \lstinline!\ifpgfmathfloatroundhasperiod! is true if and only if the input number contains a period. % -% \item An example for a new scientific display style: +% \item An example for a new scientific display style: % \begin{lstlisting} % % #1: -% % 0 == '0' (the number is +- 0.0), -% % 1 == '+', -% % 2 == '-', -% % 3 == 'not a number' -% % 4 == '+ infinity' -% % 5 == '- infinity' +% % 0 == '0' (the number is +- 0.0), +% % 1 == '+', +% % 2 == '-', +% % 3 == 'not a number' +% % 4 == '+ infinity' +% % 5 == '- infinity' % % #2: the mantissa % % #3: the exponent % \def\myscistyle#1#2e#3\relax{% -% ... +% ... % } % \pgfkeys{/my own sci style/.code={% -% \let\pgfmathfloatrounddisplaystyle=\myscistyle}, +% \let\pgfmathfloatrounddisplaystyle=\myscistyle}, % }% % \end{lstlisting} % \end{enumerate} |