例如,在 bash 命令行上,我可以使用 Compose 键和临时~/.XCompose
文件键入 δ 字符,但如果我尝试在 Gnuplot 中执行相同操作,我得到的是
13:48 boffi@debian:~ $ δ
bash: δ: command not found
13:48 boffi@debian:~ $ gnuplot
G N U P L O T
Version 5.2 patchlevel 6 last modified 2019-01-01
Copyright (C) 1986-1993, 1998, 2004, 2007-2018
Thomas Williams, Colin Kelley and many others
gnuplot home: http://www.gnuplot.info
faq, bugs, etc: type "help FAQ"
immediate help: type "help" (plot window: hit 'h')
Terminal type is now 'qt'
gnuplot> δ
最好的答案将教我如何使 Gnuplot 接受 Unicode 字符,一个好的答案将解释为什么 Gnuplot 不接受 Unicode 字符。
13:53 boffi@debian:~ $ env | grep LANG
LANG=C.UTF-8
答案1
Debian 中的 gnuplot 是使用该库构建的,editline
用于处理 gnuplot 命令行上的历史记录,并且不支持 UTF-8;事实上,configure
脚本提到:
--with-readline=builtin use the built-in readline
--with-readline=gnu use the GNU readline library (default if present)
--with-readline=bsd use the NetBSD editline library (NB: does not handle UTF-8!)
关于这种行为有一个 15 年前的 bug,#273002,以及相应的 gnuplot 功能请求,第265章(它已关闭,大概是因为它是通过添加 的内部实现来修复的readline
)。
Fedora 使用内置的readline
并且不会受到此错误的影响。 (然而,它确实存在其他错误 - 尝试输入“δ”,然后退格。)
要解决此问题,请重建 Debian 软件包:
cd /tmp
apt source gnuplot
cd gnuplot-5.0.5+dfsg1
sed -i 's/readline=bsd/readline=builtin/' debian/rules
sudo apt install devscripts equivs
mk-build-deps debian/control
sudo apt install ./gnuplot-build-deps_5.0.5+dfsg1-6+deb9u1_all.deb
mv ./gnuplot-build-deps_5.0.5+dfsg1-6+deb9u1_all.deb ..
dch -n "Use built-in readline."
dch -r ignored
dpkg-buildpackage -us -uc
sudo apt purge gnuplot-build-deps
这将在父目录中生成 gnuplot 包,您可以使用sudo dpkg -i
.