* Bug 9221: %chars constant added (selected sets of unicode symbols) 65/21665/4
Samuel GOUGEON [Fri, 1 Jan 2021 17:27:51 +0000 (18:27 +0100)]
  http://bugzilla.scilab.org/9221

  %chars proposed page (PDF): http://bugzilla.scilab.org/attachment.cgi?id=5210

Change-Id: I52b18632faddfc11ad131a7cdae7314d18253edb

scilab/CHANGES.md
scilab/etc/scilab.start
scilab/modules/core/help/en_US/variables/predefined/percentchars.xml [new file with mode: 0644]
scilab/modules/core/help/ru_RU/variables/predefined/percentchars.xml [new file with mode: 0644]
scilab/modules/core/macros/percentchars.sci [new file with mode: 0644]
scilab/modules/ui_data/src/cpp/BrowseVarManager.cpp

index 12c75f0..2fd4a24 100644 (file)
@@ -196,6 +196,7 @@ Feature changes and additions
   - It can now sort any sparse 2D matrix, in all `g, r, c, lr, lc` methods, including sparse booleans and in multi-level mode. It was formerly limited to sparse real or complex vectors and only to the `g` mode.
   - Any hypermatrix can be sorted along a dimension > 2.
 * `unique` is enabled for any 2D sparse arrays, in simple, 'c' and 'r' modes.
+* %chars constant added, to easily access to some selected sets of unicode symbols.
 
 Help pages:
 -----------
