<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to wiki</title><link>https://sourceforge.net/p/eqc/wiki/</link><description>Recent changes to wiki</description><atom:link href="https://sourceforge.net/p/eqc/wiki/feed.rss" rel="self"/><language>en</language><lastBuildDate>Tue, 06 Feb 2024 17:07:46 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/eqc/wiki/feed.rss" rel="self" type="application/rss+xml"/><item><title>Home modified by Jan Rheinlaender</title><link>https://sourceforge.net/p/eqc/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v5
+++ v6
@@ -223,44 +223,62 @@
 Questions and Answers
 ===

-; Why are my files full of errors after an upgrade of EQC? :
-:* The former unit \l was removed because it collides with a letter in the Polish alphabet. Use \litre instead. This can lead to weird errors if you don't change it!
-; In the code below, why doesn't the value of P_comb get substituted when I say \val{P}? :
+* Why are my files full of errors after an upgrade of EQC?
+    The former unit \l was removed because it collides with a letter in the Polish alphabet. Use \litre instead. This can lead to weird errors if you don't change it!
+* In the code below, why doesn't the value of P_comb get substituted when I say \val{P}?
+    &lt;code&gt;
   \eq[eq:Plive]{P_L = \unit{1500}{\kN}}
   \eq[eq:sello]{H = \unit{2}{\m}}
   \eq[eq:Pcomb]{P_{comb} = H L^2}
   \eq[eq:Ptot]{P = P_L + P_{comb}}
   P_{comb} &amp;amp; = &amp;amp; \val{P_{comb}}\\
   P &amp;amp; = &amp;amp;\val{P}
-:* P_comb ist not substituted by \val because it has no numerical value. You need to tell EQC more exactly what it should do, e.g.:
-  \eqsubst*{"eq:Ptot"}{P_{comb} = \val{P_{comb}}}
+    &lt;/code&gt;
+P_comb ist not substituted by \val because it has no numerical value. You need to tell EQC more exactly what it should do, e.g.:
+    &lt;code&gt;
+  \eqsubst{"eq:Ptot"}{P_{comb} = \val{P_{comb}}}
   \eq[eq:Ptot_]{P = \val{\rhs{"prev"}}}
-; My \makepspicture graphics fail because the equations do not resolve to numerics : Add a second \val statement to them. This became necessary with the introduction of symbols that represent matrices.
-; Why is the spacing between numbers and units ugly? :
-:* For input equations, this happens when you use \eqcoptions{eqraw = true}. EQC then tries to preserve your original formatting as much as possible (because automatic formatting is not always as beautiful as it should be). You can set &lt;code&gt;eqraw = false&lt;/code&gt; either globally or locally
+    &lt;/code&gt;
+* My \makepspicture graphics fail because the equations do not resolve to numerics
+    Add a second \val statement to them. This became necessary with the introduction of symbols that represent matrices.
+* Why is the spacing between numbers and units ugly?
+    For input equations, this happens when you use \eqcoptions{eqraw = true}. EQC then tries to preserve your original formatting as much as possible (because automatic formatting is not always as beautiful as it should be). You can set &lt;code&gt;eqraw = false&lt;/code&gt; either globally or locally
  \eq[eqraw = false]{a=100\mm}
 or provide the formatting yourself
   \eq{a=\unit{100}{\mm}}
