Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gap-hapcryst for openSUSE:Factory 
checked in at 2026-08-19 17:58:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gap-hapcryst (Old)
 and      /work/SRC/openSUSE:Factory/.gap-hapcryst.new.1258 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gap-hapcryst"

Wed Aug 19 17:58:27 2026 rev:3 rq:1371986 version:0.2.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/gap-hapcryst/gap-hapcryst.changes        
2026-06-16 14:01:56.054475261 +0200
+++ /work/SRC/openSUSE:Factory/.gap-hapcryst.new.1258/gap-hapcryst.changes      
2026-08-19 18:00:28.517637048 +0200
@@ -1,0 +2,8 @@
+Wed Aug 19 13:08:04 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- Update to release 0.2.1
+  * Cease defining `IsSquareMat` ourselves if GAP already
+    provides it
+  * Compatibility with future `polymaking` changes
+
+-------------------------------------------------------------------

Old:
----
  hapcryst-0.2.0.tar.gz

New:
----
  hapcryst-0.2.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gap-hapcryst.spec ++++++
--- /var/tmp/diff_new_pack.7a9Qxp/_old  2026-08-19 18:00:29.345666524 +0200
+++ /var/tmp/diff_new_pack.7a9Qxp/_new  2026-08-19 18:00:29.347666595 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           gap-hapcryst
-Version:        0.2.0
+Version:        0.2.1
 Release:        0
 Summary:        GAP: A HAP extension for crytallographic groups
 License:        GPL-2.0-or-later
@@ -35,7 +35,7 @@
 Requires:       gap-polycyclic >= 2.8.1
 Requires:       gap-polymaking >= 0.8.6
 Requires:       polymake
-Suggests:       gap-carat >= 1.1
+Suggests:       gap-caratinterface >= 2.3.1
 Suggests:       gap-crystcat >= 1.1.2
 Suggests:       gap-gapdoc >= 0.99
 

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.7a9Qxp/_old  2026-08-19 18:00:29.377667663 +0200
+++ /var/tmp/diff_new_pack.7a9Qxp/_new  2026-08-19 18:00:29.379667734 +0200
@@ -1,5 +1,5 @@
-mtime: 1781544680
-commit: e0a092b202e10db5d7caa0dc264cf52e482d9d29f72fcf9f7684396520ea49ba
+mtime: 1787144906
+commit: 0ba2457b5408748652023e93a111cae074b97d2dd83e8adb8839280351074f73
 url: https://src.opensuse.org/jengelh/gap-hapcryst
 revision: master
 

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-08-19 15:08:26.000000000 +0200
@@ -0,0 +1,4 @@
+*.obscpio
+*.osc
+_build.*
+.pbuild

++++++ hapcryst-0.2.0.tar.gz -> hapcryst-0.2.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/CHANGES.md 
new/hapcryst-0.2.1/CHANGES.md
--- old/hapcryst-0.2.0/CHANGES.md       2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/CHANGES.md       2026-08-18 02:00:00.000000000 +0200
@@ -1,6 +1,12 @@
 This file describes changes in the AutoDoc package.
 
 
+## 0.2.1 (2026-08-18)
+
+- Don't define `IsSquareMat` if GAP provides it (it does since 4.16.0)
+- Compatibility with future `polymaking` changes (don't use 
`POLYMAKE_DATA_DIR`)
+- Various janitorial changes
+
 ## 0.2.0 (2026-03-24)
 
 - Require GAP >= 4.12
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/PackageInfo.g 
new/hapcryst-0.2.1/PackageInfo.g
--- old/hapcryst-0.2.0/PackageInfo.g    2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/PackageInfo.g    2026-08-18 02:00:00.000000000 +0200
@@ -2,8 +2,8 @@
 
 PackageName := "HAPcryst",
 Subtitle := "A HAP extension for crystallographic groups",
-Version := "0.2.0",
-Date := "24/03/2026", # dd/mm/yyyy format
+Version := "0.2.1",
+Date := "18/08/2026", # dd/mm/yyyy format
 License := "GPL-2.0-or-later",
 
 Persons := [
@@ -62,11 +62,11 @@
                    ["polymaking",">=0.8.6"],
                    ],
   SuggestedOtherPackages := [
-                   [ "Carat", ">=1.1" ],
+                   ["CaratInterface",">=2.3.1"],
                    ["CrystCat",">=1.1.2"],
                    ["GAPDoc", ">= 0.99"]
                    ],
