2

我正在使用 Windows 版本的 gnuplot

Version 4.6 patchlevel 3    last modified April 2013

我在通过“load ...”运行 gnuplot 脚本时遇到问题

如果我从 gnuplot 命令行执行以下命令

set macro
test1 = "@test2"
test2 = "sin(x)"
pl @test1

它确实按预期工作。但是如果我将代码放入脚本并从命令行执行它

gnuplot> load 'test.gp'

我得到了错误

gnuplot> pl @test2
            ^
         "test.gp", line 4: invalid character @'

似乎宏处理器在脚本和交互模式之间的工作方式不同(宏嵌套深度)。有没有可能解决这个问题?

编辑:

我将脚本更改如下:

set macro
test1 = "sin(x)"
test2 = "@test1"
test3 = "@test2"
test4 = "@test3"
pl @test1
pl @test2
pl @test3
pl @test4

在交互模式下,它在pl @test4with中止Too many levels of nested macros。在 Scriptexecution 上,它在第一个预处理步骤后的第二个 plot 命令中中止:

gnuplot>     pl @test1
                ^
         "test.gp", line 7: invalid character @
4

1 回答 1

1

load命令的问题是一个错误,请参阅#1246 加载命令和宏扩展,该问题已在 2013-06-28 的开发版本中修复。

交互模式的限制是预期的行为,ChangeLog关于上述错误修复的说:

  • src/misc.c (load_file):单步执行“加载”操作时,将宏扩展至 3 级深度。这与允许在顶级命令行中使用的深度相匹配。错误 #1246
于 2013-09-04T18:42:55.340 回答