4

最小工作示例:

x:=Indeterminate(Rationals,"x");
f:=Sum([1..1000],i->x^i);
PrintTo("~/temp.txt",f);

它打印到temp.txt以下内容:

x^1000+x^999+x^998+x^997+x^996+x^995+x^994+x^993+x^992+x^991+x^990+x^989+x^988\
+x^987+x^986+x^985+x^984+x^983+x^982+x^981+x^980+x^979+x^978+x^977+x^976+x^975\
+x^974+x^973+x^972+x^971+x^970+x^969+x^968+x^967+x^966+x^965+x^964+x^963+x^962\
+x^961+x^960+x^959+x^958+x^957+x^956+x^955+x^954+x^953+x^952+x^951+x^950+x^949\

[snip]

我怎样才能让它打印在文本文件的单行上?

4

1 回答 1

4

这是一个常见的需求,解决方案称为SetPrintFormattingStatus. 在线查看其文档 或只需输入?SetPrintFormattingStatusGAP 提示即可查看文档。

请注意,在这种情况下您将不得不使用流,它不能直接处理文本文件。OutputTextFile(紧随其后 SetPrintFormattingStatus)是您需要使用的。

在上面的示例中,使用

x:=Indeterminate(Rationals,"x");
f:=Sum([1..1000],i->x^i);
output := OutputTextFile( "poly", false );;
SetPrintFormattingStatus(output, false);
PrintTo(output,f);
于 2017-04-06T20:45:46.937 回答