-  ExternalConditions := ["polymake (https://polymake.org) must be installed to 
calculate resolutions"]
+  ExternalConditions := [["polymake must be installed to calculate 
resolutions", "https://polymake.org";]],
 ),
 
 AvailabilityTest := ReturnTrue,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/HAPcryst.tex 
new/hapcryst-0.2.1/doc/HAPcryst.tex
--- old/hapcryst-0.2.0/doc/HAPcryst.tex 2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/HAPcryst.tex 2026-08-18 02:00:00.000000000 +0200
@@ -90,27 +90,26 @@
 \begin{titlepage}
 \mbox{}\vfill
 
-\begin{center}{\maintitlesize \textbf{ HAPcryst \mbox{}}}\\
+\begin{center}{\maintitlesize \textbf{ HAPcryst \\
+\mbox{}}}\\
 \vfill
 
-\hypersetup{pdftitle= HAPcryst }
+\hypersetup{pdftitle={ HAPcryst }}
 \markright{\scriptsize \mbox{}\hfill  HAPcryst  \hfill\mbox{}}
-{\Huge \textbf{ A HAP extension for crystallographic groups \mbox{}}}\\
+{\Huge \textbf{ A HAP extension for crystallographic groups \\
+\mbox{}}}\\
 \vfill
 
-{\Huge  Version 0.2.0 \mbox{}}\\[1cm]
-{ 24 March 2026 \mbox{}}\\[1cm]
+{\Huge  Version 0.2.1 \mbox{}}\\[1cm]
+{ 18 August 2026 \mbox{}}\\[1cm]
 \mbox{}\\[2cm]
-{\Large \textbf{ Marc Roeder\\
-  \mbox{}}}\\
-\hypersetup{pdfauthor= Marc Roeder\\
-  }
+{\Large \textbf{\strut  Marc Roeder   \strut\mbox{}}}\\
+\hypersetup{pdfauthor={ Marc Roeder  }}
 \end{center}\vfill
 
 \mbox{}\\
 {\mbox{}\\
-\small \noindent \textbf{ Marc Roeder\\
-  }  Email: \href{mailto://[email protected]} 
{\texttt{[email protected]}}}\\
+\small \noindent \textbf{ Marc Roeder  }  Email: 
\href{mailto://[email protected]} {\texttt{[email protected]}}}\\
 \end{titlepage}
 
 \newpage\setcounter{page}{2}
@@ -225,7 +224,7 @@
 \hyperdef{L}{X7D9044767BEB1523}{}
 {
   \textsf{HAPcryst} itself does only have one global variable, namely 
\texttt{InfoHAPcryst} (\ref{InfoHAPcryst}). The location of files generated for 
interaction with polymake are determined
-by the value of \texttt{POLYMAKE{\textunderscore}DATA{\textunderscore}DIR} 
(\textbf{polymaking: POLYMAKE{\textunderscore}DATA{\textunderscore}DIR}) which 
is a global variable of \textsf{polymaking}. 
+by the \textsf{polymaking}. 
 
 \subsection{\textcolor{Chapter }{InfoHAPcryst}}
 \logpage{[ 1, 3, 1 ]}\nobreak
@@ -323,7 +322,7 @@
   true
   !gapprompt@gap>| !gapinput@DimensionSquareMat(m);|
   3
-  !gapprompt@gap>| !gapinput@DimensionSquareMat([[1,2],[1,2,3]]);|
+  !gapprompt@gap>| !gapinput@DimensionSquareMat([[1,2,3],[4,5,6]]);|
   fail
 \end{Verbatim}
  Affine mappings of $n$ dimensional space are often written as a pair $(A,v)$ 
where $A$ is a linear mapping and $v$ is a vector. \textsf{GAP} represents 
affine mappings by $n+1$ times $n+1$ matrices $M$ which satisfy 
$M_{{n+1,n+1}}=1$ and $M_{{i,n+1}}=0$ for all $1\leq i \leq n$.
@@ -556,11 +555,11 @@
  Note that the restriction to points from $[0,1)^n$ makes sense if orbits 
should be compared and the vector passed to 
\texttt{OrbitStabilizerInUnitCubeOnRight} should be an element of the returned 
orbit (part). 
 \begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
   !gapprompt@gap>| !gapinput@S:=SpaceGroup(3,5);;|
-  !gapprompt@gap>| !gapinput@OrbitStabilizerInUnitCubeOnRight(S,[1/2,0,9/11]); 
  |
+  !gapprompt@gap>| !gapinput@OrbitStabilizerInUnitCubeOnRight(S,[1/2,0,9/11]);|
   rec( orbit := [ [ 0, 1/2, 2/11 ], [ 1/2, 0, 9/11 ] ], 
     stabilizer := Group([ [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], 
             [ 0, 0, 0, 1 ] ] ]) )
-  !gapprompt@gap>| !gapinput@OrbitStabilizerInUnitCubeOnRight(S,[0,0,0]);     |
+  !gapprompt@gap>| !gapinput@OrbitStabilizerInUnitCubeOnRight(S,[0,0,0]);|
   rec( orbit := [ [ 0, 0, 0 ] ], stabilizer := <matrix group with 2 
generators> )
 \end{Verbatim}
  If you are interested in other parts of the orbit, you can use 
\texttt{VectorModOne} (\ref{VectorModOne}) for the base point and the functions 
\texttt{ShiftedOrbitPart} (\ref{ShiftedOrbitPart}), 
\texttt{TranslationsToOneCubeAroundCenter} 
(\ref{TranslationsToOneCubeAroundCenter}) and \texttt{TranslationsToBox} 
(\ref{TranslationsToBox}) for the resulting orbit\\
@@ -601,11 +600,10 @@
 \begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
   !gapprompt@gap>| !gapinput@S:=SpaceGroup(3,5);;|
   !gapprompt@gap>| 
!gapinput@OrbitStabilizerInUnitCubeOnRightOnSets(S,[[0,0,0],[0,1/2,0]]);|
-  rec( orbit := [ [ [ -1/2, 0, 0 ], [ 0, 0, 0 ] ], 
-                  [ [ 0, 0, 0 ], [ 0, 1/2, 0 ] ],
-                  [ [ 1/2, 0, 0 ], [ 1, 0, 0 ] ] ],
-    stabilizer := Group([ [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], 
-                          [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ] ]) )
+  rec( 
+    orbit := [ [ [ -1/2, 0, 0 ], [ 0, 0, 0 ] ], [ [ 0, 0, 0 ], [ 0, 1/2, 0 ] 
], 
+        [ [ 1/2, 0, 0 ], [ 1, 0, 0 ] ] ], stabilizer := <matrix group of size 
+      1 with 3 generators> )
 \end{Verbatim}
  
 
@@ -729,7 +727,7 @@
   !gapprompt@gap>| !gapinput@S:=SpaceGroup(3,5);;|
   !gapprompt@gap>| !gapinput@RepresentativeActionOnRightOnSets(G, 
[[0,0,0],[0,1/2,0]],|
   !gapprompt@>| !gapinput@       [ [ 0, 1/2, 0 ], [ 0, 1, 0 ] ]);|
-  [ [ 0, -1, 0, 0 ], [ -1, 0, 0, 0 ], [ 0, 0, -1, 0 ], [ 0, 1, 0, 1 ] ]
+  [ [ -1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, -1, 0 ], [ 0, 1, 0, 1 ] ]
 \end{Verbatim}
  
 \subsection{\textcolor{Chapter }{Getting other orbit parts}}\logpage{[ 3, 1, 8 
]}
@@ -757,7 +755,7 @@
  
 \begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
   !gapprompt@gap>| 
!gapinput@ShiftedOrbitPart([0,0,0],[[1/2,1/2,1/3],-[1/2,1/2,1/2],[19,3,1]]);|
-  [ [ 1/2, 1/2, 1/3 ], [ 1/2, 1/2, 1/2 ], [ 0, 0, 0 ] ]
+  [ [ 0, 0, 0 ], [ 1/2, 1/2, 1/3 ], [ 1/2, 1/2, 1/2 ] ]
   !gapprompt@gap>| 
!gapinput@ShiftedOrbitPart([1,1,1],[[1/2,1/2,1/2],-[1/2,1/2,1/2]]);|
   [ [ 3/2, 3/2, 3/2 ] ]
 \end{Verbatim}
@@ -1068,8 +1066,8 @@
   #I  3(2/12): 0:00:00.000
   #I  Face lattice done ( 0:00:00.004). Calculating boundary
   #I  done ( 0:00:00.004) Reformating...
-  !gapprompt@gap>| !gapinput@RecNames(fl);|
-  [ "hasse", "elts", "groupring" ]
+  !gapprompt@gap>| !gapinput@Set(RecNames(fl));|
+  [ "elts", "groupring", "hasse" ]
   !gapprompt@gap>| [email protected];|
   <free left module over Integers, and ring-with-one, with 10 generators>
 \end{Verbatim}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/_entities.xml 
new/hapcryst-0.2.1/doc/_entities.xml
--- old/hapcryst-0.2.0/doc/_entities.xml        2026-03-24 16:13:22.000000000 
+0100
+++ new/hapcryst-0.2.1/doc/_entities.xml        2026-08-18 02:00:00.000000000 
+0200
@@ -1 +1,4 @@
 <!ENTITY HAPcryst '<Package>HAPcryst</Package>'>
+<!ENTITY RELEASEDATE '18 August 2026'>
+<!ENTITY RELEASEYEAR '2026'>
+<!ENTITY VERSION '0.2.1'>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/chap0.html 
new/hapcryst-0.2.1/doc/chap0.html
--- old/hapcryst-0.2.0/doc/chap0.html   2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/chap0.html   2026-08-18 02:00:00.000000000 +0200
@@ -29,17 +29,16 @@
 <h2>A HAP extension for crystallographic groups</h2>
 
 <p>
-    Version 0.2.0</p>
+    Version 0.2.1</p>
 
 <p>
-    24 March 2026
+    18 August 2026
   </p>
 
 </div>
 <p><b>
     Marc Roeder
 
-
   </b>
 <br />Email: <span class="URL"><a 
href="mailto:[email protected]";>[email protected]</a></span>
 </p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/chap0.txt 
new/hapcryst-0.2.1/doc/chap0.txt
--- old/hapcryst-0.2.0/doc/chap0.txt    2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/chap0.txt    2026-08-18 02:00:00.000000000 +0200
@@ -6,10 +6,10 @@
                   A HAP extension for crystallographic groups 
   
   
-                                 Version 0.2.0
+                                 Version 0.2.1
   
   
-                                 24 March 2026
+                                 18 August 2026
   
   
                                   Marc Roeder
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/chap0_mj.html 
new/hapcryst-0.2.1/doc/chap0_mj.html
--- old/hapcryst-0.2.0/doc/chap0_mj.html        2026-03-24 16:13:22.000000000 
+0100
+++ new/hapcryst-0.2.1/doc/chap0_mj.html        2026-08-18 02:00:00.000000000 
+0200
@@ -32,17 +32,16 @@
 <h2>A HAP extension for crystallographic groups</h2>
 
 <p>
-    Version 0.2.0</p>
+    Version 0.2.1</p>
 
 <p>
-    24 March 2026
+    18 August 2026
   </p>
 
 </div>
 <p><b>
     Marc Roeder
 
-
   </b>
 <br />Email: <span class="URL"><a 
href="mailto:[email protected]";>[email protected]</a></span>
 </p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/chap1.html 
new/hapcryst-0.2.1/doc/chap1.html
--- old/hapcryst-0.2.0/doc/chap1.html   2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/chap1.html   2026-08-18 02:00:00.000000000 +0200
@@ -126,7 +126,7 @@
 
 <h4>1.3 <span class="Heading">Global Variables</span></h4>
 
-<p><strong class="pkg">HAPcryst</strong> itself does only have one global 
variable, namely <code class="func">InfoHAPcryst</code> (<a 
href="chap1.html#X78B0A21E7FD0F3BB"><span class="RefLink">1.3-1</span></a>). 
The location of files generated for interaction with polymake are determined by 
the value of <code class="func">POLYMAKE_DATA_DIR</code> (<a 
href="../../../pkg/polymaking/doc/chap3.html#X7C07B16B873BA46D"><span 
class="RefLink">polymaking: POLYMAKE_DATA_DIR</span></a>) which is a global 
variable of <strong class="pkg">polymaking</strong>.</p>
+<p><strong class="pkg">HAPcryst</strong> itself does only have one global 
variable, namely <code class="func">InfoHAPcryst</code> (<a 
href="chap1.html#X78B0A21E7FD0F3BB"><span class="RefLink">1.3-1</span></a>). 
The location of files generated for interaction with polymake are determined by 
the <strong class="pkg">polymaking</strong>.</p>
 
 <p><a id="X78B0A21E7FD0F3BB" name="X78B0A21E7FD0F3BB"></a></p>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/chap1.txt 
new/hapcryst-0.2.1/doc/chap1.txt
--- old/hapcryst-0.2.0/doc/chap1.txt    2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/chap1.txt    2026-08-18 02:00:00.000000000 +0200
@@ -95,8 +95,7 @@
   
   HAPcryst  itself  does  only  have  one global 
variable, namely InfoHAPcryst
   (1.3-1).  The  location of files generated for interaction with 
polymake are
-  determined by the value of POLYMAKE_DATA_DIR (polymaking: 
POLYMAKE_DATA_DIR)
-  which is a global variable of polymaking.
+  determined by the polymaking.
   
   1.3-1 InfoHAPcryst
   
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/chap1_mj.html 
new/hapcryst-0.2.1/doc/chap1_mj.html
--- old/hapcryst-0.2.0/doc/chap1_mj.html        2026-03-24 16:13:22.000000000 
+0100
+++ new/hapcryst-0.2.1/doc/chap1_mj.html        2026-08-18 02:00:00.000000000 
+0200
@@ -129,7 +129,7 @@
 
 <h4>1.3 <span class="Heading">Global Variables</span></h4>
 
-<p><strong class="pkg">HAPcryst</strong> itself does only have one global 
variable, namely <code class="func">InfoHAPcryst</code> (<a 
href="chap1_mj.html#X78B0A21E7FD0F3BB"><span class="RefLink">1.3-1</span></a>). 
The location of files generated for interaction with polymake are determined by 
the value of <code class="func">POLYMAKE_DATA_DIR</code> (<a 
href="../../../pkg/polymaking/doc/chap3_mj.html#X7C07B16B873BA46D"><span 
class="RefLink">polymaking: POLYMAKE_DATA_DIR</span></a>) which is a global 
variable of <strong class="pkg">polymaking</strong>.</p>
+<p><strong class="pkg">HAPcryst</strong> itself does only have one global 
variable, namely <code class="func">InfoHAPcryst</code> (<a 
href="chap1_mj.html#X78B0A21E7FD0F3BB"><span class="RefLink">1.3-1</span></a>). 
The location of files generated for interaction with polymake are determined by 
the <strong class="pkg">polymaking</strong>.</p>
 
 <p><a id="X78B0A21E7FD0F3BB" name="X78B0A21E7FD0F3BB"></a></p>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/chap2.html 
new/hapcryst-0.2.1/doc/chap2.html
--- old/hapcryst-0.2.0/doc/chap2.html   2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/chap2.html   2026-08-18 02:00:00.000000000 +0200
@@ -110,7 +110,7 @@
 true
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">DimensionSquareMat(m);</span>
 3
-<span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">DimensionSquareMat([[1,2],[1,2,3]]);</span>
+<span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">DimensionSquareMat([[1,2,3],[4,5,6]]);</span>
 fail
 </pre></div>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/chap2.txt 
new/hapcryst-0.2.1/doc/chap2.txt
--- old/hapcryst-0.2.0/doc/chap2.txt    2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/chap2.txt    2026-08-18 02:00:00.000000000 +0200
@@ -48,7 +48,7 @@
     true
     gap> DimensionSquareMat(m);
     3
-    gap> DimensionSquareMat([[1,2],[1,2,3]]);
+    gap> DimensionSquareMat([[1,2,3],[4,5,6]]);
     fail
   
   
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/chap2_mj.html 
new/hapcryst-0.2.1/doc/chap2_mj.html
--- old/hapcryst-0.2.0/doc/chap2_mj.html        2026-03-24 16:13:22.000000000 
+0100
+++ new/hapcryst-0.2.1/doc/chap2_mj.html        2026-08-18 02:00:00.000000000 
+0200
@@ -113,7 +113,7 @@
 true
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">DimensionSquareMat(m);</span>
 3
-<span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">DimensionSquareMat([[1,2],[1,2,3]]);</span>
+<span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">DimensionSquareMat([[1,2,3],[4,5,6]]);</span>
 fail
 </pre></div>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/chap3.html 
new/hapcryst-0.2.1/doc/chap3.html
--- old/hapcryst-0.2.0/doc/chap3.html   2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/chap3.html   2026-08-18 02:00:00.000000000 +0200
@@ -71,11 +71,11 @@
 
 <div class="example"><pre>
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">S:=SpaceGroup(3,5);;</span>
-<span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">OrbitStabilizerInUnitCubeOnRight(S,[1/2,0,9/11]);   </span>
+<span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">OrbitStabilizerInUnitCubeOnRight(S,[1/2,0,9/11]);</span>
 rec( orbit := [ [ 0, 1/2, 2/11 ], [ 1/2, 0, 9/11 ] ], 
   stabilizer := Group([ [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], 
           [ 0, 0, 0, 1 ] ] ]) )
-<span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">OrbitStabilizerInUnitCubeOnRight(S,[0,0,0]);     </span>
+<span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">OrbitStabilizerInUnitCubeOnRight(S,[0,0,0]);</span>
 rec( orbit := [ [ 0, 0, 0 ] ], stabilizer := &lt;matrix group with 2 
generators&gt; )
 </pre></div>
 
@@ -117,11 +117,10 @@
 <div class="example"><pre>
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">S:=SpaceGroup(3,5);;</span>
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">OrbitStabilizerInUnitCubeOnRightOnSets(S,[[0,0,0],[0,1/2,0]]);</span>
-rec( orbit := [ [ [ -1/2, 0, 0 ], [ 0, 0, 0 ] ], 
-                [ [ 0, 0, 0 ], [ 0, 1/2, 0 ] ],
-                [ [ 1/2, 0, 0 ], [ 1, 0, 0 ] ] ],
-  stabilizer := Group([ [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], 
-                        [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ] ]) )
+rec( 
+  orbit := [ [ [ -1/2, 0, 0 ], [ 0, 0, 0 ] ], [ [ 0, 0, 0 ], [ 0, 1/2, 0 ] ], 
+      [ [ 1/2, 0, 0 ], [ 1, 0, 0 ] ] ], stabilizer := &lt;matrix group of size 
+    1 with 3 generators&gt; )
 </pre></div>
 
 <p><a id="X82CCCD597C86A08A" name="X82CCCD597C86A08A"></a></p>
@@ -212,7 +211,7 @@
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">S:=SpaceGroup(3,5);;</span>
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">RepresentativeActionOnRightOnSets(G, 
[[0,0,0],[0,1/2,0]],</span>
 <span class="GAPprompt">&gt;</span> <span class="GAPinput">       [ [ 0, 1/2, 
0 ], [ 0, 1, 0 ] ]);</span>
-[ [ 0, -1, 0, 0 ], [ -1, 0, 0, 0 ], [ 0, 0, -1, 0 ], [ 0, 1, 0, 1 ] ]
+[ [ -1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, -1, 0 ], [ 0, 1, 0, 1 ] ]
 </pre></div>
 
 <p><a id="X8002407080DB3EA2" name="X8002407080DB3EA2"></a></p>
@@ -233,7 +232,7 @@
 
 <div class="example"><pre>
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">ShiftedOrbitPart([0,0,0],[[1/2,1/2,1/3],-[1/2,1/2,1/2],[19,3,1]]);</span>
-[ [ 1/2, 1/2, 1/3 ], [ 1/2, 1/2, 1/2 ], [ 0, 0, 0 ] ]
+[ [ 0, 0, 0 ], [ 1/2, 1/2, 1/3 ], [ 1/2, 1/2, 1/2 ] ]
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">ShiftedOrbitPart([1,1,1],[[1/2,1/2,1/2],-[1/2,1/2,1/2]]);</span>
 [ [ 3/2, 3/2, 3/2 ] ]
 </pre></div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/chap3.txt 
new/hapcryst-0.2.1/doc/chap3.txt
--- old/hapcryst-0.2.0/doc/chap3.txt    2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/chap3.txt    2026-08-18 02:00:00.000000000 +0200
@@ -29,11 +29,11 @@
   
     Example  
     gap> S:=SpaceGroup(3,5);;
-    gap> OrbitStabilizerInUnitCubeOnRight(S,[1/2,0,9/11]); 
  
+    gap> 
OrbitStabilizerInUnitCubeOnRight(S,[1/2,0,9/11]);
     rec( orbit := [ [ 0, 1/2, 2/11 ], [ 1/2, 0, 9/11 ] ], 
       stabilizer := Group([ [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 
1, 0 ], 
               [ 0, 0, 0, 1 ] ] ]) )
-    gap> OrbitStabilizerInUnitCubeOnRight(S,[0,0,0]);     

+    gap> 
OrbitStabilizerInUnitCubeOnRight(S,[0,0,0]);
     rec( orbit := [ [ 0, 0, 0 ] ], stabilizer := <matrix group with 2 
generators> )
   
   
@@ -76,11 +76,10 @@
     Example  
     gap> S:=SpaceGroup(3,5);;
     gap> 
OrbitStabilizerInUnitCubeOnRightOnSets(S,[[0,0,0],[0,1/2,0]]);
-    rec( orbit := [ [ [ -1/2, 0, 0 ], [ 0, 0, 0 ] ], 
-                    [ [ 0, 0, 0 ], [ 0, 1/2, 0 ] ],
-                    [ [ 1/2, 0, 0 ], [ 1, 0, 0 ] ] ],
-      stabilizer := Group([ [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], 

-                            [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ] ]) 
)
+    rec( 
+      orbit := [ [ [ -1/2, 0, 0 ], [ 0, 0, 0 ] ], [ [ 0, 0, 0 ], [ 0, 
1/2, 0 ] ], 
+          [ [ 1/2, 0, 0 ], [ 1, 0, 0 ] ] ], stabilizer := <matrix 
group of size 
+        1 with 3 generators> )
   
   
   3.1-3 OrbitPartInVertexSetsStandardSpaceGroup
@@ -171,7 +170,7 @@
     gap> S:=SpaceGroup(3,5);;
     gap> RepresentativeActionOnRightOnSets(G, 
[[0,0,0],[0,1/2,0]],
     >        [ [ 0, 1/2, 0 ], [ 0, 1, 0 ] ]);
-    [ [ 0, -1, 0, 0 ], [ -1, 0, 0, 0 ], [ 0, 0, -1, 0 ], [ 0, 1, 0, 1 
] ]
+    [ [ -1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, -1, 0 ], [ 0, 1, 0, 1 
] ]
   
   
   
@@ -190,7 +189,7 @@
   
     Example  
     gap> 
ShiftedOrbitPart([0,0,0],[[1/2,1/2,1/3],-[1/2,1/2,1/2],[19,3,1]]);
-    [ [ 1/2, 1/2, 1/3 ], [ 1/2, 1/2, 1/2 ], [ 0, 0, 0 ] ]
+    [ [ 0, 0, 0 ], [ 1/2, 1/2, 1/3 ], [ 1/2, 1/2, 1/2 ] ]
     gap> 
ShiftedOrbitPart([1,1,1],[[1/2,1/2,1/2],-[1/2,1/2,1/2]]);
     [ [ 3/2, 3/2, 3/2 ] ]
   
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/chap3_mj.html 
new/hapcryst-0.2.1/doc/chap3_mj.html
--- old/hapcryst-0.2.0/doc/chap3_mj.html        2026-03-24 16:13:22.000000000 
+0100
+++ new/hapcryst-0.2.1/doc/chap3_mj.html        2026-08-18 02:00:00.000000000 
+0200
@@ -74,11 +74,11 @@
 
 <div class="example"><pre>
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">S:=SpaceGroup(3,5);;</span>
-<span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">OrbitStabilizerInUnitCubeOnRight(S,[1/2,0,9/11]);   </span>
+<span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">OrbitStabilizerInUnitCubeOnRight(S,[1/2,0,9/11]);</span>
 rec( orbit := [ [ 0, 1/2, 2/11 ], [ 1/2, 0, 9/11 ] ], 
   stabilizer := Group([ [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], 
           [ 0, 0, 0, 1 ] ] ]) )
