Changeset 3c4dcc in git for Singular/LIB/latex.lib
- Timestamp:
- May 6, 2005, 4:39:20 PM (19 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 0d217d3f1cc4c0449bdb078c65fd1f43cd1a2b84
- Parents:
- e6fb5315eb32da00236163ce10f9bdafaaa0bd47
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/latex.lib
re6fb531 r3c4dcc 1 1 /////////////////////////////////////////////////////////////////////////////// 2 version="$Id: latex.lib,v 1.2 2 2004-04-20 16:31:04 SingularExp $";2 version="$Id: latex.lib,v 1.23 2005-05-06 14:38:41 hannes Exp $"; 3 3 category="Visualization"; 4 4 info=" … … 30 30 @code{TeXwidth} (int) -1, 0, 1..9, >9: controls breaking of long polynomials 31 31 @code{TeXnofrac} (int) flag: write 1/2 instead of \\frac@{1@}@{2@} 32 @code{TeXbrack} (string) \"@{\", \"(\", \"<\", \"|\", empty string: 32 @code{TeXbrack} (string) \"@{\", \"(\", \"<\", \"|\", empty string: 33 33 controls brackets around ideals and matrices 34 34 @code{TeXproj} (int) flag: write \":\" instead of \",\" in vectors … … 131 131 texobj("exp001","An ideal ",I); 132 132 closetex("exp001"); 133 tex("exp001"); 133 tex("exp001"); 134 134 echo=0; 135 135 pause("the created files will be deleted after pressing <RETURN>"); … … 284 284 proc texfactorize(string fname, poly f, list #) 285 285 "USAGE: texfactorize(fname,f); fname string, f poly 286 RETURN: if @code{fname=\"\"}: string, f as a product of its irreducible 286 RETURN: if @code{fname=\"\"}: string, f as a product of its irreducible 287 287 factors@* 288 otherwise: append this string to the file @code{<fname>}, and 288 otherwise: append this string to the file @code{<fname>}, and 289 289 return nothing. 290 290 NOTE: preceding \">>\" are deleted and suffix \".tex\" (if not given) … … 369 369 proc texmap(string fname, def m, def @r1, def @r2, list #) 370 370 "USAGE: texmap(fname,m,@r1,@r2); fname string, m string/map, @r1,@r2 rings 371 RETURN: if @code{fname=\"\"}: string, the map m from @r1 to @r2 (preceded 371 RETURN: if @code{fname=\"\"}: string, the map m from @r1 to @r2 (preceded 372 372 by its name if m = string) in TeX-typesetting;@* 373 otherwise: append this string to the file @code{<fname>}, and 373 otherwise: append this string to the file @code{<fname>}, and 374 374 return nothing. 375 NOTE: preceding \">>\" are deleted in @code{fname}, and suffix \".tex\" 375 NOTE: preceding \">>\" are deleted in @code{fname}, and suffix \".tex\" 376 376 (if not given) is added to @code{fname}. 377 377 If m is a string then it has to be the name of an existing map … … 561 561 n = n+5*(i-anf); 562 562 anf =i; // the next text in ( , ) as exponent 563 if (op) 564 { 563 if (op) 564 { 565 565 if (s[i]== ","){anf = anf+1;} 566 566 while(s[i] !=")"){ i++;} … … 580 580 "USAGE: texname(fname,s); fname,s strings 581 581 RETURN: if @code{fname=\"\"}: string, the transformed string s, where the 582 following rules apply: 583 @example 582 following rules apply: 583 @example 584 584 s' + \"~\" --> \"\\tilde@{\"+ s' +\"@}\" 585 \"_\" + int --> \"_@{\" + int +\"@}\" 585 \"_\" + int --> \"_@{\" + int +\"@}\" 586 586 \"[\" + s' + \"]\" --> \"_@{\" + s' + \"@}\" 587 \"A..Z\" + int --> \"A..Z\" + \"^@{\" + int + \"@}\" 587 \"A..Z\" + int --> \"A..Z\" + \"^@{\" + int + \"@}\" 588 588 \"a..z\" + int --> \"a..z\" + \"_@{\" + int + \"@}\" 589 589 \"(\" + int + \",\" + s' + \")\" --> \"_@{\"+ int +\"@}\" + \"^@{\" + s'+\"@}\" 590 590 @end example 591 591 Anyhow, strings which begin with a @code{\"@{\"} are only changed 592 by deleting the first and last character (intended to remove the 592 by deleting the first and last character (intended to remove the 593 593 surrounding curly brackets). 594 594 595 if @code{fname!=\"\"}: append the transformed string s to the file 595 if @code{fname!=\"\"}: append the transformed string s to the file 596 596 @code{<fname>}, and return nothing. 597 NOTE: preceding \">>\" are deleted in @code{fname}, and suffix \".tex\" 597 NOTE: preceding \">>\" are deleted in @code{fname}, and suffix \".tex\" 598 598 (if not given) is added to @code{fname}. 599 599 EXAMPLE: example texname; shows an example … … 603 603 st=manipul(s); 604 604 if (size(fname)) 605 { 605 { 606 606 int i=1; 607 607 while (fname[i]==">"){i++;} 608 608 fname = fname[i,size(fname)-i+1]; 609 609 if (size(fname)>=4) // check if filename is ending with ".tex" 610 { 610 { 611 611 if(fname[size(fname)-3,4]!=".tex") {fname = fname +".tex"; } 612 612 } … … 634 634 635 635 static proc absterm(poly f) 636 { 636 { 637 637 int k; 638 638 for (k=1; k<=nvars(basering); k++) … … 645 645 "USAGE: texobj(fname,l); fname string, l list 646 646 RETURN: if @code{fname=\"\"}: string, the entries of l in LaTeX-typesetting;@* 647 otherwise: append this string to the file @code{<fname>}, and 647 otherwise: append this string to the file @code{<fname>}, and 648 648 return nothing. 649 NOTE: preceding \">>\" are deleted in @code{fname}, and suffix \".tex\" 649 NOTE: preceding \">>\" are deleted in @code{fname}, and suffix \".tex\" 650 650 (if not given) is added to @code{fname}. 651 651 EXAMPLE: example texobj; shows an example … … 687 687 { if (defined(`obj`)) 688 688 { if (typeof(`obj`)=="ideal") 689 { 689 { 690 690 Iname = obj; def e = `obj`; //convert to correct type ideal 691 691 kill obj; def obj = e; kill e; … … 900 900 } 901 901 example 902 { 902 { 903 903 echo=0; 904 904 // -------- prepare for example --------- … … 942 942 "USAGE: texproc(fname,pname); fname,pname strings 943 943 ASSUME: @code{`pname`} is a procedure. 944 RETURN: if @code{fname=\"\"}: string, the proc @code{`pname`} in a verbatim 944 RETURN: if @code{fname=\"\"}: string, the proc @code{`pname`} in a verbatim 945 945 environment in LaTeX-typesetting;@* 946 otherwise: append this string to the file @code{<fname>}, and 946 otherwise: append this string to the file @code{<fname>}, and 947 947 return nothing. 948 NOTE: preceding \">>\" are deleted in @code{fname}, and suffix \".tex\" 948 NOTE: preceding \">>\" are deleted in @code{fname}, and suffix \".tex\" 949 949 (if not given) is added to @code{fname}.@* 950 950 @code{texproc} cannot be applied to itself correctly. … … 1044 1044 "USAGE: texring(fname, r[,L]); fname string, r ring, L list 1045 1045 RETURN: if @code{fname=\"\"}: string, the ring in TeX-typesetting;@* 1046 otherwise: append this string to the file @code{<fname>} and 1046 otherwise: append this string to the file @code{<fname>} and 1047 1047 return nothing. 1048 1048 NOTE: preceding \">>\" are deleted and suffix \".tex\" (if not given) … … 1177 1177 texring("",ralg,"mipo"); 1178 1178 // 1179 ring r49=(49,a),x,dp; // Galois field 1179 ring r49=(49,a),x,dp; // Galois field 1180 1180 texring("",r49); 1181 1181 // … … 1200 1200 proc rmx(string fname) 1201 1201 "USAGE: rmx(fname); fname string 1202 RETURN: nothing; removes the @code{.log} and @code{.aux} files associated to 1202 RETURN: nothing; removes the @code{.log} and @code{.aux} files associated to 1203 1203 the LaTeX file <fname>.@* 1204 NOTE: If @code{fname} ends by @code{\".dvi\"} or @code{\".tex\"}, the 1204 NOTE: If @code{fname} ends by @code{\".dvi\"} or @code{\".tex\"}, the 1205 1205 @code{.dvi} or @code{.tex} file will be deleted, too. 1206 1206 EXAMPLE: example rmx; shows an example … … 1286 1286 { "EXAMPLE:"; echo = 2; 1287 1287 intmat m[3][4] = 9,2,4,5,2,5,-2,4,-6,10,-1,2,7; 1288 opentex("exp001"); 1288 opentex("exp001"); 1289 1289 texobj("exp001","An intmat: ",m); 1290 1290 closetex("exp001"); … … 1300 1300 1301 1301 static proc parsr(string s) // parse real 1302 { 1302 { 1303 1303 string t; 1304 1304 if (s==" Inf") { return("\\infty",3);} … … 1312 1312 else {return(s[1,5]+"*10^"+t,23);} 1313 1313 } 1314 else 1314 else 1315 1315 { 1316 1316 return(s[1,5],12); … … 1319 1319 1320 1320 static proc parsg(string s) // parse Galois field 1321 { 1321 { 1322 1322 int i,j = 1,1; 1323 1323 string t; 1324 1324 if (short) 1325 { 1325 { 1326 1326 t =s[1]; 1327 1327 if(size(s)>1) {return(t+"^{" + s[2,size(s)-1] + "}",3+2*(size(s)-1));} … … 1329 1329 } 1330 1330 else 1331 { 1331 { 1332 1332 return(parselong(s+"!")); 1333 1333 } … … 1338 1338 "USAGE: texpoly(fname,p); fname string, p poly 1339 1339 RETURN: if @code{fname=\"\"}: string, the poly p in LaTeX-typesetting;@* 1340 otherwise: append this string to the file @code{<fname>}, and 1340 otherwise: append this string to the file @code{<fname>}, and 1341 1341 return nothing. 1342 NOTE: preceding \">>\" are deleted in @code{fname}, and suffix \".tex\" 1342 NOTE: preceding \">>\" are deleted in @code{fname}, and suffix \".tex\" 1343 1343 (if not given) is added to @code{fname}. 1344 1344 EXAMPLE: example texpoly; shows an example … … 1847 1847 This document illustrates the functionality of the library."+"\\\\" + nl); 1848 1848 write(fname,"\\begin{tabular}{ll}" + nl + 1849 "LIBRARY: {\\tt latex.lib} & PROCEDURES FOR TYPESETTING SINGULAR" + 1849 "LIBRARY: {\\tt latex.lib} & PROCEDURES FOR TYPESETTING SINGULAR" + 1850 1850 "\\\\" + nl + 1851 1851 " & OBJECTS IN LATEX2E"+ … … 1859 1859 "{\\tt texdemo([n]);} & produces a file explaining the features of this lib"+ 1860 1860 "\\\\" + nl + 1861 "{\\tt texfactorize(fnm,f);} & creates string in \\LaTeX-format for 1861 "{\\tt texfactorize(fnm,f);} & creates string in \\LaTeX-format for 1862 1862 factors of poly f"+ "\\\\" + nl + 1863 1863 "{\\tt texmap(fnm,m,r1,r2);} & creates string in \\LaTeX-format for 1864 1864 map m:r1$\\rightarrow$r2"+ "\\\\" + nl + 1865 "{\\tt texname(fnm,s);} & creates string in \\LaTeX-format for 1865 "{\\tt texname(fnm,s);} & creates string in \\LaTeX-format for 1866 1866 identifier"+ "\\\\" + nl + 1867 1867 "{\\tt texobj(l);} & creates string in \\LaTeX-format for … … 1871 1871 "{\\tt texproc(fnm,p);} & creates string in \\LaTeX-format of 1872 1872 text from proc p"+ "\\\\" + nl + 1873 "{\\tt texring(fnm,r[,l]);} & creates string in \\LaTeX-lformat for 1873 "{\\tt texring(fnm,r[,l]);} & creates string in \\LaTeX-lformat for 1874 1874 ring/qring"+ "\\\\" + nl + 1875 1875 "{\\tt rmx(s);} & removes .aux and .log files of \\LaTeX-files"+ … … 1881 1881 "\\\\" + nl2 + "\\vspace{0.2cm}" + nl2 + 1882 1882 "The global variables {\\tt TeXwidth}, {\\tt TeXnofrac}, {\\tt 1883 TeXbrack}, {\\tt TeXproj}, {\\tt TeXaligned}, {\\tt TeXreplace}, {\\tt 1883 TeXbrack}, {\\tt TeXproj}, {\\tt TeXaligned}, {\\tt TeXreplace}, {\\tt 1884 1884 NoDollars} are used to control the typesetting: " 1885 1885 ); … … 1901 1901 write(fname,"Notice that none of these global variables are defined when 1902 1902 loading \\verb|latex.lib|. A flag variable is set as soon as it is defined."); 1903 1903 1904 1904 1905 1905 //% The procs and … … 1909 1909 write(fname,"\\section{Opening a \\LaTeX\\ file}"); 1910 1910 write(fname,"In order to create a \\LaTeX\\ document and write a standard 1911 header into it, use the following command."+ 1911 header into it, use the following command."+ 1912 1912 bv+ 1913 1913 "> string fname = \"" + fname + "\";" + nl + 1914 "> texopen(fname);" + 1914 "> texopen(fname);" + 1915 1915 ev + nl); 1916 1916 … … 1934 1934 1935 1935 static proc part1(string fname) 1936 { 1936 { 1937 1937 1938 1938 int st = defined(texdemopart); … … 1956 1956 // -1a------ a ring in char 0, short varnames and poly. ordering ---------- 1957 1957 write(fname, 1958 " A ring in characteristic 0 with short names of variables and polynomial 1958 " A ring in characteristic 0 with short names of variables and polynomial 1959 1959 ordering." +nl); 1960 1960 ring r0=0,(x,y,z),dp; … … 1965 1965 "> texring(fname,r0);" + 1966 1966 ev); 1967 texring(fname,r0); 1967 texring(fname,r0); 1968 1968 write(fname,nl2); 1969 1969 write(fname, … … 1972 1972 "> texpoly(fname,g);" +nl + 1973 1973 ev); 1974 texpoly(fname,g); 1974 texpoly(fname,g); 1975 1975 write(fname,"\\\\"+nl2); 1976 1976 … … 1986 1986 ev 1987 1987 ); 1988 texpoly(fname,g/280); 1988 texpoly(fname,g/280); 1989 1989 kill r0; 1990 1990 1991 1991 write(fname,"\\\\"+nl2); 1992 1992 write(fname,"\\Line"); 1993 1993 // -2-------- a ring in char 7, indexed varnames and series ordering ---------- 1994 1994 write(fname, 1995 " A ring in characteristic 7 with indexed names of variables and local 1995 " A ring in characteristic 7 with indexed names of variables and local 1996 1996 ordering." +nl); 1997 1997 ring r1=7,(x1,x2,x3,x4),Ds; 1998 poly g=-2*x1+x4-1; 1999 write(fname, 2000 bv + 2001 "> ring r1=7,(x1,x2,x3,x4),Ds;" +nl + 1998 poly g=-2*x1+x4-1; 1999 write(fname, 2000 bv + 2001 "> ring r1=7,(x1,x2,x3,x4),Ds;" +nl + 2002 2002 "> texring(fname,r1);" +nl + 2003 2003 ev); 2004 texring(fname,r1); 2004 texring(fname,r1); 2005 2005 write(fname,lb); 2006 2006 2007 2007 write(fname, bv + 2008 "> poly g=-2*x1+x4-1; g;" +nl + 2008 "> poly g=-2*x1+x4-1; g;" +nl + 2009 2009 "> texpoly(fname,g);" +nl + 2010 2010 ev); 2011 2011 2012 2012 texpoly(fname,g); 2013 2013 2014 2014 write(fname,lb); 2015 2015 write(fname,"\\Line"); … … 2017 2017 // -3-------- a ring in char 0, indexed varnames and local ordering ---------- 2018 2018 write(fname, 2019 " A ring in characteristic 0 with indexed names of variables and local 2019 " A ring in characteristic 0 with indexed names of variables and local 2020 2020 ordering. 2021 2021 " +nl); … … 2027 2027 "> texring(fname,r2);" +nl + 2028 2028 ev); 2029 texring(fname,r2); 2029 texring(fname,r2); 2030 2030 2031 2031 write(fname, 2032 2032 bv + 2033 2033 "> poly g=-y(1)^3*x(5)+y(1)*x(2); g;" +nl+ 2034 string(g) + nl + 2034 string(g) + nl + 2035 2035 "> texpoly(fname,g);" +nl + 2036 2036 ev 2037 2037 ); 2038 texpoly(fname,g); 2038 texpoly(fname,g); 2039 2039 write(fname,lb); 2040 2040 2041 2041 write(fname,"\\Line"); 2042 2042 … … 2061 2061 ); 2062 2062 texpoly(fname,g); write(fname,lb); 2063 2063 2064 2064 write(fname,"\\Line"); 2065 2065 … … 2099 2099 ev); 2100 2100 texring(fname,r0t); 2101 write(fname, 2101 write(fname, 2102 2102 bv + 2103 2103 "> poly g=8*(-s+2t)/(st+t3)*x+t2*x-1; g;"+nl+ … … 2173 2173 2174 2174 write(fname, 2175 bv + 2175 bv + 2176 2176 "> poly g=-(2a13+a)*x2+a2*x-a+1; g;" +nl+ 2177 2177 string(g) +nl + … … 2198 2198 2199 2199 write(fname, 2200 bv + 2200 bv + 2201 2201 "> poly g=-(i+1)*x+2i2y2+i+x; g;" +nl+ 2202 2202 string(g) +nl + … … 2295 2295 "It is possible to display a ground field different from the 2296 2296 actual one by passing any letter in \\LaTeX \\ notation as additional 2297 argument. Predefined values are \\verb|\"\\\\C\"|, \\verb|\"\\\\R\"|, 2297 argument. Predefined values are \\verb|\"\\\\C\"|, \\verb|\"\\\\R\"|, 2298 2298 \\verb|\"k\"|, \\verb|\"K\"| and \\verb|\"R\"|."+nl+ 2299 2299 "If for example a ground field of characteristic 0 should be written as … … 2311 2311 special role when the ground field is an algebraic extension. In this case 2312 2312 the parameters will be omitted."); 2313 2313 2314 2314 write(fname, 2315 2315 bv + … … 2358 2358 2359 2359 write(fname,nl+ "\\vspace{0.2cm}" + nl2); 2360 2360 2361 2361 write(fname,"The first and the last variable will always be printed. 2362 2362 In order to print only these it is sufficient to give a 1 as third argument."); … … 2389 2389 write(fname,"It is also possible to pass several of the arguments described 2390 2390 above at once (in any order)."); 2391 2391 2392 2392 2393 2393 write(fname, … … 2407 2407 2408 2408 static proc part2(string fname) 2409 { 2409 { 2410 2410 2411 2411 int st = defined(texdemopart); … … 2427 2427 write(fname,"\\subsection{Factorized polynomials}"); 2428 2428 2429 write(fname,"The command \\verb|texfactorize| calls internally the 2430 {\\sc Singular} command \\verb|factorize| and returns the product of the 2431 irreducible factors. Note that, at the moment, it is not possible to pass 2429 write(fname,"The command \\verb|texfactorize| calls internally the 2430 {\\sc Singular} command \\verb|factorize| and returns the product of the 2431 irreducible factors. Note that, at the moment, it is not possible to pass 2432 2432 any optional arguments for \\verb|factorize| through \\verb|texfactorize|."); 2433 2433 … … 2466 2466 // --------------------------------------------- 2467 2467 write(fname,"By setting the global variable \\verb|TeXreplace| it is possible 2468 to define rules for replacing strings or variable names. 2468 to define rules for replacing strings or variable names. 2469 2469 \\verb|TeXreplace| has to be a list of twoelemented lists where the first 2470 2470 entry is the text which should be replaced by the second entry. 2471 This may be applied to replace names of variables, but is also used 2471 This may be applied to replace names of variables, but is also used 2472 2472 when calling \\verb|texname| or \\verb|texmap|. Note that it 2473 2473 is necessary to write a double backslash \\verb|\\\\\| at the beginning of … … 2534 2534 "\\]",nl); 2535 2535 2536 write(fname,"Note that the size of terms is calculated with certain 2536 write(fname,"Note that the size of terms is calculated with certain 2537 2537 multiplicities.",nl); 2538 2538 … … 2550 2550 ev); 2551 2551 2552 setring r0; 2552 setring r0; 2553 2553 poly g=-x2y+2y13z+1; 2554 2554 poly f=g^2; … … 2590 2590 write(fname,nl2,"\\Line"); 2591 2591 2592 write(fname,"There are two possibilities to convert a polynomial into 2592 write(fname,"There are two possibilities to convert a polynomial into 2593 2593 \\LaTeX \\ code: either by using \\verb|texpoly| or by calling \\verb|texobj|. 2594 2594 The difference is that \\verb|texpoly| puts the polynomial in textmode … … 2603 2603 2604 2604 // setring r3; 2605 2605 2606 2606 ring r3=0,(x_1,x_2,x_3),wp(3,2,1); 2607 2607 poly g=-x_1*x_2+2*x_2*x_3+x_1*x_3; … … 2641 2641 write(fname,"If the global variable \\verb|Texaligned| is set then the ideal 2642 2642 is displayed as a row vector."); 2643 2643 2644 2644 write(fname, 2645 2645 bv + … … 2725 2725 2726 2726 static proc part3(string fname) 2727 { 2727 { 2728 2728 int st=defined(texdemopart); 2729 2729 string nl=newline; … … 2734 2734 2735 2735 if (not(st) or st>=3) 2736 { 2736 { 2737 2737 print(" Call part2 first"); 2738 2738 return(); … … 2746 2746 write(fname,"\\section{Typeseting maps between rings}"); 2747 2747 write(fname,"By default, maps are displayed in the following way:"); 2748 2748 2749 2749 write(fname, 2750 2750 bv + … … 2754 2754 "> texmap(fname,phi,r4,r5);" + nl + 2755 2755 ev); 2756 2756 2757 2757 ring @r4_h=0,(x,y,z),dp; 2758 2758 if(system("with","Namespaces")) { export @r4_h to Current; } … … 2767 2767 write(fname,"If the global variable \\verb|TeXaligned| is set, then the 2768 2768 map is displayed in one line."); 2769 2769 2770 2770 write(fname, 2771 2771 bv + … … 2786 2786 the second one contains the parameters for the domain. Note that if only one 2787 2787 list is present then it is applied to both of the rings."); 2788 2788 2789 2789 write(fname, 2790 2790 bv + … … 2802 2802 ev ); 2803 2803 2804 texmap(fname,@phi_h,@r4_h,r5,list(),list("{")); 2804 texmap(fname,@phi_h,@r4_h,r5,list(),list("{")); 2805 2805 2806 2806 write(fname,nl+"\\Line"); … … 2836 2836 write(fname, "Complex data structures such as matrices, vectors or modules 2837 2837 can be displayed by using the procedure \\verb|texobj|."); 2838 2838 2839 2839 write(fname,"\\subsection{Matrices and vectors}"); 2840 2840 //======================================================================= … … 2937 2937 ev ); 2938 2938 2939 setring r; 2939 setring r; 2940 2940 ideal I=3xz5+x2y3-3z,7xz5+y3z+x-z,-xyz2+4yz+2x; 2941 2941 int TeXproj; export TeXproj; 2942 2942 2943 2943 texobj(fname,V); 2944 2944 kill TeXproj; … … 2948 2948 "> kill TeXproj;"+nl+ 2949 2949 ev); 2950 2950 2951 2951 write(fname,"\\subsection{Modules}",nl2); 2952 2952 … … 2984 2984 2985 2985 write(fname,"Integer matrices are displayed in the following way."); 2986 2986 2987 2987 intmat m[3][4]=-1,3,5,2,-2,8,6,0,2,5,8,7; 2988 2988 … … 3065 3065 "// not an isolated singularity"; 3066 3066 } 3067 return(m_nr); 3067 return(m_nr); 3068 3068 } 3069 3069 export(milnor_number); … … 3072 3072 write(fname,"The following procedure allows to include the source code 3073 3073 of procedures into a \\LaTeX document."); 3074 write(fname, 3074 write(fname, 3075 3075 bv + 3076 3076 "> texproc(fname,\"milnor\_number\");" +nl+ 3077 3077 ev); 3078 3078 3079 3079 texproc(fname,"milnor_number"); 3080 3080 3081 3081 kill(milnor_number); 3082 3082 3083 3083 // ------------------------------ closing the tex file ------------------- 3084 3084 write(fname,"\\section{Closing the \\LaTeX\\ file}");
Note: See TracChangeset
for help on using the changeset viewer.