summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-math.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-math.tex')
-rw-r--r--Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-math.tex513
1 files changed, 219 insertions, 294 deletions
diff --git a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-math.tex b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-math.tex
index 7d30a93c9d3..d090ccae996 100644
--- a/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-math.tex
+++ b/Master/texmf-dist/doc/generic/pgf/text-en/pgfmanual-en-library-math.tex
@@ -8,55 +8,48 @@
% See the file doc/generic/pgf/licenses/LICENSE for more details.
-
\section{Math Library}
\label{section-library-math}
\begin{tikzlibrary}{math}
- This library defines a simple mathematical language
- to define simple functions and perform sequences of basic mathematical
- operations.
+ This library defines a simple mathematical language to define simple
+ functions and perform sequences of basic mathematical operations.
\end{tikzlibrary}
\subsection{Overview}
- \pgfname\ and \tikzname\ both use the \pgfname\ mathematical engine
- which provides many commands for parsing expressions. Unfortunately
- the \pgfname\ math engine is somewhat cumbersome for long sequences
- of mathematical
- operations, particularly when assigning values to multiple variables.
- The \tikzname\ |calc| library
- provides some additional ``convenience'' operations for doing calculations
- (particularly with coordinates), but this can only be used inside
- \tikzname\ path commands.
-
- This |math| library provides a means to
- perform sequences of mathematical operations in a more `user friendly'
- manner than the \pgfname\ math engine. In addition, the coordinate calculations of the |calc| library
- can be accessed (provided it is loaded).
- %
- However as the |math| library uses the \pgfname\ math engine -- which uses pure \TeX\
- to perform all its calculations -- it is subject to the same speed
- and accuracy limitations. It is worth bearing this in mind, before
- trying to implement algorithms requiring intensive and highly
- accurate computation. You can, of course use the |fp| or the |fpu|
- libraries to increase the accuracy (but not necessarily the speed)
- of computations.
-
- For most purposes, the features provided by this library are accessed
- using the following command:
-
-\begin{command}{\tikzmath\texttt{\{}\meta{statements}\texttt{\}}}
+\pgfname\ and \tikzname\ both use the \pgfname\ mathematical engine which
+provides many commands for parsing expressions. Unfortunately the \pgfname\
+math engine is somewhat cumbersome for long sequences of mathematical
+operations, particularly when assigning values to multiple variables. The
+\tikzname\ |calc| library provides some additional ``convenience'' operations
+for doing calculations (particularly with coordinates), but this can only be
+used inside \tikzname\ path commands.
+
+This |math| library provides a means to perform sequences of mathematical
+operations in a more `user friendly' manner than the \pgfname\ math engine. In
+addition, the coordinate calculations of the |calc| library can be accessed
+(provided it is loaded).
+%
+However as the |math| library uses the \pgfname\ math engine -- which uses pure
+\TeX\ to perform all its calculations -- it is subject to the same speed and
+accuracy limitations. It is worth bearing this in mind, before trying to
+implement algorithms requiring intensive and highly accurate computation. You
+can, of course use the |fp| or the |fpu| libraries to increase the accuracy
+(but not necessarily the speed) of computations.
- This command process a series of \meta{statements} which can
- represent assignments, function definitions, conditional evaluation,
- and iterations. It provides, in effect, a miniature mathematical
- language to perform basic mathematical operations.
- Perhaps the most important thing to remember is that \emph{every
- statement should end with a semi-colon}. This is
- likely to be the most common reason why the |\tikzmath| command fails.
+For most purposes, the features provided by this library are accessed using the
+following command:
+\begin{command}{\tikzmath\texttt{\{}\meta{statements}\texttt{\}}}
+ This command process a series of \meta{statements} which can represent
+ assignments, function definitions, conditional evaluation, and iterations.
+ It provides, in effect, a miniature mathematical language to perform basic
+ mathematical operations. Perhaps the most important thing to remember is
+ that \emph{every statement should end with a semi-colon}. This is likely to
+ be the most common reason why the |\tikzmath| command fails.
+ %
\begin{codeexample}[]
\tikzmath{
% Adapted from http://www.cs.northwestern.edu/academics/courses/110/html/fib_rec.html
@@ -81,14 +74,14 @@
};
}
\end{codeexample}
-
+ %
\end{command}
In addition to this command the following key is provided:
-
+
\begin{key}{/tikz/evaluate={\meta{statements}}}
- This key simply executes |\tikzmath{|\meta{statements}|}|.
-
+ This key simply executes |\tikzmath{|\meta{statements}|}|.
+ %
\begin{codeexample}[]
\tikz[x=0.25cm,y=0.25cm,
evaluate={
@@ -105,27 +98,24 @@ In addition to this command the following key is provided:
\fill [red!\a{\i,\j}!yellow] (\i,\j) rectangle ++(1, 1);
\end{codeexample}
-
-
+ %
\end{key}
-
- The following sections describe the miniature language that this
- library provides and can be used in the |\tikzmath| command and the |evaluate| key.
- The language consists only of simple keywords and expressions but
- the mini-parser allows you to format code in a reasonably versatile
- way (much like the |tikz| parser) except that
- \emph{all the keywords must be followed by at least one space}.
- This is the second most important thing to remember (after
- remembering to insert semi-colons at the end of every statement).
+The following sections describe the miniature language that this library
+provides and can be used in the |\tikzmath| command and the |evaluate| key.
+The language consists only of simple keywords and expressions but the
+mini-parser allows you to format code in a reasonably versatile way (much like
+the |tikz| parser) except that \emph{all the keywords must be followed by at
+least one space}. This is the second most important thing to remember (after
+remembering to insert semi-colons at the end of every statement).
\subsection{Assignment}
-
- In the simplest case, you will want to evaluate an expression
- and assign it to a macro, or a \TeX\ count or dimension register.
- In this case, use of the |math| library is straightforward:
+In the simplest case, you will want to evaluate an expression and assign it to
+a macro, or a \TeX\ count or dimension register. In this case, use of the
+|math| library is straightforward:
+%
\begin{codeexample}[]
\newcount\mycount
\newdimen\mydimen
@@ -138,11 +128,10 @@ In addition to this command the following key is provided:
\a, \b, \the\mycount, \the\mydimen
\end{codeexample}
-
- In addition, \TeX-macros (\emph{not} \TeX\ registers)
- can be suffixed with an index, similar to
- indices in mathematical notation, for example, $x_1$, $x_2$, $x_3$:
-
+In addition, \TeX-macros (\emph{not} \TeX\ registers) can be suffixed with an
+index, similar to indices in mathematical notation, for example, $x_1$, $x_2$,
+$x_3$:
+%
\begin{codeexample}[]
\tikzmath{
\x1 = 3+4; \x2 = 30+40; \x3 = 300+400;
@@ -150,9 +139,9 @@ In addition to this command the following key is provided:
\x1, \x2, \x3
\end{codeexample}
- The index does not have to be a number. By using braces |{}|,
- more sophisticated indices can be created:
-
+The index does not have to be a number. By using braces |{}|, more
+sophisticated indices can be created:
+%
\begin{codeexample}[]
\tikzmath{
\c{air} = 340; \c{water} = 1435; \c{steel} = 6100;
@@ -160,57 +149,53 @@ In addition to this command the following key is provided:
\foreach \medium in {air,steel}{The speed of sound in \medium\ is \c{\medium} m/s. }
\end{codeexample}
- You should not, however, try to mix indexed and non-indexed variables. Once
- an assignment is made using an index, the |math| library expects
- all instances of the variable on the right hand side of an assignment
- to be followed by an index. This effect is reversed if you
- subsequently make an assignment to the variable without an index: the |math| library
- (or to be precise the \pgfname\ math-engine)
- will then ignore any index following the variable on the right hand side
- of an assignment.
+You should not, however, try to mix indexed and non-indexed variables. Once an
+assignment is made using an index, the |math| library expects all instances of
+the variable on the right hand side of an assignment to be followed by an
+index. This effect is reversed if you subsequently make an assignment to the
+variable without an index: the |math| library (or to be precise the \pgfname\
+math-engine) will then ignore any index following the variable on the right
+hand side of an assignment.
- In some cases, you may wish to assign a value or expression to a variable
- without evaluating it with the \pgfname\ math-engine. In this case, you
- can use the following keyword:
+In some cases, you may wish to assign a value or expression to a variable
+without evaluating it with the \pgfname\ math-engine. In this case, you can use
+the following keyword:
\begin{math-keyword}{{let} \meta{variable} \texttt{=} \meta{expression}\texttt{;}}
-
- This keyword assigns \meta{expression} to \meta{variable}
- without evaluation. The \meta{expression} is however fully
- expanded using |\edef|. Any spaces preceding \meta{expression}
- are removed, but any trailing spaces (before the semi-colon)
- are included.
-
+ This keyword assigns \meta{expression} to \meta{variable} without
+ evaluation. The \meta{expression} is however fully expanded using |\edef|.
+ Any spaces preceding \meta{expression} are removed, but any trailing spaces
+ (before the semi-colon) are included.
+ %
\begin{codeexample}[]
\tikzmath{
let \x = (5*4)+1;
- let \c1 = blue;
+ let \c1 = blue;
}
\x, ``\c1''
\end{codeexample}
+ %
\end{math-keyword}
-
+
+
\subsection{Integers, ``Real'' Numbers, and Coordinates}
-
- By default, assignments are made by evaluating expressions
- using the \pgfname\ math-engine and
- results are usually returned as number with a decimal point (unless you
- are assigning to a count register or use the |int| function).
- %
- As this is not always desirable, the |math| library allows
- variables -- which \emph{must} be \TeX\ macros -- to be `declared'
- as being a particular `type'. The library recognizes three types:
- integers (numbers without a decimal point),
- real numbers (numbers with a decimal point\footnote{Strictly speaking, due to the
- finite range and precision of \TeX\ numerical capabilities, the term ``real'' is
- not correct.}), and coordinates.
-
- To declare a variable as being one of the three types,
- you can use the keywords shown below. It is important to remember
- that by telling the |math| library you want it to do a
- particular assignment for a variable, it will also do the same
- assignment when the variable is indexed.
-
+
+By default, assignments are made by evaluating expressions using the \pgfname\
+math-engine and results are usually returned as number with a decimal point
+(unless you are assigning to a count register or use the |int| function).
+%
+As this is not always desirable, the |math| library allows variables -- which
+\emph{must} be \TeX\ macros -- to be `declared' as being a particular `type'.
+The library recognizes three types: integers (numbers without a decimal point),
+real numbers (numbers with a decimal point\footnote{Strictly speaking, due to
+the finite range and precision of \TeX\ numerical capabilities, the term
+``real'' is not correct.}), and coordinates.
+
+To declare a variable as being one of the three types, you can use the
+keywords shown below. It is important to remember that by telling the |math|
+library you want it to do a particular assignment for a variable, it will also
+do the same assignment when the variable is indexed.
+%
\begin{codeexample}[]
\tikzmath{
integer \x;
@@ -219,60 +204,51 @@ In addition to this command the following key is provided:
\x1, \x2, \x3
\end{codeexample}
+%But, if you want integer results without using a count register or the
+%|int| function, you can use a keyword to indicate this:
-% But, if you want integer results without using a count register or the
-% |int| function, you can use a keyword to indicate this:
-
-\begin{math-keyword}{{integer} \meta{variable}\opt{\texttt{,}
-\meta{additional variables}}\texttt{;}}
-
- The |integer| keyword indicates that assignments to the \meta{variable} or
- the comma separated list of \meta{additional variables} should be
- truncated (not rounded) to integers. The variables should be ordinary
- macros -- \emph{not} \TeX\ registers. In addition the variables
- should \emph{not} be indexed.
-
+\begin{math-keyword}{{integer} \meta{variable}\opt{\texttt{,} \meta{additional variables}}\texttt{;}}
+ The |integer| keyword indicates that assignments to the \meta{variable} or
+ the comma separated list of \meta{additional variables} should be truncated
+ (not rounded) to integers. The variables should be ordinary macros --
+ \emph{not} \TeX\ registers. In addition the variables should \emph{not} be
+ indexed.
+ %
\begin{codeexample}[]
-\tikzmath{
- integer \x, \y, \z;
- \x = 4*5+6;
+\tikzmath{
+ integer \x, \y, \z;
+ \x = 4*5+6;
\y = sin(30)*4;
\z = log10(512) / log10(2);
- print {$x=\x$, $y=\y$, $z=\z$};
+ print {$x=\x$, $y=\y$, $z=\z$};
}
\end{codeexample}
-
+ %
\end{math-keyword}
-\begin{math-keyword}{{int} \meta{variable}\opt{\texttt{,}
-\meta{additional variables}}\texttt{;}}
- Short version of the |integer| keyword.
+\begin{math-keyword}{{int} \meta{variable}\opt{\texttt{,} \meta{additional variables}}\texttt{;}}
+ Short version of the |integer| keyword.
\end{math-keyword}
- Having declared a variable as an integer, the |math| library will
- continue to assign only integers to that variable within the
- current \TeX\ scope. If you wish to assign non-integer (i.e., \emph{real})
- numbers to the same variable, the following keyword can be used.
+Having declared a variable as an integer, the |math| library will continue to
+assign only integers to that variable within the current \TeX\ scope. If you
+wish to assign non-integer (i.e., \emph{real}) numbers to the same variable,
+the following keyword can be used.
-\begin{math-keyword}{{real} \meta{variable}\opt{\texttt{,}
-\meta{additional variables}}\texttt{;}}
- The |real| keyword ensures that assignments \meta{variable}
- (and \meta{additional variables}) will not be truncated to integers.
+\begin{math-keyword}{{real} \meta{variable}\opt{\texttt{,} \meta{additional variables}}\texttt{;}}
+ The |real| keyword ensures that assignments \meta{variable} (and
+ \meta{additional variables}) will not be truncated to integers.
\end{math-keyword}
-
- In order to take advantage of |math| library interface to the
- |calc| library you must indicate that a variable is to be assigned
- coordinates, using the following keyword.
-
-\begin{math-keyword}{{coordinate}
-\meta{variable}\opt{\texttt{,}
-\meta{additional variables}}\texttt{;}}%
-
- This keyword enables \tikzname-style coordinates such as |(2cm,3pt)| or
- |(my node.east)| to be parsed and
- assigned to \meta{variable} in the form $x,y$, which can then be used
- in a |tikzpicture|:
+In order to take advantage of |math| library interface to the |calc| library
+you must indicate that a variable is to be assigned coordinates, using the
+following keyword.
+
+\begin{math-keyword}{{coordinate} \meta{variable}\opt{\texttt{,} \meta{additional variables}}\texttt{;}}
+ This keyword enables \tikzname-style coordinates such as |(2cm,3pt)| or
+ |(my node.east)| to be parsed and assigned to \meta{variable} in the form
+ $x,y$, which can then be used in a |tikzpicture|:
+ %
\begin{codeexample}[]
\tikzmath{
coordinate \c;
@@ -280,12 +256,11 @@ In addition to this command the following key is provided:
}
\tikz\draw (0,0) -- (\c);
\end{codeexample}
-
- If the \tikzname\ |calc| library is loaded,
- coordinate calculations can be performed;
- the coordinate expression does not have to be
- surrounded by |($|\ldots|$)|.
-
+
+ If the \tikzname\ |calc| library is loaded, coordinate calculations can be
+ performed; the coordinate expression does not have to be surrounded by
+ |($|\ldots|$)|.
+ %
\begin{codeexample}[]
\tikzmath{
coordinate \c, \d;
@@ -294,16 +269,14 @@ In addition to this command the following key is provided:
}
\tikz\draw (\c) -- (\d);
\end{codeexample}
-
- In addition to assigning the $x$ and $y$ coordinates to \meta{variable}
- (possibly with an optional index), two further
- variables are defined. The first takes the name of \meta{variable}
- (e.g., |\c|) suffixed with |x| (i.e., |\cx|) and is assigned the
- $x$ coordinate of |\c|.
- The second takes the name of \meta{variable}
- suffixed with |y| (i.e., |\cy|) and is assigned the
- $y$ coordinate of |\c|.
+ In addition to assigning the $x$ and $y$ coordinates to \meta{variable}
+ (possibly with an optional index), two further variables are defined. The
+ first takes the name of \meta{variable} (e.g., |\c|) suffixed with |x|
+ (i.e., |\cx|) and is assigned the $x$ coordinate of |\c|. The second takes
+ the name of \meta{variable} suffixed with |y| (i.e., |\cy|) and is assigned
+ the $y$ coordinate of |\c|.
+ %
\begin{codeexample}[]
\tikzmath{
coordinate \c;
@@ -312,36 +285,28 @@ In addition to this command the following key is provided:
}
\tikz\draw (\cx1,\cy1) -- (\cx2,\cy1) -- (\cx2,\cy2) -- (\cx1,\cy2);
\end{codeexample}
-
+ %
\end{math-keyword}
-%\begin{math-keyword}{{point}
-%\meta{variable}\opt{\texttt{,}
-%\meta{additional variables}}\texttt{;}}%
-%
-% The |point| keyword is a synonym for the |coordinate| keyword
-% and performs the same function.
+%\begin{math-keyword}{{point} \meta{variable}\opt{\texttt{,} \meta{additional variables}}\texttt{;}}
+% The |point| keyword is a synonym for the |coordinate| keyword and performs
+% the same function.
%\end{math-keyword}
-
+
\subsection{Repeating Things}
-\begin{math-keyword}{{for} \meta{variable} \texttt{in
-\{}\meta{list}\texttt{\}\{}\meta{expressions}\texttt{\};}}
-
- This is a ``trimmed down'' version of the |\foreach| command available
- as part of \pgfname\ and \tikzname, but cannot currently be used
- outside of the |\tikzmath| command.
- It is important to note the following:
-
-\begin{itemize}
-
-\item
- Every value in \meta{list} is evaluated using the \pgfname\ mathematical
- engine. However, if an item in \meta{list} contains a comma, it \emph{must} be
- surrounded
- by braces, for example, |{mod(5, 2)}|.
-
+\begin{math-keyword}{{for} \meta{variable} \texttt{in \{}\meta{list}\texttt{\}\{}\meta{expressions}\texttt{\};}}
+ This is a ``trimmed down'' version of the |\foreach| command available as
+ part of \pgfname\ and \tikzname, but cannot currently be used outside of
+ the |\tikzmath| command. It is important to note the following:
+ %
+ \begin{itemize}
+ \item Every value in \meta{list} is evaluated using the \pgfname\
+ mathematical engine. However, if an item in \meta{list} contains a
+ comma, it \emph{must} be surrounded by braces, for example,
+ |{mod(5, 2)}|.
+ %
\begin{codeexample}[]
\tikzmath{
int \x, \v;
@@ -350,121 +315,96 @@ In addition to this command the following key is provided:
\v=\v*2;
};
print {$x=\x, v=\v$};
-}
+}
\end{codeexample}
-
-\item
- Because each item is evaluated, you cannot
- use \tikzname\ coordinates in \meta{list}.
-
-\item
- Only single variable assignment is supported.
-
-\item
- The ``dots notation'' (e.\,g., |1,2,...,9|) can be used in \meta{list},
- but is not as sophisticated as the \pgfname\ |\foreach| command.
- In particular, contextual replacement is not possible.
-
-\item
- Assignments that occur in the loop body \emph{are not scoped}.
- They last beyond the body of each iteration and the end of the |for|
- statement. This includes the values assigned to the \meta{variable}.
-
+ %
+ \item Because each item is evaluated, you cannot use \tikzname\
+ coordinates in \meta{list}.
+ \item Only single variable assignment is supported.
+ \item The ``dots notation'' (e.\,g., |1,2,...,9|) can be used in
+ \meta{list}, but is not as sophisticated as the \pgfname\
+ |\foreach| command. In particular, contextual replacement is not
+ possible.
+ \item Assignments that occur in the loop body \emph{are not scoped}.
+ They last beyond the body of each iteration and the end of the
+ |for| statement. This includes the values assigned to the
+ \meta{variable}.
+ %
\begin{codeexample}[]
\tikzmath{
int \x, \y;
\y = 0;
for \x1 in {1,...,5}{
for \x2 in {10,20,...,50}{
- \y = \y+\x1*\x2;
+ \y = \y+\x1*\x2;
};
};
}
$x_1=\x1, x_2=\x2, y=\y$
\end{codeexample}
-
-
-
-
-
-\end{itemize}
-
+ \end{itemize}
\end{math-keyword}
-
-
-
-
-
-
\subsection{Branching Statements}
- Sometimes you may wish to execute different statements
- depending on the value of an expression. In this
- case the following keyword can be used:
+Sometimes you may wish to execute different statements depending on the value
+of an expression. In this case the following keyword can be used:
\begin{math-keyword}{{if} \meta{condition} \texttt{then \{}\meta{if-non-zero-statements}\texttt{\};}}
-
- This keyword executes \meta{if-non-zero-statements} if the expression in \meta{condition}
- evaluates to any value other than zero.
-
+ This keyword executes \meta{if-non-zero-statements} if the expression in
+ \meta{condition} evaluates to any value other than zero.
\end{math-keyword}
\begin{math-keyword}{{if} \meta{condition} \texttt{then \{}\meta{if-non-zero-statements}\texttt{\}} \texttt{else} \texttt{\{}\meta{if-zero-statements}\texttt{\}}\texttt{;}}
-
- This keyword executes \meta{if-non-zero-statements} if the expression in \meta{condition}
- evaluates to any value other than zero and the \meta{if-zero-statements} are executed if
- the expression in \meta{condition} evaluates to zero.
-
+ This keyword executes \meta{if-non-zero-statements} if the expression in
+ \meta{condition} evaluates to any value other than zero and the
+ \meta{if-zero-statements} are executed if the expression in
+ \meta{condition} evaluates to zero.
+ %
\begin{codeexample}[]
\begin{tikzpicture}
\tikzmath{
int \x;
for \k in {0,10,...,350}{
- if \k>260 then { let \c = orange; } else {
+ if \k>260 then { let \c = orange; } else {
if \k>170 then { let \c = blue; } else {
if \k>80 then { let \c = red; } else {
let \c = green; }; }; };
{
- \path [fill=\c!50, draw=\c] (\k:0.5cm) -- (\k:1cm) --
+ \path [fill=\c!50, draw=\c] (\k:0.5cm) -- (\k:1cm) --
(\k+5:1cm) -- (\k+5:0.5cm) -- cycle;
};
};
}
\end{tikzpicture}
\end{codeexample}
+ %
\end{math-keyword}
+
\subsection{Declaring Functions}
- You can add functions by using the following keywords:
+You can add functions by using the following keywords:
\begin{math-keyword}{{function} \meta{name}\texttt{(}\meta{arguments}\texttt{) \{} \meta{definition} \texttt{\};}}
-
- This keyword works much like the |declare function| provided by the
- \pgfname\ math-engine.
- The function \meta{name} can be any name that is not already a
- function name in the current scope. The list of \meta{arguments} are
- comma separated \TeX\ macros such as |\x|, or |\y| (it is not
- possible to declare functions that take variable numbers of arguments).
- If the function
- takes no arguments then the parentheses need not be used.
- It is very important to note that the arrays that the
- \pgfname\ math engine supports
- \emph{cannot currently be passed as arguments to functions}.
-
-
- The function \meta{definition} should be a sequence of statements
- that can be parsed by the |\tikzmath| command and
- should use the commands specified in the \meta{arguments}.
- The |return| keyword (described below) should be used to indicate
- the value returned by the function.
- %
- Although \meta{definition} can take any statements accepted by
- |\tikzmath|, it is not advisable try to define functions inside other
- functions.
-
+ This keyword works much like the |declare function| provided by the
+ \pgfname\ math-engine. The function \meta{name} can be any name that is not
+ already a function name in the current scope. The list of \meta{arguments}
+ are comma separated \TeX\ macros such as |\x|, or |\y| (it is not possible
+ to declare functions that take variable numbers of arguments). If the
+ function takes no arguments then the parentheses need not be used. It is
+ very important to note that the arrays that the \pgfname\ math engine
+ supports \emph{cannot currently be passed as arguments to functions}.
+
+ The function \meta{definition} should be a sequence of statements that can
+ be parsed by the |\tikzmath| command and should use the commands specified
+ in the \meta{arguments}. The |return| keyword (described below) should be
+ used to indicate the value returned by the function.
+ %
+ Although \meta{definition} can take any statements accepted by |\tikzmath|,
+ it is not advisable try to define functions inside other functions.
+ %
\begin{codeexample}[]
\tikzmath{
function product(\x,\y) {
@@ -477,32 +417,27 @@ $x_1=\x1, x_2=\x2, y=\y$
print { $\i\times \j = \k$ };
}
\end{codeexample}
-
+ %
\end{math-keyword}
\begin{math-keyword}{{return} \meta{expression}\texttt{;}}
-
- This keyword should be used as the last executed statement
- in a function definition to indicate the value that should be
- returned.
-
+ This keyword should be used as the last executed statement in a function
+ definition to indicate the value that should be returned.
\end{math-keyword}
\subsection{Executing Code Outside the Parser}
-
- Sometimes you may wish to do ``something'' outside the parser,
- perhaps display some intermediate result or execute some code.
- In this case
- you have two options. Firstly, the following keyword can be used:
-
+
+Sometimes you may wish to do ``something'' outside the parser, perhaps display
+some intermediate result or execute some code. In this case you have two
+options. Firstly, the following keyword can be used:
+
\begin{math-keyword}{{print} \texttt{\{}\meta{code}\texttt{\};}}
-
- Execute \meta{code} immediately. This is intended as convenience
- keyword for displaying information in a document (analogous to
- the |print| command in real programming languages).
- The \meta{code} is executed inside a \TeX\ group.
-
+ Execute \meta{code} immediately. This is intended as convenience keyword
+ for displaying information in a document (analogous to the |print| command
+ in real programming languages). The \meta{code} is executed inside a \TeX\
+ group.
+ %
\begin{codeexample}[]
\tikzmath{
int \x, \y, \z;
@@ -513,19 +448,16 @@ $x_1=\x1, x_2=\x2, y=\y$
};
}
\end{codeexample}
-
+ %
\end{math-keyword}
-
- Secondly, if a statement begins with a brace |{|, then
- everything up to the closing brace |}| is collected
- and executed (the closing brace \emph{must}
- be followed by a semi-colon).
- Like the |print| keyword, the contents of the braces
- is executed inside a \TeX\ group.
- Unlike the |print| keyword, the brace notation can be used in
- functions so that |tikz| path commands can be safely executed
- inside a |tikzpicture|.
-
+
+Secondly, if a statement begins with a brace |{|, then everything up to the
+closing brace |}| is collected and executed (the closing brace \emph{must} be
+followed by a semi-colon). Like the |print| keyword, the contents of the braces
+is executed inside a \TeX\ group. Unlike the |print| keyword, the brace
+notation can be used in functions so that |tikz| path commands can be safely
+executed inside a |tikzpicture|.
+%
\begin{codeexample}[]
\begin{tikzpicture}
\draw [help lines] grid (3,2);
@@ -538,10 +470,3 @@ $x_1=\x1, x_2=\x2, y=\y$
}
\end{tikzpicture}
\end{codeexample}
-
-
-
-
-
-
-\endinput