-:* For calculated results, you can control your spacing by passing options to the SIunits package. EQC simply uses the \unit macro to display physical quantities.
-; Why is the spacing between units ugly? : See above
-; How do I calculate something like 2+2 in EQC without definition of corresponding variables? : Just use &lt;code&gt;\val{2+2}&lt;/code&gt;. You can put anything you like into a &lt;code&gt;\val&lt;/code&gt; command, and EQC will try to reduce it to a numeric value.
-; EQC writes a lot of messages to the system console, which slows down compilation. : This can be changed by setting the debug level: For example, &lt;code&gt;\eqcoptions{debug=-1}&lt;/code&gt; will silence EQC almost completely. Higher values up to 13 will make it more verbose. For Unix platforms, you can also use the command line argument &lt;code&gt;-d&lt;/code&gt; or &lt;code&gt;--debug=&lt;/code&gt;. However, that when something goes wrong, reading the console output is very useful to find problems.
-; Why doesn't substitution of x^2 = y work in 1/x^2? : This is a problem with GiNaC's canonical format of expressions. Your equation will be represented as x^(-2), so you need to substitute x^(-2) = 1/y. This is perhaps more of a bug than a feature, but difficult to solve without manipulating GiNaC's internals.
-; How do I get EQC to accept a variable name like \varphi'? : This is not possible at the moment, but you can circumvent the problem by defining a new macro, e.g. \newcommand{\varphis}{\varphi'}.
-; EQC complains about a wrong number of arguments for a self-defined function : Probably you did something like:
+    For calculated results, you can control your spacing by passing options to the SIunits package. EQC simply uses the \unit macro to display physical quantities.
+* Why is the spacing between units ugly?
+    See above
+* How do I calculate something like 2+2 in EQC without definition of corresponding variables?
+    Just use &lt;code&gt;\val{2+2}&lt;/code&gt;. You can put anything you like into a &lt;code&gt;\val&lt;/code&gt; command, and EQC will try to reduce it to a numeric value.
+* EQC writes a lot of messages to the system console, which slows down compilation
+    This can be changed by setting the debug level: For example, &lt;code&gt;\eqcoptions{debug=-1}&lt;/code&gt; will silence EQC almost completely. Higher values up to 13 will make it more verbose. For Unix platforms, you can also use the command line argument &lt;code&gt;-d&lt;/code&gt; or &lt;code&gt;--debug=&lt;/code&gt;. However, that when something goes wrong, reading the console output is very useful to find problems.
+* Why doesn't substitution of x^2 = y work in 1/x^2? 
+    This is a problem with GiNaC's canonical format of expressions. Your equation will be represented as x^(-2), so you need to substitute x^(-2) = 1/y. This is perhaps more of a bug than a feature, but difficult to solve without manipulating GiNaC's internals.
+* How do I get EQC to accept a variable name like \varphi'?
+    This is not possible at the moment, but you can circumvent the problem by defining a new macro, e.g. \newcommand{\varphis}{\varphi'}.
+* EQC complains about a wrong number of arguments for a self-defined function
+    Probably you did something like:
  \function{x}{y; z}
  $\eq{a = x b + c}$.
 Because functions have precedence over multiplication, EQC parsed this as &lt;code&gt;a = x(b;&lt;/code&gt; and then complained about the missing second argument. EQC does not require function arguments to be enclosed in brackets, so you can write &lt;code&gt;\cos\alpha&lt;/code&gt; instead of &lt;code&gt;\cos{\alpha}&lt;/code&gt;. There are several ways to solve your problem:
-:* Provide a multiplication symbol: x \cdot b
-:* Use brackets: {x} b
-:* Provide function arguments x(y;z) b
-; EQC does not use my library functions for finding variable values : This is not a bug, but a feature: Library functions are assumed to be generic and must be adapted to the special purpose you have in mind. For details, see the HTML documentation. Basically, you need to 'activate' the equation with either \eq{"lib:myeq"} or something like \eqsubst{"lib:myeq"}{x = x_1; y = y_1}.
-; How do I use bibtex with EQC? : Just run bibtex on the original TeX file, not on the .eqc file.
-; Why do my equations look ugly? : EQC's formatting algorithm is far from perfect. In fact, it will never become perfect because different people have different ideas about what a properly formatted equation should look like. You can alleviate this problem by using the \raw statement. This means that the contents of your \eq statements retain the original formatting. Of course, this option does not work with equations obtained by \eqadd etc. as there is no original formatting. After all, EQC is designed to save you the work of typing all these equations yourself!
-; AMS math complains about multiple labels : AMS math puts out an error message like Error: Multiple \label's: label '...' will be lost. This error occurs (for example, inside an align environment) if you use \notag with an equation that has a label, e.g.: \eqadd[eq:1]{x = 3}{4}\notag. EQC will automatically add a \label{eq:1} when it processes the equation, and AMS math now complains that the equation has a label but should not be tagged at the same time! You can use \tag*{} to circumvent the problem. Note that the standard eqnarray environment does not produce this error.
-; When I try to build the package, the command ccache is not found : I use ccache because my machine is so slow... Edit eqc/Makefile.am and remove it.
-; The intermediate .eqc file generated from a LateX source contains a lot of empty and/or commented lines: You can use &lt;code&gt;\eqcoptions{cleancomments=true}&lt;/code&gt; to remove comment lines (that is, lines beginning with a percent character). Other comments are not removed because sometimes they are necessary for LaTeX to process the file correctly.
-; Is there a 64 bit version of EQC for Windows? : No, because the underlying GiNaC and CLN libraries will not compile for that platform yet. A 64 bit version for Unix platforms should be possible to compile from source, though.
+** Provide a multiplication symbol: x \cdot b
+** Use brackets: {x} b
+** Provide function arguments x(y;z) b
+* EQC does not use my library functions for finding variable values
+    This is not a bug, but a feature: Library functions are assumed to be generic and must be adapted to the special purpose you have in mind. For details, see the HTML documentation. Basically, you need to 'activate' the equation with either \eq{"lib:myeq"} or something like \eqsubst{"lib:myeq"}{x = x_1; y = y_1}.
+* How do I use bibtex with EQC?
+    Just run bibtex on the original TeX file, not on the .eqc file.
+* Why do my equations look ugly?
+    EQC's formatting algorithm is far from perfect. In fact, it will never become perfect because different people have different ideas about what a properly formatted equation should look like. You can alleviate this problem by using the \raw statement. This means that the contents of your \eq statements retain the original formatting. Of course, this option does not work with equations obtained by \eqadd etc. as there is no original formatting. After all, EQC is designed to save you the work of typing all these equations yourself!
+* AMS math complains about multiple labels
+    AMS math puts out an error message like Error: Multiple \label's: label '...' will be lost. This error occurs (for example, inside an align environment) if you use \notag with an equation that has a label, e.g.: \eqadd[eq:1]{x = 3}{4}\notag. EQC will automatically add a \label{eq:1} when it processes the equation, and AMS math now complains that the equation has a label but should not be tagged at the same time! You can use \tag*{} to circumvent the problem. Note that the standard eqnarray environment does not produce this error.
+* When I try to build the package, the command ccache is not found
+    I use ccache because my machine is so slow... Edit eqc/Makefile.am and remove it.
+* The intermediate .eqc file generated from a LateX source contains a lot of empty and/or commented lines
+    You can use &lt;code&gt;\eqcoptions{cleancomments=true}&lt;/code&gt; to remove comment lines (that is, lines beginning with a percent character). Other comments are not removed because sometimes they are necessary for LaTeX to process the file correctly.
+* Is there a 64 bit version of EQC for Windows?
+    No, because the underlying GiNaC and CLN libraries will not compile for that platform yet. A 64 bit version for Unix platforms should be possible to compile from source, though.

 Copyright
 ===
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jan Rheinlaender</dc:creator><pubDate>Tue, 06 Feb 2024 17:07:46 -0000</pubDate><guid isPermaLink="false">https://sourceforge.net51fac1eb004f570766fb5dd43f37853f61aabccc</guid></item><item><title>Reference section modified by Jan Rheinlaender</title><link>https://sourceforge.net/p/eqc/wiki/Reference%2520section/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -14,7 +14,7 @@
 **equation &amp;lt;- exp &amp;amp; = &amp;amp; exp** Same as before, but inside an equation array. Other positions of the &amp;amp; are possible as well.
 **equation &amp;lt;- "label"** EQC optionally accepts an equation label in any place where an equation is required. Labels must be enclosed in double quotes. The special equation label "prev' references the last equation that was registered with EQC.
 **eqlist &amp;lt;- equation OR equation; equation; equation ...** Either a single equation or a list of equations separated by colons.
-**unitlist &amp;lt;- unit; unit; unit ...** A list of physical unit names like \mm**\N, separated by colons.
+**unitlist &amp;lt;- unit; unit; unit ...** A list of physical unit names like \mm;\N, separated by colons.
 **explist &amp;lt;- exp; exp; exp ...** A list of expressions like x; y; z^2, separated by colons.
 **simplifications &amp;lt;- simplification; simplification; simplification ...** A list of strings describing simplifications to be performed on an equation.
 **vector &amp;lt;- start : end : step** A vector beginning at start and ending at end, with steps of step. If end - start is not a multiple of step, the last element of the vector will be smaller than end. If you don't care about the size of the step, give a value of 0: EQC will make the vector have the number of elements defined by the option vecautosize (default 20).
@@ -30,47 +30,52 @@

 All these keywords take several optional arguments. The asterisk form suppresses printing the equation. A label may be given to the equation in square brackets. In addition, all the options listed for the keyword eqcoptions can be used and will then apply for this equation only. Note that if only an equation label and no further option is provided the square brackets, the key label = can be omitted, and the label does not need to be quoted ("").

-**\constant [*] {equation}** Registers a constant with EQC. Constants are not erased by \clearequations. This makes it possible to specify general constants only once in the file and reuse them for several different calculations. The value assigned to this constant is automatically used when calculating the value of variables. The asterix form suppresses printing of the constant equation in the Latex output file.
-**`\eq [*] [[label]] {equation}`** Registers an equation with EQC. Only equations that have been registered are used to calculate the values of variables. The asterix form suppresses printing of the equation in the Latex output file. The equation can be assigned an optional label which may be used to reference it later on in the file. The Latex \ref{} command will also work with this label. Note that here the label may not be surrounded by quotes! For the special case of the equation label starting with lib:, the equation will not be erased by \clearequations. This is useful for building a library of generic equations, as for example in the file substitutions.tex.
+**\constant `[*]` {equation}** Registers a constant with EQC. Constants are not erased by \clearequations. This makes it possible to specify general constants only once in the file and reuse them for several different calculations. The value assigned to this constant is automatically used when calculating the value of variables. The asterix form suppresses printing of the constant equation in the Latex output file.
+**\eq `[*]` [[label]] {equation}** Registers an equation with EQC. Only equations that have been registered are used to calculate the values of variables. The asterix form suppresses printing of the equation in the Latex output file. The equation can be assigned an optional label which may be used to reference it later on in the file. The Latex \ref{} command will also work with this label. Note that here the label may not be surrounded by quotes! For the special case of the equation label starting with lib:, the equation will not be erased by \clearequations. This is useful for building a library of generic equations, as for example in the file substitutions.tex.
 **\deleq{label}** Removes an equation such that it has no influence on future searches for variable values. Note that since LaTeX does not support removing labels, the label itself will be not be re-usable!
-**`\eqadd [*] [[label]] {equation}{expr}`** Adds an expression to the equation. A label may be assigned to the result. The resulting equation is only registered with the EQC if it has been assigned a label. The reason for this is that the equation is usually redundant in terms of using it for calculating the value of variables. The asterix form suppresses printing of the resulting equation.
-**\eqdiv [`*] [[label]] {equation}{exp}** Divides the equation by an expression. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
-**\eqmul [*]  [[label]] {equation}{exp}** Multiplies the equation with an expression. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
-**\eqpow [*] [[label]] {equation}{exp}** Raises both sides of the equation to the power of an expression. Beware: This ignores alternative results, as in the case of \eqpow{x^2}{1/2}, which might evaluate to +x or -x. Only use this function if you are sure that you want the first possible result!
-**\eqfunc [*]  [[label]] {equation}{exp}** Applies the expression, which must be a valid function name (without parameters), to both sides of the equation.
-**\eqsub [*] [[label]] {equation}{exp}** Subtracts an expression from the equation. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
-**\eqrev [*]  [[label]]  {equation}** Swaps left hand side and right hand side of the equation. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
-**\eqsubst [*] [[label]] {equation}{eqlist}** Substitutes expressions inside an equation. The eqlist argument is a list of equations separated by ';'. Any occurences of the left hand side of these equations is replaced by the right hand side. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
-**\eqsimpf [*]  [[label]]  {equation}{simplifications}** Simplifies both sides of the equation according to the simplifications given in a list. Possible values are:
-:**expand** Fully expands all expressions, including function arguments.
-:**expandf** Only expand function definition, not arguments.
-:**eval** Numerically evaluate the equation as far as possible.
-:**normal** Normalize the equation (see description of GiNaC normal() method).
-:**collect-common** Collect common factors (see description of GiNaC collect_common_factors() method).
-:**unsafe** Does unsafe simplifications, for example
-::* sqrt{x^2} =&amp;gt; x
-::* \arctan\tan{x} =&amp;gt; x. Note that the opposite \tan\arctan{x} is not an unsafe evaluation and is thus done automatically (by GiNaC).
-:**diff** Evaluates differential function \diff.
-:**sum** Evaluates sum functions \sum.
-:**gather-sqrt** Gathers single square roots under one root symbol.
-:**integrate** Symbolically integrates any integrals in the expression (if possible)
-**\eqsolve [*] &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{exp}{exp}** Solves the equation for a given variable. The last argument indicates which solution is requested (in case there are several solutions, like for a quadratic equation). The function returns an assignment for the variable.
-
-=Keywords for manipulating expressions=
+**\eqadd `[*]` [[label]] {equation}{expr}** Adds an expression to the equation. A label may be assigned to the result. The resulting equation is only registered with the EQC if it has been assigned a label. The reason for this is that the equation is usually redundant in terms of using it for calculating the value of variables. The asterix form suppresses printing of the resulting equation.
+**\eqdiv `[*]` [[label]] {equation}{exp}** Divides the equation by an expression. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
+**\eqmul `[*]`  [[label]] {equation}{exp}** Multiplies the equation with an expression. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
+**\eqpow `[*]` [[label]] {equation}{exp}** Raises both sides of the equation to the power of an expression. Beware: This ignores alternative results, as in the case of \eqpow{x^2}{1/2}, which might evaluate to +x or -x. Only use this function if you are sure that you want the first possible result!
+**\eqfunc `[*]`  [[label]] {equation}{exp}** Applies the expression, which must be a valid function name (without parameters), to both sides of the equation.
+**\eqsub `[*]` [[label]] {equation}{exp}** Subtracts an expression from the equation. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
+**\eqrev `[*]`  [[label]]  {equation}** Swaps left hand side and right hand side of the equation. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
+**\eqsubst `[*]` [[label]] {equation}{eqlist}** Substitutes expressions inside an equation. The eqlist argument is a list of equations separated by ';'. Any occurences of the left hand side of these equations is replaced by the right hand side. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
+**\eqsimpf `[*]`  [[label]]  {equation}{simplifications}** Simplifies both sides of the equation according to the simplifications given in a list. Possible values are:
+
+* **expand** Fully expands all expressions, including function arguments.
+* **expandf** Only expand function definition, not arguments.
+* **eval** Numerically evaluate the equation as far as possible.
+* **normal** Normalize the equation (see description of GiNaC normal() method).
+* **collect-common** Collect common factors (see description of GiNaC collect_common_factors() method).
+* **unsafe** Does unsafe simplifications, for example
+    * sqrt{x^2} =&amp;gt; x
+    * \arctan\tan{x} =&amp;gt; x. Note that the opposite \tan\arctan{x} is not an unsafe evaluation and is thus done automatically (by GiNaC).
+* **diff** Evaluates differential function \diff.
+* **sum** Evaluates sum functions \sum.
+* **gather-sqrt** Gathers single square roots under one root symbol.
+* **integrate** Symbolically integrates any integrals in the expression (if possible)
+
+**\eqsolve `[*]` [[label]] {equation}{exp}{exp}** Solves the equation for a given variable. The last argument indicates which solution is requested (in case there are several solutions, like for a quadratic equation). The function returns an assignment for the variable.
+
+Keywords for manipulating expressions
+---

 **\lhs {equation}** Returns the left hand side of the equation.
 **\rhs {equation}** Returns the right hand side of the equation.
-**\val &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;unitlist&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp}** EQC replaces this keyword with the value of the specified expression (which usually is, but need not be, a variable). EQC tries to derive the value from the given equations in the form of a physical quantity. If this is not successful, a symbolic expression will be printed instead. Any floating point numbers will be printed with an optional precision. If the quantity should be expressed in other units than those set by \eqcoptions, a list of units can be passed as an optional parameter.
-**\valwith &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;unitlist&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp} {exp}** An additional list of assignments can be given to find the value. All the assignments given are registered as new equations and then the value is searched for. This is the same as doing
-  \eq*[eq:temp_1]{assignment_1}%
-   ...
-  \eq*[eq:temp_n]{assignment_n}%
-  \val{exp}
-  \deleq{"eq:temp_1"**... "eq:temp_n}%
-**\quantity &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp}** Same as val, but an error is printed if the value of the variable is no quantity. Any floating point numbers will be printed with an optional precision.
-**\numval &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp}** Same as val, but an error is printed if the value of the variable is no number. Any floating point numbers will be printed with an optional precision.
-**\units &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp}** Same as val, but an error is printed if the value of the variable is no unit or a multiplication of several units and/or powers of units. Any floating point numbers will be printed with an optional precision.
-**\eqeval{equation}{equation}** Evaluates the first equation to a matrix of values. The second equation needs to have the form sym = vector. The symbol is treated as the independent variable, and the equation is evaluated for all values of the symbol given in the vector. The result is a 2x2 matrix, with the values of the independant variable in the first column and the evaluation results in the second column. For example: \eqeval{y = x^2}{x = 1:5:1} would become (1**4**9**16**25)
+**\val [[int]] [[unitlist]] {exp}** EQC replaces this keyword with the value of the specified expression (which usually is, but need not be, a variable). EQC tries to derive the value from the given equations in the form of a physical quantity. If this is not successful, a symbolic expression will be printed instead. Any floating point numbers will be printed with an optional precision. If the quantity should be expressed in other units than those set by \eqcoptions, a list of units can be passed as an optional parameter.
+**\valwith [[int]] [[unitlist]]  {exp} {exp}** An additional list of assignments can be given to find the value. All the assignments given are registered as new equations and then the value is searched for. This is the same as doing
+
+     \eq*[eq:temp_1]{assignment_1}%
+       ...
+      \eq*[eq:temp_n]{assignment_n}%
+      \val{exp}
+      \deleq{"eq:temp_1";... "eq:temp_n"}%
+
+**\quantity [[int]] {exp}** Same as val, but an error is printed if the value of the variable is no quantity. Any floating point numbers will be printed with an optional precision.
+**\numval [[int]] {exp}** Same as val, but an error is printed if the value of the variable is no number. Any floating point numbers will be printed with an optional precision.
+**\units [[int]] {exp}** Same as val, but an error is printed if the value of the variable is no unit or a multiplication of several units and/or powers of units. Any floating point numbers will be printed with an optional precision.
+**\eqeval{equation}{equation}** Evaluates the first equation to a matrix of values. The second equation needs to have the form sym = vector. The symbol is treated as the independent variable, and the equation is evaluated for all values of the symbol given in the vector. The result is a 2x2 matrix, with the values of the independant variable in the first column and the evaluation results in the second column. For example: \eqeval{y = x^2}{x = 1:5:1} would become (1;4;9;16;25)
 **\eqevalp{x-equation}{y-equation}{equation}** Evaluate a function given in parameter form to a matrix of values. Example (the evolvent function): \eqevalp{x = R (\cos t + t \sin t)}{y = R(sin t - t \cos t)}{t = 0:90\degree:5\degree}
 **\numer{exp}** Returns the numerator of the expression.
 **\denom{exp}** Returns the denominator of the expression.
@@ -80,7 +85,8 @@
 **\ceil{exp}{digits}** Return the numeric value of the expression, rounded up to the nearest integer with the given number of digits after the decimal point.
 **\floor{exp}{digits}** Return the numeric value of the expression, rounded down to the nearest integer with the given number of digits after the decimal point.

-=Keywords for manipulating matrices=
+Keywords for manipulating matrices
+---

 **\matrix {variable}** Define the variable as containing matrices. This is essential because EQC must know that this variable is non-commutative when multiplied with another matrix variable
 **\transpose{exp}** Transpose the matrix
@@ -90,35 +96,45 @@
 **^ (raising to power)** Multiply the matrix with itself as often as indicated by the exponent
 **\mindex{exp, row, col}** Find the indicated element from the matrix

-=Keywords for defining new units and functions=
-
-**\defunit [*] [latexname] {macro}{exp}** Defines a new unit. The macro is the name of the unit, this must begin with a backslash because a Latex macro will be created with this name for referencing the unit later on. The expression defines the unit in terms of units already known to the EQC. If this expression contains data types apart from units, powers of units, numerics, or constants already known to EQC, a warning is issued, but the unit definition is created anyway.&lt;br/&gt; To suppress the generation of the Latex command for this unit, use the asterix form. If you wish the Latex macro to output something other than the expression, supply this as an optional argument. It will be printed in the mathrm font.
-**\function &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;hints&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {name} {explist}** Registers a user-defined function with EQC. The function has the arguments given in the explist. Example: \function{f}{x;y}. The function may be used in equations and expressions with or without arguments. The following hints are possible:
-:**lib** This is a library function. It will not be erased by \clearequations.
-:**trig** This is a trigonometric function. It will be printed as sin²x instead of (sin(x))² (for example).
-:**nobracket** This functions needs no brackets when printed (for example, the sqrt() function).
-:**expand** The function will be expanded immediately (provided it has been given a definition). This is useful for example with square() und cubic()
-**\deffunc [*] {name}{exp}** Define an expression which will be used to evaluate the function, for example, \deffunc{f}{ax^2+bx+c}. Without the asterix, this command will produce output like f(x) = ax^2 + bx + c.
-
-=Keywords for printing results=
+Keywords for defining new units and functions
+---
+
+**\defunit `[*]` [latexname] {macro}{exp}** Defines a new unit. The macro is the name of the unit, this must begin with a backslash because a Latex macro will be created with this name for referencing the unit later on. The expression defines the unit in terms of units already known to the EQC. If this expression contains data types apart from units, powers of units, numerics, or constants already known to EQC, a warning is issued, but the unit definition is created anyway.&lt;br/&gt; To suppress the generation of the Latex command for this unit, use the asterix form. If you wish the Latex macro to output something other than the expression, supply this as an optional argument. It will be printed in the mathrm font.
+**\function [[hints]] {name} {explist}** Registers a user-defined function with EQC. The function has the arguments given in the explist. Example: \function{f}{x;y}. The function may be used in equations and expressions with or without arguments. The following hints are possible:
+
+* **lib** This is a library function. It will not be erased by \clearequations.
+* **trig** This is a trigonometric function. It will be printed as sin²x instead of (sin(x))² (for example).
+* **nobracket** This functions needs no brackets when printed (for example, the sqrt() function).
+* **expand** The function will be expanded immediately (provided it has been given a definition). This is useful for example with square() und cubic()
+
+**\deffunc `[*]` {name}{exp}** Define an expression which will be used to evaluate the function, for example, \deffunc{f}{ax^2+bx+c}. Without the asterix, this command will produce output like f(x) = ax^2 + bx + c.
+
+Keywords for printing results
+---

 **\printeq {equation}** Prints the equation (this will usually be an equation label)
 **\printvector{exp}** Prints a vector in the format required by pstricks.sty.
 **\eqwrite\filename{equation}{label}**  Write an equation to a file. The equation has the label as given. This is useful to create a file of equations, which can then be included into another document and reused there. A typical usage would be
-          \printoptions{eqparse}%Turn off pretty-printing of equations
+    
+         \printoptions{eqparse}%Turn off pretty-printing of equations
           \newwrite\eqfile%
           \immediate\openout\eqfile filename.tex%
           \eqwrite\eqfile{\printeq{"eq:example"}}{eq:example}%
           \immediate\closeout\eqfile%
           \printoptions{eqnoparse}%
+
 This file could then be reused as follows:
-         \input filename.tex
-         Equation \eqcref{"eq:example"} in 'whatever original file it came from' states
-         \begin{equation}
-           \printeq{"eq:example"}
-         \end{equation}
-
-=Output formatting=
+
+~~~
+\input filename.tex
+Equation \eqcref{"eq:example"} in 'whatever original file it came from' states
+\begin{equation}
+\printeq{"eq:example"}
+\end{equation}
+~~~
+
+Output formatting
+---

 All options are handled by the common keyword \eqcoptions. It takes a list of key-value pairs

@@ -127,7 +143,7 @@
 **fixeddigits = true|false** Specifies whether floating point numbers should be printed with a fixed number of digits after the decimal marker or with a fixed number of digits in total. The default is fixed_digits.
 **lowsclimit = exp** Defines the low limit beyond which floating point numbers are printed as mantissa * 10^exponent.
 **highsclimit = exp** Defines the high limit beyond which floating point numbers are printed as mantissa * 10^exponent.
-**units = unitlist** Specifies a list of units separated by ';' preferred for printing physical quantities. If no such list is specified, the SI base units are used. This usually makes for ugly output, for example, when printing forces the unit Newton. A useful list of preferred units for mechanical engineering might be {\mm**\N**\Nm**\Nosqmm}. The order in which the preferred units are specified is important! Simple units should be specified first, more complex ones later on. The reason is that the complex units usually imply the simpler ones, for example, \N implies \mm because 1 \N equals 1 kg m/s^2.
+**units = unitlist** Specifies a list of units separated by ';' preferred for printing physical quantities. If no such list is specified, the SI base units are used. This usually makes for ugly output, for example, when printing forces the unit Newton. A useful list of preferred units for mechanical engineering might be {\mm;\N;\Nm;\Nosqmm}. The order in which the preferred units are specified is important! Simple units should be specified first, more complex ones later on. The reason is that the complex units usually imply the simpler ones, for example, \N implies \mm because 1 \N equals 1 kg m/s^2.
 **eqchain = true|false** Omit the left hand side in chains of equations, in cases where only the rhs changed from one line to the next.
 **eqraw = true|false** Raw formatting of \eq statements means that the equations are printed exactly as you typed them in. This of course only works until you manipulate the equation with \eqadd etc. The other options is to have EQC format your equations.
 **eqparse = true|false** Turns of some pretty-printing features that make the LaTeX output of EQC difficult to re-parse. For example, cos^2(x) is printed as (cos(x))^2.
@@ -135,7 +151,8 @@
 **eqsplit = exp** Split the equation after the nth operand. The count starts at the left hand side of the equation. Operands are those parts of the equation that are separated either by addition/subtraction or multiplication symbols. At the given position, \\\notag or \\\nonumber are printed, depending on the environment
 **eqsplittext = string** The text to interject after the split (in quotes ""). By default, this tries to align the second part of the equation to the right of the equals sign.

-=Other EQC options=
+Other EQC options
+---

 Further key-value pairs to \eqcoptions are:

@@ -146,7 +163,8 @@
 **cleancomments = boolean** Removes comment lines (lines starting with a percent sign) from the output file if set to true
 **tan_is_tg = boolean** Changes the name of the tangent function to \tg and \arctan to\ arctg if set to true

-=Miscellaneous=
+Miscellaneous
+---

 **\clearequations** Clears the list of equations and variables. Constants are not cleared. Functions are cleared except for those declared in the file mathconstants.tex.
 **\input filename** Includes the specified file. There is no difference to the Latex \include command. All include files are written to one output .eqc file. The extension .tex need not be given.
@@ -154,14 +172,17 @@
 **\usepackage[language]{eqc}** This command must be used in the Latex preamble to include some EQC-specific commands. For the meaning of the language parameter, see \eqlang.

 Keywords inside equations
+===

 EQC does not parse all of the possible Latex mathematical keywords. The following keywords and tokens are recognized:

-=Basic mathematics=
-
-Apart from the basic addition, subtraction, multiplication and division symbols, EQC interprets the '^' and '_' symbols in the same way as Latex does. Note that the '*' multiplication symbol may be omitted, just as in Latex.
-
-=Mathematical functions=
+Basic mathematics
+---
+
+Apart from the basic addition, subtraction, multiplication and division symbols, EQC interprets the ^ and _  symbols in the same way as Latex does. Note that the * multiplication symbol may be omitted, just as in Latex.
+
+Mathematical functions
+---

 The functions listed below are recognized. All of these are defined in the file mathconstants.tex, which needs to be included. Further functions may be defined at runtime with the \function and \deffunc keywords.

@@ -189,48 +210,59 @@
 * \tanh Hyperbolic tangens.
 * ! Factorial function

-=Brackets=
-
-All the standard Latex brackets are recognized: {, \lbrace, (, [, \lbrack, \lfloor, \lceil, \langle and of course the corresponding right brackets. The brackets may be modified in their size by \left, \bigl, \Bigl, \biggl, \Biggl and \right etc. EQC checks for bracket mismatches and issues a warning. Note that EQC does not preserve your bracket types, but creates its own brackets and bracket sizes in the Latex output.
-
-=Division=
+Brackets
+---
+
+All the standard Latex brackets are recognized: {, \lbrace, (, `[`, \lbrack, \lfloor, \lceil, \langle and of course the corresponding right brackets. The brackets may be modified in their size by \left, \bigl, \Bigl, \biggl, \Biggl and \right etc. EQC checks for bracket mismatches and issues a warning. Note that EQC does not preserve your bracket types, but creates its own brackets and bracket sizes in the Latex output.
+
+Division
+---

 The Latex keywords \over and \frac are recognized.

-=Access to equations=
+Access to equations
+---

 Equations may be accessed using the \lhs and \rhs keywords. This will provide the left hand side resp. the left hand side of the equation. An equation label may be given instead of an equation.
 Variable evaluation

 Variable evaluation with the keywords \val, quantity, \numval and \units can take place inside equations. For details on how this works, see the corresponding keywords in the description above.

-=Constants=
+Constants
+---

 EQC has the following built-in constants:
-* \pi = 3.14159...
-* \e = 2.71828...
-* \Euler  = 0.57721...
-
-=Numbers=
+
+*  \pi = 3.14159...
+*  \e = 2.71828...
+*  \Euler  = 0.57721...
+
+Numbers
+---

 EQC recognizes integers and floating point numbers. The latter may not be in scientific notation as of yet. Whether the decimal separator is a comma or a dot is determined by the \eqlang keyword, or by the language parameter to \usepackage[language}{eqc}.

-=Vectors=
+Vectors
+---
 A vector can be created with the syntax begin:end:step. For example, x = 1:3:1 will create a vector with three rows, containing the number 1, 2 and 3.

-=Integrals=
+Integrals
+---

 A symbolic integral can be created with the syntax \integral(x=a**b**f(x)) where x is the integration variable, a the lower and b the upper bound, and f a function in the integration variable. Note that if f(x) does not explicitly mention x, then the result will not be what you expected.

-=Variables=
+Variables
+---

 Any letter that is not part of a keyword is assumed to be a variable. Variable names are registered automatically on their first appearance. Any occurence of the same letter is taken to mean the same variable, until a \clearequations command is read. Any Latex macros that are not known to EQC are also interpreted as variable names, e.g., \phi.

-=Physical units=
+Physical units
+---

 Physical units are identified by their Latex macro name, e.g., \mm. Any units other than the base SI units need to be defined with \defunit (include the file units.tex to get the most common physical unit definitions).

-=Percentages=
+Percentages
+---

 To express percentages in an equation, use the \percent keyword.

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jan Rheinlaender</dc:creator><pubDate>Sun, 23 Jul 2023 18:59:18 -0000</pubDate><guid isPermaLink="false">https://sourceforge.net271bbfc70d4dfb488625e4a03a06bf0a8803c2f3</guid></item><item><title>Reference section modified by Jan Rheinlaender</title><link>https://sourceforge.net/p/eqc/wiki/Reference%2520section/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -1,4 +1,5 @@
-== Basic syntax ==
+Basic syntax
+===

 There are two categories of keywords recognized by EQC: Keywords in the Latex file, and keywords inside equation statements. The syntax used to describe the keywords is:

@@ -8,100 +9,102 @@

 The following abbreviations for the different types of arguments are used:

-; exp : A mathematical expression like x + sin(y).
-; equation &amp;lt;- exp = exp : An equation created by equating two mathematical expressions.
-; equation &amp;lt;- exp &amp;amp; = &amp;amp; exp : Same as before, but inside an equation array. Other positions of the &amp;amp; are possible as well.
-; equation &amp;lt;- "label" : EQC optionally accepts an equation label in any place where an equation is required. Labels must be enclosed in double quotes. The special equation label "prev' references the last equation that was registered with EQC.
-; eqlist &amp;lt;- equation OR equation ; equation ; equation ... : Either a single equation or a list of equations separated by colons.
-; unitlist &amp;lt;- unit ; unit ; unit ... : A list of physical unit names like \mm; \N, separated by colons.
-; explist &amp;lt;- exp ; exp ; exp ... : A list of expressions like x; y; z^2, separated by colons.
-; simplifications &amp;lt;- simplification ; simplification ; simplification ... : A list of strings describing simplifications to be performed on an equation.
-; vector &amp;lt;- start &amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; end &amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; step : A vector beginning at start and ending at end, with steps of step. If end - start is not a multiple of step, the last element of the vector will be smaller than end. If you don't care about the size of the step, give a value of 0: EQC will make the vector have the number of elements defined by the option vecautosize (default 20).
-; matrix &amp;lt;- {element1; element2; ... elementN} OR {{element11; element12; ... element1N}; { ... }; {elementM1; ... elementMN}} : A vector or a matrix of arbitrary expressions. The brackets are important, but not the type of bracket. A matrix can be used anywhere an expression is allowed.
+**exp** A mathematical expression like x + sin(y).
+**equation &amp;lt;- exp = exp** An equation created by equating two mathematical expressions.
+**equation &amp;lt;- exp &amp;amp; = &amp;amp; exp** Same as before, but inside an equation array. Other positions of the &amp;amp; are possible as well.
+**equation &amp;lt;- "label"** EQC optionally accepts an equation label in any place where an equation is required. Labels must be enclosed in double quotes. The special equation label "prev' references the last equation that was registered with EQC.
+**eqlist &amp;lt;- equation OR equation; equation; equation ...** Either a single equation or a list of equations separated by colons.
+**unitlist &amp;lt;- unit; unit; unit ...** A list of physical unit names like \mm**\N, separated by colons.
+**explist &amp;lt;- exp; exp; exp ...** A list of expressions like x; y; z^2, separated by colons.
+**simplifications &amp;lt;- simplification; simplification; simplification ...** A list of strings describing simplifications to be performed on an equation.
+**vector &amp;lt;- start : end : step** A vector beginning at start and ending at end, with steps of step. If end - start is not a multiple of step, the last element of the vector will be smaller than end. If you don't care about the size of the step, give a value of 0: EQC will make the vector have the number of elements defined by the option vecautosize (default 20).
+**matrix &amp;lt;- {element1; element2; ... elementN} OR {{element11; element12; ... element1N}; { ... }; {elementM1; ... elementMN}}** A vector or a matrix of arbitrary expressions. The brackets are important, but not the type of bracket. A matrix can be used anywhere an expression is allowed.

 Numbers can have the imaginary unit i, which on the other hand means that you cannot use i as a variable name.

-== Keywords in the Latex file ==
-
-=== Keywords for manipulating equations ===
+Keywords in the Latex file
+===
+
+Keywords for manipulating equations
+---

 All these keywords take several optional arguments. The asterisk form suppresses printing the equation. A label may be given to the equation in square brackets. In addition, all the options listed for the keyword eqcoptions can be used and will then apply for this equation only. Note that if only an equation label and no further option is provided the square brackets, the key label = can be omitted, and the label does not need to be quoted ("").

-; \constant [*] {equation} : Registers a constant with EQC. Constants are not erased by \clearequations. This makes it possible to specify general constants only once in the file and reuse them for several different calculations. The value assigned to this constant is automatically used when calculating the value of variables. The asterix form suppresses printing of the constant equation in the Latex output file.
-; \eq [*] &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation} : Registers an equation with EQC. Only equations that have been registered are used to calculate the values of variables. The asterix form suppresses printing of the equation in the Latex output file. The equation can be assigned an optional label which may be used to reference it later on in the file. The Latex \ref{} command will also work with this label. Note that here the label may not be surrounded by quotes! For the special case of the equation label starting with lib:, the equation will not be erased by \clearequations. This is useful for building a library of generic equations, as for example in the file substitutions.tex.
-; \deleq{label} : Removes an equation such that it has no influence on future searches for variable values. Note that since LaTeX does not support removing labels, the label itself will be not be re-usable!
-; \eqadd [*] &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{expr} : Adds an expression to the equation. A label may be assigned to the result. The resulting equation is only registered with the EQC if it has been assigned a label. The reason for this is that the equation is usually redundant in terms of using it for calculating the value of variables. The asterix form suppresses printing of the resulting equation.
-; \eqdiv [*] &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{exp} : Divides the equation by an expression. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
-; \eqmul [*] &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{exp} : Multiplies the equation with an expression. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
-; \eqpow [*] &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{exp} : Raises both sides of the equation to the power of an expression. Beware: This ignores alternative results, as in the case of \eqpow{x^2}{1/2}, which might evaluate to +x or -x. Only use this function if you are sure that you want the first possible result!
-; \eqfunc [*] &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{exp} : Applies the expression, which must be a valid function name (without parameters), to both sides of the equation.
-; \eqsub [*] &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{exp} : Subtracts an expression from the equation. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
-; \eqrev [*] &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation} : Swaps left hand side and right hand side of the equation. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
-; \eqsubst [*] &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{eqlist} : Substitutes expressions inside an equation. The eqlist argument is a list of equations separated by ';'. Any occurences of the left hand side of these equations is replaced by the right hand side. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
-; \eqsimpf [*] &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{simplifications} : Simplifies both sides of the equation according to the simplifications given in a list. Possible values are:
-:; expand : Fully expands all expressions, including function arguments.
-:; expandf : Only expand function definition, not arguments.
-:; eval : Numerically evaluate the equation as far as possible.
-:; normal : Normalize the equation (see description of GiNaC normal() method).
-:; collect-common : Collect common factors (see description of GiNaC collect_common_factors() method).
-:; unsafe : Does unsafe simplifications, for example
+**\constant [*] {equation}** Registers a constant with EQC. Constants are not erased by \clearequations. This makes it possible to specify general constants only once in the file and reuse them for several different calculations. The value assigned to this constant is automatically used when calculating the value of variables. The asterix form suppresses printing of the constant equation in the Latex output file.
+**`\eq [*] [[label]] {equation}`** Registers an equation with EQC. Only equations that have been registered are used to calculate the values of variables. The asterix form suppresses printing of the equation in the Latex output file. The equation can be assigned an optional label which may be used to reference it later on in the file. The Latex \ref{} command will also work with this label. Note that here the label may not be surrounded by quotes! For the special case of the equation label starting with lib:, the equation will not be erased by \clearequations. This is useful for building a library of generic equations, as for example in the file substitutions.tex.
+**\deleq{label}** Removes an equation such that it has no influence on future searches for variable values. Note that since LaTeX does not support removing labels, the label itself will be not be re-usable!
+**`\eqadd [*] [[label]] {equation}{expr}`** Adds an expression to the equation. A label may be assigned to the result. The resulting equation is only registered with the EQC if it has been assigned a label. The reason for this is that the equation is usually redundant in terms of using it for calculating the value of variables. The asterix form suppresses printing of the resulting equation.
+**\eqdiv [`*] [[label]] {equation}{exp}** Divides the equation by an expression. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
+**\eqmul [*]  [[label]] {equation}{exp}** Multiplies the equation with an expression. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
+**\eqpow [*] [[label]] {equation}{exp}** Raises both sides of the equation to the power of an expression. Beware: This ignores alternative results, as in the case of \eqpow{x^2}{1/2}, which might evaluate to +x or -x. Only use this function if you are sure that you want the first possible result!
+**\eqfunc [*]  [[label]] {equation}{exp}** Applies the expression, which must be a valid function name (without parameters), to both sides of the equation.
+**\eqsub [*] [[label]] {equation}{exp}** Subtracts an expression from the equation. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
+**\eqrev [*]  [[label]]  {equation}** Swaps left hand side and right hand side of the equation. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
+**\eqsubst [*] [[label]] {equation}{eqlist}** Substitutes expressions inside an equation. The eqlist argument is a list of equations separated by ';'. Any occurences of the left hand side of these equations is replaced by the right hand side. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.
+**\eqsimpf [*]  [[label]]  {equation}{simplifications}** Simplifies both sides of the equation according to the simplifications given in a list. Possible values are:
+:**expand** Fully expands all expressions, including function arguments.
+:**expandf** Only expand function definition, not arguments.
+:**eval** Numerically evaluate the equation as far as possible.
+:**normal** Normalize the equation (see description of GiNaC normal() method).
+:**collect-common** Collect common factors (see description of GiNaC collect_common_factors() method).
+:**unsafe** Does unsafe simplifications, for example
 ::* sqrt{x^2} =&amp;gt; x
 ::* \arctan\tan{x} =&amp;gt; x. Note that the opposite \tan\arctan{x} is not an unsafe evaluation and is thus done automatically (by GiNaC).
-:; diff : Evaluates differential function \diff.
-:; sum : Evaluates sum functions \sum.
-:; gather-sqrt : Gathers single square roots under one root symbol.
-:; integrate : Symbolically integrates any integrals in the expression (if possible)
-; \eqsolve [*] &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{exp}{exp} : Solves the equation for a given variable. The last argument indicates which solution is requested (in case there are several solutions, like for a quadratic equation). The function returns an assignment for the variable.
-
-=== Keywords for manipulating expressions ===
-
-; \lhs {equation} : Returns the left hand side of the equation.
-; \rhs {equation} : Returns the right hand side of the equation.
-; \val &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;unitlist&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp} : EQC replaces this keyword with the value of the specified expression (which usually is, but need not be, a variable). EQC tries to derive the value from the given equations in the form of a physical quantity. If this is not successful, a symbolic expression will be printed instead. Any floating point numbers will be printed with an optional precision. If the quantity should be expressed in other units than those set by \eqcoptions, a list of units can be passed as an optional parameter.
-; \valwith &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;unitlist&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp} {exp} : An additional list of assignments can be given to find the value. All the assignments given are registered as new equations and then the value is searched for. This is the same as doing
+:**diff** Evaluates differential function \diff.
+:**sum** Evaluates sum functions \sum.
+:**gather-sqrt** Gathers single square roots under one root symbol.
+:**integrate** Symbolically integrates any integrals in the expression (if possible)
+**\eqsolve [*] &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{exp}{exp}** Solves the equation for a given variable. The last argument indicates which solution is requested (in case there are several solutions, like for a quadratic equation). The function returns an assignment for the variable.
+
+=Keywords for manipulating expressions=
+
+**\lhs {equation}** Returns the left hand side of the equation.
+**\rhs {equation}** Returns the right hand side of the equation.
+**\val &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;unitlist&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp}** EQC replaces this keyword with the value of the specified expression (which usually is, but need not be, a variable). EQC tries to derive the value from the given equations in the form of a physical quantity. If this is not successful, a symbolic expression will be printed instead. Any floating point numbers will be printed with an optional precision. If the quantity should be expressed in other units than those set by \eqcoptions, a list of units can be passed as an optional parameter.
+**\valwith &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;unitlist&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp} {exp}** An additional list of assignments can be given to find the value. All the assignments given are registered as new equations and then the value is searched for. This is the same as doing
   \eq*[eq:temp_1]{assignment_1}%
    ...
   \eq*[eq:temp_n]{assignment_n}%
   \val{exp}
