Греческая буква пи в гнуплоте не отображается - PullRequest
0 голосов
/ 28 апреля 2019

У меня есть этот код в файле orgmode Emacs:

#+begin_src gnuplot :exports results :file images/sinecosine.png
reset
set terminal png  size 360, 360 enhanced
# Line styles
set border linewidth 1
set style line 1 linecolor rgb '#0060ad' linetype 1 linewidth 1  # blue
set style line 2 linecolor rgb '#dd181f' linetype 1 linewidth 1  # red
# Legend
set key at 6.1,1.3
# Axes label 
set xlabel 'x'
set ylabel 'y'

set xzeroaxis linetype 2 linewidth 1
  set yzeroaxis linetype 2 linewidth 1
# Axis ranges
set xrange[-2*pi:2*pi]
set yrange[-1.5:1.5]
# Axis labels
set xtics ("-2{/Symbol P}" -2*pi, "-{/Symbol P}" -pi, 0, "{/Symbol P}" pi, "2{/Symbol P}" 2*pi)
set ytics 1
set tics scale 0.75


# Functions to plot
a = 0.9
f(x) = a * sin(x)
g(x) = a * cos(x)
# Plot
plot f(x) title 'sin(x)' with lines ls 1, \
     g(x) notitle with lines ls 2


#+end_src

и он дает gnuplot (3.7) без правильного символа пи - как в этом и этом посте. Да, я могу заставить эту версию eps работать, но не эту версию png (или svg), которая необходима для экспорта в HTML. Есть новые идеи?

Обновление

Вот автономный код, который я пробовал - успешно:

reset
set encoding utf8
set terminal svg enhanced fname 'Times New Roman' rounded dashed standalone
set output "gp-test4-output.svg"

# Line styles
set border linewidth 1
set style line 1 linecolor rgb '#0060ad' linetype 1 linewidth 1  # blue
set style line 2 linecolor rgb '#dd181f' linetype 1 linewidth 1  # red
# Legend
set key at 6.1,1.3
# Axes label 
set xlabel 'x'
set ylabel 'y'

set xzeroaxis linetype 2 linewidth 1
  set yzeroaxis linetype 2 linewidth 1
# Axis ranges
set xrange[-2*pi:2*pi]
set yrange[-1.5:1.5]
# Axis labels
set xtics ("-2Π" -2*pi, "-Π" -pi, 0, "Π" pi, "2Π" 2*pi)
set ytics 1
set tics scale 0.75


# Functions to plot
a = 0.9
f(x) = a * sin(x)
g(x) = a * cos(x)
# Plot
plot f(x) title 'sin(x)' with lines ls 1, \
     g(x) notitle with lines ls 2

Я поменял {/Symbol P} на Π. Из командной строки терминала я получил его на работу и производить просто отлично. Репозиторий Ubuntu установил самый последний из лучших gnuplot (gnuplot 5.2 patchlevel 6). Таким образом, снова проводя эксперимент, когда я C-c C-c в кодовом блоке режима org получаю

gnuplot-mode 0.7-beta (gnuplot 3.7) -- report bugs with "C-c C-u"

и та же ошибка: мусор вместо Π. (Не уверен, что представляет собой gnuplot 3.7.) Запуск вышеуказанного кодового блока, BTW, запускает REPL для gnuplot, и он говорит, что это самый последний самый большой gnuplot. Но когда вышеприведенный автономный код в Emacs (с gnuplot-mode) называется «отправлять буфер в gnuplot» (Emacs gnuplot REPL), он выдает ошибку, НО, когда я «отправляю file в gnuplot ", он производит Π без ошибок. Совершенно странно, ИМХО.

Вот мои подписки:

(setq package-archives '(("ELPA"  . "http://tromey.com/elpa/")
             ("gnu"   . "http://elpa.gnu.org/packages/")
             ("melpa" . "https://melpa.org/packages/")
             ("org"   . "https://orgmode.org/elpa/")))

, что дает два предложения для режимов gnuplot:

gnuplot            20141231.2137 available  melpa      drive gnuplot from within emacs

и затем это:

gnuplot-mode       20171013.1616 installed             Major mode for editing gnuplot scripts

Итак, я удалил Emacs gnuplot (20141231.2137), затем установил gnuplot-mode (20171013.1616). Это решило проблему gnuplot-run-buffer, но кодовый блок режима org теперь выдает эту ошибку:

executing Gnuplot code block...
org-babel-execute:gnuplot: Cannot open load file: No such file or directory, gnuplot

Поиск customize Я нахожу только четыре переменные, связанные с gnuplot, одна из которых - программа Gnuplot, которая у меня есть как /usr/bin/gnuplot. Я в последней версии Emacs и org-mode в Ubuntu 19.04. Как мне лучше сказать орг-бабелу, где найти Гнуплот? Я подозреваю, что этот более новый режим не предназначен для Emacs org-mode; однако в старом режиме в режиме org греческие буквы выполняются неправильно.

1 Ответ

0 голосов
/ 28 апреля 2019

Получение символа «пи» из шрифта Adobe Symbol - это нечто из мира PostScript, где отдельные шрифты со специальными кодировками использовались для обхода ограничения в 256 символов, присущего кодировкам шрифтов PostScript.

SVGс другой стороны, это вариант XML.Для доступа к ним используются точки входа Unicode и (обычно) кодировка UTF-8.«pi» в файле SVG - это либо последовательность байтов 0xCF 0x80 (кодировка UTF-8), либо предопределенный объект XML π.Режим "расширенного текста" в gnuplot здесь не актуален.Я не помню, какие ограничения могли быть в gnuplot 3.7, что могло бы повлиять на передачу любого из них как обычного текста в терминал svg.В текущем gnuplot таких ограничений нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...