@@ -278,6 +279,7 @@ Bug Fixes
 * [#7117](https://bugzilla.scilab.org/7117): `findobj()` could not search within given object.
 * [#8059](https://bugzilla.scilab.org/8059): A local `.wgetrc` config file could make troubles in `atomsDownload`.
 * [#8378](https://bugzilla.scilab.org/8378): Datatip `ContextMenu => Delete last datatip` was useless.
+* [#9221](https://bugzilla.scilab.org/9221): There was no way in Scilab to easily access to sets of unicode symbols like greek letters, etc.
 * [#9909](https://bugzilla.scilab.org/9909): In the help browser, add a way to open the online version of the current page.
 * [#10476](https://bugzilla.scilab.org/10476): From `browsevar`, displaying the content of lists, structures, cells, or other custom tlists or mlists was not possible.
 * [#12418](https://bugzilla.scilab.org/12418): Using bvode() with "continuation", i.e. `ipar(9) > 1` led to an error.
index 949509b..872f33d 100644 (file)
@@ -76,6 +76,9 @@ if getos() <> "Windows" then
 end
 setenv("VERSION", getversion());
 
+// Add %chars constant ================================================
+%chars = percentchars()
+
 // ATOMS ===============================================================
 if with_module("atoms") then
   atomsSystemInit();
diff --git a/scilab/modules/core/help/en_US/variables/predefined/percentchars.xml b/scilab/modules/core/help/en_US/variables/predefined/percentchars.xml
new file mode 100644 (file)
index 0000000..9ebc9c2
--- /dev/null
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2020 - Samuel GOUGEON
+ *
+ * This file is hereby licensed under the terms of the GNU GPL v2.0,
+ * pursuant to article 5.3.4 of the CeCILL v.2.1.
+ * This file was originally licensed under the terms of the CeCILL v2.1,
+ * and continues to be available under such terms.
+ * For more information, see the COPYING file which you should have received
+ * along with this program.
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
+         xmlns:svg="http://www.w3.org/2000/svg" xmlns:db="http://docbook.org/ns/docbook"
+         xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="percentchars">
+    <refnamediv>
+        <refname>%chars</refname>
+        <refpurpose>Selected sets of Unicode characters</refpurpose>
+    </refnamediv>
+    <refsynopsisdiv>
+        <title>Syntax</title>
+        <synopsis>%chars</synopsis>
+    </refsynopsisdiv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            <emphasis role="bold">%chars</emphasis> is a Scilab constant made
+            of a structure gathering various sets of Unicode characters.
+        </para>
+        <para>
+            %chars aims to easily access to greek letters, most frequent mathematical
+            symbols, arrows, etc. After displaying %chars in the console or displaying this page in
+            the help browser, copy/pasting selected characters wherever they are needed becomes
+            trivial and very handy.
+        </para>
+        <para>
+            In many simple situations -- when setting legends in graphics, writing some
+            help pages or some other documentation, etc, using ready-to-read special characters
+            instead of not-rendered raw LaTeX technical expressions is enough and helpful.
+        </para>
+        <important>
+            Character sets provided by %chars must not be considered as fixed and definitive.
+            The number of sets, their names, hierarchy, and order can vary in the future,
+            as well as the order of characters in the sets. In addition, a given character
+            may belong to several sets.
+        </important>
+        <note>
+            The full display of all %chars contents in the console may require tuning the
+            <emphasis>General:Environment/Containers display depth</emphasis> parameter
+            in the Preferences.
+        </note>
+    </refsection>
+    <refsection>
+        <title>Examples</title>
+        <programlisting role="example"><![CDATA[
+%chars
+     ]]></programlisting>
+        <screen><![CDATA[
+--> %chars
+ %chars  =
+  greek: struct with fields:
+      lower = "αβδεϵζηθικλμνξοπρστυφϕχψωάϐέήϑίϊϰόϱςύϋΰϖώ"
+      upper = "ΑΒΓΔΕΖΗΘϴΙΪΚΛΜΝΞΟΠΡΣΤΥΫΦΧΨΩ KΩ℧"
+  subsupscript = "₀₁₂₃₄₅₆₇₈₉₊₋₌₍ₐₕₖₗₘₙₒₚₛₜₓ₎ ⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽ªⁱⁿº⁾"
+  maths: struct with fields:
+      frac = "½ ⅓ ¼ ⅕ ⅙ ⅛ ⅔ ⅖ ¾ ⅗ ⅜ ⅘ ⅚ ⅝ ⅞"
+      sets = "ℂⅅℍℕℙℚℝℤ∉∈∊∍∋∌∅∖⋂∩⋃∪⊂⊆⊄⊅⊇⊃⋐⋑⋒⋓"
+      operators = "−±∓∔÷×∏∐∑√∛∜⋅⋆⊕⊖⊝⊗⊘⊙⊚⊛⊜⊞⊟⊠⊡"
+      comparisons = "⋘≪≤≲≳≥≫⋙≠≃≄≅≈∽∝≍≐≔≕≝"
+      integdiff = "∂∇∆∫∬∭∮∯∰∱⨑∲"
+      geometry = "°′″∟⊾∠∡∢⊥∥∦∺∻≎⊿⋕"
+      logical = "∀∃∄∧∨⋀⋁⊼⊽⊻∁∴∵∎≍"
+      misc = "⋮⋰⋯⋱ ′ ″ ∞ ‰ ‱"
+  physics = "Å ℃ ℉ ħ"
+  arrows: struct with fields:
+      base = "←↖↑↗→↘↓↙↔↕↵↱↴☇⇐⇑⇒⇓⇔↺↻⊣⊥⊢⊤"
+      thick = "⬅⬆➞⬇➚➙➘➔➜➡➥➦➧➨➼➽"
+  symbols = "…⋈⋔⋄♢◊♤♧♡♦♠♣♥©®℗Ⓢ™℡♀♂⌘✠♻☎«»◬⨺⨹⨻¶"
+  stars = "⋆★☆✫✯✰✭✡⊛⍟✪❂✻✼✹✸✶"
+  currencies = "¤ $ ¢ € £ ¥ 円 元 ₪ ฿ ¢ ₫ ₣"
+  lang: struct with fields:
+      latin: struct with fields:
+          voydiac = "áàâãäāăåéêèëēěėíîïóòôõöőōúùûŭũūůüűýŷÿ"
+          condiac = "ćĉčçċďđǵĜ ğġĥħĵķĺļłńňņŕřŗśŝšşťţŵźžż"
+          special = "æ Æ œ Œ ℬ ъ Ъ Þ þ ⅆ ℇ ℈ ℰ ƒ ⨍ ℊ ℱ ℏ ℎ ℋ ℌ ℐ ℑ ℳ № ℘ ℛ ℜ"
+      LATIN: struct with fields:
+          voydiac = "ÁÀÂÃÄĀĂÅÉÊÈËĒĚĖÍÎÏÓÒÔÕÖŐŌÚÙÛŬŨŪŮÜŰÝŶŸ"
+          condiac = "ĆĈČĊÇĎĐ ĝĢĞĠĤĦĴĶĹĻŁŃŇŅŔŘŖŚŜŠŞŤŢŴŹŽŻ"
+      russian = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
+      RUSSIAN = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
+      japanese: struct with fields:
+          hiragana: struct with fields:
+              a = "あかさたなはまやらわ がざだばぱ"
+              e = "えけせてねへめ れゑ げぜでべぺ"
+              i = "いきしちにひみ りゐ ぎじぢびぴ"
+              o = "おこそとのほもよろをんごぞどぽ"
+              u = "うくすつぬふむゆる  ぐずづぶぷ"
+      arabic: struct with fields:
+          alone1 = "ش س ز ر ذ د خ ح ج ث ت ب ا ء"
+          alone2 = "ي و ه ن م ل ك ق ف غ ع ظ ط ض ص"
+]]></screen>
+    </refsection>
+    <refsection role="see also">
+        <title></title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="xlfont">xlfont</link>
+            </member>
+            <member>
+                <link linkend="math_rendering_features_in_graphic">LaTeX in Scilab</link>
+            </member>
+            <member>
+                <link linkend="console">console</link>
+            </member>
+            <member>
+                <link linkend="ascii">ascii</link>
+            </member>
+        </simplelist>
+    </refsection>
+    <refsection role="history">
+        <title>History</title>
+        <revhistory>
+            <revision>
+                <revnumber>6.1.1</revnumber>
+                <revdescription>
+                    %chars introduced.
+                </revdescription>
+            </revision>
+        </revhistory>
+    </refsection>
+</refentry>
+
diff --git a/scilab/modules/core/help/ru_RU/variables/predefined/percentchars.xml b/scilab/modules/core/help/ru_RU/variables/predefined/percentchars.xml
new file mode 100644 (file)
index 0000000..9fb55d8
--- /dev/null
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2020 - Samuel GOUGEON
+ *
+ * This file is hereby licensed under the terms of the GNU GPL v2.0,
+ * pursuant to article 5.3.4 of the CeCILL v.2.1.
+ * This file was originally licensed under the terms of the CeCILL v2.1,
+ * and continues to be available under such terms.
+ * For more information, see the COPYING file which you should have received
+ * along with this program.
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
+         xmlns:svg="http://www.w3.org/2000/svg" xmlns:db="http://docbook.org/ns/docbook"
+         xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="percentchars">
+    <refnamediv>
+        <refname>%chars</refname>
+        <refpurpose>Избранные наборы символов Unicode</refpurpose>
+    </refnamediv>
+    <refsynopsisdiv>
+        <title>Синтаксис</title>
+        <synopsis>%chars</synopsis>
+    </refsynopsisdiv>
+    <refsection>
+        <title>Описание</title>
+        <para>
+            <emphasis role="bold">%chars</emphasis> является константой Scilab,
+            сделанной из структуры, сбором различных наборов символов Unicode.
+        </para>
+        <para>
+            <literal>%chars</literal> предназначена для лёгкого доступа к греческим
+            буквам, наиболее часто встречающимся математическим символам, стрелкам
+            и т.д. После отображения <literal>%chars</literal> в консоли или отображая
+            эту страницу в браузере справки, копирование/вставка выбранных символов
+            становится тривиальной и очень удобной, где бы то ни было.
+        </para>
+        <para>
+            Во многих простых ситуациях - при вставке легенды в графики, написании
+            некоторых страниц справки или иной документации и т.д., довольно удобно
+            и приятно использование готовых к чтению специальных символов вместо
+            несгенерированных сырых технических LaTeX-выражений.
+        </para>
+        <important>
+            Наборы символов, предоставляемые <literal>%chars</literal> не должны
+            рассматриваться, как фиксированные и определённые. Число наборов, их
+            имена, иерархия и порядок могут изменяться со временем, так же как и
+            порядок символов в наборах. К тому же указанные символы могут принадлежать
+            к нескольким наборам.
+        </important>
+        <note>
+            Полное отображение всего содержимого <literal>%chars</literal> в командном
+            окне может потребовать изменения параметра <emphasis>Общее:глубина
+            отображения Среды/Контейнеров</emphasis> в Настройках.
+        </note>
+    </refsection>
+    <refsection>
+        <title>Примеры</title>
+        <programlisting role="example"><![CDATA[
+%chars
+     ]]></programlisting>
+        <screen><![CDATA[
+--> %chars
+ %chars  =
+  greek: struct with fields:
+      lower = "αβδεϵζηθικλμνξοπρστυφϕχψωάϐέήϑίϊϰόϱςύϋΰϖώ"
+      upper = "ΑΒΓΔΕΖΗΘϴΙΪΚΛΜΝΞΟΠΡΣΤΥΫΦΧΨΩ KΩ℧"
+  subsupscript = "₀₁₂₃₄₅₆₇₈₉₊₋₌₍ₐₕₖₗₘₙₒₚₛₜₓ₎ ⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽ªⁱⁿº⁾"
+  maths: struct with fields:
+      frac = "½ ⅓ ¼ ⅕ ⅙ ⅛ ⅔ ⅖ ¾ ⅗ ⅜ ⅘ ⅚ ⅝ ⅞"
+      sets = "ℂⅅℍℕℙℚℝℤ∉∈∊∍∋∌∅∖⋂∩⋃∪⊂⊆⊄⊅⊇⊃⋐⋑⋒⋓"
+      operators = "−±∓∔÷×∏∐∑√∛∜⋅⋆⊕⊖⊝⊗⊘⊙⊚⊛⊜⊞⊟⊠⊡"
+      comparisons = "⋘≪≤≲≳≥≫⋙≠≃≄≅≈∽∝≍≐≔≕≝"
+      integdiff = "∂∇∆∫∬∭∮∯∰∱⨑∲"
+      geometry = "°′″∟⊾∠∡∢⊥∥∦∺∻≎⊿⋕"
+      logical = "∀∃∄∧∨⋀⋁⊼⊽⊻∁∴∵∎≍"
+      misc = "⋮⋰⋯⋱ ′ ″ ∞ ‰ ‱"
+  physics = "Å ℃ ℉ ħ"
+  arrows: struct with fields:
+      base = "←↖↑↗→↘↓↙↔↕↵↱↴☇⇐⇑⇒⇓⇔↺↻⊣⊥⊢⊤"
+      thick = "⬅⬆➞⬇➚➙➘➔➜➡➥➦➧➨➼➽"
+  symbols = "…⋈⋔⋄♢◊♤♧♡♦♠♣♥©®℗Ⓢ™℡♀♂⌘✠♻☎«»◬⨺⨹⨻¶"
+  stars = "⋆★☆✫✯✰✭✡⊛⍟✪❂✻✼✹✸✶"
+  currencies = "¤ $ ¢ € £ ¥ 円 元 ₪ ฿ ¢ ₫ ₣"
+  lang: struct with fields:
+      latin: struct with fields:
+          voydiac = "áàâãäāăåéêèëēěėíîïóòôõöőōúùûŭũūůüűýŷÿ"
+          condiac = "ćĉčçċďđǵĜ ğġĥħĵķĺļłńňņŕřŗśŝšşťţŵźžż"
+          special = "æ Æ œ Œ ℬ ъ Ъ Þ þ ⅆ ℇ ℈ ℰ ƒ ⨍ ℊ ℱ ℏ ℎ ℋ ℌ ℐ ℑ ℳ № ℘ ℛ ℜ"
+      LATIN: struct with fields:
+          voydiac = "ÁÀÂÃÄĀĂÅÉÊÈËĒĚĖÍÎÏÓÒÔÕÖŐŌÚÙÛŬŨŪŮÜŰÝŶŸ"
+          condiac = "ĆĈČĊÇĎĐ ĝĢĞĠĤĦĴĶĹĻŁŃŇŅŔŘŖŚŜŠŞŤŢŴŹŽŻ"
+      russian = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
+      RUSSIAN = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
+      japanese: struct with fields:
+          hiragana: struct with fields:
+              a = "あかさたなはまやらわ がざだばぱ"
+              e = "えけせてねへめ れゑ げぜでべぺ"
+              i = "いきしちにひみ りゐ ぎじぢびぴ"
+              o = "おこそとのほもよろをんごぞどぽ"
+              u = "うくすつぬふむゆる  ぐずづぶぷ"
+      arabic: struct with fields:
+          alone1 = "ش س ز ر ذ د خ ح ج ث ت ب ا ء"
+          alone2 = "ي و ه ن م ل ك ق ف غ ع ظ ط ض ص"
+]]></screen>
+    </refsection>
+    <refsection role="see also">
+        <title></title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="xlfont">xlfont</link>
+            </member>
+            <member>
+                <link linkend="math_rendering_features_in_graphic">LaTeX в Scilab</link>
+            </member>
+            <member>
+                <link linkend="console">командное окно</link>
+            </member>
+            <member>
+                <link linkend="ascii">ascii-символы</link>
+            </member>
+        </simplelist>
+    </refsection>
+    <refsection role="history">
+        <title>История</title>
+        <revhistory>
+            <revision>
+                <revnumber>6.1.1</revnumber>
+                <revdescription>
+                    Введены <literal>%chars</literal>.
+                </revdescription>
+            </revision>
+        </revhistory>
+    </refsection>
+</refentry>
diff --git a/scilab/modules/core/macros/percentchars.sci b/scilab/modules/core/macros/percentchars.sci
new file mode 100644 (file)
index 0000000..d6a7c1b
--- /dev/null
@@ -0,0 +1,49 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2020 - Samuel GOUGEON
+//
+// This file is hereby licensed under the terms of the GNU GPL v2.0,
+// pursuant to article 5.3.4 of the CeCILL v.2.1.
+// This file was originally licensed under the terms of the CeCILL v2.1,
+// and continues to be available under such terms.
+// For more information, see the COPYING file which you should have received
+// along with this program.
+
+function %chars = percentchars()
+    // Internal function called by scilab.start
+    // http://bugzilla.scilab.org/9221
+
+    %chars.greek.lower       = "αβδεϵζηθικλμνξοπρστυφϕχψωάϐέήϑίϊϰόϱςύϋΰϖώ";
+    %chars.greek.upper       = "ΑΒΓΔΕΖΗΘϴΙΪΚΛΜΝΞΟΠΡΣΤΥΫΦΧΨΩ KΩ℧";
+    %chars.subsupscript      = "₀₁₂₃₄₅₆₇₈₉₊₋₌₍ₐₕₖₗₘₙₒₚₛₜₓ₎ ⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽ªⁱⁿº⁾";
+    %chars.maths.frac        = "½ ⅓ ¼ ⅕ ⅙ ⅛ ⅔ ⅖ ¾ ⅗ ⅜ ⅘ ⅚ ⅝ ⅞";
+    %chars.maths.sets        = "ℂⅅℍℕℙℚℝℤ∉∈∊∍∋∌∅∖⋂∩⋃∪⊂⊆⊄⊅⊇⊃⋐⋑⋒⋓";
+    %chars.maths.operators   = "−±∓∔÷×∏∐∑√∛∜⋅⋆⊕⊖⊝⊗⊘⊙⊚⊛⊜⊞⊟⊠⊡";
+    %chars.maths.comparisons = "⋘≪≤≲≳≥≫⋙≠≃≄≅≈∽∝≍≐≔≕≝";
+    %chars.maths.integdiff   = "∂∇∆∫∬∭∮∯∰∱⨑∲";
+    %chars.maths.geometry    = "°′″∟⊾∠∡∢⊥∥∦∺∻≎⊿⋕";
+    %chars.maths.logical     = "∀∃∄∧∨⋀⋁⊼⊽⊻∁∴∵∎≍";
+    %chars.maths.misc        = "⋮⋰⋯⋱ ′ ″ ∞ ‰ ‱";
+    %chars.physics           = "Å ℃ ℉ ħ";
+    %chars.arrows.base       = "←↖↑↗→↘↓↙↔↕↵↱↴☇⇐⇑⇒⇓⇔↺↻⊣⊥⊢⊤";
+    %chars.arrows.thick      = "⬅⬆➞⬇➚➙➘➔➜➡➥➦➧➨➼➽";
+    %chars.symbols           = "…⋈⋔⋄♢◊♤♧♡♦♠♣♥©®℗Ⓢ™℡♀♂⌘✠♻☎«»◬⨺⨹⨻¶";
+    %chars.stars             = "⋆★☆✫✯✰✭✡⊛⍟✪❂✻✼✹✸✶";
+    %chars.currencies        = "¤ $ ¢ € £ ¥ 円 元 ₪ ฿ ¢ ₫ ₣";
+
+    %chars.lang.latin = "abcdefghijklmnopqrstuvwxyz";
+    %chars.lang.LATIN = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    %chars.lang.latin.voydiac = "áàâãäāăåéêèëēěėíîïóòôõöőōúùûŭũūůüűýŷÿ";
+    %chars.lang.LATIN.voydiac = "ÁÀÂÃÄĀĂÅÉÊÈËĒĚĖÍÎÏÓÒÔÕÖŐŌÚÙÛŬŨŪŮÜŰÝŶŸ";
+    %chars.lang.latin.condiac = "ćĉčçċďđǵĜ ğġĥħĵķĺļłńňņŕřŗśŝšşťţŵźžż";
+    %chars.lang.LATIN.condiac = "ĆĈČĊÇĎĐ ĝĢĞĠĤĦĴĶĹĻŁŃŇŅŔŘŖŚŜŠŞŤŢŴŹŽŻ";
+    %chars.lang.latin.special = "æ Æ œ Œ ℬ ъ Ъ Þ þ ⅆ ℇ ℈ ℰ ƒ ⨍ ℊ ℱ ℏ ℎ ℋ ℌ ℐ ℑ ℳ № ℘ ℛ ℜ";
+    %chars.lang.russian = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
+    %chars.lang.RUSSIAN = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
+    %chars.lang.japanese.hiragana.a = "あかさたなはまやらわ がざだばぱ";
+    %chars.lang.japanese.hiragana.e = "えけせてねへめ れゑ げぜでべぺ";
+    %chars.lang.japanese.hiragana.i = "いきしちにひみ りゐ ぎじぢびぴ";
+    %chars.lang.japanese.hiragana.o = "おこそとのほもよろをんごぞどぽ";
+    %chars.lang.japanese.hiragana.u = "うくすつぬふむゆる  ぐずづぶぷ";
+    %chars.lang.arabic.alone1 = "ش س ز ر ذ د خ ح ج ث ت ب ا ء";
+    %chars.lang.arabic.alone2 = "ي و ه ن م ل ك ق ف غ ع ظ ط ض ص";
+endfunction
index bbf3bb9..20a5ab4 100644 (file)
@@ -329,47 +329,48 @@ static std::set<string> createScilabDefaultVariablesSet()
 {
     string arr[] =
     {
-        "home",
-        "PWD",
-        "%tk",
-        "%pvm",
-        "MSDOS",
+        "$",
         "%F",
         "%T",
-        "%f",
-        "%t",
+        "%_atoms_cache",
+        "%chars", // Unicode characters
         "%e",
-        "%pi",
-        "%modalWarning",
-        "%nan",
-        "%inf",
-        "SCI",
-        "WSCI",
-        "SCIHOME",
-        "TMPDIR",
-        "%gui",
+        "%eps",
+        "%f",
         "%fftw",
+        "%gui",
         "%helps",
-        "%eps",
-        "%io",
+        "%helps_modules",
         "%i",
-        "demolist",
-        "%z",
+        "%inf",
+        "%io",
+        "%modalWarning",
+        "%nan",
+        "%pi",
+        "%pvm",
         "%s",
-        "$",
+        "%t",
+        "%tk",
         "%toolboxes",
         "%toolboxes_dir",
+        "%z",
+        "MSDOS",
+        "PWD",
+        "SCI",
+        "SCIHOME",
         "TICTOC",
-        "%helps_modules",
-        "%_atoms_cache",
+        "TMPDIR",
+        "WSCI",
+        "demolist",
+        "enull",  // Constant for external object
         "evoid", // Constant for external object
-        "jvoid", // Constant for external object Java (jims)
+        "home",
         "jnull", // Constant for external object Java (jims)
-        "enull"  // Constant for external object
+        "jvoid" // Constant for external object Java (jims)
     };
     int i = 0;
 
-#define NBELEMENT 37
+#define NBELEMENT (sizeof(arr)/sizeof(*(arr)))
     std::set<string> ScilabDefaultVariables;
 
     for (i = 0; i < NBELEMENT; i++)