-  \deleq{"eq:temp_1"; ... "eq:temp_n}%
-; \quantity &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp} : Same as val, but an error is printed if the value of the variable is no quantity. Any floating point numbers will be printed with an optional precision.
-; \numval &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp} : Same as val, but an error is printed if the value of the variable is no number. Any floating point numbers will be printed with an optional precision.
-; \units &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp} : Same as val, but an error is printed if the value of the variable is no unit or a multiplication of several units and/or powers of units. Any floating point numbers will be printed with an optional precision.
-; \eqeval{equation}{equation} : Evaluates the first equation to a matrix of values. The second equation needs to have the form sym = vector. The symbol is treated as the independent variable, and the equation is evaluated for all values of the symbol given in the vector. The result is a 2x2 matrix, with the values of the independant variable in the first column and the evaluation results in the second column. For example: \eqeval{y = x^2}{x = 1:5:1} would become (1; 4; 9; 16; 25)
-; \eqevalp{x-equation}{y-equation}{equation} : Evaluate a function given in parameter form to a matrix of values. Example (the evolvent function): \eqevalp{x = R (\cos t + t \sin t)}{y = R(sin t - t \cos t)}{t = 0:90\degree:5\degree}
-; \numer{exp} : Returns the numerator of the expression.
-; \denom{exp} : Returns the denominator of the expression.
-; \diff{exp;var;num} : Creates a differential of the expression with respect to var to the degree of num. It can be evaluated using \eqsimpf{exp}{diff}
-; \sum{equation;exp;exp} : The sum function. The first equation is the lower bound, the second the upper bound, the third the expression to sum up. Example: \sum{n=1;3;n}. Note that the bounds must become integer values when the function is evaluated with \eqsimpf{exp}{sum}.
-; \tseries{exp}{equation}{exp} : Creates a Taylor series for the first expression. The second parameter must have the form sym = number. The series is created for the dependant variable sym around number. The third parameter must be an integer defining the degree of the series expansion.
-; \ceil{exp}{digits} : Return the numeric value of the expression, rounded up to the nearest integer with the given number of digits after the decimal point.
-; \floor{exp}{digits} : Return the numeric value of the expression, rounded down to the nearest integer with the given number of digits after the decimal point.
-
-=== Keywords for manipulating matrices ===
-
-; \matrix {variable} : Define the variable as containing matrices. This is essential because EQC must know that this variable is non-commutative when multiplied with another matrix variable
-; \transpose{exp} : Transpose the matrix
-; + (addition) : Add matrices or scalars
-; - (subtraction) : Subtract matrices or scalars
-; * (multiplication) : Multiply matrices or scalars. EQC will take care of the non-commutativity of matrix products if you have declared the variable properly with the \matrix keyword
-; ^ (raising to power) : Multiply the matrix with itself as often as indicated by the exponent
-; \mindex{exp, row, col} : Find the indicated element from the matrix
-
-=== Keywords for defining new units and functions ===
-
-; \defunit [*] [latexname] {macro}{exp} : Defines a new unit. The macro is the name of the unit, this must begin with a backslash because a Latex macro will be created with this name for referencing the unit later on. The expression defines the unit in terms of units already known to the EQC. If this expression contains data types apart from units, powers of units, numerics, or constants already known to EQC, a warning is issued, but the unit definition is created anyway.&lt;br/&gt; To suppress the generation of the Latex command for this unit, use the asterix form. If you wish the Latex macro to output something other than the expression, supply this as an optional argument. It will be printed in the mathrm font.
-; \function &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;hints&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {name} {explist} : Registers a user-defined function with EQC. The function has the arguments given in the explist. Example: \function{f}{x;y}. The function may be used in equations and expressions with or without arguments. The following hints are possible:
-:; lib : This is a library function. It will not be erased by \clearequations.
-:; trig : This is a trigonometric function. It will be printed as sin²x instead of (sin(x))² (for example).
-:; nobracket : This functions needs no brackets when printed (for example, the sqrt() function).
-:; expand : The function will be expanded immediately (provided it has been given a definition). This is useful for example with square() und cubic()
-; \deffunc [*] {name}{exp} : Define an expression which will be used to evaluate the function, for example, \deffunc{f}{ax^2+bx+c}. Without the asterix, this command will produce output like f(x) = ax^2 + bx + c.
-
-=== Keywords for printing results ===
-
-; \printeq {equation} : Prints the equation (this will usually be an equation label)
-; \printvector{exp} : Prints a vector in the format required by pstricks.sty.
-; \eqwrite\filename{equation}{label} :  Write an equation to a file. The equation has the label as given. This is useful to create a file of equations, which can then be included into another document and reused there. A typical usage would be
+  \deleq{"eq:temp_1"**... "eq:temp_n}%
+**\quantity &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp}** Same as val, but an error is printed if the value of the variable is no quantity. Any floating point numbers will be printed with an optional precision.
+**\numval &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp}** Same as val, but an error is printed if the value of the variable is no number. Any floating point numbers will be printed with an optional precision.
+**\units &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp}** Same as val, but an error is printed if the value of the variable is no unit or a multiplication of several units and/or powers of units. Any floating point numbers will be printed with an optional precision.
+**\eqeval{equation}{equation}** Evaluates the first equation to a matrix of values. The second equation needs to have the form sym = vector. The symbol is treated as the independent variable, and the equation is evaluated for all values of the symbol given in the vector. The result is a 2x2 matrix, with the values of the independant variable in the first column and the evaluation results in the second column. For example: \eqeval{y = x^2}{x = 1:5:1} would become (1**4**9**16**25)
+**\eqevalp{x-equation}{y-equation}{equation}** Evaluate a function given in parameter form to a matrix of values. Example (the evolvent function): \eqevalp{x = R (\cos t + t \sin t)}{y = R(sin t - t \cos t)}{t = 0:90\degree:5\degree}
+**\numer{exp}** Returns the numerator of the expression.
+**\denom{exp}** Returns the denominator of the expression.
+**\diff{exp;var;num}** Creates a differential of the expression with respect to var to the degree of num. It can be evaluated using \eqsimpf{exp}{diff}
+**\sum{equation;exp;exp}** The sum function. The first equation is the lower bound, the second the upper bound, the third the expression to sum up. Example: \sum{n=1;3;n}. Note that the bounds must become integer values when the function is evaluated with \eqsimpf{exp}{sum}.
+**\tseries{exp}{equation}{exp}** Creates a Taylor series for the first expression. The second parameter must have the form sym = number. The series is created for the dependant variable sym around number. The third parameter must be an integer defining the degree of the series expansion.
+**\ceil{exp}{digits}** Return the numeric value of the expression, rounded up to the nearest integer with the given number of digits after the decimal point.
+**\floor{exp}{digits}** Return the numeric value of the expression, rounded down to the nearest integer with the given number of digits after the decimal point.
+
+=Keywords for manipulating matrices=
+
+**\matrix {variable}** Define the variable as containing matrices. This is essential because EQC must know that this variable is non-commutative when multiplied with another matrix variable
+**\transpose{exp}** Transpose the matrix
+**+ (addition)** Add matrices or scalars
+**- (subtraction)** Subtract matrices or scalars
+*** (multiplication)** Multiply matrices or scalars. EQC will take care of the non-commutativity of matrix products if you have declared the variable properly with the \matrix keyword
+**^ (raising to power)** Multiply the matrix with itself as often as indicated by the exponent
+**\mindex{exp, row, col}** Find the indicated element from the matrix
+
+=Keywords for defining new units and functions=
+
+**\defunit [*] [latexname] {macro}{exp}** Defines a new unit. The macro is the name of the unit, this must begin with a backslash because a Latex macro will be created with this name for referencing the unit later on. The expression defines the unit in terms of units already known to the EQC. If this expression contains data types apart from units, powers of units, numerics, or constants already known to EQC, a warning is issued, but the unit definition is created anyway.&lt;br/&gt; To suppress the generation of the Latex command for this unit, use the asterix form. If you wish the Latex macro to output something other than the expression, supply this as an optional argument. It will be printed in the mathrm font.
+**\function &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;hints&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {name} {explist}** Registers a user-defined function with EQC. The function has the arguments given in the explist. Example: \function{f}{x;y}. The function may be used in equations and expressions with or without arguments. The following hints are possible:
+:**lib** This is a library function. It will not be erased by \clearequations.
+:**trig** This is a trigonometric function. It will be printed as sin²x instead of (sin(x))² (for example).
+:**nobracket** This functions needs no brackets when printed (for example, the sqrt() function).
+:**expand** The function will be expanded immediately (provided it has been given a definition). This is useful for example with square() und cubic()
+**\deffunc [*] {name}{exp}** Define an expression which will be used to evaluate the function, for example, \deffunc{f}{ax^2+bx+c}. Without the asterix, this command will produce output like f(x) = ax^2 + bx + c.
+
+=Keywords for printing results=
+
+**\printeq {equation}** Prints the equation (this will usually be an equation label)
+**\printvector{exp}** Prints a vector in the format required by pstricks.sty.
+**\eqwrite\filename{equation}{label}**  Write an equation to a file. The equation has the label as given. This is useful to create a file of equations, which can then be included into another document and reused there. A typical usage would be
           \printoptions{eqparse}%Turn off pretty-printing of equations
           \newwrite\eqfile%
           \immediate\openout\eqfile filename.tex%
@@ -115,50 +118,50 @@
            \printeq{"eq:example"}
          \end{equation}

-=== Output formatting ===
+=Output formatting=

 All options are handled by the common keyword \eqcoptions. It takes a list of key-value pairs

-; label = string : Specifies a label for the equation, the label must be enclosed in quotes ("").
-; precision = integer : Specifies what precision is to be used for printing floating point numbers. The precision is the absolute number of digits printed, more digits are rounded away. The precisions is 4 by default.
-; fixeddigits = true|false : Specifies whether floating point numbers should be printed with a fixed number of digits after the decimal marker or with a fixed number of digits in total. The default is fixed_digits.
-; lowsclimit = exp : Defines the low limit beyond which floating point numbers are printed as mantissa * 10^exponent.
-; highsclimit = exp : Defines the high limit beyond which floating point numbers are printed as mantissa * 10^exponent.
-; units = unitlist : Specifies a list of units separated by ';' preferred for printing physical quantities. If no such list is specified, the SI base units are used. This usually makes for ugly output, for example, when printing forces the unit Newton. A useful list of preferred units for mechanical engineering might be {\mm; \N; \Nm; \Nosqmm}. The order in which the preferred units are specified is important! Simple units should be specified first, more complex ones later on. The reason is that the complex units usually imply the simpler ones, for example, \N implies \mm because 1 \N equals 1 kg m/s^2.
-; eqchain = true|false : Omit the left hand side in chains of equations, in cases where only the rhs changed from one line to the next.
-; eqraw = true|false : Raw formatting of \eq statements means that the equations are printed exactly as you typed them in. This of course only works until you manipulate the equation with \eqadd etc. The other options is to have EQC format your equations.
-; eqparse = true|false : Turns of some pretty-printing features that make the LaTeX output of EQC difficult to re-parse. For example, cos^2(x) is printed as (cos(x))^2.
-; eqalign = type : Change the LaTeX alignment type of an equation. Values for type are 'onlyleft' (alignment will be &amp;amp;=, for ams math), 'both' (&amp;amp;=&amp;amp;, for eqnarray environment), 'none'. If no alignment type is specified, EQC automatically formats depending on the environment.
-; eqsplit = exp : Split the equation after the nth operand. The count starts at the left hand side of the equation. Operands are those parts of the equation that are separated either by addition/subtraction or multiplication symbols. At the given position, \\\notag or \\\nonumber are printed, depending on the environment
-; eqsplittext = string : The text to interject after the split (in quotes ""). By default, this tries to align the second part of the equation to the right of the equals sign.
-
-=== Other EQC options ===
+**label = string** Specifies a label for the equation, the label must be enclosed in quotes ("").
+**precision = integer** Specifies what precision is to be used for printing floating point numbers. The precision is the absolute number of digits printed, more digits are rounded away. The precisions is 4 by default.
+**fixeddigits = true|false** Specifies whether floating point numbers should be printed with a fixed number of digits after the decimal marker or with a fixed number of digits in total. The default is fixed_digits.
+**lowsclimit = exp** Defines the low limit beyond which floating point numbers are printed as mantissa * 10^exponent.
+**highsclimit = exp** Defines the high limit beyond which floating point numbers are printed as mantissa * 10^exponent.
+**units = unitlist** Specifies a list of units separated by ';' preferred for printing physical quantities. If no such list is specified, the SI base units are used. This usually makes for ugly output, for example, when printing forces the unit Newton. A useful list of preferred units for mechanical engineering might be {\mm**\N**\Nm**\Nosqmm}. The order in which the preferred units are specified is important! Simple units should be specified first, more complex ones later on. The reason is that the complex units usually imply the simpler ones, for example, \N implies \mm because 1 \N equals 1 kg m/s^2.
+**eqchain = true|false** Omit the left hand side in chains of equations, in cases where only the rhs changed from one line to the next.
+**eqraw = true|false** Raw formatting of \eq statements means that the equations are printed exactly as you typed them in. This of course only works until you manipulate the equation with \eqadd etc. The other options is to have EQC format your equations.
+**eqparse = true|false** Turns of some pretty-printing features that make the LaTeX output of EQC difficult to re-parse. For example, cos^2(x) is printed as (cos(x))^2.
+**eqalign = type** Change the LaTeX alignment type of an equation. Values for type are 'onlyleft' (alignment will be &amp;amp;=, for ams math), 'both' (&amp;amp;=&amp;amp;, for eqnarray environment), 'none'. If no alignment type is specified, EQC automatically formats depending on the environment.
+**eqsplit = exp** Split the equation after the nth operand. The count starts at the left hand side of the equation. Operands are those parts of the equation that are separated either by addition/subtraction or multiplication symbols. At the given position, \\\notag or \\\nonumber are printed, depending on the environment
+**eqsplittext = string** The text to interject after the split (in quotes ""). By default, this tries to align the second part of the equation to the right of the equals sign.
+
+=Other EQC options=

 Further key-value pairs to \eqcoptions are:

