Commit 52e14d22 authored by David Saxton's avatar David Saxton

Updates to documentation:

- Added and updated screenshots of various settings dialogs.
- Described some of the new UI and updated existing references.

svn path=/trunk/KDE/kdeedu/doc/kmplot/; revision=569446
parent 295d6689
This diff is collapsed.
<chapter id="configuration">
<title>Configuring &kmplot;</title>
<para>To access the &kmplot; configuration
dialog, select <menuchoice><guimenu>Settings</guimenu><guimenuitem>Configure
&kmplot;...</guimenuitem></menuchoice>. A number of settings (<guimenuitem>Colors...</guimenuitem>,
<guimenuitem>Coordinate System...</guimenuitem>, <guimenuitem>Scaling...</guimenuitem> and
<guimenuitem>Fonts...</guimenuitem>) can only be changed
from the <guimenu>Edit</guimenu> menu. </para>
dialog, select <menuchoice><guimenu>Settings</guimenu><guimenuitem>Configure
&kmplot;...</guimenuitem></menuchoice>.
A number of settings (<guimenuitem>Constants...</guimenuitem> and
<guimenuitem>Coordinate System...</guimenuitem>) can only be changed
from the <guimenu>Edit</guimenu> menu. </para>
<sect1 id="general-config">
<title><guilabel>General</guilabel> Configuration</title>
<para>Here you can set global settings which automatic will be saved when you exit &kmplot;. In the first page you can set calculation-precision, angle-mode (radians and degrees), background color and zoom in and zoom out factors. </para>
<screenshot>
<screeninfo>screenshot of the &kmplot; settings dialog</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="settingsdlg.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>screenshot of the &kmplot; settings dialog</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>The second page let you define you own constants. &kmplot; saves the constants in the same file as &kcalc; does. That means you can create a constant in &kmplot;, close the program and load it in &kcalc; and vice versa. &kmplot; only supports constant names that consist of one capital character and if you in &kcalc; define a constant name that is not one character, the name will be truncated. E.g, if you already have the constants "apple" and "bananas" in &kcalc;, they will be renamed to "A" and "B" in &kmplot;.</para>
<title><guilabel>General</guilabel> Configuration</title>
<screenshot>
<screeninfo>Screenshot of the General Settings dialog</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="settings-general.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Screenshot of the General Settings dialog</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>Here you can set global settings which automatic will be saved when you exit &kmplot;. In the first page you can set angle-mode (radians and degrees), zoom in and zoom out factors, and whether to show advanced plot tracing. </para>
</sect1>
<sect1 id="diagram-config">
<title><guilabel>Diagram</guilabel> Configuration</title>
<screenshot>
<screeninfo>Screenshot of the Diagram Appearance dialog</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="settings-diagram.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Screenshot of the Diagram Appearance dialog</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>You can set the <guilabel>Grid Style</guilabel> to one of four options:
<variablelist>
<varlistentry>
<term><guilabel>None</guilabel></term>
<listitem>
<para>No gridlines are drawn on the plot area</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Lines</guilabel></term>
<listitem>
<para>Straight lines form a grid of squares on the plot area.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Crosses</guilabel></term>
<listitem>
<para>Crosses are drawn to indicate points where x and y have integer values
(&eg;, (1,1), (4,2) &etc;).</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Polar</guilabel></term>
<listitem>
<para>Lines of constant radius and of constant angle are drawn on the plot
area.</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>Other options for the diagram appearance can also be configured:
<variablelist>
<varlistentry>
<term><guilabel>Axis width:</guilabel></term>
<listitem>
<para>Sets the width of the lines representing the axes.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Line width:</guilabel></term>
<listitem>
<para>Sets the width of the lines used for drawing the grid.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Tic width:</guilabel></term>
<listitem>
<para>Sets the width of the lines representing tics on the axes.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Tic length:</guilabel></term>
<listitem>
<para>Sets the length of the lines representing tics on the axes.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Show labels</guilabel></term>
<listitem>
<para>If checked, the names (x, y) of the axes are shown on the plot and the axes' tics are labeled.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Show axes</guilabel></term>
<listitem>
<para>If checked, the axes are visible.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Show arrows</guilabel></term>
<listitem>
<para>If checked, the axes are displayed with arrows at their ends.</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</sect1>
<sect1 id="colors-config">
<title><guilabel>Colors</guilabel> Configuration</title>
<para>In the <guilabel>Coords</guilabel> tab of the <guilabel>Colors</guilabel>
configuration dialog, you can change the colors of the axes and grid of the
main &kmplot; area.</para>
<screenshot>
<screeninfo>screenshot of the colors configuration dialog</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="settings-colors.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>screenshot of the colors configuration dialog</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>In the <guilabel>Default Function Colors</guilabel> tab, you can change the colors used
for the graphs of the ten functions allowed in &kmplot;.</para>
<title><guilabel>Colors</guilabel> Configuration</title>
<screenshot>
<screeninfo>Screenshot of the Colors dialog</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="settings-colors.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Screenshot of the Colors dialog</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>
In the <guilabel>Coords</guilabel> tab of the <guilabel>Colors</guilabel>
configuration dialog, you can change the colors of the axes and grid of the
main &kmplot; area.
</para>
<para>The <guilabel>Default Function Colors</guilabel> control which colors are cycled through when creating new functions.</para>
</sect1>
<sect1 id="coords-config">
<title><guimenuitem>Coordinate System</guimenuitem> Configuration</title>
<sect2 id="axes-config">
<title>The <guilabel>Axes</guilabel> Configuration</title>
<para>
<variablelist>
<varlistentry>
<term><guilabel>X-Axis</guilabel></term>
<listitem>
<para>Sets the range for the x-axis scale. You can choose one of the
predefined ranges, or select <guilabel>Custom</guilabel> to make your
own. Note that in the <guilabel>Custom</guilabel> boxes, you can use the
predefined functions and constants (see <xref linkend="func-predefined"/>) as
the extremes of the range (&eg;, set <guilabel>Min:</guilabel> to
<userinput>2*pi</userinput>). You can even use functions you have defined to
set the extremes of the axis range. For example, if you have defined a function
<userinput>f(x)=x^2</userinput>, you could set <guilabel>Min:</guilabel> to
<userinput>f(3)</userinput>, which would make the lower end of the range equal
to 9.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Y-Axis</guilabel></term>
<listitem>
<para>Sets the range for the y-axis. See <quote>X-Axis</quote> above.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Axis-line width:</guilabel></term>
<listitem>
<para>Sets the width of the lines representing the axes.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Tic width:</guilabel></term>
<listitem>
<para>Sets the width of the lines representing tics on the axes.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Tic length:</guilabel></term>
<listitem>
<para>Sets the length of the lines representing tics on the axes.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Show labels</guilabel></term>
<listitem>
<para>If checked, the names (x, y) of the axes are shown on the plot and the axes' tics are labeled.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Show extra frame</guilabel></term>
<listitem>
<para>If checked, the plot area is framed by an extra line.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Show axes</guilabel></term>
<listitem>
<para>If checked, the axes are visible.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Show arrows</guilabel></term>
<listitem>
<para>If checked, the axes are displayed with arrows at their ends.</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</sect2>
<sect2 id="grid-config">
<title>The <guilabel>Grid</guilabel> Configuration</title>
<para>You can set the <guilabel>Grid Style</guilabel> to one of four options:
<variablelist>
<varlistentry>
<term><guilabel>None</guilabel></term>
<listitem>
<para>No gridlines are drawn on the plot area</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Lines</guilabel></term>
<listitem>
<para>Straight lines form a grid of squares on the plot area.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Crosses</guilabel></term>
<listitem>
<para>Crosses are drawn to indicate points where x and y have integer values
(&eg;, (1,1), (4,2) &etc;).</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Polar</guilabel></term>
<listitem>
<para>Lines of constant radius and of constant angle are drawn on the plot
area.</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>The <guilabel>Line width</guilabel> option is used to set the width of
the lines of the grid.</para>
</sect2>
<sect1 id="font-config">
<title><guilabel>Fonts</guilabel> Configuration</title>
<screenshot>
<screeninfo>Screenshot of the Fonts dialog</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="settings-fonts.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Screenshot of the Fonts dialog</phrase>
</textobject>
</mediaobject>
</screenshot>
<variablelist>
<varlistentry>
<term><guilabel>Axis font</guilabel></term>
<listitem>
<para>The font used for drawing the axis numbers and x/y labels.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Label font</guilabel></term>
<listitem>
<para>The font used for drawing diagram labels (&eg;, those showing the plot name or extreme points.</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 id="font-config">
<title><guilabel>Fonts</guilabel> Configuration</title>
<screenshot>
<screeninfo>screenshot of the fonts configuration dialog</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="settings-fonts.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>screenshot of the fonts configuration dialog</phrase>
</textobject>
</mediaobject>
</screenshot>
<sect1 id="coords-config">
<title><guimenuitem>Coordinate System</guimenuitem> Configuration</title>
<screenshot>
<screeninfo>Screenshot of the Coordinate System dialog</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="settings-coords.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Screenshot of the Coordinate System dialog</phrase>
</textobject>
</mediaobject>
</screenshot>
<sect2 id="axes-config">
<title>The <guilabel>Axes</guilabel> Configuration</title>
<para>
<variablelist>
<varlistentry>
<term><guilabel>X-axis Range</guilabel></term>
<listitem>
<para>Sets the range for the x-axis scale.
Note that you can use the
predefined functions and constants (see <xref linkend="func-predefined"/>) as
the extremes of the range (&eg;, set <guilabel>Min:</guilabel> to
<userinput>2*pi</userinput>). You can even use functions you have defined to
set the extremes of the axis range. For example, if you have defined a function
<userinput>f(x) = x^2</userinput>, you could set <guilabel>Min:</guilabel> to
<userinput>f(3)</userinput>, which would make the lower end of the range equal
to 9.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Y-axis Range</guilabel></term>
<listitem>
<para>Sets the range for the y-axis. See <quote>X-axis Range</quote> above.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>X-axis Grid Spacing</guilabel></term>
<listitem>
<para>This controls the spacing between grid lines in the horizontal direction.
If <guilabel>Automatic</guilabel> is selected, then &kmplot; will try to find a grid line spacing of about two centermeters that is also numerically nice.
If <guilabel>Custom</guilabel> is selected, then you can enter the horizontal grid spacing. This value will be used regardless of the zoom. For example, if a value of 0.5 is entered, and the x range is 0 to 8, then 16 grid lines will be shown.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Y-axis Grid Spacing</guilabel></term>
<listitem>
<para>This controls the spacing between grid lines in the vertical direction.
See <quote>Y-axis Grid Spacing</quote> above.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</sect2>
</sect1>
<para><guilabel>Header table:</guilabel> sets the font for the information table
shown in &kmplot; printouts, and <guilabel>Axis font:</guilabel> and <guilabel>Axis font size:</guilabel>
sets the font and its size used for all labels on the axes in the plot area.</para>
<sect1 id="constants-config">
<title><guimenuitem>Constants</guimenuitem> Configuration</title>
<screenshot>
<screeninfo>Screenshot of the Constants dialog</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="settings-constants.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Screenshot of the Constants dialog</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>
Constants can be used as part of an expression anywhere inside of &kmplot;. Each constant must have a name and a value. Some names are invalid, however, such as existing function names or existing constants.
</para>
<para>
There are two options that control the scope of a constant:
<variablelist>
<varlistentry>
<term><guilabel>Document</guilabel></term>
<listitem>
<para>If you select the <guilabel>Document</guilabel> checkbox, then the Constant will be saved along with the current diagram when you save it to file. However, unless you have also selected the <guilabel>Global</guilabel> option, the constant will not be available between instances of &kmplot;.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Global</guilabel></term>
<listitem>
<para>If you select the <guilabel>Global</guilabel> checkbox, then the Constant's name and value will be written to &kde; settings (where it can also be used by KCalc). The constant will not be lost when &kmplot; is closed, and will be available again for use when &kmplot; is started again.</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</sect1>
</chapter>
......
......@@ -5,18 +5,18 @@
<title>Simple Function Plot</title>
<para>
In the sidebar on the left, there is a pushbutton with a drop down menu for creating new plots.
Click on it, and select <guilabel>Cartesian Plot</guilabel>. The text box for editing the current equation will be focused. Replace the default text with:
In the sidebar on the left, there is a button with a drop down menu for creating new plots.
Click on it, and select <guilabel>Cartesian Plot</guilabel>. The text box for editing the current equation will be focused. Replace the default text with
<screen><userinput>y = x^2</userinput></screen>
and press &Enter;.
This will draw the plot of y = x^2 in the coordinate system.
Clicking on the <guilabel>Create New Plot</guilabel> button again, select <guilabel>Cartesian Plot</guilabel>, and this time enter
This will draw the plot of y = x<superscript>2</superscript> in the coordinate system.
Clicking on the <guilabel>Create New Plot</guilabel> button again, select <guilabel>Cartesian Plot</guilabel>, and this time enter the text
<screen><userinput>y = 5sin(x)</userinput></screen>
to get another plot.
</para>
<para>Click on one of the lines you have just plotted. Now the crosshair
gets the color of the plot and is attached to the plot. You can
becomes the color of the current plot and is attached to the it. You can
use the mouse to move the crosshair along the plot. In the status
bar at the bottom of the window the coordinates of the current
position is displayed. Note that if the plot touches the x-axis the
......@@ -36,10 +36,8 @@
If <guilabel>y = x^2</guilabel> isn't already selected, select it.
Here you have access to a lot of options. Let us rename
the function and move the plot 5 units down. Change the function
equation to <screen><userinput>parabola(x) = x^2 - 5</userinput></screen>
</para>
<para>To select another color for the plot, click the <guilabel>Appearance</guilabel> button at the bottom of the function editor and select a new color.
equation to <screen><userinput>parabola(x) = x^2 - 5</userinput></screen> and hit enter.
To select another color for the plot, click the <guilabel>Appearance</guilabel> button at the bottom of the function editor and select a new color.
<note>
<para>All changes can be undone via <menuchoice><guimenu>Edit</guimenu><guimenuitem>Undo</guimenuitem> </menuchoice>.</para>
</note>
......
......@@ -426,8 +426,8 @@
drawn point by a line.
</para>
<para>
Parametric functions are plotted for parameter values from 0 up to 2&pgr;.
You can set the plotting range in the dialog for the function too.
Parametric and polar functions have a default plotting range of 0 to 2&pgr;.
This plotting range can also be changed in the <guilabel>Function Editor</guilabel>.
</para>
</sect1>
......
doc/settings-colors.png

10.8 KB | W: | H:

doc/settings-colors.png

29.5 KB | W: | H:

doc/settings-colors.png
doc/settings-colors.png
doc/settings-colors.png
doc/settings-colors.png
  • 2-up
  • Swipe
  • Onion skin
doc/settings-fonts.png

10.5 KB | W: | H:

doc/settings-fonts.png

25.6 KB | W: | H:

doc/settings-fonts.png
doc/settings-fonts.png
doc/settings-fonts.png
doc/settings-fonts.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -8,10 +8,23 @@
<listitem><para>Parametric plots are similar to Cartesian plots. The x and y coordinates can be entered as equations in t, &eg; <quote>x = sin(t)</quote>, <quote>y = cos(t)</quote>, or as functions, &eg; <quote>f_x(s) = sin(s)</quote>, <quote>f_y(s) = cos(s)</quote>.</para></listitem>
<listitem><para>Polar plots are also similar to Cartesian plots. They can be either be entered as an equation in &thgr;, &eg; <quote>r = &thgr;</quote>, or as a function, e.g. <quote>f(x) = x</quote>.</para></listitem>
<listitem><para>For implicit plots, the name of the function is entered separetely from the expression relating the x and y coordinates. If the x and y variables are specified via the function name (by entering &eg;<quote>f(a,b)</quote> as the function name), then these variables will be used. Otherwise, the letters x and y will be used for the variables.</para></listitem>
<listitem><para>Explicit differential plots are differential equations whereby the highest derivatve is given in terms of the lower derivatives. Differentiatation is denoted by a prime ('). In function form, the equation will look like &eg; <quote>f''(x) = f' &minus; f</quote>. In equation form, it will look like &eg; <quote>y'' = y' &minus; y</quote>. Note that in both cases, the <quote>(x)</quote> part is not added to the lower order differential terms (so you would enter <quote>f'(x) = &minus;f</quote> and not <quote>f'(x) = &minus;f(x)</quote>).</para></listitem>
<listitem><para>Explicit differential plots are differential equations whereby the highest derivatve is given in terms of the lower derivatives. Differentiatation is denoted by a prime ('). In function form, the equation will look like <quote>f''(x) = f' &minus; f</quote>. In equation form, it will look like <quote>y'' = y' &minus; y</quote>. Note that in both cases, the <quote>(x)</quote> part is not added to the lower order differential terms (so you would enter <quote>f'(x) = &minus;f</quote> and not <quote>f'(x) = &minus;f(x)</quote>).</para></listitem>
</itemizedlist>
<para>For more information on &kmplot; functions, see <xref linkend="reference"/>.
<para>All the equation entry boxes come with a button on the right. Clicking this invokes the advanced <guilabel>Equation Editor</guilabel> dialog, which provides:
<itemizedlist>
<listitem>
<para>A variety of mathematical symbols that can be used in equations, but aren't found on normal keyboards.</para>
</listitem>
<listitem>
<para>The list of user constants and a button for editing them.</para>
</listitem>
<listitem>
<para>The list of predefined functions. Note that if you have text already selected, it will be used as the function argument when a function is inserted. For example, if <quote>1 + x</quote> is selected in the equation <quote>y = 1 + x</quote>, and the sine function is chosen, then the equation will become <quote> y = sin(1+x)</quote>.
</para>
</listitem>
</itemizedlist>
</para>
<screenshot>
......@@ -33,44 +46,36 @@
<title>Cartesian Functions</title>
<para>To enter an explicit function (&ie;, a function in the form y=f(x)) into &kmplot;, just enter it in the
following form:
<screen>
<userinput><replaceable>f</replaceable>(<replaceable>x</replaceable>) = <replaceable>expression</replaceable></userinput>
</screen>
Where:
<screen><userinput><replaceable>f</replaceable>(<replaceable>x</replaceable>) = <replaceable>expression</replaceable></userinput></screen>
where:
<itemizedlist>
<listitem><para>
<replaceable>f</replaceable> is the name of the function, and can be any
string of letters and numbers you like, provided it does not start with any of
the letters x, y or r (since these are used for parametric and polar
functions).</para>
string of letters and numbers.</para>
</listitem>
<listitem><para>
<replaceable>x</replaceable> is the x-coordinate, to be used in the expression
following the equals sign. It is in fact a dummy variable, so you can use any
variable name you like, but the effect will be the same.</para>
following the equals sign. It is a dummy variable, so you can use any
variable name you like to achieve the same effect.</para>
</listitem>
<listitem>
<para><replaceable>expression</replaceable> is the expression to be plotted,
given in appropriate syntax for &kmplot;. See <xref linkend="math-syntax"/>.
given in the appropriate syntax for &kmplot;. See <xref linkend="math-syntax"/>.
</para>
</listitem>
</itemizedlist>
</para>
<para>As an example, to draw the graph of y = x<superscript>2</superscript> + 2x,
enter the following into the function editor of &kmplot;:
<screen>f(x) = x^2 + 2x</screen>
</para>
</sect2>
<sect2 id="parametric-functions">
<title>Parametric Functions</title>
<para>Parametric functions are those in which the x and y coordinates are
defined by separate functions of another variable, often called t. To enter a
parametric function in &kmplot;, follow the procedure as for an explicit
function for each of the x and y functions. As with explicit functions, you may use any variable name you wish for the
parametric function in &kmplot;, follow the procedure as for a Cartesian
function for each of the x and y functions. As with Cartesian functions, you may use any variable name you wish for the
parameter.</para>
<para>As an example, suppose you want to draw a circle, which has parametric
equations x = sin(t), y = cos(t). After creating a parametric plot, enter the appropriate equations in the x and y boxes, &ie;,
......@@ -96,21 +101,21 @@
<para>Polar coordinates represent a point by its distance from the origin
(usually called r), and the angle a line from the origin to the point makes
with the x-axis (usually represented by &thgr; the Greek letter theta). To enter
functions in polar coordinates, create a new Polar Plot from the <guilabel>Create New Plot</guilabel> pushbutton.
functions in polar coordinates, create a new Polar Plot from the <guilabel>Create New Plot</guilabel> button.
In the definition box, complete the
function definition, including the name of the theta variable you want
to use, &eg;, to draw the Archimedes' spiral r = &thgr;, enter:
<screen><userinput>r(theta) = theta</userinput></screen>
so that the whole line reads <quote>r(theta) = theta</quote>. Note that
you can use any name for the theta variable, so
<quote>r(foo) = foo</quote> would have produced exactly the same output.
<quote>r(foo) = foo</quote> will produce