-<span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">OrbitStabilizerInUnitCubeOnRight(S,[0,0,0]);     </span>
+<span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">OrbitStabilizerInUnitCubeOnRight(S,[0,0,0]);</span>
 rec( orbit := [ [ 0, 0, 0 ] ], stabilizer := &lt;matrix group with 2 
generators&gt; )
 </pre></div>
 
@@ -120,11 +120,10 @@
 <div class="example"><pre>
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">S:=SpaceGroup(3,5);;</span>
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">OrbitStabilizerInUnitCubeOnRightOnSets(S,[[0,0,0],[0,1/2,0]]);</span>
-rec( orbit := [ [ [ -1/2, 0, 0 ], [ 0, 0, 0 ] ], 
-                [ [ 0, 0, 0 ], [ 0, 1/2, 0 ] ],
-                [ [ 1/2, 0, 0 ], [ 1, 0, 0 ] ] ],
-  stabilizer := Group([ [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], 
-                        [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ] ]) )
+rec( 
+  orbit := [ [ [ -1/2, 0, 0 ], [ 0, 0, 0 ] ], [ [ 0, 0, 0 ], [ 0, 1/2, 0 ] ], 
+      [ [ 1/2, 0, 0 ], [ 1, 0, 0 ] ] ], stabilizer := &lt;matrix group of size 
+    1 with 3 generators&gt; )
 </pre></div>
 
 <p><a id="X82CCCD597C86A08A" name="X82CCCD597C86A08A"></a></p>