-; vecautosize = integer : Specifies the size of a vector when no step count is given (i.e., the count is zero, x = 10:20:0. In this case, the vector will have the number of elements as given with this option (default 20).
-; path = string : Set the path for the EQC-specific data files (default "/usr/share/texmf/tex/latex/eqc/" on Unix systems).
-; lang = "english"|"german" : Changes the language which EQC expects the input file to use. At the moment, this only has an effect on parsing floating point numbers, i.e., the decimal separator is set to ',' for "german" and to '.' for "english" or any other language.
-; debug = integer : Changes the level of debug output (default is 0). Set to -1 to suppress everything except error messages, and to values up to 13 to get tons of debugging information
-; cleancomments = boolean : Removes comment lines (lines starting with a percent sign) from the output file if set to true
-; tan_is_tg = boolean : Changes the name of the tangent function to \tg and \arctan to\ arctg if set to true
-
-=== Miscellaneous ===
-
-; \clearequations : Clears the list of equations and variables. Constants are not cleared. Functions are cleared except for those declared in the file mathconstants.tex.
-; \input filename : Includes the specified file. There is no difference to the Latex \include command. All include files are written to one output .eqc file. The extension .tex need not be given.
-; \dumpeq :  Write a list of all equations known to the compiler into the output file. The list is sorted by variable name (for assignments) and includes the equation label and number. This list is very useful in larger projects where it is difficult to remember the label of a specific equation and where it was defined. Note: This command requires AMS maths to be loaded and sets allowdisplaybreaks[1]!
-; \usepackage[language]{eqc} : This command must be used in the Latex preamble to include some EQC-specific commands. For the meaning of the language parameter, see \eqlang.
-
-== Keywords inside equations ==
+**vecautosize = integer** Specifies the size of a vector when no step count is given (i.e., the count is zero, x = 10:20:0. In this case, the vector will have the number of elements as given with this option (default 20).
+**path = string** Set the path for the EQC-specific data files (default "/usr/share/texmf/tex/latex/eqc/" on Unix systems).
+**lang = "english"|"german"** Changes the language which EQC expects the input file to use. At the moment, this only has an effect on parsing floating point numbers, i.e., the decimal separator is set to ',' for "german" and to '.' for "english" or any other language.
+**debug = integer** Changes the level of debug output (default is 0). Set to -1 to suppress everything except error messages, and to values up to 13 to get tons of debugging information
+**cleancomments = boolean** Removes comment lines (lines starting with a percent sign) from the output file if set to true
+**tan_is_tg = boolean** Changes the name of the tangent function to \tg and \arctan to\ arctg if set to true
+
+=Miscellaneous=
+
+**\clearequations** Clears the list of equations and variables. Constants are not cleared. Functions are cleared except for those declared in the file mathconstants.tex.
+**\input filename** Includes the specified file. There is no difference to the Latex \include command. All include files are written to one output .eqc file. The extension .tex need not be given.
+**\dumpeq**  Write a list of all equations known to the compiler into the output file. The list is sorted by variable name (for assignments) and includes the equation label and number. This list is very useful in larger projects where it is difficult to remember the label of a specific equation and where it was defined. Note: This command requires AMS maths to be loaded and sets allowdisplaybreaks[1]!
+**\usepackage[language]{eqc}** This command must be used in the Latex preamble to include some EQC-specific commands. For the meaning of the language parameter, see \eqlang.
+
+Keywords inside equations

 EQC does not parse all of the possible Latex mathematical keywords. The following keywords and tokens are recognized:

-=== Basic mathematics ===
+=Basic mathematics=

 Apart from the basic addition, subtraction, multiplication and division symbols, EQC interprets the '^' and '_' symbols in the same way as Latex does. Note that the '*' multiplication symbol may be omitted, just as in Latex.

-=== Mathematical functions ===
+=Mathematical functions=

 The functions listed below are recognized. All of these are defined in the file mathconstants.tex, which needs to be included. Further functions may be defined at runtime with the \function and \deffunc keywords.

@@ -186,59 +189,59 @@
 * \tanh Hyperbolic tangens.
 * ! Factorial function

-=== Brackets ===
+=Brackets=

 All the standard Latex brackets are recognized: {, \lbrace, (, [, \lbrack, \lfloor, \lceil, \langle and of course the corresponding right brackets. The brackets may be modified in their size by \left, \bigl, \Bigl, \biggl, \Biggl and \right etc. EQC checks for bracket mismatches and issues a warning. Note that EQC does not preserve your bracket types, but creates its own brackets and bracket sizes in the Latex output.

-=== Division ===
+=Division=

 The Latex keywords \over and \frac are recognized.

-=== Access to equations ===
+=Access to equations=

 Equations may be accessed using the \lhs and \rhs keywords. This will provide the left hand side resp. the left hand side of the equation. An equation label may be given instead of an equation.
 Variable evaluation

 Variable evaluation with the keywords \val, quantity, \numval and \units can take place inside equations. For details on how this works, see the corresponding keywords in the description above.

-=== Constants ===
+=Constants=

 EQC has the following built-in constants:
 * \pi = 3.14159...
 * \e = 2.71828...
 * \Euler  = 0.57721...

-=== Numbers ===
+=Numbers=

 EQC recognizes integers and floating point numbers. The latter may not be in scientific notation as of yet. Whether the decimal separator is a comma or a dot is determined by the \eqlang keyword, or by the language parameter to \usepackage[language}{eqc}.

-=== Vectors ===
+=Vectors=
 A vector can be created with the syntax begin:end:step. For example, x = 1:3:1 will create a vector with three rows, containing the number 1, 2 and 3.

-=== Integrals ===
-
-A symbolic integral can be created with the syntax \integral(x=a; b; f(x)) where x is the integration variable, a the lower and b the upper bound, and f a function in the integration variable. Note that if f(x) does not explicitly mention x, then the result will not be what you expected.
-
-=== Variables ===
+=Integrals=
+
+A symbolic integral can be created with the syntax \integral(x=a**b**f(x)) where x is the integration variable, a the lower and b the upper bound, and f a function in the integration variable. Note that if f(x) does not explicitly mention x, then the result will not be what you expected.
+
+=Variables=

 Any letter that is not part of a keyword is assumed to be a variable. Variable names are registered automatically on their first appearance. Any occurence of the same letter is taken to mean the same variable, until a \clearequations command is read. Any Latex macros that are not known to EQC are also interpreted as variable names, e.g., \phi.

-=== Physical units ===
+=Physical units=

 Physical units are identified by their Latex macro name, e.g., \mm. Any units other than the base SI units need to be defined with \defunit (include the file units.tex to get the most common physical unit definitions).

-=== Percentages ===
+=Percentages=

 To express percentages in an equation, use the \percent keyword.

-== Command line arguments ==
-
-; -d --debug LEVEL : Produce debugging and informational output at level LEVEL
-; -p --path PATH : Path to EQC specific files (eqc.sty etc.)
-; -v --verbose : Produce verbose output (same as -d1)
-; -q --quiet : Don't produce any output (same as -d-1)
-; -s --silent : Don't produce any output (same as -d-1)
-; -V --version : Print program version
-; -? --help --usage : Produce informational output
+Command line arguments
+
+**-d --debug LEVEL** Produce debugging and informational output at level LEVEL
+**-p --path PATH** Path to EQC specific files (eqc.sty etc.)
+**-v --verbose** Produce verbose output (same as -d1)
+**-q --quiet** Don't produce any output (same as -d-1)
+**-s --silent** Don't produce any output (same as -d-1)
+**-V --version** Print program version
+**-? --help --usage** Produce informational output

 Note that as of version 1.4.2, command line arguments are not yet supported on Windows.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jan Rheinlaender</dc:creator><pubDate>Sun, 23 Jul 2023 07:30:04 -0000</pubDate><guid isPermaLink="false">https://sourceforge.net3d565c2e01fa3206fa181c2e7864ff25b205168e</guid></item><item><title>Home modified by Jan Rheinlaender</title><link>https://sourceforge.net/p/eqc/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -206,7 +206,7 @@
 Reference
 ===

-Refer to the [[Reference section]].
+Refer to the [Reference section].

 Examples
 ===
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jan Rheinlaender</dc:creator><pubDate>Sat, 22 Jul 2023 17:58:15 -0000</pubDate><guid isPermaLink="false">https://sourceforge.netf9d3fcf13e8355d28751e43c46689f48abefb617</guid></item><item><title>History of Changes modified by Jan Rheinlaender</title><link>https://sourceforge.net/p/eqc/wiki/History%2520of%2520Changes/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -1,120 +1,120 @@
 * Version 0.1: First version made accessible on SourceForge. All basic functionality implemented.
 * Version 0.2:
-** Updated SGML documentation
-** Added eqc-tour.tex example
-** Minor code enhancements
+    * Updated SGML documentation
+    * Added eqc-tour.tex example
+    * Minor code enhancements
 * Version 0.3:
-** Minor code enhancements and bug squashing
-** Changed compile default to static linking because of problems with libginac, libcln, libgmp3
-** Added Precision_type in printing.h, modified printing of floats in printing.cpp
-** Better control of the format in which quantities are printed
-** Decimal marker is set to . or , according to the language specified
-** \preferredunits no longer adds the units to previously registered ones. The old units are now deleted and only the new ones used.
-** The \val macros now take an optional parameter to set the units for expressing a quantity.
-** Removed options thickspace, thickqspace for SIunits.sty in eqc.sty. The user should define his preferred spacing in SIunits.cfg.
+    * Minor code enhancements and bug squashing
+    * Changed compile default to static linking because of problems with libginac, libcln, libgmp3
+    * Added Precision_type in printing.h, modified printing of floats in printing.cpp
+    * Better control of the format in which quantities are printed
+    * Decimal marker is set to . or , according to the language specified
+    * \preferredunits no longer adds the units to previously registered ones. The old units are now deleted and only the new ones used.
+    * The \val macros now take an optional parameter to set the units for expressing a quantity.
+    * Removed options thickspace, thickqspace for SIunits.sty in eqc.sty. The user should define his preferred spacing in SIunits.cfg.
 * Version 0.4:
-** Corrected Latex display of ',' as decimal marker by putting it in parentheses.
-** Added class expression to encapsulate the GiNaC ex class and make it possible to preserve the user's formatting of equations using the commands \raw and \eqc.
-** EQC now recognizes \verb and respects verbatim environments.
+    * Corrected Latex display of ',' as decimal marker by putting it in parentheses.
+    * Added class expression to encapsulate the GiNaC ex class and make it possible to preserve the user's formatting of equations using the commands \raw and \eqc.
+    * EQC now recognizes \verb and respects verbatim environments.
 * Version 0.5:
-** Minor code enhancements
-** Removed bug that caused EQC to crash if a file mentioned after \input could not be opened.
-** Enabled EQC to recognize if the left hand side of an equation becomes a symbol through an operator, a substitution or a reversal. The equation is then registered so that the value of the symbol can be computed if wished.
-** Manipulating an expression with +, -, *, / no sets the Latex representation (for \raw printing to an empty string since the former result was undesirable.
-** Added support of symbolic functions with the keywords \function and \deffunc. These functions can be defined at runtime.
-** Enabled EQC to parse vectors, i.e. {x;y}. This resulted in a change of equation list syntax because of the ambiguity of the ; in something like \eqsubst{"prev"}{x = 3; y = 4}. Equations in lists now have to be enclosed in brackets: \eqsubst{"prev"}{{x = 3}; {y = 4}}
+    * Minor code enhancements
+    * Removed bug that caused EQC to crash if a file mentioned after \input could not be opened.
+    * Enabled EQC to recognize if the left hand side of an equation becomes a symbol through an operator, a substitution or a reversal. The equation is then registered so that the value of the symbol can be computed if wished.
+    * Manipulating an expression with +, -, *, / no sets the Latex representation (for \raw printing to an empty string since the former result was undesirable.
+    * Added support of symbolic functions with the keywords \function and \deffunc. These functions can be defined at runtime.
+    * Enabled EQC to parse vectors, i.e. {x;y}. This resulted in a change of equation list syntax because of the ambiguity of the ; in something like \eqsubst{"prev"}{x = 3; y = 4}. Equations in lists now have to be enclosed in brackets: \eqsubst{"prev"}{{x = 3}; {y = 4}}
 * Version 0.6:
-** Added keyword \eqpow.
-** Enabled parsing of keywords \lhs and \rhs inside expressions.
-** Implemented more flexible expression substitution and removed a bug concerning substitution of functions.
-** Changed scanner so that the extra brackets in equation lists are not necessary any more.
-** Added keywords \printeq, \deleq and \eqsimpf.
-** Added symbolic differentiation with the keyword \eqdiff.
-** Added function hints to \function to allow for nicer printing etc.
+    * Added keyword \eqpow.
+    * Enabled parsing of keywords \lhs and \rhs inside expressions.
+    * Implemented more flexible expression substitution and removed a bug concerning substitution of functions.
+    * Changed scanner so that the extra brackets in equation lists are not necessary any more.
+    * Added keywords \printeq, \deleq and \eqsimpf.
+    * Added symbolic differentiation with the keyword \eqdiff.
+    * Added function hints to \function to allow for nicer printing etc.
 * Version 0.7.0:
-** Port to g++-3.0 and GiNaC 1.2.1
-** Removed bug that omitted '-' sign when printing adds
-** Introduced concept of library equations
-** Added simplification type "eval" and "normal"
-** Added automatic normalization after division of expressions
-** Rewrite of the \val{} algorithm in order to speed things up
-** Rewrite of all message printing via the new class message
-** Removed using namespace std everywhere
-** Debianized the package
+    * Port to g++-3.0 and GiNaC 1.2.1
+    * Removed bug that omitted '-' sign when printing adds
+    * Introduced concept of library equations
+    * Added simplification type "eval" and "normal"
+    * Added automatic normalization after division of expressions
+    * Rewrite of the \val{} algorithm in order to speed things up
+    * Rewrite of all message printing via the new class message
+    * Removed using namespace std everywhere
+    * Debianized the package
 * Version 0.8.0:
-** Added keywords aligneq, autoalign, noautoalign and dumpeq
-** The amsmath keywords tfrac and dfrac are now recognized (but not printed in eqc output)
-** Implemented keyword nesting (e.g., \eqsubst{z = x^2}{\eqadd{x-y = 4}{y}}, which would result in z = (4+y)^2)
-** Merged the equation and the file parser to simplify the code.
-** Implemented operators +, -, *, / and ^ for equations (e.g. \eqrev{"prev" + 3y}).
-** Added simplification type collect_common.
-** Added keywords \denom and \numer.
-** Added keyword \eqsolve.
+    * Added keywords aligneq, autoalign, noautoalign and dumpeq
+    * The amsmath keywords tfrac and dfrac are now recognized (but not printed in eqc output)
+    * Implemented keyword nesting (e.g., \eqsubst{z = x^2}{\eqadd{x-y = 4}{y}}, which would result in z = (4+y)^2)
+    * Merged the equation and the file parser to simplify the code.
+    * Implemented operators +, -, *, / and ^ for equations (e.g. \eqrev{"prev" + 3y}).
+    * Added simplification type collect_common.
+    * Added keywords \denom and \numer.
+    * Added keyword \eqsolve.
 * Version 0.9.0:
-** Removed bug which did not print muls inside muls and adds inside adds.
-** Removed automatic expansion and normalization after divisions, this must be done manually now using \eqsimpf.
-** Changed \preferred_units to \preferredunits for LaTeX conformity.
-** Introduced dummy macros in eqc.sty to enable the raw tex file to be passed through LaTeX without generating too many errors. This allows the use of preview-latex in emacs, for example.
-** Added keyword \eqfunc to apply a function to both sides of the equation.
-** Added simplification type unsafe.
-** Added keyword\printoptions, this now replaces \autoalign. \raw and \eqc are now printing options eqraw and eqnoraw.
-** Trigonometric functions now evaluate automatically if possible (for example, \cos(\pi) becomes 0).
-** Made equation a subclass of GiNaC::relational and expression of GiNaC::ex, which allows a great deal of simplifications in the grammar.
-** Removed bug which prevented \val[\degree]{...} from working correctly.
-** Removed bug which prevented substitutions of user-defined functions from working correctly.
-** Changed the func::eval() routine so that it takes advantage of the simplification rules defined for GiNaC's hard-coded functions, e.g. \tan\arctan{x} = x.
+    * Removed bug which did not print muls inside muls and adds inside adds.
+    * Removed automatic expansion and normalization after divisions, this must be done manually now using \eqsimpf.
+    * Changed \preferred_units to \preferredunits for LaTeX conformity.
+    * Introduced dummy macros in eqc.sty to enable the raw tex file to be passed through LaTeX without generating too many errors. This allows the use of preview-latex in emacs, for example.
+    * Added keyword \eqfunc to apply a function to both sides of the equation.
+    * Added simplification type unsafe.
+    * Added keyword\printoptions, this now replaces \autoalign. \raw and \eqc are now printing options eqraw and eqnoraw.
+    * Trigonometric functions now evaluate automatically if possible (for example, \cos(\pi) becomes 0).
+    * Made equation a subclass of GiNaC::relational and expression of GiNaC::ex, which allows a great deal of simplifications in the grammar.
+    * Removed bug which prevented \val[\degree]{...} from working correctly.
+    * Removed bug which prevented substitutions of user-defined functions from working correctly.
+    * Changed the func::eval() routine so that it takes advantage of the simplification rules defined for GiNaC's hard-coded functions, e.g. \tan\arctan{x} = x.
 * Version 1.0.0:
-** Vectors can now be created with the syntax begin:end:step.
-** Port to gcc3.3.
-** Added wildcard function wild().
-** Made differentiation of functions work and print better.
-** Added keyword \diff to create derivatives. They can be evaluated (that is, the derivative can be explicitly calculated) by \eqsimpf{...}{diff}.
-** Added factorial function !.
-** Added the sum function \sum.
-** Added keyword \eqevalp to evaluate functions given in parameter form.
-** Added keyword \eqwrite to save equations to a file and reuse them in another document.
-** Added Taylor series creation of an expression with \tseries.
-** Optimized the value finding code for faster execution.
-** Added the AM_PATH_GINAC macro to configure.in
-** Cross-compiled EQC to windows (see section Compilation and Installation)
-** Added Digits = 12 globally to aleviate problems like x^(0.99999999999999995)
+    * Vectors can now be created with the syntax begin:end:step.
+    * Port to gcc3.3.
+    * Added wildcard function wild().
+    * Made differentiation of functions work and print better.
+    * Added keyword \diff to create derivatives. They can be evaluated (that is, the derivative can be explicitly calculated) by \eqsimpf{...}{diff}.
+    * Added factorial function !.
+    * Added the sum function \sum.
+    * Added keyword \eqevalp to evaluate functions given in parameter form.
+    * Added keyword \eqwrite to save equations to a file and reuse them in another document.
+    * Added Taylor series creation of an expression with \tseries.
+    * Optimized the value finding code for faster execution.
+    * Added the AM_PATH_GINAC macro to configure.in
+    * Cross-compiled EQC to windows (see section Compilation and Installation)
+    * Added Digits = 12 globally to aleviate problems like x^(0.99999999999999995)
 * Version 1.1.0:
-** Added keywords \ceil and \floor.
-** In equations, i is now recognized as the imaginary unit (square root of -1).
-** Sorted out some autoconf/automake problems and updated the documentation. Cross-compiling to Windows now works with the configure/make commands (see that section for details).
-** \eqsolve now handles problems with denominators not equal to one.
-** Added command-line parsing of options (see eqc --help) (but not for the Windows version)
-** Combined all option keywords into the common syntax \eqcoptions {'key' = 'val'}
-** Automatic aligning of equations (formerly eqautoalign) is now always on. It can be overriden by specifying a certain alignment type, e.g. \eq[eqalign=none]{...}.
+    * Added keywords \ceil and \floor.
+    * In equations, i is now recognized as the imaginary unit (square root of -1).
+    * Sorted out some autoconf/automake problems and updated the documentation. Cross-compiling to Windows now works with the configure/make commands (see that section for details).
+    * \eqsolve now handles problems with denominators not equal to one.
+    * Added command-line parsing of options (see eqc --help) (but not for the Windows version)
+    * Combined all option keywords into the common syntax \eqcoptions {'key' = 'val'}
+    * Automatic aligning of equations (formerly eqautoalign) is now always on. It can be overriden by specifying a certain alignment type, e.g. \eq[eqalign=none]{...}.
 * Version 1.2.0:
-** Minor bug fixes.
-** Any equations that do not have a user-defined label are not considered any more for finding values, except if they are a direct assignment to a symbol.
-** Added keywords \valwith, quantitywith, numvalwith and unitswith.
-** Some beautification for the LaTeX printing routine output.
-** Added simplification type gather-sqrt to combine single square roots into one root symbol.
-** Added option eqsplit and eqsplittext to split a long equation at a given operator.
-** Added option vecautosize to automatically size a vector (if the step count is given as 0).
-** Switched to using pkg-config instead of AM_PATH_GINAC, as required by ginac &amp;gt;= 1.3.7
+    * Minor bug fixes.
+    * Any equations that do not have a user-defined label are not considered any more for finding values, except if they are a direct assignment to a symbol.
+    * Added keywords \valwith, quantitywith, numvalwith and unitswith.
+    * Some beautification for the LaTeX printing routine output.
+    * Added simplification type gather-sqrt to combine single square roots into one root symbol.
+    * Added option eqsplit and eqsplittext to split a long equation at a given operator.
+    * Added option vecautosize to automatically size a vector (if the step count is given as 0).
+    * Switched to using pkg-config instead of AM_PATH_GINAC, as required by ginac &amp;gt;= 1.3.7
 * Version 1.2.1:
-** Updated to use libginac 1.4 and libcln5
+    * Updated to use libginac 1.4 and libcln5
 * Version 1.3.0:
-** Added support for matrices
-** Removed confusion between the Euler-Mascheroni constant (0.57721...) and Euler's number (2.71828...)
+    * Added support for matrices
+    * Removed confusion between the Euler-Mascheroni constant (0.57721...) and Euler's number (2.71828...)
 * Version 1.3.1:
-** Added support for integrals
-** Function hint no_bracket renamed to nobracket
-** Removed most globals to make linking as a shared library easier
+    * Added support for integrals
+    * Function hint no_bracket renamed to nobracket
+    * Removed most globals to make linking as a shared library easier
 * Version 1.4.0:
-** The code was split to provide libeqc independently from the program eqc
+    * The code was split to provide libeqc independently from the program eqc
 * Version 1.4.1:
-** Minor changes for use of libeqc with iMath
-** changed class Unit to use a factory for creating unit objects
-** changed \eqdiff to differentiate e.g. f(x) to d f(x)/dx instead of differentiating the function definition. The old behaviour can be achieved with the function hint defdiff'
+    * Minor changes for use of libeqc with iMath
+    * changed class Unit to use a factory for creating unit objects
+    * changed \eqdiff to differentiate e.g. f(x) to d f(x)/dx instead of differentiating the function definition. The old behaviour can be achieved with the function hint defdiff'
 * Version 1.4.2:
-** Minor changes for use of libeqc with iMath
+    * Minor changes for use of libeqc with iMath
 * Version 1.4.3:
-** Better matrix support
-** Output file cleaning with option cleancomments
-** Controlling debug output with option debug
-** Switching between \tg and \tan with option tan_is_tg
-** Unicode support
+    * Better matrix support
+    * Output file cleaning with option cleancomments
+    * Controlling debug output with option debug
+    * Switching between \tg and \tan with option tan_is_tg
+    * Unicode support
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jan Rheinlaender</dc:creator><pubDate>Sat, 22 Jul 2023 17:55:57 -0000</pubDate><guid isPermaLink="false">https://sourceforge.net0b2c0d0ee92da70ad84fd1bff2d15c3e0f8ebc65</guid></item><item><title>Home modified by Jan Rheinlaender</title><link>https://sourceforge.net/p/eqc/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -1,41 +1,49 @@
-= The EQC Handbook =
+The EQC Handbook
+===

 Jan Rheinländer, 13.05.2018. This handbook describes EQC Version 1.4.20


-== Introduction ==
-
-The LaTeX Equation Compiler is a preprocessor for LaTeX files that enables numeric and symbolic calculations. It reads equations specified by special keywords in the LaTeX file and uses them to calculate the numeric value of variables. Symbolic calculation capabilities are also implemented, for example, adding two equations or substituting a variable with a numerical or symbolic value into an equation. EQC makes use of the [http://www.ginac.de/ GiNaC library].
+Introduction
+---
+
+The LaTeX Equation Compiler is a preprocessor for LaTeX files that enables numeric and symbolic calculations. It reads equations specified by special keywords in the LaTeX file and uses them to calculate the numeric value of variables. Symbolic calculation capabilities are also implemented, for example, adding two equations or substituting a variable with a numerical or symbolic value into an equation. EQC makes use of the [GiNaC library](http://www.ginac.de).

 The development of EQC was prompted by a problem which I often encountered doing calculations in my profession as a mechanical engineer. I would first begin writing out the problem on paper, putting together the necessary equations, and then turn to a spreadsheet to do the actual calculations. EQC is meant to integrate this process in a single Latex source file.

-Programming language: C++, bison, flex. Implemented on Linux-i386. Cross-compiled to Windows, but not extensively tested there.
+Programming language: C++, bison, flex. Implemented on Linux. Cross-compiled to Windows, but not extensively tested there.

 EQC makes use of the GiNaC library for numeric and symbolic calculations, and of course needs a Latex installation to be useful. If you wish to use physical units, the SIunits.sty package is required as well.

-=== Changes ===
-
-[[History of changes]]
-
-== Installation ==
-
-EQC is hosted at [http://sourceforge.net/projects/eqc/ SourceForge].
-
-=== How to obtain EQC ===
-
-You can download binary and source packages from the [http://sourceforge.net/projects/eqc EQC project page].
-
-=== Requirements ===
-
-To use EQC, the GiNaC and CLN libraries are required (not for the Windows binary). Information about these libraries can be found at the [http://www.ginac.de/ GiNaC library homepage] and [http://clisp.cons.org/~haible/packages-cln.html CLN library homepage]. Of course, a Latex installation is necessary, and the SIunits.sty package should be present if you wish to use physical units in your equations.
-
-=== Installation on Linux ===
+Changes
+---
+[History of Changes]
+
+Installation
+---
+
+EQC is hosted at [SourceForge](http://sourceforge.net/projects/eqc/)
+
+How to obtain EQC
+---
+
+You can download binary and source packages from the [EQC project page}(http://sourceforge.net/projects/eqc).
+
+Requirements
+---
+
+To use EQC, the GiNaC and CLN libraries are required (not for the Windows binary). Information about these libraries can be found at the [GiNaC library homepage](http://www.ginac.de) . Of course, a Latex installation is necessary, and the SIunits.sty package should be present if you wish to use physical units in your equations.
+
+Installation on Linux
+---

 Use the binary packages in .deb format

-=== Installation on Windows ===
+Installation on Windows
+---

 Unpack the corresponding zip file and sort the files into your favourite directories:
+
 * eqc.exe must go somewhere into your path (e.g. C:\WINDOWS\system32\)
 * eqc.sty, units.tex, substitutions.tex and mathconstants.tex must go into the appropriate directories of your LaTeX distribution (e.g. ...\tex\latex\eqc\). Don't forget to run texhash afterwards so that the files will be found
 * HTML documentation is in the docs subdirectory
@@ -43,73 +51,82 @@
 * Depending on your TeX distribution, you might also have to install the siunits and fp packages. The first is mandatory, the second can be disabled if you comment out the makepspicture macros in eqc.sty.

 The search path to eqc.sty is compiled into the eqc binary. To adapt the path to your local installation, you should add a command
- \eqcoptions{path="\path\to\where\you\put\eqc.sty\"}
+ `\eqcoptions{path="\path\to\where\you\put\eqc.sty\"}`
 before the first EQC commands.

 If you want to look at the docs and examples on Windows, you might have to change the pathnames of the \input statements to fit your directory structure.

 In a normal document, you should always include the following EQC files:
- % in the preamble
- \usepackage{eqc}
- %
- % soon after \begin{document}
- \input  mathconstants.tex
- \input  units.tex
+
+    % in the preamble
+     \usepackage{eqc}
+     %
+     % soon after \begin{document}
+     \input  mathconstants.tex
+     \input  units.tex

 These files are essential for EQC to function properly. Only very special cases would warrant not including these files.

-=== Using EQC with xemacs auctex mode ===
+Using EQC with xemacs auctex mode
+---

 In xemacs, choose Options-Advanced (Customize)-Group from the menu, and enter the group name auctex. Open the Command group, and under List:, add the following entry:

-    [INS] [DEL] Name: EQC
-                Command: eqc %t; %l "%(mode)\input{%s.eqc}"
-                How: [Value Menu] TeX-run-LaTeX
-                Create a process for NAME using COMMAND to format FILE with TeX.
-    Create a process for NAME using COMMAND to process FILE. *
-                Return the new process.
-                Prompt: [Toggle]  off (nil)
-                Modes: [Value Menu] Set:
-                * Plain TeX
-                * LaTeX
-                * DocTeX
-                * ConTeXt
-                * Texinfo
-                * AmSTeX
-                Menu elements:
-                [INS] [DEL] Lisp expression: :help
-                [INS] [DEL] Lisp expression: "Run EQC, then LaTeX"
-                [INS]
+~~~
+[INS] [DEL] Name: EQC
+            Command: eqc %t; %l "%(mode)\input{%s.eqc}"
+            How: [Value Menu] TeX-run-LaTeX
+            Create a process for NAME using COMMAND to format FILE with TeX.
+Create a process for NAME using COMMAND to process FILE. *
+            Return the new process.
+            Prompt: [Toggle]  off (nil)
+            Modes: [Value Menu] Set:
+            * Plain TeX
+            * LaTeX
+            * DocTeX
+            * ConTeXt
+            * Texinfo
+            * AmSTeX
+            Menu elements:
+            [INS] [DEL] Lisp expression: :help
+            [INS] [DEL] Lisp expression: "Run EQC, then LaTeX"
+            [INS]
+~~~

 Choose save from the top of the buffer. To run EQC, followed by LaTeX, hit Ctrl-C twice in the buffer, and when asked for the command to run, say eqc (just typing "e" usually is sufficient)

-=== Compilation and installation ===
-
-Refer to the [[Detailed compilation instructions]].
-
-=== Bugs ===
-
-==== Known bugs ====
+Compilation and installation
+---
+
+Refer to the [Detailed compilation instructions]
+
+ Bugs
+---
+
+**Known bugs**

 * These are not really bugs, but they might seem so
 ** The former unit \l was removed because it collides with a letter in the Polish alphabet. Use \litre instead. This can lead to weird errors if you don't change it!
 ** If your \makepspicture graphics fail because the equations do not resolve to numerics, add a second \val statement to them. This became necessary with the introduction of symbols that represent matrices.

-* The option eqsplit must be the last one in a list, for example: \eq[eqsplit=2; eqraw=true]{a + b = c} will not work correctly, but \eq[eqraw=true; eqsplit=2]{a + b = c} will. The reason for this is that eqsplit takes an expression as an argument, and the definition of an expression allows for a list separated by semicolons. Therefore, an ambiguity occurs.
+* The option eqsplit must be the last one in a list, for example: `\eq[eqsplit=2; eqraw=true]{a + b = c}` will not work correctly, but `\eq[eqraw=true; eqsplit=2]{a + b = c}` will. The reason for this is that eqsplit takes an expression as an argument, and the definition of an expression allows for a list separated by semicolons. Therefore, an ambiguity occurs.
 * The number 0.012345 is not rounded correctly to 4 digits (precision type fixed_digits), rather the result ist 0.1234. This appears to be a bug in the cln::round1() function because 1234.5d0 is rounded to 1234, but 1234.56d0 is rounded to 1235! Actually, it is not a bug, but a feature. The CLN documentation says (!) round(x): The integer nearest to x. If x is exactly halfway between two integers, choose the even one.

-==== Reporting bugs ====
-
-Please report all bugs to the [mailto://jrheinlaender@users.sourceforge.net author's email]. You should include the following information:
+Reporting bugs
+---
+
+Please report all bugs via the Sourceforge bug tracker. You should include the following information:

 * Version of eqc, how you obtained it (RPM, CVS, binary or source).
 * The input file that produces the errors.
 * The output produced by eqc (on screen and in the file inputname.eqc).
-* Try setting DEBUG to larger values to get more debugging output by adding \eqcoptions{debug=4} at the beginning of your file. For Linux, you can also call eqc with -d&amp;lt;number&amp;gt;. Larger values than 4 are possible, but might give too much detail.
-
-== Usage ==
-
-=== General Usage ===
+* Try setting DEBUG to larger values to get more debugging output by adding `\eqcoptions{debug=4} `at the beginning of your file. For Linux, you can also call eqc with -d&amp;lt;number&amp;gt;. Larger values than 4 are possible, but might give too much detail.
+
+Usage
+===
+
+General Usage
+---

 EQC reads LaTeX files from the command line and writes its output to corresponding .eqc files. One output file is generated for each file given on the command line. Note that files included with \input directives are directly included in the output file. EQC keywords contained in the input files are processed, everything else is written out unchanged. The resulting .eqc files can then be processed like any regular LaTeX file (don't forget to give the .eqc file extension to latex).

@@ -117,7 +134,8 @@

 Inside the Latex file, equations can now be defined and registered. EQC will read the equation, produce Latex output, and store it for later manipulation or evalution. For example:

-    \documentclass{article}
+~~~
+\documentclass{article}
     \usepackage{eqc}
     \begin{document}
     \input mathconstants.tex
@@ -126,68 +144,84 @@
     $$\eq{b = 3.141/2}$$
     $$\printeq{"eq:myequation"} = \val{x}$$
     \end{document}
+~~~

 This would produce the following Latex output (without the preamble created by including mathconstants.tex):

+~~~
     $$x = a sin(b)$$
     $$a = 3$$
     $$b = 1.57$$
     $$x = a sin(b) = 3$$
+~~~

 In order to determine the value of the variable x, EQC automatically uses the three equations that were registered with the keyword \eq. Note that only equations that have in this way been explicitly registered with EQC will be used! Any other equations present in the file are ignored. To see what else is possible in EQC have a look at the example and the reference section.

-=== Physical units ===
+Physical units
+---

 Because EQC was developed to tackle mechanical engineering problems, it supports physical units. The Latex side is handled by SIunits.sty, which needs to be present on your system (it is included, for example, in the tetex distribution). Units inside equations are designated by their Latex macro names, e.g., \mm. Variable values can take on four different forms:

-# A numerical value, like 4 or 3.141.
-# A unit, like \mm
-# A physical quantity, that is, a united and a number, like 4 \mm. This form of course includes the first two ones.
-# Any other kind of mathematical expression, like x + 4 \mm. This of course includes the other three forms.
+1. A numerical value, like 4 or 3.141.
++ A unit, like \mm
++ A physical quantity, that is, a united and a number, like 4 \mm. This form of course includes the first two ones.
++ Any other kind of mathematical expression, like x + 4 \mm. This of course includes the other three forms.

 The \val keyword used in the example above prints the fourth kind of variable value. If we had wished to ensure that a numerical value is printed, we would have used \numval. EQC will then print a warning if the value of the variable does not have this form.

-=== Library of substitutions ===
-
-The file substitutions.tex contains a growing library of equations that are useful for working with symbolic equations, for example, \sin(\alpha + \beta) = \sin\alpha \cos\beta + \cos\alpha \sin\beta or \sin(\pi - \alpha) = \sin\alpha. By substitution, they can be adapted to special cases:
-
+Library of substitutions
+---
+
+The file substitutions.tex contains a growing library of equations that are useful for working with symbolic equations, for example, `\sin(\alpha + \beta) = \sin\alpha \cos\beta + \cos\alpha \sin\beta or \sin(\pi - \alpha) = \sin\alpha`. By substitution, they can be adapted to special cases:
+
+~~~
     $$\eq{\cos\phi = \sin(\phi + \psi)}$$
     $$\eqsubst{"prev"}{"lib:trig:sina+b"}$$
+~~~

 which would produce the following output:

+~~~
     $$\cos\phi = \sin(\phi + \psi)$$
     $$\cos\phi = \sin\phi \cos\psi + \cos\phi \sin\psi$$
-
-=== Formatting of floating point numbers ===
+~~~
+
+Formatting of floating point numbers
+---

 There are several options available to control how floating point numbers are printed. The precision can be set to a specific number of digits with \eqcoptions{precision = 'num'}.Two different concepts of precision are implemented, these can be selected by \eqcoptions{precision_type = fixed_marker} or \eqcoptions{precision_type = fixed_digits}.

-# Fixed marker: All numbers are printed with a fixed number of digits after the decimal marker. For example, let the precision be three digits. Then 1.2345 will be printed as 1.235, and 1234.5678 will be printed as 1234.568.
-# Fixed digits: All numbers are printed with a fixed number of digits precision. For example, let the precision be three digits. Then 1.2345 will be printed as 1.23, and 1234.5678 will be printed as 1230.
+1. Fixed marker: All numbers are printed with a fixed number of digits after the decimal marker. For example, let the precision be three digits. Then 1.2345 will be printed as 1.235, and 1234.5678 will be printed as 1234.568.
++ Fixed digits: All numbers are printed with a fixed number of digits precision. For example, let the precision be three digits. Then 1.2345 will be printed as 1.23, and 1234.5678 will be printed as 1230.

 Very large and very small numbers should be printed in scientific format (mantissa * 10^exponent) for the sake of readability. The limits which determine what a "very large" or "very small" number is can be set with \eqcoptions{scientific_limit_low = 'num'} and \eqcoptions{scientific_limit_high = 'num'}.

-=== Formatting of equations ===
+Formatting of equations
+---

 Using the command \eqcoptions{eqraw = true/false} in you Latex input file makes it possible to choose whether \eq statements should be formatted the way you typed them or whether EQC should use it's own output function to format them. Note that any equations obtained by \eqadd etc. will always have the EQC formatting, as EQC can hardly foresee what you would have typed if you had written this equation yourself.

 EQC formats equations inside certain environments (eqnarray, align etc.) automatically, that is, the correct number of ampersands (&amp;amp;) is added before/after the equal sign. You can override the formatting by setting the eqalign option manually.

-== Reference ==
+Reference
+===

 Refer to the [[Reference section]].

-== Examples ==
-
-The [http://eqc.sourceforge.net/eqc-tour.dvi EQC tour] gives an overview of EQC functionality. It was created with the following commands on the source file [http://eqc.sourceforge.net/eqc-tour.tex eqc-tour.tex]:
-
-    eqc eqc-tour.tex
+Examples
+===
+
+The [EQC tour](http://eqc.sourceforge.net/eqc-tour.dvi) gives an overview of EQC functionality. It was created with the following commands on the source file [eqc-tour.tex](http://eqc.sourceforge.net/eqc-tour.tex):
+
+~~~
+eqc eqc-tour.tex
     latex eqc-tour.eqc
-
-If you do not have a DVI viewer installed, try the [http://eqc.sourceforge.net/eqc-tour.pdf eqc-tour.pdf] produced with pdflatex. In case you are curious what your Latex source looks like after EQC has had a go at it, have a look at the intermediate file [http://eqc.sourceforge.net/eqc-tour.eqc eqc-tour.eqc]
-
-== Questions and Answers ==
+~~~
+
+If you do not have a DVI viewer installed, try the [eqc-tour.pdf](http://eqc.sourceforge.net/eqc-tour.pdf) produced with pdflatex. In case you are curious what your Latex source looks like after EQC has had a go at it, have a look at the intermediate file [eqc-tour.eqc](http://eqc.sourceforge.net/eqc-tour.eqc)
+
+Questions and Answers
+===

 ; Why are my files full of errors after an upgrade of EQC? :
 :* The former unit \l was removed because it collides with a letter in the Polish alphabet. Use \litre instead. This can lead to weird errors if you don't change it!
@@ -228,7 +262,8 @@
 ; The intermediate .eqc file generated from a LateX source contains a lot of empty and/or commented lines: You can use &lt;code&gt;\eqcoptions{cleancomments=true}&lt;/code&gt; to remove comment lines (that is, lines beginning with a percent character). Other comments are not removed because sometimes they are necessary for LaTeX to process the file correctly.
 ; Is there a 64 bit version of EQC for Windows? : No, because the underlying GiNaC and CLN libraries will not compile for that platform yet. A 64 bit version for Unix platforms should be possible to compile from source, though.

-== Copyright ==
+Copyright
+===

 EQC Copyright 2002-2018 Jan Rheinländer, jrheinlaender@users.sourceforge.net

&amp;lt;/number&amp;gt;&amp;lt;/number&amp;gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jan Rheinlaender</dc:creator><pubDate>Sat, 22 Jul 2023 17:54:42 -0000</pubDate><guid isPermaLink="false">https://sourceforge.netcf2d6ab602a2e5e05c50cbfa65947c128699caf4</guid></item><item><title>Detailed compilation instructions modified by Jan Rheinlaender</title><link>https://sourceforge.net/p/eqc/wiki/Detailed%2520compilation%2520instructions/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="detailed-compilation-instructions"&gt;Detailed compilation instructions&lt;/h1&gt;
&lt;p&gt;To compile EQC, the GiNaC and CLN libraries are required, as well as the standard C++ development libraries, flex and bison. Compilation has been tested with GiNaC 1.7.1. Older versions will not work.&lt;/p&gt;
&lt;h2 id="compilation-for-gnu-standard-systems"&gt;Compilation for Gnu standard systems&lt;/h2&gt;
&lt;p&gt;In order to compile and install EQC on your system, type the following in the base directory of the EQC distribution:&lt;/p&gt;
&lt;p&gt;~~~&lt;br/&gt;
./configure&lt;br/&gt;
 make&lt;br/&gt;
 make install&lt;br/&gt;
~~~&lt;/p&gt;
&lt;p&gt;Since EQC uses autoconf you should have no trouble compiling it. Should you run into problems please report them to the the author.&lt;/p&gt;
&lt;p&gt;If you want more debugging output, set the msg_info reporting level in main.cpp to higher, positive values. The default is -1 and 13 is the largest possible value (beware: This might produce a huge amount of output!)&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jan Rheinlaender</dc:creator><pubDate>Sat, 22 Jul 2023 17:35:13 -0000</pubDate><guid isPermaLink="false">https://sourceforge.netd42550f837e4365cfe5750587c9ada85dcabcfef</guid></item><item><title>Reference section modified by Jan Rheinlaender</title><link>https://sourceforge.net/p/eqc/wiki/Reference%2520section/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;== Basic syntax ==&lt;/p&gt;
&lt;p&gt;There are two categories of keywords recognized by EQC: Keywords in the Latex file, and keywords inside equation statements. The syntax used to describe the keywords is:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;keyword&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;optarg1&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;optarg2&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="n"&gt;argument1&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="n"&gt;argument2&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Arguments in square brackets are optional.&lt;/p&gt;
&lt;p&gt;The following abbreviations for the different types of arguments are used:&lt;/p&gt;
&lt;p&gt;; exp : A mathematical expression like x + sin(y).&lt;br/&gt;
; equation &amp;lt;- exp = exp : An equation created by equating two mathematical expressions.&lt;br/&gt;
; equation &amp;lt;- exp &amp;amp; = &amp;amp; exp : Same as before, but inside an equation array. Other positions of the &amp;amp; are possible as well.&lt;br/&gt;
; equation &amp;lt;- "label" : EQC optionally accepts an equation label in any place where an equation is required. Labels must be enclosed in double quotes. The special equation label "prev' references the last equation that was registered with EQC.&lt;br/&gt;
; eqlist &amp;lt;- equation OR equation ; equation ; equation ... : Either a single equation or a list of equations separated by colons.&lt;br/&gt;
; unitlist &amp;lt;- unit ; unit ; unit ... : A list of physical unit names like \mm; \N, separated by colons.&lt;br/&gt;
; explist &amp;lt;- exp ; exp ; exp ... : A list of expressions like x; y; z^2, separated by colons.&lt;br/&gt;
; simplifications &amp;lt;- simplification ; simplification ; simplification ... : A list of strings describing simplifications to be performed on an equation.&lt;br/&gt;
; vector &amp;lt;- start &amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; end &amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt; step : A vector beginning at start and ending at end, with steps of step. If end - start is not a multiple of step, the last element of the vector will be smaller than end. If you don't care about the size of the step, give a value of 0: EQC will make the vector have the number of elements defined by the option vecautosize (default 20).&lt;br/&gt;
; matrix &amp;lt;- {element1; element2; ... elementN} OR {{element11; element12; ... element1N}; { ... }; {elementM1; ... elementMN}} : A vector or a matrix of arbitrary expressions. The brackets are important, but not the type of bracket. A matrix can be used anywhere an expression is allowed.&lt;/p&gt;
&lt;p&gt;Numbers can have the imaginary unit i, which on the other hand means that you cannot use i as a variable name.&lt;/p&gt;
&lt;p&gt;== Keywords in the Latex file ==&lt;/p&gt;
&lt;p&gt;=== Keywords for manipulating equations ===&lt;/p&gt;
&lt;p&gt;All these keywords take several optional arguments. The asterisk form suppresses printing the equation. A label may be given to the equation in square brackets. In addition, all the options listed for the keyword eqcoptions can be used and will then apply for this equation only. Note that if only an equation label and no further option is provided the square brackets, the key label = can be omitted, and the label does not need to be quoted ("").&lt;/p&gt;
&lt;p&gt;; \constant &lt;span&gt;[*]&lt;/span&gt; {equation} : Registers a constant with EQC. Constants are not erased by \clearequations. This makes it possible to specify general constants only once in the file and reuse them for several different calculations. The value assigned to this constant is automatically used when calculating the value of variables. The asterix form suppresses printing of the constant equation in the Latex output file.&lt;br/&gt;
; \eq &lt;span&gt;[*]&lt;/span&gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation} : Registers an equation with EQC. Only equations that have been registered are used to calculate the values of variables. The asterix form suppresses printing of the equation in the Latex output file. The equation can be assigned an optional label which may be used to reference it later on in the file. The Latex \ref{} command will also work with this label. Note that here the label may not be surrounded by quotes! For the special case of the equation label starting with lib:, the equation will not be erased by \clearequations. This is useful for building a library of generic equations, as for example in the file substitutions.tex.&lt;br/&gt;
; \deleq{label} : Removes an equation such that it has no influence on future searches for variable values. Note that since LaTeX does not support removing labels, the label itself will be not be re-usable!&lt;br/&gt;
; \eqadd &lt;span&gt;[*]&lt;/span&gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{expr} : Adds an expression to the equation. A label may be assigned to the result. The resulting equation is only registered with the EQC if it has been assigned a label. The reason for this is that the equation is usually redundant in terms of using it for calculating the value of variables. The asterix form suppresses printing of the resulting equation.&lt;br/&gt;
; \eqdiv &lt;span&gt;[*]&lt;/span&gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{exp} : Divides the equation by an expression. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.&lt;br/&gt;
; \eqmul &lt;span&gt;[*]&lt;/span&gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{exp} : Multiplies the equation with an expression. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.&lt;br/&gt;
; \eqpow &lt;span&gt;[*]&lt;/span&gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{exp} : Raises both sides of the equation to the power of an expression. Beware: This ignores alternative results, as in the case of \eqpow{x^2}{1/2}, which might evaluate to +x or -x. Only use this function if you are sure that you want the first possible result!&lt;br/&gt;
; \eqfunc &lt;span&gt;[*]&lt;/span&gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{exp} : Applies the expression, which must be a valid function name (without parameters), to both sides of the equation.&lt;br/&gt;
; \eqsub &lt;span&gt;[*]&lt;/span&gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{exp} : Subtracts an expression from the equation. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.&lt;br/&gt;
; \eqrev &lt;span&gt;[*]&lt;/span&gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation} : Swaps left hand side and right hand side of the equation. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.&lt;br/&gt;
; \eqsubst &lt;span&gt;[*]&lt;/span&gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{eqlist} : Substitutes expressions inside an equation. The eqlist argument is a list of equations separated by ';'. Any occurences of the left hand side of these equations is replaced by the right hand side. The asterix suppresses Latex output, the label enables the equation to be referenced later and causes it to be registered with the EQC.&lt;br/&gt;
; \eqsimpf &lt;span&gt;[*]&lt;/span&gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{simplifications} : Simplifies both sides of the equation according to the simplifications given in a list. Possible values are:&lt;br/&gt;
:; expand : Fully expands all expressions, including function arguments.&lt;br/&gt;
:; expandf : Only expand function definition, not arguments.&lt;br/&gt;
:; eval : Numerically evaluate the equation as far as possible.&lt;br/&gt;
:; normal : Normalize the equation (see description of GiNaC normal() method).&lt;br/&gt;
:; collect-common : Collect common factors (see description of GiNaC collect_common_factors() method).&lt;br/&gt;
:; unsafe : Does unsafe simplifications, for example&lt;br/&gt;
::&lt;em&gt; sqrt{x^2} =&amp;gt; x&lt;br/&gt;
::&lt;/em&gt; \arctan\tan{x} =&amp;gt; x. Note that the opposite \tan\arctan{x} is not an unsafe evaluation and is thus done automatically (by GiNaC).&lt;br/&gt;
:; diff : Evaluates differential function \diff.&lt;br/&gt;
:; sum : Evaluates sum functions \sum.&lt;br/&gt;
:; gather-sqrt : Gathers single square roots under one root symbol.&lt;br/&gt;
:; integrate : Symbolically integrates any integrals in the expression (if possible)&lt;br/&gt;
; \eqsolve &lt;span&gt;[*]&lt;/span&gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;label&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {equation}{exp}{exp} : Solves the equation for a given variable. The last argument indicates which solution is requested (in case there are several solutions, like for a quadratic equation). The function returns an assignment for the variable.&lt;/p&gt;
&lt;p&gt;=== Keywords for manipulating expressions ===&lt;/p&gt;
&lt;p&gt;; \lhs {equation} : Returns the left hand side of the equation.&lt;br/&gt;
; \rhs {equation} : Returns the right hand side of the equation.&lt;br/&gt;
; \val &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;unitlist&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp} : EQC replaces this keyword with the value of the specified expression (which usually is, but need not be, a variable). EQC tries to derive the value from the given equations in the form of a physical quantity. If this is not successful, a symbolic expression will be printed instead. Any floating point numbers will be printed with an optional precision. If the quantity should be expressed in other units than those set by \eqcoptions, a list of units can be passed as an optional parameter.&lt;br/&gt;
; \valwith &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;unitlist&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp} {exp} : An additional list of assignments can be given to find the value. All the assignments given are registered as new equations and then the value is searched for. This is the same as doing&lt;br/&gt;
  \eq&lt;em&gt;&lt;span&gt;&lt;span&gt;[eq:temp_1]&lt;/span&gt;&lt;/span&gt;{assignment_1}%&lt;br/&gt;
   ...&lt;br/&gt;
  \eq&lt;/em&gt;&lt;span&gt;[eq:temp_n]&lt;/span&gt;{assignment_n}%&lt;br/&gt;
  \val{exp}&lt;br/&gt;
  \deleq{"eq:temp_1"; ... "eq:temp_n}%&lt;br/&gt;
; \quantity &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp} : Same as val, but an error is printed if the value of the variable is no quantity. Any floating point numbers will be printed with an optional precision.&lt;br/&gt;
; \numval &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp} : Same as val, but an error is printed if the value of the variable is no number. Any floating point numbers will be printed with an optional precision.&lt;br/&gt;
; \units &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;int&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {exp} : Same as val, but an error is printed if the value of the variable is no unit or a multiplication of several units and/or powers of units. Any floating point numbers will be printed with an optional precision.&lt;br/&gt;
; \eqeval{equation}{equation} : Evaluates the first equation to a matrix of values. The second equation needs to have the form sym = vector. The symbol is treated as the independent variable, and the equation is evaluated for all values of the symbol given in the vector. The result is a 2x2 matrix, with the values of the independant variable in the first column and the evaluation results in the second column. For example: \eqeval{y = x^2}{x = 1:5:1} would become (1; 4; 9; 16; 25)&lt;br/&gt;
; \eqevalp{x-equation}{y-equation}{equation} : Evaluate a function given in parameter form to a matrix of values. Example (the evolvent function): \eqevalp{x = R (\cos t + t \sin t)}{y = R(sin t - t \cos t)}{t = 0:90\degree:5\degree}&lt;br/&gt;
; \numer{exp} : Returns the numerator of the expression.&lt;br/&gt;
; \denom{exp} : Returns the denominator of the expression.&lt;br/&gt;
; \diff{exp;var;num} : Creates a differential of the expression with respect to var to the degree of num. It can be evaluated using \eqsimpf{exp}{diff}&lt;br/&gt;
; \sum{equation;exp;exp} : The sum function. The first equation is the lower bound, the second the upper bound, the third the expression to sum up. Example: \sum{n=1;3;n}. Note that the bounds must become integer values when the function is evaluated with \eqsimpf{exp}{sum}.&lt;br/&gt;
; \tseries{exp}{equation}{exp} : Creates a Taylor series for the first expression. The second parameter must have the form sym = number. The series is created for the dependant variable sym around number. The third parameter must be an integer defining the degree of the series expansion.&lt;br/&gt;
; \ceil{exp}{digits} : Return the numeric value of the expression, rounded up to the nearest integer with the given number of digits after the decimal point.&lt;br/&gt;
; \floor{exp}{digits} : Return the numeric value of the expression, rounded down to the nearest integer with the given number of digits after the decimal point.&lt;/p&gt;
&lt;p&gt;=== Keywords for manipulating matrices ===&lt;/p&gt;
&lt;p&gt;; \matrix {variable} : Define the variable as containing matrices. This is essential because EQC must know that this variable is non-commutative when multiplied with another matrix variable&lt;br/&gt;
; \transpose{exp} : Transpose the matrix&lt;br/&gt;
; + (addition) : Add matrices or scalars&lt;br/&gt;
; - (subtraction) : Subtract matrices or scalars&lt;br/&gt;
; * (multiplication) : Multiply matrices or scalars. EQC will take care of the non-commutativity of matrix products if you have declared the variable properly with the \matrix keyword&lt;br/&gt;
; ^ (raising to power) : Multiply the matrix with itself as often as indicated by the exponent&lt;br/&gt;
; \mindex{exp, row, col} : Find the indicated element from the matrix&lt;/p&gt;
&lt;p&gt;=== Keywords for defining new units and functions ===&lt;/p&gt;
&lt;p&gt;; \defunit &lt;span&gt;[*]&lt;/span&gt; &lt;span&gt;[latexname]&lt;/span&gt; {macro}{exp} : Defines a new unit. The macro is the name of the unit, this must begin with a backslash because a Latex macro will be created with this name for referencing the unit later on. The expression defines the unit in terms of units already known to the EQC. If this expression contains data types apart from units, powers of units, numerics, or constants already known to EQC, a warning is issued, but the unit definition is created anyway.&lt;br/&gt; To suppress the generation of the Latex command for this unit, use the asterix form. If you wish the Latex macro to output something other than the expression, supply this as an optional argument. It will be printed in the mathrm font.&lt;br/&gt;
; \function &amp;lt;nowiki&amp;gt;[[&amp;lt;/nowiki&amp;gt;hints&amp;lt;nowiki&amp;gt;]]&amp;lt;/nowiki&amp;gt; {name} {explist} : Registers a user-defined function with EQC. The function has the arguments given in the explist. Example: \function{f}{x;y}. The function may be used in equations and expressions with or without arguments. The following hints are possible:&lt;br/&gt;
:; lib : This is a library function. It will not be erased by \clearequations.&lt;br/&gt;
:; trig : This is a trigonometric function. It will be printed as sin²x instead of (sin(x))² (for example).&lt;br/&gt;
:; nobracket : This functions needs no brackets when printed (for example, the sqrt() function).&lt;br/&gt;
:; expand : The function will be expanded immediately (provided it has been given a definition). This is useful for example with square() und cubic()&lt;br/&gt;
; \deffunc &lt;span&gt;[*]&lt;/span&gt; {name}{exp} : Define an expression which will be used to evaluate the function, for example, \deffunc{f}{ax^2+bx+c}. Without the asterix, this command will produce output like f(x) = ax^2 + bx + c.&lt;/p&gt;
&lt;p&gt;=== Keywords for printing results ===&lt;/p&gt;
&lt;p&gt;; \printeq {equation} : Prints the equation (this will usually be an equation label)&lt;br/&gt;
; \printvector{exp} : Prints a vector in the format required by pstricks.sty.&lt;br/&gt;
; \eqwrite\filename{equation}{label} :  Write an equation to a file. The equation has the label as given. This is useful to create a file of equations, which can then be included into another document and reused there. A typical usage would be&lt;br/&gt;
          \printoptions{eqparse}%Turn off pretty-printing of equations&lt;br/&gt;
          \newwrite\eqfile%&lt;br/&gt;
          \immediate\openout\eqfile filename.tex%&lt;br/&gt;
          \eqwrite\eqfile{\printeq{"eq:example"}}{eq:example}%&lt;br/&gt;
          \immediate\closeout\eqfile%&lt;br/&gt;
          \printoptions{eqnoparse}%&lt;br/&gt;
This file could then be reused as follows:&lt;br/&gt;
         \input filename.tex&lt;br/&gt;
         Equation \eqcref{"eq:example"} in 'whatever original file it came from' states&lt;br/&gt;
         \begin{equation}&lt;br/&gt;
           \printeq{"eq:example"}&lt;br/&gt;
         \end{equation}&lt;/p&gt;
&lt;p&gt;=== Output formatting ===&lt;/p&gt;
&lt;p&gt;All options are handled by the common keyword \eqcoptions. It takes a list of key-value pairs&lt;/p&gt;
&lt;p&gt;; label = string : Specifies a label for the equation, the label must be enclosed in quotes ("").&lt;br/&gt;
; precision = integer : Specifies what precision is to be used for printing floating point numbers. The precision is the absolute number of digits printed, more digits are rounded away. The precisions is 4 by default.&lt;br/&gt;
; fixeddigits = true|false : Specifies whether floating point numbers should be printed with a fixed number of digits after the decimal marker or with a fixed number of digits in total. The default is fixed_digits.&lt;br/&gt;
; lowsclimit = exp : Defines the low limit beyond which floating point numbers are printed as mantissa * 10^exponent.&lt;br/&gt;
; highsclimit = exp : Defines the high limit beyond which floating point numbers are printed as mantissa * 10^exponent.&lt;br/&gt;
; units = unitlist : Specifies a list of units separated by ';' preferred for printing physical quantities. If no such list is specified, the SI base units are used. This usually makes for ugly output, for example, when printing forces the unit Newton. A useful list of preferred units for mechanical engineering might be {\mm; \N; \Nm; \Nosqmm}. The order in which the preferred units are specified is important! Simple units should be specified first, more complex ones later on. The reason is that the complex units usually imply the simpler ones, for example, \N implies \mm because 1 \N equals 1 kg m/s^2.&lt;br/&gt;
; eqchain = true|false : Omit the left hand side in chains of equations, in cases where only the rhs changed from one line to the next.&lt;br/&gt;
; eqraw = true|false : Raw formatting of \eq statements means that the equations are printed exactly as you typed them in. This of course only works until you manipulate the equation with \eqadd etc. The other options is to have EQC format your equations.&lt;br/&gt;
; eqparse = true|false : Turns of some pretty-printing features that make the LaTeX output of EQC difficult to re-parse. For example, cos^2(x) is printed as (cos(x))^2.&lt;br/&gt;
; eqalign = type : Change the LaTeX alignment type of an equation. Values for type are 'onlyleft' (alignment will be &amp;amp;=, for ams math), 'both' (&amp;amp;=&amp;amp;, for eqnarray environment), 'none'. If no alignment type is specified, EQC automatically formats depending on the environment.&lt;br/&gt;
; eqsplit = exp : Split the equation after the nth operand. The count starts at the left hand side of the equation. Operands are those parts of the equation that are separated either by addition/subtraction or multiplication symbols. At the given position, \\notag or \\nonumber are printed, depending on the environment&lt;br/&gt;
; eqsplittext = string : The text to interject after the split (in quotes ""). By default, this tries to align the second part of the equation to the right of the equals sign.&lt;/p&gt;
&lt;p&gt;=== Other EQC options ===&lt;/p&gt;
&lt;p&gt;Further key-value pairs to \eqcoptions are:&lt;/p&gt;
&lt;p&gt;; vecautosize = integer : Specifies the size of a vector when no step count is given (i.e., the count is zero, x = 10:20:0. In this case, the vector will have the number of elements as given with this option (default 20).&lt;br/&gt;
; path = string : Set the path for the EQC-specific data files (default "/usr/share/texmf/tex/latex/eqc/" on Unix systems).&lt;br/&gt;
; lang = "english"|"german" : Changes the language which EQC expects the input file to use. At the moment, this only has an effect on parsing floating point numbers, i.e., the decimal separator is set to ',' for "german" and to '.' for "english" or any other language.&lt;br/&gt;
; debug = integer : Changes the level of debug output (default is 0). Set to -1 to suppress everything except error messages, and to values up to 13 to get tons of debugging information&lt;br/&gt;
; cleancomments = boolean : Removes comment lines (lines starting with a percent sign) from the output file if set to true&lt;br/&gt;
; tan_is_tg = boolean : Changes the name of the tangent function to \tg and \arctan to\ arctg if set to true&lt;/p&gt;
&lt;p&gt;=== Miscellaneous ===&lt;/p&gt;
&lt;p&gt;; \clearequations : Clears the list of equations and variables. Constants are not cleared. Functions are cleared except for those declared in the file mathconstants.tex.&lt;br/&gt;
; \input filename : Includes the specified file. There is no difference to the Latex \include command. All include files are written to one output .eqc file. The extension .tex need not be given.&lt;br/&gt;
; \dumpeq :  Write a list of all equations known to the compiler into the output file. The list is sorted by variable name (for assignments) and includes the equation label and number. This list is very useful in larger projects where it is difficult to remember the label of a specific equation and where it was defined. Note: This command requires AMS maths to be loaded and sets allowdisplaybreaks&lt;span&gt;[1]&lt;/span&gt;!&lt;br/&gt;
; \usepackage&lt;span&gt;[language]&lt;/span&gt;{eqc} : This command must be used in the Latex preamble to include some EQC-specific commands. For the meaning of the language parameter, see \eqlang.&lt;/p&gt;
&lt;p&gt;== Keywords inside equations ==&lt;/p&gt;
&lt;p&gt;EQC does not parse all of the possible Latex mathematical keywords. The following keywords and tokens are recognized:&lt;/p&gt;
&lt;p&gt;=== Basic mathematics ===&lt;/p&gt;
&lt;p&gt;Apart from the basic addition, subtraction, multiplication and division symbols, EQC interprets the '^' and '_' symbols in the same way as Latex does. Note that the '*' multiplication symbol may be omitted, just as in Latex.&lt;/p&gt;
&lt;p&gt;=== Mathematical functions ===&lt;/p&gt;
&lt;p&gt;The functions listed below are recognized. All of these are defined in the file mathconstants.tex, which needs to be included. Further functions may be defined at runtime with the \function and \deffunc keywords.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;\arccos Arcus cosine.&lt;/li&gt;
&lt;li&gt;\arcosh Hyperbolic arcus cosine.&lt;/li&gt;
&lt;li&gt;\arcsin Arcus sine.&lt;/li&gt;
&lt;li&gt;\arsinh Hyperbolic arcus sine.&lt;/li&gt;
&lt;li&gt;\arctan Arcus tangens&lt;/li&gt;
&lt;li&gt;\artanh Hyperbolic arcus tangens.&lt;/li&gt;
&lt;li&gt;\cos Cosine.&lt;/li&gt;
&lt;li&gt;\cosh Hyperbolic cosine.&lt;/li&gt;
&lt;li&gt;\cot Cotangens&lt;/li&gt;
&lt;li&gt;\coth Hyperbolic cotangens&lt;/li&gt;
&lt;li&gt;\csc Cosecans&lt;/li&gt;
&lt;li&gt;\cubic Cubic function (x^3)&lt;/li&gt;
&lt;li&gt;\exp Exponential function (e^x).&lt;/li&gt;
&lt;li&gt;\ln Natural logarithm.&lt;/li&gt;
&lt;li&gt;\log Decimal logarithm&lt;/li&gt;
&lt;li&gt;\sec Secans&lt;/li&gt;
&lt;li&gt;\sin Sine.&lt;/li&gt;
&lt;li&gt;\sinh Hyperbolic sine.&lt;/li&gt;
&lt;li&gt;\square Square function (x^2)&lt;/li&gt;
&lt;li&gt;\sqrt Square root&lt;/li&gt;
&lt;li&gt;\tan Tangens.&lt;/li&gt;
&lt;li&gt;\tanh Hyperbolic tangens.&lt;/li&gt;
&lt;li&gt;! Factorial function&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;=== Brackets ===&lt;/p&gt;
&lt;p&gt;All the standard Latex brackets are recognized: {, \lbrace, (, [, \lbrack, \lfloor, \lceil, \langle and of course the corresponding right brackets. The brackets may be modified in their size by \left, \bigl, \Bigl, \biggl, \Biggl and \right etc. EQC checks for bracket mismatches and issues a warning. Note that EQC does not preserve your bracket types, but creates its own brackets and bracket sizes in the Latex output.&lt;/p&gt;
&lt;p&gt;=== Division ===&lt;/p&gt;
&lt;p&gt;The Latex keywords \over and \frac are recognized.&lt;/p&gt;
&lt;p&gt;=== Access to equations ===&lt;/p&gt;
&lt;p&gt;Equations may be accessed using the \lhs and \rhs keywords. This will provide the left hand side resp. the left hand side of the equation. An equation label may be given instead of an equation.&lt;br/&gt;
Variable evaluation&lt;/p&gt;
&lt;p&gt;Variable evaluation with the keywords \val, quantity, \numval and \units can take place inside equations. For details on how this works, see the corresponding keywords in the description above.&lt;/p&gt;
&lt;p&gt;=== Constants ===&lt;/p&gt;
&lt;p&gt;EQC has the following built-in constants:&lt;br/&gt;
* \pi = 3.14159...&lt;br/&gt;
* \e = 2.71828...&lt;br/&gt;
* \Euler  = 0.57721...&lt;/p&gt;
&lt;p&gt;=== Numbers ===&lt;/p&gt;
&lt;p&gt;EQC recognizes integers and floating point numbers. The latter may not be in scientific notation as of yet. Whether the decimal separator is a comma or a dot is determined by the \eqlang keyword, or by the language parameter to \usepackage[language}{eqc}.&lt;/p&gt;
&lt;p&gt;=== Vectors ===&lt;br/&gt;
A vector can be created with the syntax begin🔚step. For example, x = 1:3:1 will create a vector with three rows, containing the number 1, 2 and 3.&lt;/p&gt;
&lt;p&gt;=== Integrals ===&lt;/p&gt;
&lt;p&gt;A symbolic integral can be created with the syntax \integral(x=a; b; f(x)) where x is the integration variable, a the lower and b the upper bound, and f a function in the integration variable. Note that if f(x) does not explicitly mention x, then the result will not be what you expected.&lt;/p&gt;
&lt;p&gt;=== Variables ===&lt;/p&gt;
&lt;p&gt;Any letter that is not part of a keyword is assumed to be a variable. Variable names are registered automatically on their first appearance. Any occurence of the same letter is taken to mean the same variable, until a \clearequations command is read. Any Latex macros that are not known to EQC are also interpreted as variable names, e.g., \phi.&lt;/p&gt;
&lt;p&gt;=== Physical units ===&lt;/p&gt;
&lt;p&gt;Physical units are identified by their Latex macro name, e.g., \mm. Any units other than the base SI units need to be defined with \defunit (include the file units.tex to get the most common physical unit definitions).&lt;/p&gt;
&lt;p&gt;=== Percentages ===&lt;/p&gt;
&lt;p&gt;To express percentages in an equation, use the \percent keyword.&lt;/p&gt;
&lt;p&gt;== Command line arguments ==&lt;/p&gt;
&lt;p&gt;; -d --debug LEVEL : Produce debugging and informational output at level LEVEL&lt;br/&gt;
; -p --path PATH : Path to EQC specific files (eqc.sty etc.)&lt;br/&gt;
; -v --verbose : Produce verbose output (same as -d1)&lt;br/&gt;
; -q --quiet : Don't produce any output (same as -d-1)&lt;br/&gt;
; -s --silent : Don't produce any output (same as -d-1)&lt;br/&gt;
; -V --version : Print program version&lt;br/&gt;
; -? --help --usage : Produce informational output&lt;/p&gt;
&lt;p&gt;Note that as of version 1.4.2, command line arguments are not yet supported on Windows.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jan Rheinlaender</dc:creator><pubDate>Sat, 22 Jul 2023 17:29:52 -0000</pubDate><guid isPermaLink="false">https://sourceforge.net8c699392b297a0bd8fae11e167d3a644335defdb</guid></item><item><title>History of Changes modified by Jan Rheinlaender</title><link>https://sourceforge.net/p/eqc/wiki/History%2520of%2520Changes/</link><description>&lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;Version 0.1: First version made accessible on SourceForge. All basic functionality implemented.&lt;/li&gt;
&lt;li&gt;Version 0.2:&lt;br/&gt;
** Updated SGML documentation&lt;br/&gt;
** Added eqc-tour.tex example&lt;br/&gt;
** Minor code enhancements&lt;/li&gt;
&lt;li&gt;Version 0.3:&lt;br/&gt;
** Minor code enhancements and bug squashing&lt;br/&gt;
** Changed compile default to static linking because of problems with libginac, libcln, libgmp3&lt;br/&gt;
** Added Precision_type in printing.h, modified printing of floats in printing.cpp&lt;br/&gt;
** Better control of the format in which quantities are printed&lt;br/&gt;
** Decimal marker is set to . or , according to the language specified&lt;br/&gt;
** \preferredunits no longer adds the units to previously registered ones. The old units are now deleted and only the new ones used.&lt;br/&gt;
** The \val macros now take an optional parameter to set the units for expressing a quantity.&lt;br/&gt;
** Removed options thickspace, thickqspace for SIunits.sty in eqc.sty. The user should define his preferred spacing in SIunits.cfg.&lt;/li&gt;
&lt;li&gt;Version 0.4:&lt;br/&gt;
** Corrected Latex display of ',' as decimal marker by putting it in parentheses.&lt;br/&gt;
** Added class expression to encapsulate the GiNaC ex class and make it possible to preserve the user's formatting of equations using the commands \raw and \eqc.&lt;br/&gt;
** EQC now recognizes \verb and respects verbatim environments.&lt;/li&gt;
&lt;li&gt;Version 0.5:&lt;br/&gt;
** Minor code enhancements&lt;br/&gt;
** Removed bug that caused EQC to crash if a file mentioned after \input could not be opened.&lt;br/&gt;
** Enabled EQC to recognize if the left hand side of an equation becomes a symbol through an operator, a substitution or a reversal. The equation is then registered so that the value of the symbol can be computed if wished.&lt;br/&gt;
** Manipulating an expression with +, -, *, / no sets the Latex representation (for \raw printing to an empty string since the former result was undesirable.&lt;br/&gt;
** Added support of symbolic functions with the keywords \function and \deffunc. These functions can be defined at runtime.&lt;br/&gt;
** Enabled EQC to parse vectors, i.e. {x;y}. This resulted in a change of equation list syntax because of the ambiguity of the ; in something like \eqsubst{"prev"}{x = 3; y = 4}. Equations in lists now have to be enclosed in brackets: \eqsubst{"prev"}{{x = 3}; {y = 4}}&lt;/li&gt;
&lt;li&gt;Version 0.6:&lt;br/&gt;
** Added keyword \eqpow.&lt;br/&gt;
** Enabled parsing of keywords \lhs and \rhs inside expressions.&lt;br/&gt;
** Implemented more flexible expression substitution and removed a bug concerning substitution of functions.&lt;br/&gt;
** Changed scanner so that the extra brackets in equation lists are not necessary any more.&lt;br/&gt;
** Added keywords \printeq, \deleq and \eqsimpf.&lt;br/&gt;
** Added symbolic differentiation with the keyword \eqdiff.&lt;br/&gt;
** Added function hints to \function to allow for nicer printing etc.&lt;/li&gt;
&lt;li&gt;Version 0.7.0:&lt;br/&gt;
** Port to g++-3.0 and GiNaC 1.2.1&lt;br/&gt;
** Removed bug that omitted '-' sign when printing adds&lt;br/&gt;
** Introduced concept of library equations&lt;br/&gt;
** Added simplification type "eval" and "normal"&lt;br/&gt;
** Added automatic normalization after division of expressions&lt;br/&gt;
** Rewrite of the \val{} algorithm in order to speed things up&lt;br/&gt;
** Rewrite of all message printing via the new class message&lt;br/&gt;
** Removed using namespace std everywhere&lt;br/&gt;
** Debianized the package&lt;/li&gt;
&lt;li&gt;Version 0.8.0:&lt;br/&gt;
** Added keywords aligneq, autoalign, noautoalign and dumpeq&lt;br/&gt;
** The amsmath keywords tfrac and dfrac are now recognized (but not printed in eqc output)&lt;br/&gt;
** Implemented keyword nesting (e.g., \eqsubst{z = x^2}{\eqadd{x-y = 4}{y}}, which would result in z = (4+y)^2)&lt;br/&gt;
** Merged the equation and the file parser to simplify the code.&lt;br/&gt;
** Implemented operators +, -, *, / and ^ for equations (e.g. \eqrev{"prev" + 3y}).&lt;br/&gt;
** Added simplification type collect_common.&lt;br/&gt;
** Added keywords \denom and \numer.&lt;br/&gt;
** Added keyword \eqsolve.&lt;/li&gt;
&lt;li&gt;Version 0.9.0:&lt;br/&gt;
** Removed bug which did not print muls inside muls and adds inside adds.&lt;br/&gt;
** Removed automatic expansion and normalization after divisions, this must be done manually now using \eqsimpf.&lt;br/&gt;
** Changed \preferred_units to \preferredunits for LaTeX conformity.&lt;br/&gt;
** Introduced dummy macros in eqc.sty to enable the raw tex file to be passed through LaTeX without generating too many errors. This allows the use of preview-latex in emacs, for example.&lt;br/&gt;
** Added keyword \eqfunc to apply a function to both sides of the equation.&lt;br/&gt;
** Added simplification type unsafe.&lt;br/&gt;
** Added keyword\printoptions, this now replaces \autoalign. \raw and \eqc are now printing options eqraw and eqnoraw.&lt;br/&gt;
** Trigonometric functions now evaluate automatically if possible (for example, \cos(\pi) becomes 0).&lt;br/&gt;
** Made equation a subclass of GiNaC::relational and expression of GiNaC::ex, which allows a great deal of simplifications in the grammar.&lt;br/&gt;
** Removed bug which prevented \val&lt;span&gt;[\degree]&lt;/span&gt;{...} from working correctly.&lt;br/&gt;
** Removed bug which prevented substitutions of user-defined functions from working correctly.&lt;br/&gt;
** Changed the func::eval() routine so that it takes advantage of the simplification rules defined for GiNaC's hard-coded functions, e.g. \tan\arctan{x} = x.&lt;/li&gt;
&lt;li&gt;Version 1.0.0:&lt;br/&gt;
** Vectors can now be created with the syntax begin🔚step.&lt;br/&gt;
** Port to gcc3.3.&lt;br/&gt;
** Added wildcard function wild().&lt;br/&gt;
** Made differentiation of functions work and print better.&lt;br/&gt;
** Added keyword \diff to create derivatives. They can be evaluated (that is, the derivative can be explicitly calculated) by \eqsimpf{...}{diff}.&lt;br/&gt;
** Added factorial function !.&lt;br/&gt;
** Added the sum function \sum.&lt;br/&gt;
** Added keyword \eqevalp to evaluate functions given in parameter form.&lt;br/&gt;
** Added keyword \eqwrite to save equations to a file and reuse them in another document.&lt;br/&gt;
** Added Taylor series creation of an expression with \tseries.&lt;br/&gt;
** Optimized the value finding code for faster execution.&lt;br/&gt;
** Added the AM_PATH_GINAC macro to configure.in&lt;br/&gt;
** Cross-compiled EQC to windows (see section Compilation and Installation)&lt;br/&gt;
** Added Digits = 12 globally to aleviate problems like x^(0.99999999999999995)&lt;/li&gt;
&lt;li&gt;Version 1.1.0:&lt;br/&gt;
** Added keywords \ceil and \floor.&lt;br/&gt;
** In equations, i is now recognized as the imaginary unit (square root of -1).&lt;br/&gt;
** Sorted out some autoconf/automake problems and updated the documentation. Cross-compiling to Windows now works with the configure/make commands (see that section for details).&lt;br/&gt;
** \eqsolve now handles problems with denominators not equal to one.&lt;br/&gt;
** Added command-line parsing of options (see eqc --help) (but not for the Windows version)&lt;br/&gt;
** Combined all option keywords into the common syntax \eqcoptions {'key' = 'val'}&lt;br/&gt;
** Automatic aligning of equations (formerly eqautoalign) is now always on. It can be overriden by specifying a certain alignment type, e.g. \eq&lt;span&gt;[eqalign=none]&lt;/span&gt;{...}.&lt;/li&gt;
&lt;li&gt;Version 1.2.0:&lt;br/&gt;
** Minor bug fixes.&lt;br/&gt;
** Any equations that do not have a user-defined label are not considered any more for finding values, except if they are a direct assignment to a symbol.&lt;br/&gt;
** Added keywords \valwith, quantitywith, numvalwith and unitswith.&lt;br/&gt;
** Some beautification for the LaTeX printing routine output.&lt;br/&gt;
** Added simplification type gather-sqrt to combine single square roots into one root symbol.&lt;br/&gt;
** Added option eqsplit and eqsplittext to split a long equation at a given operator.&lt;br/&gt;
** Added option vecautosize to automatically size a vector (if the step count is given as 0).&lt;br/&gt;
** Switched to using pkg-config instead of AM_PATH_GINAC, as required by ginac &amp;gt;= 1.3.7&lt;/li&gt;
&lt;li&gt;Version 1.2.1:&lt;br/&gt;
** Updated to use libginac 1.4 and libcln5&lt;/li&gt;
&lt;li&gt;Version 1.3.0:&lt;br/&gt;
** Added support for matrices&lt;br/&gt;
** Removed confusion between the Euler-Mascheroni constant (0.57721...) and Euler's number (2.71828...)&lt;/li&gt;
&lt;li&gt;Version 1.3.1:&lt;br/&gt;
** Added support for integrals&lt;br/&gt;
** Function hint no_bracket renamed to nobracket&lt;br/&gt;
** Removed most globals to make linking as a shared library easier&lt;/li&gt;
&lt;li&gt;Version 1.4.0:&lt;br/&gt;
** The code was split to provide libeqc independently from the program eqc&lt;/li&gt;
&lt;li&gt;Version 1.4.1:&lt;br/&gt;
** Minor changes for use of libeqc with iMath&lt;br/&gt;
** changed class Unit to use a factory for creating unit objects&lt;br/&gt;
** changed \eqdiff to differentiate e.g. f(x) to d f(x)/dx instead of differentiating the function definition. The old behaviour can be achieved with the function hint defdiff'&lt;/li&gt;
&lt;li&gt;Version 1.4.2:&lt;br/&gt;
** Minor changes for use of libeqc with iMath&lt;/li&gt;
&lt;li&gt;Version 1.4.3:&lt;br/&gt;
** Better matrix support&lt;br/&gt;
** Output file cleaning with option cleancomments&lt;br/&gt;
** Controlling debug output with option debug&lt;br/&gt;
** Switching between \tg and \tan with option tan_is_tg&lt;br/&gt;
** Unicode support&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jan Rheinlaender</dc:creator><pubDate>Sat, 22 Jul 2023 17:27:07 -0000</pubDate><guid isPermaLink="false">https://sourceforge.neta6c8c10090fcbe4358c215f66214152dac01cb91</guid></item><item><title>Home modified by Jan Rheinlaender</title><link>https://sourceforge.net/p/eqc/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -1 +1,239 @@
-The wiki is hosted on http://eqc.sourceforge.net/wiki
+= The EQC Handbook =
+
+Jan Rheinländer, 13.05.2018. This handbook describes EQC Version 1.4.20
+
+
+== Introduction ==
+
+The LaTeX Equation Compiler is a preprocessor for LaTeX files that enables numeric and symbolic calculations. It reads equations specified by special keywords in the LaTeX file and uses them to calculate the numeric value of variables. Symbolic calculation capabilities are also implemented, for example, adding two equations or substituting a variable with a numerical or symbolic value into an equation. EQC makes use of the [http://www.ginac.de/ GiNaC library].
+
+The development of EQC was prompted by a problem which I often encountered doing calculations in my profession as a mechanical engineer. I would first begin writing out the problem on paper, putting together the necessary equations, and then turn to a spreadsheet to do the actual calculations. EQC is meant to integrate this process in a single Latex source file.
+
+Programming language: C++, bison, flex. Implemented on Linux-i386. Cross-compiled to Windows, but not extensively tested there.
+
+EQC makes use of the GiNaC library for numeric and symbolic calculations, and of course needs a Latex installation to be useful. If you wish to use physical units, the SIunits.sty package is required as well.
+
+=== Changes ===
+
+[[History of changes]]
+
+== Installation ==
+
+EQC is hosted at [http://sourceforge.net/projects/eqc/ SourceForge].
+
+=== How to obtain EQC ===
+
+You can download binary and source packages from the [http://sourceforge.net/projects/eqc EQC project page].
+
+=== Requirements ===
+
+To use EQC, the GiNaC and CLN libraries are required (not for the Windows binary). Information about these libraries can be found at the [http://www.ginac.de/ GiNaC library homepage] and [http://clisp.cons.org/~haible/packages-cln.html CLN library homepage]. Of course, a Latex installation is necessary, and the SIunits.sty package should be present if you wish to use physical units in your equations.
+
+=== Installation on Linux ===
+
+Use the binary packages in .deb format
+
+=== Installation on Windows ===
+
+Unpack the corresponding zip file and sort the files into your favourite directories:
+* eqc.exe must go somewhere into your path (e.g. C:\WINDOWS\system32\)
+* eqc.sty, units.tex, substitutions.tex and mathconstants.tex must go into the appropriate directories of your LaTeX distribution (e.g. ...\tex\latex\eqc\). Don't forget to run texhash afterwards so that the files will be found
+* HTML documentation is in the docs subdirectory
+* Usage examples are in the examples subdirectory
+* Depending on your TeX distribution, you might also have to install the siunits and fp packages. The first is mandatory, the second can be disabled if you comment out the makepspicture macros in eqc.sty.
+
+The search path to eqc.sty is compiled into the eqc binary. To adapt the path to your local installation, you should add a command
+ \eqcoptions{path="\path\to\where\you\put\eqc.sty\"}
+before the first EQC commands.
+
+If you want to look at the docs and examples on Windows, you might have to change the pathnames of the \input statements to fit your directory structure.
+
+In a normal document, you should always include the following EQC files:
+ % in the preamble
+ \usepackage{eqc}
+ %
+ % soon after \begin{document}
+ \input  mathconstants.tex
+ \input  units.tex
+
+These files are essential for EQC to function properly. Only very special cases would warrant not including these files.
+
+=== Using EQC with xemacs auctex mode ===
+
+In xemacs, choose Options-Advanced (Customize)-Group from the menu, and enter the group name auctex. Open the Command group, and under List:, add the following entry:
+
+    [INS] [DEL] Name: EQC
+                Command: eqc %t; %l "%(mode)\input{%s.eqc}"
+                How: [Value Menu] TeX-run-LaTeX
+                Create a process for NAME using COMMAND to format FILE with TeX.
+    Create a process for NAME using COMMAND to process FILE. *
+                Return the new process.
+                Prompt: [Toggle]  off (nil)
+                Modes: [Value Menu] Set:
+                * Plain TeX
+                * LaTeX
+                * DocTeX
+                * ConTeXt
+                * Texinfo
+                * AmSTeX
+                Menu elements:
+                [INS] [DEL] Lisp expression: :help
+                [INS] [DEL] Lisp expression: "Run EQC, then LaTeX"
+                [INS]
+
+Choose save from the top of the buffer. To run EQC, followed by LaTeX, hit Ctrl-C twice in the buffer, and when asked for the command to run, say eqc (just typing "e" usually is sufficient)
+
+=== Compilation and installation ===
+
+Refer to the [[Detailed compilation instructions]].
+
+=== Bugs ===
+
+==== Known bugs ====
+
+* These are not really bugs, but they might seem so
+** The former unit \l was removed because it collides with a letter in the Polish alphabet. Use \litre instead. This can lead to weird errors if you don't change it!
+** If your \makepspicture graphics fail because the equations do not resolve to numerics, add a second \val statement to them. This became necessary with the introduction of symbols that represent matrices.
+
+* The option eqsplit must be the last one in a list, for example: \eq[eqsplit=2; eqraw=true]{a + b = c} will not work correctly, but \eq[eqraw=true; eqsplit=2]{a + b = c} will. The reason for this is that eqsplit takes an expression as an argument, and the definition of an expression allows for a list separated by semicolons. Therefore, an ambiguity occurs.
+* The number 0.012345 is not rounded correctly to 4 digits (precision type fixed_digits), rather the result ist 0.1234. This appears to be a bug in the cln::round1() function because 1234.5d0 is rounded to 1234, but 1234.56d0 is rounded to 1235! Actually, it is not a bug, but a feature. The CLN documentation says (!) round(x): The integer nearest to x. If x is exactly halfway between two integers, choose the even one.
+
+==== Reporting bugs ====
+
+Please report all bugs to the [mailto://jrheinlaender@users.sourceforge.net author's email]. You should include the following information:
+
+* Version of eqc, how you obtained it (RPM, CVS, binary or source).
+* The input file that produces the errors.
+* The output produced by eqc (on screen and in the file inputname.eqc).
+* Try setting DEBUG to larger values to get more debugging output by adding \eqcoptions{debug=4} at the beginning of your file. For Linux, you can also call eqc with -d&amp;lt;number&amp;gt;. Larger values than 4 are possible, but might give too much detail.
+
+== Usage ==
+
+=== General Usage ===
+
+EQC reads LaTeX files from the command line and writes its output to corresponding .eqc files. One output file is generated for each file given on the command line. Note that files included with \input directives are directly included in the output file. EQC keywords contained in the input files are processed, everything else is written out unchanged. The resulting .eqc files can then be processed like any regular LaTeX file (don't forget to give the .eqc file extension to latex).
+
+An auxiliary package needs to be included with \usepackage{eqc}. It takes an optional argument english or german which defines how numbers are read (whether a comma or a point is expected as the decimal marker). English is the default.
+
+Inside the Latex file, equations can now be defined and registered. EQC will read the equation, produce Latex output, and store it for later manipulation or evalution. For example:
+
+    \documentclass{article}
+    \usepackage{eqc}
+    \begin{document}
+    \input mathconstants.tex
+    $$\eq[eq:myequation]{x = a \sin(b)}$$
+    $$\eq{a = 3}$$
+    $$\eq{b = 3.141/2}$$
+    $$\printeq{"eq:myequation"} = \val{x}$$
+    \end{document}
+
+This would produce the following Latex output (without the preamble created by including mathconstants.tex):
+
+    $$x = a sin(b)$$
+    $$a = 3$$
+    $$b = 1.57$$
+    $$x = a sin(b) = 3$$
+
+In order to determine the value of the variable x, EQC automatically uses the three equations that were registered with the keyword \eq. Note that only equations that have in this way been explicitly registered with EQC will be used! Any other equations present in the file are ignored. To see what else is possible in EQC have a look at the example and the reference section.
+
+=== Physical units ===
+
+Because EQC was developed to tackle mechanical engineering problems, it supports physical units. The Latex side is handled by SIunits.sty, which needs to be present on your system (it is included, for example, in the tetex distribution). Units inside equations are designated by their Latex macro names, e.g., \mm. Variable values can take on four different forms:
+
+# A numerical value, like 4 or 3.141.
+# A unit, like \mm
+# A physical quantity, that is, a united and a number, like 4 \mm. This form of course includes the first two ones.
+# Any other kind of mathematical expression, like x + 4 \mm. This of course includes the other three forms.
+
+The \val keyword used in the example above prints the fourth kind of variable value. If we had wished to ensure that a numerical value is printed, we would have used \numval. EQC will then print a warning if the value of the variable does not have this form.
+
+=== Library of substitutions ===
+
+The file substitutions.tex contains a growing library of equations that are useful for working with symbolic equations, for example, \sin(\alpha + \beta) = \sin\alpha \cos\beta + \cos\alpha \sin\beta or \sin(\pi - \alpha) = \sin\alpha. By substitution, they can be adapted to special cases:
+
+    $$\eq{\cos\phi = \sin(\phi + \psi)}$$
+    $$\eqsubst{"prev"}{"lib:trig:sina+b"}$$
+
+which would produce the following output:
+
+    $$\cos\phi = \sin(\phi + \psi)$$
+    $$\cos\phi = \sin\phi \cos\psi + \cos\phi \sin\psi$$
+
+=== Formatting of floating point numbers ===
+
+There are several options available to control how floating point numbers are printed. The precision can be set to a specific number of digits with \eqcoptions{precision = 'num'}.Two different concepts of precision are implemented, these can be selected by \eqcoptions{precision_type = fixed_marker} or \eqcoptions{precision_type = fixed_digits}.
+
+# Fixed marker: All numbers are printed with a fixed number of digits after the decimal marker. For example, let the precision be three digits. Then 1.2345 will be printed as 1.235, and 1234.5678 will be printed as 1234.568.
+# Fixed digits: All numbers are printed with a fixed number of digits precision. For example, let the precision be three digits. Then 1.2345 will be printed as 1.23, and 1234.5678 will be printed as 1230.
+
+Very large and very small numbers should be printed in scientific format (mantissa * 10^exponent) for the sake of readability. The limits which determine what a "very large" or "very small" number is can be set with \eqcoptions{scientific_limit_low = 'num'} and \eqcoptions{scientific_limit_high = 'num'}.
+
+=== Formatting of equations ===
+
+Using the command \eqcoptions{eqraw = true/false} in you Latex input file makes it possible to choose whether \eq statements should be formatted the way you typed them or whether EQC should use it's own output function to format them. Note that any equations obtained by \eqadd etc. will always have the EQC formatting, as EQC can hardly foresee what you would have typed if you had written this equation yourself.
+
+EQC formats equations inside certain environments (eqnarray, align etc.) automatically, that is, the correct number of ampersands (&amp;amp;) is added before/after the equal sign. You can override the formatting by setting the eqalign option manually.
+
+== Reference ==
+
+Refer to the [[Reference section]].
+
+== Examples ==
+
+The [http://eqc.sourceforge.net/eqc-tour.dvi EQC tour] gives an overview of EQC functionality. It was created with the following commands on the source file [http://eqc.sourceforge.net/eqc-tour.tex eqc-tour.tex]:
+
+    eqc eqc-tour.tex
+    latex eqc-tour.eqc
+
+If you do not have a DVI viewer installed, try the [http://eqc.sourceforge.net/eqc-tour.pdf eqc-tour.pdf] produced with pdflatex. In case you are curious what your Latex source looks like after EQC has had a go at it, have a look at the intermediate file [http://eqc.sourceforge.net/eqc-tour.eqc eqc-tour.eqc]
+
+== Questions and Answers ==
+
+; Why are my files full of errors after an upgrade of EQC? :
+:* The former unit \l was removed because it collides with a letter in the Polish alphabet. Use \litre instead. This can lead to weird errors if you don't change it!
+; In the code below, why doesn't the value of P_comb get substituted when I say \val{P}? :
+  \eq[eq:Plive]{P_L = \unit{1500}{\kN}}
+  \eq[eq:sello]{H = \unit{2}{\m}}
+  \eq[eq:Pcomb]{P_{comb} = H L^2}
+  \eq[eq:Ptot]{P = P_L + P_{comb}}
+  P_{comb} &amp;amp; = &amp;amp; \val{P_{comb}}\\
+  P &amp;amp; = &amp;amp;\val{P}
+:* P_comb ist not substituted by \val because it has no numerical value. You need to tell EQC more exactly what it should do, e.g.:
+  \eqsubst*{"eq:Ptot"}{P_{comb} = \val{P_{comb}}}
+  \eq[eq:Ptot_]{P = \val{\rhs{"prev"}}}
+; My \makepspicture graphics fail because the equations do not resolve to numerics : Add a second \val statement to them. This became necessary with the introduction of symbols that represent matrices.
+; Why is the spacing between numbers and units ugly? :
+:* For input equations, this happens when you use \eqcoptions{eqraw = true}. EQC then tries to preserve your original formatting as much as possible (because automatic formatting is not always as beautiful as it should be). You can set &lt;code&gt;eqraw = false&lt;/code&gt; either globally or locally
+ \eq[eqraw = false]{a=100\mm}
+or provide the formatting yourself
+  \eq{a=\unit{100}{\mm}}
+:* For calculated results, you can control your spacing by passing options to the SIunits package. EQC simply uses the \unit macro to display physical quantities.
+; Why is the spacing between units ugly? : See above
+; How do I calculate something like 2+2 in EQC without definition of corresponding variables? : Just use &lt;code&gt;\val{2+2}&lt;/code&gt;. You can put anything you like into a &lt;code&gt;\val&lt;/code&gt; command, and EQC will try to reduce it to a numeric value.
+; EQC writes a lot of messages to the system console, which slows down compilation. : This can be changed by setting the debug level: For example, &lt;code&gt;\eqcoptions{debug=-1}&lt;/code&gt; will silence EQC almost completely. Higher values up to 13 will make it more verbose. For Unix platforms, you can also use the command line argument &lt;code&gt;-d&lt;/code&gt; or &lt;code&gt;--debug=&lt;/code&gt;. However, that when something goes wrong, reading the console output is very useful to find problems.
+; Why doesn't substitution of x^2 = y work in 1/x^2? : This is a problem with GiNaC's canonical format of expressions. Your equation will be represented as x^(-2), so you need to substitute x^(-2) = 1/y. This is perhaps more of a bug than a feature, but difficult to solve without manipulating GiNaC's internals.
+; How do I get EQC to accept a variable name like \varphi'? : This is not possible at the moment, but you can circumvent the problem by defining a new macro, e.g. \newcommand{\varphis}{\varphi'}.
+; EQC complains about a wrong number of arguments for a self-defined function : Probably you did something like:
+ \function{x}{y; z}
+ $\eq{a = x b + c}$.
+Because functions have precedence over multiplication, EQC parsed this as &lt;code&gt;a = x(b;&lt;/code&gt; and then complained about the missing second argument. EQC does not require function arguments to be enclosed in brackets, so you can write &lt;code&gt;\cos\alpha&lt;/code&gt; instead of &lt;code&gt;\cos{\alpha}&lt;/code&gt;. There are several ways to solve your problem:
+:* Provide a multiplication symbol: x \cdot b
+:* Use brackets: {x} b
+:* Provide function arguments x(y;z) b
+; EQC does not use my library functions for finding variable values : This is not a bug, but a feature: Library functions are assumed to be generic and must be adapted to the special purpose you have in mind. For details, see the HTML documentation. Basically, you need to 'activate' the equation with either \eq{"lib:myeq"} or something like \eqsubst{"lib:myeq"}{x = x_1; y = y_1}.
+; How do I use bibtex with EQC? : Just run bibtex on the original TeX file, not on the .eqc file.
+; Why do my equations look ugly? : EQC's formatting algorithm is far from perfect. In fact, it will never become perfect because different people have different ideas about what a properly formatted equation should look like. You can alleviate this problem by using the \raw statement. This means that the contents of your \eq statements retain the original formatting. Of course, this option does not work with equations obtained by \eqadd etc. as there is no original formatting. After all, EQC is designed to save you the work of typing all these equations yourself!
+; AMS math complains about multiple labels : AMS math puts out an error message like Error: Multiple \label's: label '...' will be lost. This error occurs (for example, inside an align environment) if you use \notag with an equation that has a label, e.g.: \eqadd[eq:1]{x = 3}{4}\notag. EQC will automatically add a \label{eq:1} when it processes the equation, and AMS math now complains that the equation has a label but should not be tagged at the same time! You can use \tag*{} to circumvent the problem. Note that the standard eqnarray environment does not produce this error.
+; When I try to build the package, the command ccache is not found : I use ccache because my machine is so slow... Edit eqc/Makefile.am and remove it.
+; The intermediate .eqc file generated from a LateX source contains a lot of empty and/or commented lines: You can use &lt;code&gt;\eqcoptions{cleancomments=true}&lt;/code&gt; to remove comment lines (that is, lines beginning with a percent character). Other comments are not removed because sometimes they are necessary for LaTeX to process the file correctly.
+; Is there a 64 bit version of EQC for Windows? : No, because the underlying GiNaC and CLN libraries will not compile for that platform yet. A 64 bit version for Unix platforms should be possible to compile from source, though.
+
+== Copyright ==
+
+EQC Copyright 2002-2018 Jan Rheinländer, jrheinlaender@users.sourceforge.net
+
+This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
&amp;lt;/number&amp;gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jan Rheinlaender</dc:creator><pubDate>Sat, 22 Jul 2023 17:23:47 -0000</pubDate><guid isPermaLink="false">https://sourceforge.neta2de603d806c6e545d0926e70c871d7f9735f9bb</guid></item></channel></rss>