Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
| Download
GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
Project: cocalc-sagemath-dev-slelievre
Views: 418346############################################################################# ## ## AutoDoc package ## ## Copyright 2012-2016 ## Sebastian Gutsche, University of Kaiserslautern ## Max Horn, Justus-Liebig-Universität Gießen ## ## Licensed under the GPL 2 or later. ## ############################################################################# InstallGlobalFunction( "AUTODOC_OutputTextFile", function( arg ) local filename, filestream; if Length( arg ) = 1 then filename := arg[1]; else filename := Filename( arg[1], arg[2] ); fi; filestream := OutputTextFile( filename, false ); SetPrintFormattingStatus( filestream, false ); return filestream; end ); ## InstallGlobalFunction( AutoDoc_WriteDocEntry, function( filestream, list_of_records ) local return_value, description, current_description, labels, i; # look for a good return value (it should be the same everywhere) for i in list_of_records do if IsBound( i!.return_value ) then if IsList( i!.return_value ) and Length( i!.return_value ) > 0 then return_value := i!.return_value; break; elif IsBool( i!.return_value ) then return_value := i!.return_value; break; fi; fi; od; if not IsBound( return_value ) then return_value := false; fi; if IsList( return_value ) and ( not IsString( return_value ) ) and return_value <> "" then return_value := JoinStringsWithSeparator( return_value, " " ); fi; # collect description (for readability not in the loop above) description := [ ]; for i in list_of_records do current_description := i!.description; if IsString( current_description ) then current_description := [ current_description ]; fi; description := Concatenation( description, current_description ); od; labels := [ ]; for i in list_of_records do if HasGroupName( i ) then Add( labels, GroupName( i ) ); fi; od; if Length( labels ) > 1 then labels := [ labels[ 1 ] ]; fi; # Write stuff out # First labels, this has no effect in the current GAPDoc, btw. AppendTo( filestream, "<ManSection" ); for i in labels do AppendTo( filestream, " Label=\"", i, "\"" ); od; AppendTo( filestream, ">\n" ); # Function heades for i in list_of_records do AppendTo( filestream, " <", i!.item_type, " " ); if i!.arguments <> fail and i!.item_type <> "Var" then AppendTo( filestream, "Arg=\"", i!.arguments, "\" " ); fi; AppendTo( filestream, "Name=\"", i!.name, "\" " ); if i!.tester_names <> fail and i!.tester_names <> "" then AppendTo( filestream, "Label=\"", i!.tester_names, "\"" ); fi; AppendTo( filestream, "/>\n" ); od; if return_value <> false then if IsString( return_value ) then return_value := [ return_value ]; fi; AppendTo( filestream, " <Returns>" ); WriteDocumentation( return_value, filestream ); AppendTo( filestream, "</Returns>\n" ); fi; AppendTo( filestream, " <Description>\n" ); WriteDocumentation( description, filestream ); AppendTo( filestream, " </Description>\n" ); AppendTo( filestream, "</ManSection>\n\n" ); end ); InstallGlobalFunction( AutoDoc_MakeGAPDocDoc_WithoutLatex, function(arg) local htmlspecial, path, main, files, bookname, gaproot, str, r, t, l, latex, null, log, pos, h, i, j; htmlspecial := Filtered(arg, a-> a in ["MathML", "Tth", "MathJax"]); if Length(htmlspecial) > 0 then arg := Filtered(arg, a-> not a in ["MathML", "Tth", "MathJax"]); fi; path := arg[1]; main := arg[2]; files := arg[3]; bookname := arg[4]; if IsBound(arg[5]) then gaproot := arg[5]; else gaproot := false; fi; # ensure that path is directory object if IsString(path) then path := Directory(path); fi; # ensure that .xml is stripped from name of main file if Length(main)>3 and main{[Length(main)-3..Length(main)]} = ".xml" then main := main{[1..Length(main)-4]}; fi; # compose the XML document Info(InfoGAPDoc, 1, "#I Composing XML document . . .\n"); str := ComposedDocument("GAPDoc", path, Concatenation(main, ".xml"), files, true); # parse the XML document Info(InfoGAPDoc, 1, "#I Parsing XML document . . .\n"); r := ParseTreeXMLString(str[1], str[2]); # clean the result Info(InfoGAPDoc, 1, "#I Checking XML structure . . .\n"); CheckAndCleanGapDocTree(r); # produce text version Info(InfoGAPDoc, 1, "#I Text version (also produces labels for hyperlinks):\n"); t := GAPDoc2Text(r, path); GAPDoc2TextPrintTextFiles(t, path); # produce LaTeX version Info(InfoGAPDoc, 1, "#I Constructing LaTeX version and calling pdflatex:\n"); r.bibpath := path; l := GAPDoc2LaTeX(r); Info(InfoGAPDoc, 1, "#I Writing LaTeX file, \c"); Info(InfoGAPDoc, 2, Concatenation(main, ".tex"), "\n#I "); FileString(Filename(path, Concatenation(main, ".tex")), l); # print manual.six file PrintSixFile(Filename(path, "manual.six"), r, bookname); # produce html version Info(InfoGAPDoc, 1, "#I Finally the HTML version . . .\n"); # if MathJax version is also produced we include links to them if "MathJax" in htmlspecial then r.LinkToMathJax := true; fi; h := GAPDoc2HTML(r, path, gaproot); GAPDoc2HTMLPrintHTMLFiles(h, path); Unbind(r.LinkToMathJax); if "Tth" in htmlspecial then Info(InfoGAPDoc, 1, "#I - also HTML version with 'tth' translated formulae . . .\n"); h := GAPDoc2HTML(r, path, gaproot, "Tth"); GAPDoc2HTMLPrintHTMLFiles(h, path); fi; if "MathML" in htmlspecial then Info(InfoGAPDoc, 1, "#I - also HTML + MathML version with 'ttm' . . .\n"); h := GAPDoc2HTML(r, path, gaproot, "MathML"); GAPDoc2HTMLPrintHTMLFiles(h, path); fi; if "MathJax" in htmlspecial then Info(InfoGAPDoc, 1, "#I - also HTML version for MathJax . . .\n"); h := GAPDoc2HTML(r, path, gaproot, "MathJax"); GAPDoc2HTMLPrintHTMLFiles(h, path); fi; return r; end);