@@ -215,7 +214,7 @@
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">S:=SpaceGroup(3,5);;</span>
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">RepresentativeActionOnRightOnSets(G, 
[[0,0,0],[0,1/2,0]],</span>
 <span class="GAPprompt">&gt;</span> <span class="GAPinput">       [ [ 0, 1/2, 
0 ], [ 0, 1, 0 ] ]);</span>
-[ [ 0, -1, 0, 0 ], [ -1, 0, 0, 0 ], [ 0, 0, -1, 0 ], [ 0, 1, 0, 1 ] ]
+[ [ -1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, -1, 0 ], [ 0, 1, 0, 1 ] ]
 </pre></div>
 
 <p><a id="X8002407080DB3EA2" name="X8002407080DB3EA2"></a></p>
@@ -236,7 +235,7 @@
 
 <div class="example"><pre>
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">ShiftedOrbitPart([0,0,0],[[1/2,1/2,1/3],-[1/2,1/2,1/2],[19,3,1]]);</span>
-[ [ 1/2, 1/2, 1/3 ], [ 1/2, 1/2, 1/2 ], [ 0, 0, 0 ] ]
+[ [ 0, 0, 0 ], [ 1/2, 1/2, 1/3 ], [ 1/2, 1/2, 1/2 ] ]
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">ShiftedOrbitPart([1,1,1],[[1/2,1/2,1/2],-[1/2,1/2,1/2]]);</span>
 [ [ 3/2, 3/2, 3/2 ] ]
 </pre></div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/chap4.html 
