从命令行启动 GAP 脚本时如何控制文本格式?

How do you control text formatting when launching GAP scripts from the command line?

例如,当我从命令行启动脚本时,我想了解 GAP 的行为

$ gap mytest.gap

而不是从 GAP 内部调用它

gap> Read("mytest.gap");

特别是,我尝试 suppress automatic formatting 使用换行符和缩进。如果文件mytest.gap如下

SetPrintFormattingStatus( "*stdout*", false );
Print( Primes{[1..30]}, "\n" );

然后我在使用 Read() 调用它时得到了预期的行为,即

[ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113 ]

虽然从命令行启动它,但我仍然得到

[ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
  73, 79, 83, 89, 97, 101, 103, 107, 109, 113 ]

有人可以解释一下这种行为吗? GAP 对从命令行调用启动的脚本的处理是否记录在某处?我在手册中找不到它,但手册页确实说了 usage: gap [OPTIONS] [FILES] 并且仅提供了有关如何处理选项的文档。

恐怕目前无法按照您尝试的方式完全禁用 Print 的输出格式。

但是,您可以使用较新的流 API 和 PrintTo 解决此问题,如下所示:

s:=OutputTextUser();
SetPrintFormattingStatus( s, false );
PrintTo( s, Primes{[1..30]}, "\n" );

我将此记录为 bug in the GAP issue tracker,也许我们可以在下一个版本中修复它(或者也许有人会解释为什么它“不是错误而是功能”;-)。