Как использовать `set term push` и` set term pop` в gnuplot - PullRequest
1 голос
/ 07 июня 2019

Я использую gnuplot 5.2.7 в Arch Linux. Я хочу временно изменить конфигурацию терминала, построить что-то и затем восстановить его (у меня нет конфигурации терминала в моем файле инициализации). Я думаю, что 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 (pdf) на странице 257 гласит:

Команда set term push запоминает текущий терминал, включая его в то время как set term pop восстанавливает его.

Что я делаю не так?

1 Ответ

1 голос
/ 16 июня 2019

Из руководства по gnuplot:

Нажатие установленного срока команды запоминает текущий терминал, включая его настройки, в то время как заданный термин восстанавливает его.Это эквивалентно сохранению срока и срока загрузки, но без доступа к файловой системе.Поэтому их можно использовать, например, для независимого от платформы восстановления терминала после печати.После запуска 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
...