diff --git a/VERSION.txt b/VERSION.txt index 24d0cec65c5..ae58507eeb3 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -SageMath version 7.6.beta5, Release Date: 2017-02-26 +SageMath version 7.6.rc0, Release Date: 2017-03-12 diff --git a/build/bin/sage-logger b/build/bin/sage-logger index e7e8428c203..fb344eb050d 100755 --- a/build/bin/sage-logger +++ b/build/bin/sage-logger @@ -60,14 +60,17 @@ else SED=cat fi +# Store the current value of V, but do all logging of child processes +# with V=1 to ensure that no information is lost. +currentV=$V +export V=1 + mkdir -p "$logdir" -if [[ "$V" = 0 && $use_prefix = true ]]; then +if [[ "$currentV" = 0 && $use_prefix = true ]]; then # Silent build. # Similar to https://www.gnu.org/software/automake/manual/html_node/Automake-Silent-Rules.html#Automake-Silent-Rules echo "[$logname] installing. Log file: $logfile" - # Use verbose mode for output to logfiles. - export V=1 ( exec>> $logfile 2>&1 ; eval "$cmd" ) status=$? if [[ $status != 0 ]]; then diff --git a/build/make/deps b/build/make/deps index 53b80436b88..11650097ea4 100644 --- a/build/make/deps +++ b/build/make/deps @@ -201,7 +201,7 @@ DOC_DEPENDENCIES = sagelib $(inst_sphinx) $(inst_sagenb) \ | $(SAGERUNTIME) $(inst_maxima) $(inst_networkx) $(inst_scipy) \ $(inst_matplotlib) $(inst_pillow) $(inst_mathjax) $(inst_mpmath) \ $(inst_ipykernel) $(inst_jupyter_client) $(inst_conway_polynomials) \ - $(inst_tachyon) $(inst_jmol) $(inst_thebe) + $(inst_tachyon) $(inst_jmol) $(inst_thebe) $(inst_ipywidgets) doc: doc-html diff --git a/build/pkgs/configure/checksums.ini b/build/pkgs/configure/checksums.ini index 3fde899a2e6..de7bb3c7f48 100644 --- a/build/pkgs/configure/checksums.ini +++ b/build/pkgs/configure/checksums.ini @@ -1,4 +1,4 @@ tarball=configure-VERSION.tar.gz -sha1=baa91f26fce5ea9c83a8749454342948e9a298d7 -md5=27f65dfa1e255f7f569353e49eba4968 -cksum=1946128373 +sha1=6f78567b00c4e2420368526ff172f22a59fa3f4a +md5=c187e0d86960a61d32dbce29ec101b98 +cksum=3689960718 diff --git a/build/pkgs/configure/package-version.txt b/build/pkgs/configure/package-version.txt index c92ba56847b..7fba2b43771 100644 --- a/build/pkgs/configure/package-version.txt +++ b/build/pkgs/configure/package-version.txt @@ -1 +1 @@ -207 +209 diff --git a/build/pkgs/gap3/spkg-install b/build/pkgs/gap3/spkg-install index cf76e226bc9..b8144ac92d1 100755 --- a/build/pkgs/gap3/spkg-install +++ b/build/pkgs/gap3/spkg-install @@ -20,7 +20,7 @@ echo "INSTALL_DIR = $INSTALL_DIR" ## INSTALLATION ########################################### -cd src +cd src/src $MAKE if [ $? -ne 0 ]; then echo >&2 "Error building $PACKAGE_SHORTNAME." diff --git a/build/pkgs/gdb/spkg-install b/build/pkgs/gdb/spkg-install index 01f8c15d332..cbce65083f1 100755 --- a/build/pkgs/gdb/spkg-install +++ b/build/pkgs/gdb/spkg-install @@ -8,7 +8,8 @@ fi cd src -LDFLAGS="${LDFLAGS} -L${SAGE_LOCAL}/lib" +# We add -ltinfo flag to let gdb compile on some 32bit VM, see #22487. +LDFLAGS="${LDFLAGS} -L${SAGE_LOCAL}/lib -ltinfo" export LDFLAGS ./configure --prefix="$SAGE_LOCAL" --libdir="$SAGE_LOCAL/lib" \ diff --git a/build/pkgs/ipywidgets/checksums.ini b/build/pkgs/ipywidgets/checksums.ini index 582ce7982dd..14417ad5174 100644 --- a/build/pkgs/ipywidgets/checksums.ini +++ b/build/pkgs/ipywidgets/checksums.ini @@ -1,4 +1,4 @@ tarball=ipywidgets-VERSION.tar.gz -sha1=f4f57d78fe6e89ef87e9eee31dd9e3f15d1e8601 -md5=317e49cc76353352939c2527920f3ebe -cksum=1256350577 +sha1=3ec713b82cc415ebe63e2971cc7acae28e89d657 +md5=245c978e0ca64b9e686b716c71efb675 +cksum=3038350627 diff --git a/build/pkgs/ipywidgets/package-version.txt b/build/pkgs/ipywidgets/package-version.txt index 05a20a7fd71..09b254e90c6 100644 --- a/build/pkgs/ipywidgets/package-version.txt +++ b/build/pkgs/ipywidgets/package-version.txt @@ -1 +1 @@ -5.2.2.p1 +6.0.0 diff --git a/build/pkgs/ipywidgets/patches/remove-deprecated.patch b/build/pkgs/ipywidgets/patches/remove-deprecated.patch deleted file mode 100644 index b86a076d389..00000000000 --- a/build/pkgs/ipywidgets/patches/remove-deprecated.patch +++ /dev/null @@ -1,130 +0,0 @@ -commit d30916740f09b76f2f4ffc0e3e3b165b475ba032 -Author: Sylvain Corlay -Date: Fri May 20 17:18:52 2016 +0200 - - Remove deprecated code to support old abbreviations - -diff --git a/ipywidgets/widgets/interaction.py b/ipywidgets/widgets/interaction.py -index 2b68317..a58e3e6 100644 ---- a/ipywidgets/widgets/interaction.py -+++ b/ipywidgets/widgets/interaction.py -@@ -86,24 +86,9 @@ def _widget_abbrev_single_value(o): - def _widget_abbrev(o): - """Make widgets from abbreviations: single values, lists or tuples.""" - if isinstance(o, list): -- # -------------------------------------------------------------------- -- # Handle deprecated behavior of using lists of length 2 or 3 in place -- # of tuples to specify slider widget attributes. This will be removed -- # in ipywidgets 6.0. -- if len(o) in [2, 3] and all(isinstance(x, Real) for x in o): -- warn("For Sliders, use a tuple: %s" % (tuple(o),), DeprecationWarning) -- return _widget_abbrev(tuple(o)) -- # -------------------------------------------------------------------- - return Dropdown(options=[unicode_type(k) for k in o]) - - elif isinstance(o, tuple): -- # -------------------------------------------------------------------- -- # Handle deprecated behavior of using tuples for selection widget. This -- # will be removed in ipywidgets 6.0. -- if any(not isinstance(x, Real) for x in o): -- warn("For Selection widgets, use a list %s" %(list(o),), DeprecationWarning) -- return Dropdown(options=[unicode_type(k) for k in o]) -- # -------------------------------------------------------------------- - if _matches(o, (Real, Real)): - min, max, value = _get_min_max_value(o[0], o[1]) - if all(isinstance(_, Integral) for _ in o): -diff --git a/ipywidgets/widgets/tests/test_interaction.py b/ipywidgets/widgets/tests/test_interaction.py -index 5616cfc..0685aae 100644 ---- a/ipywidgets/widgets/tests/test_interaction.py -+++ b/ipywidgets/widgets/tests/test_interaction.py -@@ -154,87 +154,17 @@ def test_single_value_int(): - readout=True, - ) - --def test_list_tuple_2_int(): -- with nt.assert_raises(ValueError): -- c = interactive(f, tup=(1,1)) -- with nt.assert_raises(ValueError): -- c = interactive(f, tup=(1,-1)) -- for min, max in [ (0,1), (1,10), (1,2), (-5,5), (-20,-19) ]: -- c = interactive(f, tup=(min, max), lis=[min, max]) -- nt.assert_equal(len(c.children), 2) -- d = dict( -- cls=widgets.IntSlider, -- min=min, -- max=max, -- step=1, -- readout=True, -- ) -- check_widgets(c, tup=d, lis=d) -- --def test_list_tuple_3_int(): -- with nt.assert_raises(ValueError): -- c = interactive(f, tup=(1,2,0)) -- with nt.assert_raises(ValueError): -- c = interactive(f, tup=(1,2,-1)) -- for min, max, step in [ (0,2,1), (1,10,2), (1,100,2), (-5,5,4), (-100,-20,4) ]: -- c = interactive(f, tup=(min, max, step), lis=[min, max, step]) -- nt.assert_equal(len(c.children), 2) -- d = dict( -- cls=widgets.IntSlider, -- min=min, -- max=max, -- step=step, -- readout=True, -- ) -- check_widgets(c, tup=d, lis=d) -- --def test_list_tuple_2_float(): -- with nt.assert_raises(ValueError): -- c = interactive(f, tup=(1.0,1.0)) -- with nt.assert_raises(ValueError): -- c = interactive(f, tup=(0.5,-0.5)) -- for min, max in [ (0.5, 1.5), (1.1,10.2), (1,2.2), (-5.,5), (-20,-19.) ]: -- c = interactive(f, tup=(min, max), lis=[min, max]) -- nt.assert_equal(len(c.children), 2) -- d = dict( -- cls=widgets.FloatSlider, -- min=min, -- max=max, -- step=.1, -- readout=True, -- ) -- check_widgets(c, tup=d, lis=d) -- --def test_list_tuple_3_float(): -- with nt.assert_raises(ValueError): -- c = interactive(f, tup=(1,2,0.0)) -- with nt.assert_raises(ValueError): -- c = interactive(f, tup=(-1,-2,1.)) -- with nt.assert_raises(ValueError): -- c = interactive(f, tup=(1,2.,-1.)) -- for min, max, step in [ (0.,2,1), (1,10.,2), (1,100,2.), (-5.,5.,4), (-100,-20.,4.) ]: -- c = interactive(f, tup=(min, max, step), lis=[min, max, step]) -- nt.assert_equal(len(c.children), 2) -- d = dict( -- cls=widgets.FloatSlider, -- min=min, -- max=max, -- step=step, -- readout=True, -- ) -- check_widgets(c, tup=d, lis=d) -- - def test_list_tuple_str(): - values = ['hello', 'there', 'guy'] - first = values[0] -- c = interactive(f, tup=tuple(values), lis=list(values)) -- nt.assert_equal(len(c.children), 2) -+ c = interactive(f, lis=list(values)) -+ nt.assert_equal(len(c.children), 1) - d = dict( - cls=widgets.Dropdown, - value=first, - options=values - ) -- check_widgets(c, tup=d, lis=d) -+ check_widgets(c, lis=d) - - def test_list_tuple_invalid(): - for bad in [ diff --git a/build/pkgs/ipywidgets/patches/widget_repr.patch b/build/pkgs/ipywidgets/patches/widget_repr.patch new file mode 100644 index 00000000000..2611eb278a2 --- /dev/null +++ b/build/pkgs/ipywidgets/patches/widget_repr.patch @@ -0,0 +1,45 @@ +commit aadd75cb60d73638a24c8f69e5fbd0c5c8a44780 +Author: Jeroen Demeyer +Date: Thu Jan 5 17:34:52 2017 +0100 + + Add __repr__ to Widget for testing/debugging + +diff --git a/ipywidgets/widgets/widget.py b/ipywidgets/widgets/widget.py +index 8f4abd3..db474ac 100644 +--- a/ipywidgets/widgets/widget.py ++++ b/ipywidgets/widgets/widget.py +@@ -123,6 +123,34 @@ class Widget(LoggingConfigurable): + widgets = {} + widget_types = {} + ++ def __repr__(self): ++ """ ++ Textual representation of this widget, mainly used for testing ++ and debugging. ++ """ ++ # List of attributes to show with default values. The attribute ++ # is printed if it exists and its value is not equal to this ++ # default value. ++ attributes = [("value", None), ++ ("min", None), ++ ("max", None), ++ ("step", None), ++ ("options", None), ++ ("description", ""), ++ ("children", [])] ++ r = "" ++ for (attr, default) in attributes: ++ try: ++ v = getattr(self, attr) ++ except AttributeError: ++ continue ++ if default == v: ++ continue ++ if r: ++ r += ", " ++ r += attr + "=" + repr(v) ++ return "%s(%s)" % (type(self).__name__, r) ++ + @staticmethod + def on_widget_constructed(callback): + """Registers a callback to be called when a widget is constructed. diff --git a/build/pkgs/latte_int/dependencies b/build/pkgs/latte_int/dependencies index af4589f3c69..de6feb2e92e 100644 --- a/build/pkgs/latte_int/dependencies +++ b/build/pkgs/latte_int/dependencies @@ -1,4 +1,4 @@ -$(MP_LIBRARY) ntl 4ti2 cddlib +$(MP_LIBRARY) ntl 4ti2 cddlib lrslib lidia ---------- All lines of this file are ignored except the first. diff --git a/build/pkgs/libfplll/spkg-install b/build/pkgs/libfplll/spkg-install index 489d532b7c2..e96c2526de5 100755 --- a/build/pkgs/libfplll/spkg-install +++ b/build/pkgs/libfplll/spkg-install @@ -57,7 +57,7 @@ if [ $? -ne 0 ]; then fi echo "Now building fplll..." -$MAKE V=1 +$MAKE if [ $? -ne 0 ]; then echo "Error building fplll" exit 1 diff --git a/build/pkgs/lrslib/checksums.ini b/build/pkgs/lrslib/checksums.ini index b126d123f27..88276625302 100644 --- a/build/pkgs/lrslib/checksums.ini +++ b/build/pkgs/lrslib/checksums.ini @@ -1,4 +1,4 @@ tarball=lrslib-VERSION.tar.gz -sha1=7d1b187abd8dbb7ff2c8d7fdf0361a4fc27bb087 -md5=17fcc81d6153caf9b1e881566fdb70c1 -cksum=1582540417 +sha1=c644600ca4a51eb08e61ba175e1d4ec999dc3e4b +md5=bb435ccdd5faf292102e246827926680 +cksum=3830123478 diff --git a/build/pkgs/lrslib/package-version.txt b/build/pkgs/lrslib/package-version.txt index 67e8cc7de0c..6ceb12bb4fd 100644 --- a/build/pkgs/lrslib/package-version.txt +++ b/build/pkgs/lrslib/package-version.txt @@ -1 +1 @@ -062+autotools-2016-09-08 +062+autotools-2017-03-03 diff --git a/build/pkgs/ncurses/SPKG.txt b/build/pkgs/ncurses/SPKG.txt index 74eb9bb759d..9b8f450a1c7 100644 --- a/build/pkgs/ncurses/SPKG.txt +++ b/build/pkgs/ncurses/SPKG.txt @@ -38,8 +38,4 @@ None == Special Update/Build Instructions == -=== Patches === - - * xopen_source.patch: remove harmful check from aclocal.m4 which may - reintroduce XOPEN_SOURCE on systems where it should not be used. - +None diff --git a/build/pkgs/ncurses/checksums.ini b/build/pkgs/ncurses/checksums.ini index 24699f0ab9f..27620e7d25a 100644 --- a/build/pkgs/ncurses/checksums.ini +++ b/build/pkgs/ncurses/checksums.ini @@ -1,4 +1,4 @@ -tarball=ncurses-VERSION.tar.bz2 -sha1=c9e9e398a9bcfeb1cc005c4d3eac0998f3445ff2 -md5=b2996284ae18610aa2a4e5a968c5e1f3 -cksum=3072370532 +tarball=ncurses-VERSION.tar.gz +sha1=acd606135a5124905da770803c05f1f20dd3b21c +md5=ee13d052e1ead260d7c28071f46eefb1 +cksum=1470804880 diff --git a/build/pkgs/ncurses/package-version.txt b/build/pkgs/ncurses/package-version.txt index a2a77b0243f..e0ea36feef6 100644 --- a/build/pkgs/ncurses/package-version.txt +++ b/build/pkgs/ncurses/package-version.txt @@ -1 +1 @@ -5.9.20131221 +6.0 diff --git a/build/pkgs/ncurses/patches/xopen_source.patch b/build/pkgs/ncurses/patches/xopen_source.patch deleted file mode 100644 index cbb128b4bab..00000000000 --- a/build/pkgs/ncurses/patches/xopen_source.patch +++ /dev/null @@ -1,313 +0,0 @@ -diff -druN ncurses-5.9.20131221.orig/aclocal.m4 ncurses-5.9.20131221/aclocal.m4 ---- ncurses-5.9.20131221.orig/aclocal.m4 2013-11-23 10:20:50.000000000 -0800 -+++ ncurses-5.9.20131221/aclocal.m4 2014-02-07 06:00:43.277597929 -0800 -@@ -7198,32 +7198,3 @@ - CF_ADD_CFLAGS($cf_xopen_source) - fi - --dnl In anything but the default case, we may have system-specific setting --dnl which is still not guaranteed to provide all of the entrypoints that --dnl _XOPEN_SOURCE would yield. --if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then -- AC_MSG_CHECKING(if _XOPEN_SOURCE really is set) -- AC_TRY_COMPILE([#include ],[ --#ifndef _XOPEN_SOURCE --make an error --#endif], -- [cf_XOPEN_SOURCE_set=yes], -- [cf_XOPEN_SOURCE_set=no]) -- AC_MSG_RESULT($cf_XOPEN_SOURCE_set) -- if test $cf_XOPEN_SOURCE_set = yes -- then -- AC_TRY_COMPILE([#include ],[ --#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE --make an error --#endif], -- [cf_XOPEN_SOURCE_set_ok=yes], -- [cf_XOPEN_SOURCE_set_ok=no]) -- if test $cf_XOPEN_SOURCE_set_ok = no -- then -- AC_MSG_WARN(_XOPEN_SOURCE is lower than requested) -- fi -- else -- CF_TRY_XOPEN_SOURCE -- fi --fi --]) -diff -druN ncurses-5.9.20131221.orig/configure ncurses-5.9.20131221/configure ---- ncurses-5.9.20131221.orig/configure 2013-12-14 16:44:11.000000000 -0800 -+++ ncurses-5.9.20131221/configure 2014-02-07 06:01:25.747602176 -0800 -@@ -8119,273 +8119,6 @@ - - fi - --if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then -- echo "$as_me:8123: checking if _XOPEN_SOURCE really is set" >&5 --echo $ECHO_N "checking if _XOPEN_SOURCE really is set... $ECHO_C" >&6 -- cat >conftest.$ac_ext <<_ACEOF --#line 8126 "configure" --#include "confdefs.h" --#include --int --main () --{ -- --#ifndef _XOPEN_SOURCE --make an error --#endif -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:8141: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -- ac_status=$? -- echo "$as_me:8144: \$? = $ac_status" >&5 -- (exit $ac_status); } && -- { ac_try='test -s conftest.$ac_objext' -- { (eval echo "$as_me:8147: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&5 -- ac_status=$? -- echo "$as_me:8150: \$? = $ac_status" >&5 -- (exit $ac_status); }; }; then -- cf_XOPEN_SOURCE_set=yes --else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --cf_XOPEN_SOURCE_set=no --fi --rm -f conftest.$ac_objext conftest.$ac_ext -- echo "$as_me:8159: result: $cf_XOPEN_SOURCE_set" >&5 --echo "${ECHO_T}$cf_XOPEN_SOURCE_set" >&6 -- if test $cf_XOPEN_SOURCE_set = yes -- then -- cat >conftest.$ac_ext <<_ACEOF --#line 8164 "configure" --#include "confdefs.h" --#include --int --main () --{ -- --#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE --make an error --#endif -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:8179: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -- ac_status=$? -- echo "$as_me:8182: \$? = $ac_status" >&5 -- (exit $ac_status); } && -- { ac_try='test -s conftest.$ac_objext' -- { (eval echo "$as_me:8185: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&5 -- ac_status=$? -- echo "$as_me:8188: \$? = $ac_status" >&5 -- (exit $ac_status); }; }; then -- cf_XOPEN_SOURCE_set_ok=yes --else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --cf_XOPEN_SOURCE_set_ok=no --fi --rm -f conftest.$ac_objext conftest.$ac_ext -- if test $cf_XOPEN_SOURCE_set_ok = no -- then -- { echo "$as_me:8199: WARNING: _XOPEN_SOURCE is lower than requested" >&5 --echo "$as_me: WARNING: _XOPEN_SOURCE is lower than requested" >&2;} -- fi -- else -- --echo "$as_me:8204: checking if we should define _XOPEN_SOURCE" >&5 --echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6 --if test "${cf_cv_xopen_source+set}" = set; then -- echo $ECHO_N "(cached) $ECHO_C" >&6 --else -- -- cat >conftest.$ac_ext <<_ACEOF --#line 8211 "configure" --#include "confdefs.h" -- --#include --#include --#include -- --int --main () --{ -- --#ifndef _XOPEN_SOURCE --make an error --#endif -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:8230: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -- ac_status=$? -- echo "$as_me:8233: \$? = $ac_status" >&5 -- (exit $ac_status); } && -- { ac_try='test -s conftest.$ac_objext' -- { (eval echo "$as_me:8236: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&5 -- ac_status=$? -- echo "$as_me:8239: \$? = $ac_status" >&5 -- (exit $ac_status); }; }; then -- cf_cv_xopen_source=no --else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --cf_save="$CPPFLAGS" -- CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" -- cat >conftest.$ac_ext <<_ACEOF --#line 8248 "configure" --#include "confdefs.h" -- --#include --#include --#include -- --int --main () --{ -- --#ifdef _XOPEN_SOURCE --make an error --#endif -- ; -- return 0; --} --_ACEOF --rm -f conftest.$ac_objext --if { (eval echo "$as_me:8267: \"$ac_compile\"") >&5 -- (eval $ac_compile) 2>&5 -- ac_status=$? -- echo "$as_me:8270: \$? = $ac_status" >&5 -- (exit $ac_status); } && -- { ac_try='test -s conftest.$ac_objext' -- { (eval echo "$as_me:8273: \"$ac_try\"") >&5 -- (eval $ac_try) 2>&5 -- ac_status=$? -- echo "$as_me:8276: \$? = $ac_status" >&5 -- (exit $ac_status); }; }; then -- cf_cv_xopen_source=no --else -- echo "$as_me: failed program was:" >&5 --cat conftest.$ac_ext >&5 --cf_cv_xopen_source=$cf_XOPEN_SOURCE --fi --rm -f conftest.$ac_objext conftest.$ac_ext -- CPPFLAGS="$cf_save" -- --fi --rm -f conftest.$ac_objext conftest.$ac_ext -- --fi --echo "$as_me:8291: result: $cf_cv_xopen_source" >&5 --echo "${ECHO_T}$cf_cv_xopen_source" >&6 -- --if test "$cf_cv_xopen_source" != no ; then -- --CFLAGS=`echo "$CFLAGS" | \ -- sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ -- -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` -- --CPPFLAGS=`echo "$CPPFLAGS" | \ -- sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ -- -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` -- -- cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" -- --cf_fix_cppflags=no --cf_new_cflags= --cf_new_cppflags= --cf_new_extra_cppflags= -- --for cf_add_cflags in $cf_temp_xopen_source --do --case $cf_fix_cppflags in --no) -- case $cf_add_cflags in #(vi -- -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi -- case $cf_add_cflags in -- -D*) -- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` -- -- test "${cf_add_cflags}" != "${cf_tst_cflags}" \ -- && test -z "${cf_tst_cflags}" \ -- && cf_fix_cppflags=yes -- -- if test $cf_fix_cppflags = yes ; then -- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" -- continue -- elif test "${cf_tst_cflags}" = "\"'" ; then -- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" -- continue -- fi -- ;; -- esac -- case "$CPPFLAGS" in -- *$cf_add_cflags) #(vi -- ;; -- *) #(vi -- case $cf_add_cflags in #(vi -- -D*) -- cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` -- --CPPFLAGS=`echo "$CPPFLAGS" | \ -- sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \ -- -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'` -- -- ;; -- esac -- cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" -- ;; -- esac -- ;; -- *) -- cf_new_cflags="$cf_new_cflags $cf_add_cflags" -- ;; -- esac -- ;; --yes) -- cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" -- -- cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` -- -- test "${cf_add_cflags}" != "${cf_tst_cflags}" \ -- && test -z "${cf_tst_cflags}" \ -- && cf_fix_cppflags=no -- ;; --esac --done -- --if test -n "$cf_new_cflags" ; then -- -- CFLAGS="$CFLAGS $cf_new_cflags" --fi -- --if test -n "$cf_new_cppflags" ; then -- -- CPPFLAGS="$CPPFLAGS $cf_new_cppflags" --fi -- --if test -n "$cf_new_extra_cppflags" ; then -- -- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" --fi -- --fi -- -- fi --fi -- - # Work around breakage on OS X - - echo "$as_me:8391: checking if SIGWINCH is defined" >&5 diff --git a/build/pkgs/patchbot/SPKG.txt b/build/pkgs/patchbot/SPKG.txt deleted file mode 100644 index c34994b3818..00000000000 --- a/build/pkgs/patchbot/SPKG.txt +++ /dev/null @@ -1,26 +0,0 @@ -= SageMath patchbot = - -== Description == - -Apply branches and run tests on open Sage tickets. - -The patchbot is used to automate the testing of git branches. It has two -different aspects: a server side and a client side. - -Instructions for using the client side can be found at - -http://wiki.sagemath.org/buildbot/details - -== License == - -GPLv2+ - -== Upstream Contact == - -Robert Bradshaw -Frédéric Chapoton -https://github.com/robertwb/sage-patchbot/ - -== Dependencies == - -python, python-dateutil, sage-scripts diff --git a/build/pkgs/patchbot/checksums.ini b/build/pkgs/patchbot/checksums.ini deleted file mode 100644 index 02a49e870c8..00000000000 --- a/build/pkgs/patchbot/checksums.ini +++ /dev/null @@ -1,4 +0,0 @@ -tarball=patchbot-VERSION.tar.bz2 -sha1=bb80accde00279777934f7ab6f28b4789d94fbda -md5=3f6b9c30f0be34f03cce1520c4a5b8a9 -cksum=1882429436 diff --git a/build/pkgs/patchbot/dependencies b/build/pkgs/patchbot/dependencies deleted file mode 100644 index 4e1e0144211..00000000000 --- a/build/pkgs/patchbot/dependencies +++ /dev/null @@ -1 +0,0 @@ -# No dependencies diff --git a/build/pkgs/patchbot/package-version.txt b/build/pkgs/patchbot/package-version.txt deleted file mode 100644 index 35d16fb1a74..00000000000 --- a/build/pkgs/patchbot/package-version.txt +++ /dev/null @@ -1 +0,0 @@ -2.5.7 diff --git a/build/pkgs/patchbot/spkg-install b/build/pkgs/patchbot/spkg-install deleted file mode 100755 index 5dcc96f4629..00000000000 --- a/build/pkgs/patchbot/spkg-install +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env bash - -if [ "$SAGE_LOCAL" = "" ]; then - echo "SAGE_LOCAL undefined ... exiting"; - echo "Maybe run 'sage -sh'?" - exit 1 -fi - -# Delete any currently existing patchbot -rm -rf "$SAGE_LOCAL/bin/patchbot" - -# Copy into final location. -# The sage-patchbot script knows how to call this... -cp -Rv src "$SAGE_LOCAL/bin/patchbot" diff --git a/build/pkgs/patchbot/type b/build/pkgs/patchbot/type deleted file mode 100644 index 134d9bc32d5..00000000000 --- a/build/pkgs/patchbot/type +++ /dev/null @@ -1 +0,0 @@ -optional diff --git a/build/pkgs/perl_term_readline_gnu/spkg-install b/build/pkgs/perl_term_readline_gnu/spkg-install index f9c8c7dd1c9..8326aa6ac3d 100755 --- a/build/pkgs/perl_term_readline_gnu/spkg-install +++ b/build/pkgs/perl_term_readline_gnu/spkg-install @@ -8,5 +8,10 @@ fi cd src -perl Makefile.PL --prefix=$SAGE_LOCAL INSTALL_BASE=$SAGE_LOCAL +# In the configure phase, the package fails to use rpath for a test +# program that it compiles, causing a build failure on Linux as +# reported in #22505 (libreadline.so not found). We work around it by +# using LD_LIBRARY_PATH. +export LD_LIBRARY_PATH="$SAGE_LOCAL/lib":"$LD_LIBRARY_PATH" +perl Makefile.PL --prefix="$SAGE_LOCAL" INSTALL_BASE="$SAGE_LOCAL" $MAKE install diff --git a/build/pkgs/pynac/checksums.ini b/build/pkgs/pynac/checksums.ini index 64ec8805d37..0fc3153a9c9 100644 --- a/build/pkgs/pynac/checksums.ini +++ b/build/pkgs/pynac/checksums.ini @@ -1,4 +1,4 @@ tarball=pynac-VERSION.tar.bz2 -sha1=f375fbb59ec841dc1fee6b09cf9cc2d5e06ea757 -md5=92b4d7b8a152536ec476ecb8bf208261 -cksum=262865416 +sha1=915c0d0669a1a337eb06c0dbba4e4ea86e1f5c3d +md5=a076c6ae174b1d39662f8e775f4ffcf2 +cksum=85783609 diff --git a/build/pkgs/pynac/package-version.txt b/build/pkgs/pynac/package-version.txt index 0a1ffad4b4d..8bd6ba8c5c3 100644 --- a/build/pkgs/pynac/package-version.txt +++ b/build/pkgs/pynac/package-version.txt @@ -1 +1 @@ -0.7.4 +0.7.5 diff --git a/build/pkgs/pynac/patches/funcmap-fix.patch b/build/pkgs/pynac/patches/funcmap-fix.patch new file mode 100644 index 00000000000..b89d9447d43 --- /dev/null +++ b/build/pkgs/pynac/patches/funcmap-fix.patch @@ -0,0 +1,44 @@ +diff --git a/ginac/sum.cpp b/ginac/sum.cpp +index b65454d..ded81fd 100644 +--- a/ginac/sum.cpp ++++ b/ginac/sum.cpp +@@ -105,16 +105,17 @@ static ex falling_factorial_to_gamma(const function& f) + } + + using tgfun_t = decltype(gamma_to_gamma); +-static std::unordered_map funcmap {{ +- {factorial_SERIAL::serial, &factorial_to_gamma}, +- {tgamma_SERIAL::serial, &gamma_to_gamma}, +- {binomial_SERIAL::serial, &binomial_to_gamma}, +- {rising_factorial_SERIAL::serial, &rising_factorial_to_gamma}, +- {falling_factorial_SERIAL::serial, &falling_factorial_to_gamma}, +-}}; + + static bool has_suitable_form(ex the_ex) + { ++ static std::unordered_map funcmap {{ ++ {factorial_SERIAL::serial, &factorial_to_gamma}, ++ {tgamma_SERIAL::serial, &gamma_to_gamma}, ++ {binomial_SERIAL::serial, &binomial_to_gamma}, ++ {rising_factorial_SERIAL::serial, &rising_factorial_to_gamma}, ++ {falling_factorial_SERIAL::serial, &falling_factorial_to_gamma}, ++}}; ++ + if (is_rational_linear(the_ex)) + return true; + if (is_exactly_a(the_ex)) { +@@ -162,6 +163,14 @@ static bool has_suitable_form(ex the_ex) + + ex to_gamma(const ex& the_ex) + { ++ static std::unordered_map funcmap {{ ++ {factorial_SERIAL::serial, &factorial_to_gamma}, ++ {tgamma_SERIAL::serial, &gamma_to_gamma}, ++ {binomial_SERIAL::serial, &binomial_to_gamma}, ++ {rising_factorial_SERIAL::serial, &rising_factorial_to_gamma}, ++ {falling_factorial_SERIAL::serial, &falling_factorial_to_gamma}, ++}}; ++ + if (is_rational_linear(the_ex)) + return the_ex; + if (is_exactly_a(the_ex)) { diff --git a/build/pkgs/pynac/spkg-install b/build/pkgs/pynac/spkg-install index 8cee2414d03..c30545eddab 100755 --- a/build/pkgs/pynac/spkg-install +++ b/build/pkgs/pynac/spkg-install @@ -22,16 +22,11 @@ fi WORKDIR=${PWD}/src PYNACDIR=${WORKDIR} -patch() -{ - true -} - build_pynac() { cd ${PYNACDIR} PKG_CONFIG_PATH=${SAGE_LOCAL}/lib/pkgconfig; export PKG_CONFIG_PATH - ./configure --disable-static --prefix=${SAGE_LOCAL} --libdir="$SAGE_LOCAL/lib" + ./configure --disable-static --prefix=${SAGE_LOCAL} --with-giac=no --libdir="$SAGE_LOCAL/lib" $MAKE if [ $? -ne 0 ]; then echo "Error building pynac." @@ -60,8 +55,6 @@ clean_pynac() true } -patch - cd src diff --git a/build/pkgs/widgetsnbextension/checksums.ini b/build/pkgs/widgetsnbextension/checksums.ini index b73a6a5583d..0caa7094e8e 100644 --- a/build/pkgs/widgetsnbextension/checksums.ini +++ b/build/pkgs/widgetsnbextension/checksums.ini @@ -1,4 +1,4 @@ tarball=widgetsnbextension-VERSION.tar.gz -sha1=a61440a3841973e974f139ff566de9dc7dd1ebda -md5=0aa4e152c9ba2d704389dc2453f448c7 -cksum=3551709451 +sha1=9a616f9c4832bfda289bad1fef8766e03664be95 +md5=4a20d3c3fee43dba15da2e7c1ad6bbf3 +cksum=2004624864 diff --git a/build/pkgs/widgetsnbextension/package-version.txt b/build/pkgs/widgetsnbextension/package-version.txt index a8d18775f67..227cea21564 100644 --- a/build/pkgs/widgetsnbextension/package-version.txt +++ b/build/pkgs/widgetsnbextension/package-version.txt @@ -1 +1 @@ -1.2.6.p0 +2.0.0 diff --git a/build/pkgs/zn_poly/SPKG.txt b/build/pkgs/zn_poly/SPKG.txt index a4679c5f7d3..2a660f1cef5 100644 --- a/build/pkgs/zn_poly/SPKG.txt +++ b/build/pkgs/zn_poly/SPKG.txt @@ -147,7 +147,7 @@ the file src/COPYING for details. * Ticket #8280: cygwin: zn_poly shared library named incorrectly on cygwin === zn_poly-0.9.p1 (David Kirkby, June 29th, 2009) === - * Ticket #6443 A GNUism in zn_poly-0.9.p0 causes linking problems wiith Sun's linker + * Ticket #6443 A GNUism in zn_poly-0.9.p0 causes linking problems with Sun's linker This was an easy fix - just substitue -soname for -h in src/makemakefile.py I did this with a sed script in spkg-install diff --git a/src/bin/sage b/src/bin/sage index 398609c563c..3c79dd9cb31 100755 --- a/src/bin/sage +++ b/src/bin/sage @@ -276,8 +276,26 @@ fi # an unclobbered environment before testing unsafe tickets. if [ "$1" = '-patchbot' -o "$1" = "--patchbot" ]; then shift - cd "$SAGE_ROOT" - exec local/bin/patchbot/patchbot.py "$@" + # We ask the Python from Sage where the patchbot is installed. + # We set PYTHONPATH to that directory such that the system Python + # should also find the sage_patchbot package. + cmd='import sage_patchbot as p; import os; print(os.path.dirname(p.__path__[0]))' + export PYTHONPATH=`"$SAGE_ROOT/sage" --python -c "$cmd"` + if [ -z "$PYTHONPATH" ]; then + # Something went wrong, assume that the patchbot is not installed + echo >&2 "Error: cannot find installation path for sage_patchbot" + echo >&2 "See https://wiki.sagemath.org/buildbot for instructions" + exit 1 + fi + + # Try "python2.7", then "python2", then "python" + shopt -s execfail # Do not exit if "exec" fails + exec python2.7 -m sage_patchbot.patchbot "$@" + exec python2 -m sage_patchbot.patchbot "$@" + exec python -m sage_patchbot.patchbot "$@" + echo >&2 "Error: cannot find a suitable Python program." + echo >&2 "The SageMath patchbot requires a system Python installation." + exit 127 fi # Check for '--upgrade' before sourcing sage-env: the top-level "make" diff --git a/src/bin/sage-banner b/src/bin/sage-banner index ad0cd5811a4..ed038df9e18 100644 --- a/src/bin/sage-banner +++ b/src/bin/sage-banner @@ -1,5 +1,5 @@ ┌────────────────────────────────────────────────────────────────────┐ -│ SageMath version 7.6.beta5, Release Date: 2017-02-26 │ +│ SageMath version 7.6.rc0, Release Date: 2017-03-12 │ │ Type "notebook()" for the browser-based notebook interface. │ │ Type "help()" for help. │ └────────────────────────────────────────────────────────────────────┘ diff --git a/src/bin/sage-env b/src/bin/sage-env index 54c07837e01..0231cfac740 100644 --- a/src/bin/sage-env +++ b/src/bin/sage-env @@ -472,6 +472,11 @@ export MAXIMA_PREFIX="$SAGE_LOCAL" PERL5LIB="$SAGE_LOCAL/lib/perl5:$PERL5LIB" && export PERL5LIB +# Allow SAGE_BROWSER to override BROWSER (Trac #22449) +if [ -n "$SAGE_BROWSER" ]; then + export BROWSER="$SAGE_BROWSER" +fi + ############ architecture flags # Support flags to change the build architecture. Currently, this is diff --git a/src/bin/sage-version.sh b/src/bin/sage-version.sh index fd17754fd4e..3f6284beca5 100644 --- a/src/bin/sage-version.sh +++ b/src/bin/sage-version.sh @@ -1,4 +1,4 @@ # Sage version information for shell scripts # This file is auto-generated by the sage-update-version script, do not edit! -SAGE_VERSION='7.6.beta5' -SAGE_RELEASE_DATE='2017-02-26' +SAGE_VERSION='7.6.rc0' +SAGE_RELEASE_DATE='2017-03-12' diff --git a/src/doc/de/tutorial/introduction.rst b/src/doc/de/tutorial/introduction.rst index 0743f5646dc..b524882ee8c 100644 --- a/src/doc/de/tutorial/introduction.rst +++ b/src/doc/de/tutorial/introduction.rst @@ -101,7 +101,7 @@ Hier geben wir nur ein paar Kommentare ab. einzige Datei in ein Verzeichnis kopieren, welches TeX durchsucht. Die Dokumentation für SageTeX befindet sich in - ``$SAGE_ROOT/local/share/texmf/tex/generic/sagetex/``, wobei + ``$SAGE_ROOT/local/share/texmf/tex/latex/sagetex/``, wobei "``$SAGE_ROOT``" auf das Verzeichnis zeigt, in welches Sie Sage installiert haben, zum Beispiel ``/opt/sage-4.2.1``. diff --git a/src/doc/de/tutorial/sagetex.rst b/src/doc/de/tutorial/sagetex.rst index 5d5cbca0f3f..8f58e812a78 100644 --- a/src/doc/de/tutorial/sagetex.rst +++ b/src/doc/de/tutorial/sagetex.rst @@ -15,7 +15,7 @@ Tutorial und den Abschnitt "Make SageTeX known to TeX" des `Sage installation gu Installationsanleitung führen) um weitere Informationen zu erhalten. Hier stellen wir ein sehr kurzes Beispiel vor wie man SageTeX nutzt. -Die komplette Dokumentation finden Sie unter ``SAGE_ROOT/local/share/texmf/tex/generic/sagetex``, +Die komplette Dokumentation finden Sie unter ``SAGE_ROOT/local/share/texmf/tex/latex/sagetex``, wobei ``SAGE_ROOT`` das Installationsverzeichnis von Sage ist. Dieses Verzeichnis enthält die Dokumentation, eine Beispieldatei und einige nützliche Python Skripte. @@ -103,4 +103,4 @@ an den Sage Befehlen in Ihrem Dokument vorgenommen haben. Es gibt noch viel mehr über SageTeX zu sagen, aber da sowohl Sage alsauch LaTeX komplexe und mächtige Werkzeuge sind, sollten Sie die Dokumentation -über SageTeX in ``SAGE_ROOT/local/share/texmf/tex/generic/sagetex`` lesen. +über SageTeX in ``SAGE_ROOT/local/share/texmf/tex/latex/sagetex`` lesen. diff --git a/src/doc/en/constructions/groups.rst b/src/doc/en/constructions/groups.rst index 4d9a10f8846..e76917139b7 100644 --- a/src/doc/en/constructions/groups.rst +++ b/src/doc/en/constructions/groups.rst @@ -502,7 +502,7 @@ to be returned. For example, to construct sage: A = groups.presentation.FGAbelian([4,2,2,2]) The output for a given group is the same regardless of the input list of -integers. The following example yeilds identical presentations for the +integers. The following example yields identical presentations for the cyclic group of order 30. :: @@ -538,9 +538,9 @@ order 16 as a semidirect product of cyclic groups. The following table shows the groups of order 15 or less, and how to construct them in Sage. Repeated commands have been omitted but instead are described -by the following exmples. +by the following examples. -The cyclic group of order `n` can be crated with a single command: +The cyclic group of order `n` can be created with a single command: .. skip diff --git a/src/doc/en/developer/advanced_git.rst b/src/doc/en/developer/advanced_git.rst index 6dbbab41f73..a1deb4935b1 100644 --- a/src/doc/en/developer/advanced_git.rst +++ b/src/doc/en/developer/advanced_git.rst @@ -66,6 +66,112 @@ branch -D my_branch`` at the end to delete the local branch that you created only to review the ticket. +.. _section-git-update-latest: + +Update Branch to Latest SageMath Version (and Minimizing Recompilation Time) +============================================================================ + +- You have a compiled and working new SageMath version ``n``, and +- you want to work on a branch ``some_code`` which is based on some old SageMath version ``o`` +- by updating this branch from version ``o`` to ``n`` +- with only recompiling changed files (and not all touched files from ``o`` to ``n``), +- then continue reading this section. + + +Introduction +------------ + +When developing, quite frequently one ends up with a branch which is +not based on the latest (beta) version of SageMath. + +.. NOTE:: + + Continue working on a feature based on an old branch is perfecly + fine and usually there is no need to merge in this latest SageMath + version. + +However sometimes there is a need for a merge, for example + +- if there are conflicts with the latest version or +- one needs a recent feature or +- simply because the old SageMath version is not available on your machine + any longer. + +Then merging in the latest SageMath version has to be done. + + +Merge in the Latest SageMath Version +------------------------------------ + +(This is the easy way without minimizing the recompilation time.) + +Suppose we are on our current working branch ``some_code`` +(branch is checked out). Then +:: + + git merge develop + +does the merging, i.e. we merge the latest development version into +our working branch. + +However, after this merge, we need to (partially) recompile +SageMath. Sometimes this can take ages (as many files are touched and +their timestamps are renewed) and there is a way to avoid it. + + +Minimize the Recompilation Time +------------------------------- + +Suppose we are on some new SageMath (e.g. on branch ``develop``) which +was already compiled and runs successfully, and we have an "old" +branch ``some_code``, that we want to bring onto this SageMath version +(without triggering unnecessary recompilations). + +We first create a new working tree in a directory ``new_worktree`` and switch +to this directory:: + + git worktree add new_worktree + cd new_worktree + +Here we have a new copy of our source files. Thus no timestamps +etc. of the original repository will be changed. Now we do the merge:: + + git checkout some_code + git merge develop + +And go back to our original repository:: + + git checkout develop + cd .. + +We can now safely checkout ``some_code``:: + + git checkout some_code + +We still need to call +:: + + make + +but only changed files will be recompiled. + +To remove the new working tree simply use +:: + + rm -r new_worktree + + +Why not Merging the Other Way Round? +------------------------------------ + +Being on some new SageMath (e.g. on branch ``develop``) which runs +successfully, it would be possible to merge in our branch +``some_code`` into develop. This would produce the same source files +and avoid unnecessary recompilations. However, it makes reading git's +history very unpleasant: For example, it is hard to keep track of changes etc., +as one cannot simply pursue the first parent of each git commit. + + .. _section-git-recovery: Reset and Recovery diff --git a/src/doc/en/faq/faq-usage.rst b/src/doc/en/faq/faq-usage.rst index d77c55ff75d..241921bd20d 100644 --- a/src/doc/en/faq/faq-usage.rst +++ b/src/doc/en/faq/faq-usage.rst @@ -725,9 +725,15 @@ You will need to do this from the command line. Just run a command like this. * Linux (assuming you have Sage in ``/usr/bin``):: - env SAGE_BROWSER=opera /usr/bin/sage -notebook + env BROWSER=opera /usr/bin/sage --notebook -* Mac (assuming you are in the directory of your downloaded Sage):: +* Mac (assuming you are in the directory of your downloaded Sage). + With the Jupyter notebook:: - SAGE_BROWSER='open -a Firefox' ./sage -notebook - SAGE_BROWSER='open -a Google\ Chrome' ./sage -notebook + BROWSER='open -a Firefox %s' ./sage --notebook jupyter + BROWSER='open -a Google\ Chrome %s' ./sage --notebook jupyter + + With the old SageNB notebook:: + + BROWSER='open -a Firefox' ./sage --notebook + BROWSER='open -a Google\ Chrome' ./sage --notebook diff --git a/src/doc/en/installation/source.rst b/src/doc/en/installation/source.rst index cebb74340da..f5a94761ebf 100644 --- a/src/doc/en/installation/source.rst +++ b/src/doc/en/installation/source.rst @@ -1290,7 +1290,7 @@ Sage uses the following environment variables when it runs: - :envvar:`SAGE_PATH` - a colon-separated list of directories which Sage searches when trying to locate Python libraries. -- :envvar:`SAGE_BROWSER` - on most platforms, Sage will detect the command to +- :envvar:`BROWSER` - on most platforms, Sage will detect the command to run a web browser, but if this doesn't seem to work on your machine, set this variable to the appropriate command. diff --git a/src/doc/en/prep/Advanced-2DPlotting.rst b/src/doc/en/prep/Advanced-2DPlotting.rst index a73dc1daa78..00967b9e683 100644 --- a/src/doc/en/prep/Advanced-2DPlotting.rst +++ b/src/doc/en/prep/Advanced-2DPlotting.rst @@ -562,7 +562,7 @@ Sage includes a variety of built\-in graphics objects. These are particularly useful for adding to one's plot certain objects which are difficult to describe with equations, but which are basic geometric objects nonetheless. In this section we will try to demonstrate the -syntax of some of the most useful of them; for most of the the +syntax of some of the most useful of them; for most of them the contextual (remember, append ``?``) help will give more details. Points diff --git a/src/doc/en/reference/coding/index.rst b/src/doc/en/reference/coding/index.rst index 776ef461fde..aca7d9def46 100644 --- a/src/doc/en/reference/coding/index.rst +++ b/src/doc/en/reference/coding/index.rst @@ -49,6 +49,7 @@ allowing specialised implementations of e.g. decoding or computation of properti sage/coding/parity_check_code sage/coding/reed_muller_code sage/coding/cyclic_code + sage/coding/bch In contrast, for some code families Sage can only construct their generator matrix and has no other a priori knowledge on them: diff --git a/src/doc/en/reference/geometry/conf.py b/src/doc/en/reference/discrete_geometry/conf.py similarity index 100% rename from src/doc/en/reference/geometry/conf.py rename to src/doc/en/reference/discrete_geometry/conf.py diff --git a/src/doc/en/reference/geometry/index.rst b/src/doc/en/reference/discrete_geometry/index.rst similarity index 69% rename from src/doc/en/reference/geometry/index.rst rename to src/doc/en/reference/discrete_geometry/index.rst index c8f68c2892f..e59cbd0d2ae 100644 --- a/src/doc/en/reference/geometry/index.rst +++ b/src/doc/en/reference/discrete_geometry/index.rst @@ -1,90 +1,113 @@ -Geometry -======== +Combinatorial and Discrete Geometry +=================================== -Combinatorial Geometry ----------------------- +Sage includes classes for hyperplane arrangements, polyhedra, toric varieties +(including polyhedral cones and fans), triangulations and some other helper +classes and functions. -Sage includes classes for convex rational polyhedral cones and fans, Groebner -fans, lattice and reflexive polytopes (with integral coordinates), and generic -polytopes and polyhedra (with rational or numerical coordinates). +Hyperplane arrangements +----------------------- .. toctree:: :maxdepth: 1 - sage/geometry/toric_lattice - sage/geometry/cone - sage/geometry/fan - sage/geometry/fan_morphism - sage/geometry/point_collection - sage/geometry/toric_plotter + sage/geometry/hyperplane_arrangement/arrangement + sage/geometry/hyperplane_arrangement/library + sage/geometry/hyperplane_arrangement/hyperplane + sage/geometry/hyperplane_arrangement/affine_subspace + sage/geometry/hyperplane_arrangement/plot - sage/rings/polynomial/groebner_fan +Polyhedral computations +----------------------- - sage/geometry/lattice_polytope +Polyhedra +~~~~~~~~~ + +.. toctree:: + :maxdepth: 1 + sage/geometry/polyhedron/library sage/geometry/polyhedron/constructor sage/geometry/polyhedron/parent sage/geometry/polyhedron/representation - sage/geometry/polyhedron/library sage/geometry/polyhedron/plot sage/geometry/polyhedron/face sage/geometry/polyhedron/cdd_file_format + +Lattice polyhedra +~~~~~~~~~~~~~~~~~ + +.. toctree:: + :maxdepth: 1 + + sage/geometry/lattice_polytope sage/geometry/polyhedron/lattice_euclidean_group_element sage/geometry/polyhedron/palp_database sage/geometry/polyhedron/ppl_lattice_polygon sage/geometry/polyhedron/ppl_lattice_polytope - sage/geometry/polytope - - sage/geometry/pseudolines - - sage/geometry/triangulation/point_configuration - sage/geometry/triangulation/base - sage/geometry/triangulation/element +Toric geometry +~~~~~~~~~~~~~~ - sage/geometry/hyperplane_arrangement/arrangement - sage/geometry/hyperplane_arrangement/library - sage/geometry/hyperplane_arrangement/hyperplane - sage/geometry/hyperplane_arrangement/affine_subspace - sage/geometry/hyperplane_arrangement/plot - - sage/geometry/linear_expression - - sage/geometry/newton_polygon +.. toctree:: + :maxdepth: 1 - sage/geometry/ribbon_graph + sage/geometry/toric_lattice + sage/geometry/cone + sage/geometry/fan + sage/geometry/fan_morphism + sage/geometry/point_collection + sage/geometry/toric_plotter + sage/rings/polynomial/groebner_fan -Hyperbolic Geometry -------------------- +Base classes for polyhedra +~~~~~~~~~~~~~~~~~~~~~~~~~~ .. toctree:: :maxdepth: 1 - sage/geometry/hyperbolic_space/hyperbolic_point - sage/geometry/hyperbolic_space/hyperbolic_isometry - sage/geometry/hyperbolic_space/hyperbolic_geodesic - sage/geometry/hyperbolic_space/hyperbolic_model - sage/geometry/hyperbolic_space/hyperbolic_interface + sage/geometry/polyhedron/base + sage/geometry/polyhedron/base_QQ + sage/geometry/polyhedron/base_ZZ + sage/geometry/polyhedron/base_RDF -Backends for Polyhedral Computations ------------------------------------- +Backends for Polyhedra +~~~~~~~~~~~~~~~~~~~~~~ .. toctree:: :maxdepth: 1 sage/geometry/polyhedron/backend_cdd - sage/geometry/polyhedron/backend_ppl sage/geometry/polyhedron/backend_field + sage/geometry/polyhedron/backend_normaliz + sage/geometry/polyhedron/backend_ppl sage/geometry/polyhedron/double_description sage/geometry/polyhedron/double_description_inhomogeneous - sage/geometry/polyhedron/base - sage/geometry/polyhedron/base_QQ - sage/geometry/polyhedron/base_ZZ - sage/geometry/polyhedron/base_RDF - -Internals ---------- + +Triangulations +-------------- + +.. toctree:: + :maxdepth: 1 + + sage/geometry/triangulation/point_configuration + sage/geometry/triangulation/base + sage/geometry/triangulation/element + +Miscellaneous +------------- + +.. toctree:: + :maxdepth: 1 + + sage/geometry/linear_expression + sage/geometry/newton_polygon + sage/geometry/ribbon_graph + sage/geometry/pseudolines + +Helper functions +---------------- .. toctree:: :maxdepth: 1 diff --git a/src/doc/en/reference/hyperbolic_geometry/conf.py b/src/doc/en/reference/hyperbolic_geometry/conf.py new file mode 120000 index 00000000000..2bdf7e68470 --- /dev/null +++ b/src/doc/en/reference/hyperbolic_geometry/conf.py @@ -0,0 +1 @@ +../conf_sub.py \ No newline at end of file diff --git a/src/doc/en/reference/hyperbolic_geometry/index.rst b/src/doc/en/reference/hyperbolic_geometry/index.rst new file mode 100644 index 00000000000..45ede76a217 --- /dev/null +++ b/src/doc/en/reference/hyperbolic_geometry/index.rst @@ -0,0 +1,14 @@ +Hyperbolic Geometry +=================== + +.. toctree:: + :maxdepth: 1 + + sage/geometry/hyperbolic_space/hyperbolic_point + sage/geometry/hyperbolic_space/hyperbolic_isometry + sage/geometry/hyperbolic_space/hyperbolic_geodesic + sage/geometry/hyperbolic_space/hyperbolic_model + sage/geometry/hyperbolic_space/hyperbolic_interface + + +.. include:: ../footer.txt diff --git a/src/doc/en/reference/index.rst b/src/doc/en/reference/index.rst index b91e2858514..3b549dcb89e 100644 --- a/src/doc/en/reference/index.rst +++ b/src/doc/en/reference/index.rst @@ -83,7 +83,8 @@ Calculus Geometry and Topology --------------------- -* :doc:`Combinatorial Geometry ` +* :doc:`Combinatorial and Discrete Geometry ` +* :doc:`Hyperbolic Geometry ` * :doc:`Cell Complexes and their Homology ` * :doc:`Differential Forms ` * :doc:`Manifolds ` diff --git a/src/doc/en/reference/libs/index.rst b/src/doc/en/reference/libs/index.rst index 8ff977b8c05..9b0b6e96d9e 100644 --- a/src/doc/en/reference/libs/index.rst +++ b/src/doc/en/reference/libs/index.rst @@ -3,20 +3,18 @@ C/C++ Library Interfaces An underlying philosophy in the development of Sage is that it should provide unified library-level access to the some of the best -GPL'd C/C++ libraries. Currently Sage provides some access to -MWRANK, NTL, PARI, and Hanke, each of which are included with -Sage. +GPL'd C/C++ libraries. Sage provides access to many libraries which +are included with Sage. The interfaces are implemented via shared libraries and data is moved between systems purely in memory. In particular, there is no -interprocess interpreter parsing (e.g., ``expect``), +interprocess interpreter parsing (e.g., ``pexpect``), since everything is linked together and run as a single process. -This is much more robust and efficient than using -``expect``. +This is much more robust and efficient than using ``pexpect``. Each of these interfaces is used by other parts of Sage. For -example, mwrank is used by the elliptic curves module to compute -ranks of elliptic curves, and PARI is used for computation of class +example, eclib is used by the elliptic curves module to compute +ranks of elliptic curves and PARI is used for computation of class groups. It is thus probably not necessary for a casual user of Sage to be aware of the modules described in this chapter. @@ -30,6 +28,9 @@ to be aware of the modules described in this chapter. sage/libs/eclib/homspace sage/libs/eclib/constructor sage/libs/lcalc/lcalc_Lfunction + sage/libs/pari + sage/libs/pari/convert_sage + sage/rings/pari_ring sage/libs/ratpoints sage/libs/singular/function sage/libs/singular/function_factory @@ -48,7 +49,6 @@ to be aware of the modules described in this chapter. sage/libs/ntl/all sage/libs/libecm sage/libs/lrcalc/lrcalc - sage/rings/pari_ring sage/libs/readline sage/libs/gap/context_managers sage/libs/gap/gap_functions diff --git a/src/doc/en/reference/polynomial_rings/index.rst b/src/doc/en/reference/polynomial_rings/index.rst index 4e40b497ed5..e21ca23e2c3 100644 --- a/src/doc/en/reference/polynomial_rings/index.rst +++ b/src/doc/en/reference/polynomial_rings/index.rst @@ -57,6 +57,7 @@ Laurent Polynomials sage/rings/polynomial/laurent_polynomial_ring sage/rings/polynomial/laurent_polynomial + sage/rings/polynomial/omega Infinite Polynomial Rings ------------------------- diff --git a/src/doc/en/reference/references/index.rst b/src/doc/en/reference/references/index.rst index 4c9c2fd1ab4..a2010e67e33 100644 --- a/src/doc/en/reference/references/index.rst +++ b/src/doc/en/reference/references/index.rst @@ -76,6 +76,10 @@ REFERENCES: .. [Ap1997] \T. Apostol, Modular functions and Dirichlet series in number theory, Springer, 1997 (2nd ed), section 3.7--3.9. +.. [APR2001] George E. Andrews, Peter Paule, Axel Riese, + *MacMahon's partition analysis: the Omega package*, + European J. Combin. 22 (2001), no. 7, 887--904. + .. [Ar2006] D. Armstrong. *Generalized noncrossing partitions and combinatorics of Coxeter groups*. Mem. Amer. Math. Soc., 2006. @@ -915,6 +919,11 @@ REFERENCES: .. [Ke2008] \B. Keller, *Cluster algebras, quiver representations and triangulated categories*, :arXiv:`0807.1960`. +.. [KK1995] Victor Klee and Peter Kleinschmidt, + *Convex polytopes and related complexes.*, in \R. L. Graham, + \M. Grötschel, \L Lovász, *Handbook of combinatorics*, + Vol. 1, Chapter 18, 1995 + .. [KL2008] Chris Kurth and Ling Long, "Computations with finite index subgroups of `{\rm PSL}_2(\ZZ)` using Farey symbols", Advances in algebra and combinatorics, 225--242, World @@ -1128,6 +1137,10 @@ REFERENCES: Atoms, Journal of Algebraic Combinatorics, Vol. 29, (2009), No. 3, p.295-313. :arXiv:`0707.4267` +.. [Mac1915] Percy A. MacMahon, *Combinatory Analysis*, + Cambridge University Press (1915--1916). + (Reprinted: Chelsea, New York, 1960). + .. [MAR2009] \H. Molina-Abril and P. Réal, *Homology computation using spanning trees* in Progress in Pattern Recognition, Image Analysis, Computer Vision, and Applications, Lecture diff --git a/src/doc/en/reference/repl/environ.rst b/src/doc/en/reference/repl/environ.rst index 80e495cb40e..69d2858f5d8 100644 --- a/src/doc/en/reference/repl/environ.rst +++ b/src/doc/en/reference/repl/environ.rst @@ -27,7 +27,7 @@ Installation Guide for more about those.) - :envvar:`SAGE_PATH` -- a colon-separated list of directories which Sage searches when trying to locate Python libraries. -- :envvar:`SAGE_BROWSER` -- on most platforms, Sage will detect the +- :envvar:`BROWSER` -- on most platforms, Sage will detect the command to run a web browser, but if this doesn't seem to work on your machine, set this variable to the appropriate command. diff --git a/src/doc/en/reference/repl/index.rst b/src/doc/en/reference/repl/index.rst index eb5a575d6a8..e5bebd17899 100644 --- a/src/doc/en/reference/repl/index.rst +++ b/src/doc/en/reference/repl/index.rst @@ -92,6 +92,9 @@ Miscellaneous sage/repl/interpreter sage/repl/ipython_extension sage/repl/interface_magic + sage/repl/ipython_kernel/interact + sage/repl/ipython_kernel/widgets + sage/repl/ipython_kernel/widgets_sagenb sage/repl/ipython_kernel/install sage/repl/ipython_kernel/kernel sage/repl/ipython_tests diff --git a/src/doc/en/thematic_tutorials/coercion_and_categories.rst b/src/doc/en/thematic_tutorials/coercion_and_categories.rst index 017fcfe9e52..c692ae41096 100644 --- a/src/doc/en/thematic_tutorials/coercion_and_categories.rst +++ b/src/doc/en/thematic_tutorials/coercion_and_categories.rst @@ -537,8 +537,11 @@ fields instead of the category of fields:: sage: [p for p in dir(QuotientFields().parent_class) if p not in dir(Fields().parent_class)] [] sage: [p for p in dir(QuotientFields().element_class) if p not in dir(Fields().element_class)] - ['_derivative', 'denominator', 'derivative', 'factor', - 'numerator', 'partial_fraction_decomposition'] + ['_derivative', + 'denominator', + 'derivative', + 'numerator', + 'partial_fraction_decomposition'] .. end of output diff --git a/src/doc/en/tutorial/introduction.rst b/src/doc/en/tutorial/introduction.rst index 71aed01cb94..493459163b0 100644 --- a/src/doc/en/tutorial/introduction.rst +++ b/src/doc/en/tutorial/introduction.rst @@ -93,7 +93,7 @@ computer. Here we merely make a few comments. will search. The documentation for using SageTeX is located in - ``$SAGE_ROOT/local/share/texmf/tex/generic/sagetex/``, where + ``$SAGE_ROOT/local/share/texmf/tex/latex/sagetex/``, where "``$SAGE_ROOT``" refers to the directory where you installed Sage -- for example, ``/opt/sage-4.2.1``. diff --git a/src/doc/en/tutorial/sagetex.rst b/src/doc/en/tutorial/sagetex.rst index b370cc31c77..4237e23e482 100644 --- a/src/doc/en/tutorial/sagetex.rst +++ b/src/doc/en/tutorial/sagetex.rst @@ -15,7 +15,7 @@ Here is a very brief example of using SageTeX. The full documentation can be found in ``SAGE_ROOT/local/share/doc/sagetex``, where ``SAGE_ROOT`` is the directory where your Sage installation is located. That directory contains the documentation and an example file. -See ``SAGE_ROOT/local/share/texmf/tex/generic/sagetex`` for +See ``SAGE_ROOT/local/share/texmf/tex/latex/sagetex`` for some possibly useful Python scripts. To see how SageTeX works, follow the directions for installing SageTeX (in @@ -120,7 +120,7 @@ installation aware of it before it will work. The key to this is that TeX needs to be able to find ``sagetex.sty``, which can be found in -``SAGE_ROOT/local/share/texmf/tex/generic/sagetex/``, where +``SAGE_ROOT/local/share/texmf/tex/latex/sagetex/``, where ``SAGE_ROOT`` is the directory where you built or installed Sage. If TeX can find ``sagetex.sty``, then SageTeX will work. There are several ways to accomplish this. diff --git a/src/doc/es/tutorial/introduction.rst b/src/doc/es/tutorial/introduction.rst index 942895a15de..01ec7bcdad7 100644 --- a/src/doc/es/tutorial/introduction.rst +++ b/src/doc/es/tutorial/introduction.rst @@ -93,7 +93,7 @@ Sage en tu computador. Aquí hacemos simplemente dos comentarios: en un directorio en el que TeX va a buscar. La documentación para usar SageTeX se encuentra en - ``$SAGE_ROOT/local/share/texmf/tex/generic/sagetex/``, donde + ``$SAGE_ROOT/local/share/texmf/tex/latex/sagetex/``, donde "``$SAGE_ROOT``" se refiere al directorio donde Sage está instalado -- por ejemplo, ``/opt/sage-4.2.1``. diff --git a/src/doc/fr/tutorial/introduction.rst b/src/doc/fr/tutorial/introduction.rst index f82a79edd0b..68a48862727 100644 --- a/src/doc/fr/tutorial/introduction.rst +++ b/src/doc/fr/tutorial/introduction.rst @@ -99,7 +99,7 @@ Nous nous limiterons ici à quelques remarques. d'environnement. La documentation de SageTeX se trouve dans le répertoire - ``$SAGE_ROOT/local/share/texmf/tex/generic/sagetex/``, où + ``$SAGE_ROOT/local/share/texmf/tex/latex/sagetex/``, où "``$SAGE_ROOT``" est le répertoire où vous avez installé Sage, par exemple ``/opt/sage-4.3.4``. diff --git a/src/doc/fr/tutorial/sagetex.rst b/src/doc/fr/tutorial/sagetex.rst index 889594d9654..9aa52f3759a 100644 --- a/src/doc/fr/tutorial/sagetex.rst +++ b/src/doc/fr/tutorial/sagetex.rst @@ -16,7 +16,7 @@ locale) pour plus de détails. Voici un bref exemple d'utilisation de SageTeX. La documentation complète se trouve dans -``SAGE_ROOT/local/share/texmf/tex/generic/sagetex``, où ``SAGE_ROOT`` +``SAGE_ROOT/local/share/texmf/tex/latex/sagetex``, où ``SAGE_ROOT`` désigne le répertoire racine de votre installation Sage. Elle est accompagnée d'un fichier exemple et de scripts Python potentiellement utiles. @@ -114,4 +114,4 @@ compilation précédente.) SageTeX offre bien d'autres possibilités. Puisque Sage comme LaTeX sont des outils complexes et puissants, le mieux est sans doute de consulter la documentation complète de SageTeX, qui se trouve -dans ``SAGE_ROOT/local/share/texmf/tex/generic/sagetex``. +dans ``SAGE_ROOT/local/share/texmf/tex/latex/sagetex``. diff --git a/src/doc/ja/tutorial/introduction.rst b/src/doc/ja/tutorial/introduction.rst index ef90446a4f6..ba092ddd6a3 100644 --- a/src/doc/ja/tutorial/introduction.rst +++ b/src/doc/ja/tutorial/introduction.rst @@ -73,7 +73,7 @@ Sageを自分のコンピュータへインストールする手順について SageTeXの利用に関する解説は -``$SAGE_ROOT/local/share/texmf/tex/generic/sagetex/`` にある. +``$SAGE_ROOT/local/share/texmf/tex/latex/sagetex/`` にある. ``$SAGE_ROOT`` はSageがインストールされているディレクトリで,例えば ``/opt/sage-4.2.1`` などとなっているはずだ. diff --git a/src/doc/ja/tutorial/sagetex.rst b/src/doc/ja/tutorial/sagetex.rst index 139358ba36a..350bc32d9bf 100644 --- a/src/doc/ja/tutorial/sagetex.rst +++ b/src/doc/ja/tutorial/sagetex.rst @@ -13,7 +13,7 @@ SageTeXパッケージを使うと,Sageによる処理結果をLaTeX文書に ここでは,ごく簡単な例題を通してSageTeXの利用手順を紹介する. 完全な解説ドキュメントと例題ファイルは,ディレクトリ ``SAGE_ROOT/local/share/doc/sagetex`` に置いてある. -``SAGE_ROOT/local/share/texmf/tex/generic/sagetex`` にあるPythonスクリプトは何か役に立つ場面があるはずだ. +``SAGE_ROOT/local/share/texmf/tex/latex/sagetex`` にあるPythonスクリプトは何か役に立つ場面があるはずだ. 以上の ``SAGE_ROOT`` は,Sageをインストールしたディレクトリである. @@ -118,7 +118,7 @@ SageTeXはデフォルトでSageにインストールされるが,LaTeX文書 鍵になるのは, TeXが ``sagetex.sty`` を発見できるかどうかである. この ``sagetex.sty`` は, ``SAGE_ROOT`` をSageがビルトあるいはインストールされたディレクトリとすると, -``SAGE_ROOT/local/share/texmf/tex/generic/sagetex/`` に置かれているはずだ. +``SAGE_ROOT/local/share/texmf/tex/latex/sagetex/`` に置かれているはずだ. TeXが ``sagetex.sty`` を読めるようにしてやらなければ,SageTeXも動作できないのである. これを実現するには何通りかのやり方がある. diff --git a/src/doc/pt/tutorial/introduction.rst b/src/doc/pt/tutorial/introduction.rst index d44e960a8e3..127e1b71f9a 100644 --- a/src/doc/pt/tutorial/introduction.rst +++ b/src/doc/pt/tutorial/introduction.rst @@ -93,7 +93,7 @@ computador. Aqui faremos apenas alguns comentários. encontrá-lo. A documentação para usar o SageTex está disponível em - ``$SAGE_ROOT/local/share/texmf/tex/generic/sagetex/``, onde + ``$SAGE_ROOT/local/share/texmf/tex/latex/sagetex/``, onde ``$SAGE_ROOT`` refere-se ao diretório onde você instalou o Sage -- por exemplo, ``/opt/sage-4.2.1``. diff --git a/src/doc/pt/tutorial/sagetex.rst b/src/doc/pt/tutorial/sagetex.rst index 4aae0859754..949b9b3e6db 100644 --- a/src/doc/pt/tutorial/sagetex.rst +++ b/src/doc/pt/tutorial/sagetex.rst @@ -14,7 +14,7 @@ instalação do Sage `_ Aqui vai um breve exemplo de como usar o SageTeX. A documentação completa pode ser encontrada em -``SAGE_ROOT/local/share/texmf/tex/generic/sagetex``, onde +``SAGE_ROOT/local/share/texmf/tex/latex/sagetex``, onde ``SAGE_ROOT`` é o diretório onde se encontra a sua instalação. Esse diretório contém a documentação, um arquivo de exemplo, e alguns scripts em Python possivelmente úteis. @@ -107,4 +107,4 @@ os comandos em Sage em seu documento. Há muito mais sobre o SageTeX, e como tanto o Sage como o LaTeX são ferramentas complexas e poderosas, é uma boa idéia ler a documentação para o SageTeX que se encontra em -``SAGE_ROOT/local/share/texmf/tex/generic/sagetex``. +``SAGE_ROOT/local/share/texmf/tex/latex/sagetex``. diff --git a/src/doc/ru/tutorial/introduction.rst b/src/doc/ru/tutorial/introduction.rst index 71070aa5cc0..820179a9830 100644 --- a/src/doc/ru/tutorial/introduction.rst +++ b/src/doc/ru/tutorial/introduction.rst @@ -89,7 +89,7 @@ Sage в разделе документации: [SA]_ Здесь мы прив всего лишь скопировать один файл в директорию поиска TeX. Документация по использованию SageTeX находится в - ``$SAGE_ROOT/local/share/texmf/tex/generic/sagetex/``, где + ``$SAGE_ROOT/local/share/texmf/tex/latex/sagetex/``, где "``$SAGE_ROOT``" соответствует директории, где установлен сам Sage, например, ``/opt/sage-4.2.1``. diff --git a/src/doc/ru/tutorial/sagetex.rst b/src/doc/ru/tutorial/sagetex.rst index 65c70379618..d23ebc7fb31 100644 --- a/src/doc/ru/tutorial/sagetex.rst +++ b/src/doc/ru/tutorial/sagetex.rst @@ -12,7 +12,7 @@ SageTeX known to TeX" `Руководства по установке Sage по установке). В этом уроке показан небольшой пример использования SageTeX. Полная документация -находится в ``SAGE_ROOT/local/share/texmf/tex/generic/sagetex``, где +находится в ``SAGE_ROOT/local/share/texmf/tex/latex/sagetex``, где ``SAGE_ROOT`` - это директория, в которой установлен Sage. Эта папка содержит документацию, файл с примером и полезные скрипты Python. @@ -89,4 +89,4 @@ SageTeX known to TeX" `Руководства по установке Sage SageTeX предлагает много возможностей, и так как Sage и LaTeX являются мощными инструментами, то стоит изучить -``SAGE_ROOT/local/share/texmf/tex/generic/sagetex``. +``SAGE_ROOT/local/share/texmf/tex/latex/sagetex``. diff --git a/src/ext/threejs/threejs_template.html b/src/ext/threejs/threejs_template.html index 31244702317..b1c6a5bab13 100644 --- a/src/ext/threejs/threejs_template.html +++ b/src/ext/threejs/threejs_template.html @@ -2,8 +2,8 @@ - - + +