我在Arch Linux上使用gnuplot 5.2.7。我想临时更改终端的配置,绘制某些内容,然后将其还原(初始化文件中没有终端配置)。我认为pop
和push
可以达到这种效果,但我没有成功。
这是我在gnuplot会话中所做的。首先,将终端设置为wxt
并推动它,然后绘制正弦波:
gnuplot> set term wxt 1 ; set term push
Terminal type is now 'wxt'
Options are '1 enhanced'
pushed terminal wxt 1 enhanced
gnuplot> plot sin(x)
到目前为止,这可行。现在,我想暂时将背景更改为青色,然后恢复为默认背景:
gnuplot> set term wxt 1 background "cyan"
Terminal type is now 'wxt'
Options are '1 background '#00ffff' enhanced'
gnuplot> plot sin(x)
gnuplot> set term pop
restored terminal is wxt 1 background '#00ffff' enhanced
gnuplot>
如您所见,pop
进入终端无法恢复背景。下一个情节带有青色背景。
Gnuplot's manual (pdf)在第257页中指出:
命令
set term push
会记住当前终端,包括其set term pop
恢复时进行设置。
我在做什么错了?
答案 0 :(得分:1)
从gnuplot手册中:
命令集术语push会记住当前终端,包括其 设置术语弹出时恢复设置。这相当于保存 条件和负载条件,但不访问文件系统。因此 它们可用于实现平台的独立还原 例如,打印后的终端。 gnuplot启动后, 默认终端或启动文件中的终端会自动推送。 因此,可移植脚本可以依靠设置的术语pop来恢复 给定平台上的默认终端,除非已使用另一个终端 明确推送。
实际上,我不清楚terminal push
和terminal pop
有什么好处?好了,还原默认终端。我可以(当前)想到的唯一优点是,在长gnuplot脚本中,当您来回切换到不同的终端时,不必一次又一次地键入默认终端的所有参数。而且,如果您更改了某些终端设置,则必须更改脚本中所有出现的内容。
以下内容可能对您有用:在代码的开头,将具有背景或其他设置的终端定义为字符串变量,然后使用@
将其称为宏。因此,因此,调用@TerminalDefault
和set terminal pop
并没有区别,除了如果以前使用相同终端但设置不同,@TerminalDefault
也将恢复。>
代码:
### workaround for terminal push & pop with same terminal but different settings
reset session
TerminalDefault = 'set term wxt 0 background "white"'
TerminalCyan = 'set term wxt 0 background "cyan"'
TerminalYellow = 'set term wxt 0 background "yellow"'
TerminalPNG = 'set term png background "green"'
@TerminalDefault
plot x
pause -1 TerminalDefault
@TerminalCyan
plot x**2
pause -1 TerminalCyan
@TerminalPNG
set output "Test.png"
plot x**3
set output
pause -1 TerminalPNG
@TerminalDefault
plot x**4
pause -1 TerminalDefault
### end of code