new/hapcryst-0.2.1/doc/chap4.html
--- old/hapcryst-0.2.0/doc/chap4.html   2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/chap4.html   2026-08-18 02:00:00.000000000 +0200
@@ -235,8 +235,8 @@
 #I  3(2/12): 0:00:00.000
 #I  Face lattice done ( 0:00:00.004). Calculating boundary
 #I  done ( 0:00:00.004) Reformating...
-<span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">RecNames(fl);</span>
-[ "hasse", "elts", "groupring" ]
+<span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">Set(RecNames(fl));</span>
+[ "elts", "groupring", "hasse" ]
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">fl.groupring;</span>
 &lt;free left module over Integers, and ring-with-one, with 10 generators&gt;
 </pre></div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/chap4.txt 
new/hapcryst-0.2.1/doc/chap4.txt
--- old/hapcryst-0.2.0/doc/chap4.txt    2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/chap4.txt    2026-08-18 02:00:00.000000000 +0200
@@ -248,8 +248,8 @@
     #I  3(2/12): 0:00:00.000
     #I  Face lattice done ( 0:00:00.004). Calculating 
boundary
     #I  done ( 0:00:00.004) Reformating...
-    gap> RecNames(fl);
-    [ "hasse", "elts", "groupring" ]
+    gap> Set(RecNames(fl));
+    [ "elts", "groupring", "hasse" ]
     gap> fl.groupring;
     <free left module over Integers, and ring-with-one, with 10 
generators>
   
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/chap4_mj.html 
new/hapcryst-0.2.1/doc/chap4_mj.html
--- old/hapcryst-0.2.0/doc/chap4_mj.html        2026-03-24 16:13:22.000000000 
+0100
+++ new/hapcryst-0.2.1/doc/chap4_mj.html        2026-08-18 02:00:00.000000000 
+0200
@@ -238,8 +238,8 @@
 #I  3(2/12): 0:00:00.000
 #I  Face lattice done ( 0:00:00.004). Calculating boundary
 #I  done ( 0:00:00.004) Reformating...
-<span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">RecNames(fl);</span>
-[ "hasse", "elts", "groupring" ]
+<span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">Set(RecNames(fl));</span>
+[ "elts", "groupring", "hasse" ]
 <span class="GAPprompt">gap&gt;</span> <span 
class="GAPinput">fl.groupring;</span>
 &lt;free left module over Integers, and ring-with-one, with 10 generators&gt;
 </pre></div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/chooser.html 
new/hapcryst-0.2.1/doc/chooser.html
--- old/hapcryst-0.2.0/doc/chooser.html 2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/chooser.html 2026-08-18 02:00:00.000000000 +0200
@@ -23,9 +23,18 @@
   return "";
 }
 
