gnuplot:宏处理中脚本和交互模式之间的差异

时间:2013-09-04 14:34:39

标签: gnuplot

我使用的是windows版本的gnuplot

Version 4.6 patchlevel 3    last modified April 2013

我通过“加载...”

运行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 @test4 Too many levels of nested macros时中止。 在Scriptexecution上,它在第一个预处理步骤之后在第二个绘图命令上中止:

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

1 个答案:

答案 0 :(得分:1)

load命令的问题是一个错误,请参阅#1246 load command and macro expansion,该版本已于2013-06-28开发版中修复。

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

  
      
  • src / misc.c(load_file):扩展宏时最多3级   单步执行“加载”操作。这与允许的深度相匹配   用于顶级命令行。   Bug#1246
  •