+<!-- load dark appearance either explicitly or via the OS preference -->
+function writeAppearanceStyle(mode) {
+  if (mode == "dark") {
+    document.writeln('<link rel="stylesheet" type="text/css" href="dark.css" 
/>');
+  } else if (mode != "light") {
+    document.writeln('<style type="text/css">@import "dark.css" 
(prefers-color-scheme: dark);</style>');
+  }
+}
+
 <!-- find style from current values in form -->
 function getstyle() {
-  var choices = ["toggle","colorprompt","tocside","font","justify"]; 
+  var choices = 
["toggle","colorprompt","tocside","font","justify","appearance"];
   var style = "";
   for (var i=0; choices.length > i; i++) {
     var a = currval(choices[i]);
@@ -55,17 +64,23 @@
 <!-- initialize form from GAPDocStyle cookie -->
 function initform() {
   var style = valueString(document.cookie, "GAPDocStyle");
+  if (style == 0 || style == "default")
+    writeAppearanceStyle("");
   if (style != 0 && style.length > 0 && style.length != "default") {
     stlist = style.split(",");
     var chform = document.forms[0].elements;
+    var appearance = "";
     for (var i=0; chform.length > i; i++) {
       if (chform[i].type == "radio") {
         for (var j=0; stlist.length > j; j++) {
-          if (chform[i].value == stlist[j]) 
+          if (stlist[j] == "dark" || stlist[j] == "light")
+            appearance = stlist[j];
+          if (chform[i].value == stlist[j])
             chform[i].checked = true;
         }
       }
     }
+    writeAppearanceStyle(appearance);
   }
 }
 
@@ -119,6 +134,15 @@
 <input type="radio" name="justify" value="ragged"
 onclick="javascript:f()"/> ragged right 
 </p>
+<p>
+Appearance:
+<input type="radio" name="appearance" value=""
+onclick="javascript:f()"/> system (default) &nbsp;&nbsp;&nbsp;
+<input type="radio" name="appearance" value="light" checked="checked"
+onclick="javascript:f()"/> light
+<input type="radio" name="appearance" value="dark"
+onclick="javascript:f()"/> dark
+</p>
 </form>
 <p>
 <a name="backLINK" href=""><strong>Apply settings to last page.</strong></a>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/dark.css 
new/hapcryst-0.2.1/doc/dark.css
--- old/hapcryst-0.2.0/doc/dark.css     1970-01-01 01:00:00.000000000 +0100
+++ new/hapcryst-0.2.1/doc/dark.css     2026-08-18 02:00:00.000000000 +0200
@@ -0,0 +1,178 @@
+/* dark.css                                             Frank Luebeck */
+/* Initial dark theme contributed by kiryph in issue #75.            */
+
+/* colors */
+body {
+  background: #121212;
+  color: #eee;
+}
+
+a:link {
+  color: #576cad;
+}
+
+a:visited {
+  color: #576cad;
+}
+
+a:active {
+  color: #eee;
+}
+
+a:hover {
+  background: #eee;
+}
+
+pre {
+  color: black;
+}
+
+tt, code {
+  color: #eee;
+}
+
+/* layout for the definitions of functions, variables, ... */
+div.func {
+  background: #909090;
+}
+
+/* Example elements (for old converted manuals, now in div+pre */
+table.example {
+  background: #efefef;
+}
+
+/* becomes ... */
+div.example {
+  background: #efefef;
+  color: black;
+}
+
+/* Links to chapters in all files at top and bottom. */
+div.chlinktop {
+  background: #22272e;
+  border-color: #3a414a;
+  color: #d7dde5;
+}
+
+div.chlinktop a:hover {
+  background: #2f3742;
+}
+
+div.chlinkbot {
+  background: #22272e;
+  border-color: #3a414a;
+  color: #d7dde5;
+}
+
+/* and this is for the "Top", "Prev", "Next" links */
+div.chlinkprevnexttop {
+  background: #22272e;
+  border-color: #3a414a;
+  color: #d7dde5;
+}
+
+div.chlinkprevnexttop a:hover {
+  background: #2f3742;
+}
+
+div.chlinkprevnextbot {
+  background: #22272e;
+  border-color: #3a414a;
+  color: #d7dde5;
+}
+
+div.chlinkprevnextbot a:hover {
+  background: #2f3742;
+}
+
+div.ContChap div.ContSect:hover div.ContSSBlock {
+  background: #eee;
+  border-color: #666;
+  color: #000;
+}
+
+div.ContSSBlock a:hover {
+  background: #fff;
+}
+
+/* and here for the side menu of contents in the chapter files */
+div.ChapSects a:hover {
+  background: #eee;
+  color: #000;
+}
+
+div.ChapSects div.ContSect:hover div.ContSSBlock {
+  background: #b5b5b5;
+  border-color: #666;
+  color: #000;
+}
+
+div.ChapSects div.ContSect:hover div.ContSSBlock a:hover {
+  background: #828282;
+}
+
+/* Table elements */
+table.GAPDocTable {
+  border-color: black;
+}
+
+table.GAPDocTable td, table.GAPDocTable th {
+  border-color: #555;
+}
+
+table.GAPDocTablenoborder td, table.GAPDocTable th {
+  border-color: #555;
+}
+
+/* Colors and fonts can be overwritten for some types of elements. */
+/* Verb elements */
+pre.normal {
+  color: #eee;
+}
+
+/* Func-like elements and Ref to Func-like */
+code.func {
+  color: #eee;
+}
+
+/* K elements */
+code.keyw {
+  color: #983d3d;
+}
+
+/* F elements */
+code.file {
+  color: #8e4510;
+}
+
+/* Arg elements */
+var.Arg {
+  color: #060;
+}
+
+/* colors for ColorPrompt like examples */
+span.GAPprompt {
+  color: #000097;
+}
+
+span.GAPbrkprompt {
+  color: #970000;
+}
+
+span.GAPinput {
+  color: #970000;
+}
+
+/* Bib entries */
+span.BibKey {
+  color: #052;
+}
+
+/* for light and dark mode pictures */
+.only-on-dark {
+  display: block;
+}
+
+.only-on-light {
+  display: none;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/geometry.xml 
new/hapcryst-0.2.1/doc/geometry.xml
--- old/hapcryst-0.2.0/doc/geometry.xml 2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/geometry.xml 2026-08-18 02:00:00.000000000 +0200
@@ -100,8 +100,8 @@
 #I  3(2/12): 0:00:00.000
 #I  Face lattice done ( 0:00:00.004). Calculating boundary
 #I  done ( 0:00:00.004) Reformating...
-gap> RecNames(fl);
-[ "hasse", "elts", "groupring" ]
+gap> Set(RecNames(fl));
+[ "elts", "groupring", "hasse" ]
 gap> fl.groupring;
 <free left module over Integers, and ring-with-one, with 10 generators>
 ]]></Example>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/intro.xml 
new/hapcryst-0.2.1/doc/intro.xml
--- old/hapcryst-0.2.0/doc/intro.xml    2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/intro.xml    2026-08-18 02:00:00.000000000 +0200
@@ -146,8 +146,7 @@
 <Package>HAPcryst</Package> itself does only have one global variable, namely
 <Ref InfoClass="InfoHAPcryst"/>. 
 The location of files generated for interaction with polymake are determined by
-the value of <Ref Var="POLYMAKE_DATA_DIR" BookName="polymaking"/> which is a
-global variable of <Package>polymaking</Package>.
+the <Package>polymaking</Package>.
 
 <ManSection>
     <InfoClass Name="InfoHAPcryst"/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/manual.css 
new/hapcryst-0.2.1/doc/manual.css
--- old/hapcryst-0.2.0/doc/manual.css   2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/manual.css   2026-08-18 02:00:00.000000000 +0200
@@ -477,6 +477,10 @@
 span.BibHowpublished {
 }
 
+/* for light and dark mode pictures */
+.only-on-dark {
+  display: none;
+}
 
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/manual.js 
new/hapcryst-0.2.1/doc/manual.js
--- old/hapcryst-0.2.0/doc/manual.js    2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/manual.js    2026-08-18 02:00:00.000000000 +0200
@@ -47,6 +47,20 @@
   return 0;
 }
 
+/* load dark appearance either explicitly or via the OS preference */
+function writeAppearanceStyle(mode) {
+  if (mode == "dark") {
+    document.writeln(
+      '<link rel="stylesheet" type="text/css" href="dark.css" />'
+    );
+  } else if (mode != "light") {
+    document.writeln(
+      '<style type="text/css">@import "dark.css" ' +
+      '(prefers-color-scheme: dark);</style>'
+    );
+  }
+}
+
 /* when a non-default style is chosen via URL or a cookie, then
    the cookie is reset and the styles .js and .css files are read  */
 function overwriteStyle() {
@@ -55,6 +69,8 @@
   /* otherwise check cookie */
   if (style == 0)
     style = valueString(document.cookie, "GAPDocStyle");
+  if (style == 0 || style == "default")
+    writeAppearanceStyle("");
   if (style == 0)
     return;
   if (style == "default")
@@ -70,13 +86,19 @@
     document.cookie = "GAPDocStyle="+style+";Path="+path;
     /* split into names of style files */
     var stlist = style.split(",");
+    var appearance = "";
     /* read style's css and js files */
     for (var i=0; i < stlist.length; i++) {
-      document.writeln('<link rel="stylesheet" type="text/css" href="'+
-                                                         stlist[i]+'.css" />');
-      document.writeln('<script src="'+stlist[i]+
-                                      '.js" type="text/javascript"></script>');
+      if (stlist[i] == "dark" || stlist[i] == "light") {
+        appearance = stlist[i];
+      } else {
+        document.writeln('<link rel="stylesheet" type="text/css" href="'+
+                                                           stlist[i]+'.css" 
/>');
+        document.writeln('<script src="'+stlist[i]+
+                                        '.js" 
type="text/javascript"></script>');
+      }
     }
+    writeAppearanceStyle(appearance);
   }
 }
 
@@ -110,4 +132,3 @@
   for (var i=0; i < jscontentfuncs.length; i++)
     jscontentfuncs[i]();
 }
-
Binary files old/hapcryst-0.2.0/doc/manual.pdf and 
new/hapcryst-0.2.1/doc/manual.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/manual.six 
new/hapcryst-0.2.1/doc/manual.six
--- old/hapcryst-0.2.0/doc/manual.six   2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/manual.six   2026-08-18 02:00:00.000000000 +0200
@@ -50,7 +50,7 @@
 133X\033[101X", "3.1", [ 3, 1, 0 ], 7, 10, 
       "orbit stabilizer for crystallographic groups", "X85CAB2EB85A6E17A" ], 
   [ "\033[1X\033[33X\033[0;-2YGetting other orbit parts\033[133X\033[101X", 
-      "3.1-8", [ 3, 1, 8 ], 177, 13, "getting other orbit parts", 
+      "3.1-8", [ 3, 1, 8 ], 176, 13, "getting other orbit parts", 
       "X8002407080DB3EA2" ], 
   [ 
       "\033[1X\033[33X\033[0;-2YResolutions of Crystallographic 
Groups\033[133X\\
@@ -109,7 +109,7 @@
   [ "installation", "1.2", [ 1, 2, 0 ], 55, 5, "installation", 
       "X85A08CF187A6D986" ], 
   [ "polymake", "1.2-1", [ 1, 2, 1 ], 75, 5, "polymake", "X7990986A8114E0DB" ]
-    , [ "\033[2XInfoHAPcryst\033[102X", "1.3-1", [ 1, 3, 1 ], 101, 5, 
+    , [ "\033[2XInfoHAPcryst\033[102X", "1.3-1", [ 1, 3, 1 ], 100, 5, 
       "infohapcryst", "X78B0A21E7FD0F3BB" ], 
   [ "\033[2XSignRat\033[102X", "2.1-1", [ 2, 1, 1 ], 10, 6, "signrat", 
       "X7D58A1848182EC26" ], 
@@ -145,27 +145,27 @@
       [ 3, 1, 2 ], 60, 11, "orbitstabilizerinunitcubeonrightonsets", 
       "X82BD20307A67C119" ], 
   [ "\033[2XOrbitPartInVertexSetsStandardSpaceGroup\033[102X", "3.1-3", 
-      [ 3, 1, 3 ], 86, 11, "orbitpartinvertexsetsstandardspacegroup", 
+      [ 3, 1, 3 ], 85, 11, "orbitpartinvertexsetsstandardspacegroup", 
       "X82CCCD597C86A08A" ], 
   [ "\033[2XOrbitPartInFacesStandardSpaceGroup\033[102X", "3.1-4", 
-      [ 3, 1, 4 ], 107, 12, "orbitpartinfacesstandardspacegroup", 
+      [ 3, 1, 4 ], 106, 12, "orbitpartinfacesstandardspacegroup", 
       "X8022CD75819DE536" ], 
   [ "\033[2XOrbitPartAndRepresentativesInFacesStandardSpaceGroup\033[102X", 
-      "3.1-5", [ 3, 1, 5 ], 120, 12, 
+      "3.1-5", [ 3, 1, 5 ], 119, 12, 
       "orbitpartandrepresentativesinfacesstandardspacegroup", 
       "X86A80FA17A4D6664" ], 
   [ "\033[2XStabilizerOnSetsStandardSpaceGroup\033[102X", "3.1-6", 
-      [ 3, 1, 6 ], 142, 12, "stabilizeronsetsstandardspacegroup", 
+      [ 3, 1, 6 ], 141, 12, "stabilizeronsetsstandardspacegroup", 
       "X81DE08687F0DBCC6" ], 
   [ "\033[2XRepresentativeActionOnRightOnSets\033[102X", "3.1-7", 
-      [ 3, 1, 7 ], 162, 13, "representativeactiononrightonsets", 
+      [ 3, 1, 7 ], 161, 13, "representativeactiononrightonsets", 
       "X83C6448679A54F9D" ], 
-  [ "\033[2XShiftedOrbitPart\033[102X", "3.1-9", [ 3, 1, 9 ], 184, 13, 
+  [ "\033[2XShiftedOrbitPart\033[102X", "3.1-9", [ 3, 1, 9 ], 183, 13, 
       "shiftedorbitpart", "X8751429287034F4A" ], 
   [ "\033[2XTranslationsToOneCubeAroundCenter\033[102X", "3.1-10", 
-      [ 3, 1, 10 ], 198, 13, "translationstoonecubearoundcenter", 
+      [ 3, 1, 10 ], 197, 13, "translationstoonecubearoundcenter", 
       "X82656DE584E8DC5D" ], 
-  [ "\033[2XTranslationsToBox\033[102X", "3.1-11", [ 3, 1, 11 ], 213, 13, 
+  [ "\033[2XTranslationsToBox\033[102X", "3.1-11", [ 3, 1, 11 ], 212, 13, 
       "translationstobox", "X858C787E83A902AB" ], 
   [ "\033[2XFundamentalDomainStandardSpaceGroup\033[102X", "4.1-1", 
       [ 4, 1, 1 ], 17, 15, "fundamentaldomainstandardspacegroup", 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/misc.xml 
new/hapcryst-0.2.1/doc/misc.xml
--- old/hapcryst-0.2.0/doc/misc.xml     2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/misc.xml     2026-08-18 02:00:00.000000000 +0200
@@ -50,7 +50,7 @@
 true
 gap> DimensionSquareMat(m);
 3
-gap> DimensionSquareMat([[1,2],[1,2,3]]);
+gap> DimensionSquareMat([[1,2,3],[4,5,6]]);
 fail
 ]]></Example>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/spacegroups.xml 
new/hapcryst-0.2.1/doc/spacegroups.xml
--- old/hapcryst-0.2.0/doc/spacegroups.xml      2026-03-24 16:13:22.000000000 
+0100
+++ new/hapcryst-0.2.1/doc/spacegroups.xml      2026-08-18 02:00:00.000000000 
+0200
@@ -7,7 +7,7 @@
 <ManSection>
     <Meth Name="OrbitStabilizerInUnitCubeOnRight"
           Arg="group, x"/>
-  <Returns> 
+  <Returns>
    A record containing
    <List>
     <Item>
@@ -15,7 +15,7 @@
     </Item>
     <Item>
      <K>.orbit</K> set of vectors from <M>[0,1)^n</M> which
-     represents the orbit. 
+     represents the orbit.
     </Item>
    </List>
   </Returns>
@@ -37,11 +37,11 @@
 
 <Example><![CDATA[
 gap> S:=SpaceGroup(3,5);;
-gap> OrbitStabilizerInUnitCubeOnRight(S,[1/2,0,9/11]);   
+gap> OrbitStabilizerInUnitCubeOnRight(S,[1/2,0,9/11]);
 rec( orbit := [ [ 0, 1/2, 2/11 ], [ 1/2, 0, 9/11 ] ], 
   stabilizer := Group([ [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], 
           [ 0, 0, 0, 1 ] ] ]) )
-gap> OrbitStabilizerInUnitCubeOnRight(S,[0,0,0]);     
+gap> OrbitStabilizerInUnitCubeOnRight(S,[0,0,0]);
 rec( orbit := [ [ 0, 0, 0 ] ], stabilizer := <matrix group with 2 generators> )
 ]]></Example>
 
@@ -78,7 +78,7 @@
     </Item>
     <Item>
      <K>.orbit</K> set of sets of vectors from <M>[0,1)^n</M> which
-     represents the orbit. 
+     represents the orbit.
     </Item>
    </List>
   </Returns>
@@ -92,17 +92,16 @@
    element of <K>.orbit</K> has a non-trivial intersection with the
    cube <M>[0,1)^n</M>. In general, these sets will not lie inside
    <M>[0,1)^n</M> completely.
-  </Description>  
+  </Description>
 </ManSection>
 
 <Example><![CDATA[
 gap> S:=SpaceGroup(3,5);;
 gap> OrbitStabilizerInUnitCubeOnRightOnSets(S,[[0,0,0],[0,1/2,0]]);
-rec( orbit := [ [ [ -1/2, 0, 0 ], [ 0, 0, 0 ] ], 
-                [ [ 0, 0, 0 ], [ 0, 1/2, 0 ] ],
-                [ [ 1/2, 0, 0 ], [ 1, 0, 0 ] ] ],
-  stabilizer := Group([ [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], 
-                        [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ] ]) )
+rec( 
+  orbit := [ [ [ -1/2, 0, 0 ], [ 0, 0, 0 ] ], [ [ 0, 0, 0 ], [ 0, 1/2, 0 ] ], 
+      [ [ 1/2, 0, 0 ], [ 1, 0, 0 ] ] ], stabilizer := <matrix group of size 
+    1 with 3 generators> )
 ]]></Example>
 
 <ManSection>
@@ -161,8 +160,8 @@
  A set of face-matrix pairs .
 </Returns>
   <Description>
-    This is a slight variation of 
-    <Ref Meth="OrbitPartInFacesStandardSpaceGroup"></Ref> 
+    This is a slight variation of
+    <Ref Meth="OrbitPartInFacesStandardSpaceGroup"></Ref>
     that also returns a representative for every orbit element.
   </Description>
 </ManSection>
@@ -215,14 +214,14 @@
     Returns an element of the space group
     <M>S</M> which takes the set <A>set</A> to the set
     <A>imageset</A>. The group must be in standard form and act on the right.
-  </Description>         
+  </Description>
 </ManSection>
 
 <Example><![CDATA[
 gap> S:=SpaceGroup(3,5);;
 gap> RepresentativeActionOnRightOnSets(G, [[0,0,0],[0,1/2,0]],
 >        [ [ 0, 1/2, 0 ], [ 0, 1, 0 ] ]);
-[ [ 0, -1, 0, 0 ], [ -1, 0, 0, 0 ], [ 0, 0, -1, 0 ], [ 0, 1, 0, 1 ] ]
+[ [ -1, 0, 0, 0 ], [ 0, -1, 0, 0 ], [ 0, 0, -1, 0 ], [ 0, 1, 0, 1 ] ]
 ]]></Example>
 
 
@@ -244,7 +243,7 @@
 
 <Example><![CDATA[
 gap> ShiftedOrbitPart([0,0,0],[[1/2,1/2,1/3],-[1/2,1/2,1/2],[19,3,1]]);
-[ [ 1/2, 1/2, 1/3 ], [ 1/2, 1/2, 1/2 ], [ 0, 0, 0 ] ]
+[ [ 0, 0, 0 ], [ 1/2, 1/2, 1/3 ], [ 1/2, 1/2, 1/2 ] ]
 gap> ShiftedOrbitPart([1,1,1],[[1/2,1/2,1/2],-[1/2,1/2,1/2]]);
 [ [ 3/2, 3/2, 3/2 ] ]
 ]]></Example>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/doc/title.xml 
new/hapcryst-0.2.1/doc/title.xml
--- old/hapcryst-0.2.0/doc/title.xml    2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/doc/title.xml    2026-08-18 02:00:00.000000000 +0200
@@ -9,15 +9,14 @@
     A HAP extension for crystallographic groups
   </Subtitle>
   <Version>
-    Version 0.2.0
+    Version 0.2.1
   </Version>
   <Author>
-    Marc Roeder<Alt Only="LaTeX"><Br/></Alt>
+    Marc Roeder
 <Email>[email protected]</Email>
-
   </Author>
   <Date>
-    24 March 2026
+    18 August 2026
   </Date>
   <Copyright>
                 &copyright; 2007 Marc Röder. <P/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/lib/FundamentalDomainBieberbach.gi 
new/hapcryst-0.2.1/lib/FundamentalDomainBieberbach.gi
--- old/hapcryst-0.2.0/lib/FundamentalDomainBieberbach.gi       2026-03-24 
16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/lib/FundamentalDomainBieberbach.gi       2026-08-18 
02:00:00.000000000 +0200
@@ -270,10 +270,7 @@
     orbitpart:=OrbitStabilizerInUnitCubeOnRight(group,center).orbit;;
     
     newinequalities:=initialInequalities(center,gram);;
-    partialFD:=CreatePolymakeObject("partialFD",
-                       POLYMAKE_DATA_DIR,
-                       ["polytope","2.3","RationalPolytope"]
-                       );
+    partialFD:=CreatePolymakeObject(["polytope","2.3","RationalPolytope"]);
     AppendToPolymakeObject(partialFD,
             ConvertMatrixToPolymakeString("FACETS",newinequalities)
             );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/lib/FundamentalDomainStandardSP.gi 
new/hapcryst-0.2.1/lib/FundamentalDomainStandardSP.gi
--- old/hapcryst-0.2.0/lib/FundamentalDomainStandardSP.gi       2026-03-24 
16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/lib/FundamentalDomainStandardSP.gi       2026-08-18 
02:00:00.000000000 +0200
@@ -154,10 +154,7 @@
     local   dim,  poly,  signvectors,  cubevertices;
     
     dim:=Size(center);
-    poly:=CreatePolymakeObject("partialFD",
-                  POLYMAKE_DATA_DIR,
-                  ["polytope","2.3","RationalPolytope"]
-                  );
+    poly:=CreatePolymakeObject(["polytope","2.3","RationalPolytope"]);
     signvectors:=Tuples([-1,1],dim);
     cubevertices:=(1/2*signvectors)+center;
     
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/lib/misc.gd 
new/hapcryst-0.2.1/lib/misc.gd
--- old/hapcryst-0.2.0/lib/misc.gd      2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/lib/misc.gd      2026-08-18 02:00:00.000000000 +0200
@@ -29,8 +29,10 @@
 ##############################
 #
 # New operations for matrices. The names say it all
-# 
-DeclareProperty("IsSquareMat",IsMatrix);
+#
+if not IsBound(IsSquareMatrix) then  # GAP > 4.16 provides IsSquareMat and 
IsSquareMatrix
+  DeclareProperty("IsSquareMat",IsMatrix);
+fi;
 DeclareOperation("DimensionSquareMat",[IsMatrix]);
 
 ##############################
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/lib/misc.gi 
new/hapcryst-0.2.1/lib/misc.gi
--- old/hapcryst-0.2.0/lib/misc.gi      2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/lib/misc.gi      2026-08-18 02:00:00.000000000 +0200
@@ -41,10 +41,12 @@
 
 ##############################
 
-InstallMethod(IsSquareMat,"for matrices",[IsMatrix],
+if not IsBound(IsSquareMatrix) then  # GAP > 4.16 provides IsSquareMat and 
IsSquareMatrix
+    InstallMethod(IsSquareMat,"for matrices",[IsMatrix],
         function(mat)
         return IsRectangularTable(mat) and NrRows(mat) = NrCols(mat);
-end);
+    end);
+fi;
 
 
 ##############################
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hapcryst-0.2.0/tst/bugfix.tst 
new/hapcryst-0.2.1/tst/bugfix.tst
--- old/hapcryst-0.2.0/tst/bugfix.tst   2026-03-24 16:13:22.000000000 +0100
+++ new/hapcryst-0.2.1/tst/bugfix.tst   2026-08-18 02:00:00.000000000 +0200
@@ -15,8 +15,6 @@
 3
 gap> DimensionSquareMat([[1,2,3],[1,2,3]]);
 fail
-gap> DimensionSquareMat([[1,2],[1,2,3]]);
-fail
 
 #
 # Let TranslationsToBox return a list again, instead of an iterator.

Reply via email to