博主使用Ubuntu 16.04系统,已经安装了textlive和搜狗输入法,从TexStudio官网上下载了软件的.deb安装包进行安装,也下载了Linux AppImage二进制文件直接使用,发现在IDE中无法切换搜狗输入法进行中文输入。
(1)使用另外一款Latex编辑器TeXworks,添加官方源,并安装:
sudo add-apt-repository ppa:texworks/stable sudo apt-get update sudo apt-get install texworks
(2)删除通过deb包安装的TexStudio,删除已经下载的TexStudio AppImage二进制文件,删除TexStudio的配置文件,从命令行重新安装TexStudio:
sudo apt-get purge texstudio sudo apt-get autoremove sudo apt-get autoclean sudo rm ~/.config/texstudio sudo apt-get update sudo apt-get install texstudio
经过查询相关资料,得知导致这一问题的根本原因是Linux系统中,搜狗输入法使用fcitx框架,一些软件(TexStudio,TeXworks等)的图形化界面基于Qt5开发,而Qt5使用基于fctix的输入法是需要相关插件(libfcitxplatforminputcontextplugin.so)的支持,通常放置在:
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/
网上也有许多教程讲解如何自己编译生成libfcitxplatforminputcontextplugin.so库,还是比较麻烦的,故未尝试;也尝试了在启动软件时设置环境变量的方法,也行不通;还尝试了文末参考资料中的方法,均不行。故而开始转向检查本机上fcitx和Qt的相关设置是否正确,如下:
(1)通过下面的命令检查fcitx相关的环境变量是否设置正确:
printenv |grep fcitx
发现自己的fcitx相关环境变量设置正确,不需要重复设置,输出结果如下:
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
QT4_IM_MODULE=fcitx
GTK_IM_MODULE=fcitx
(2)通过下面命令诊断fcitx相关设置:
fcitx-diagnose
发现Qt输入法模块文件也均存在,结果如下:
......
3. Qt 输入法模块文件:
找到了 Qt5 的输入法模块: `/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so`.
找到了 Qt4 的输入法模块: `/usr/lib/x86_64-linux-gnu/qt4/plugins/inputmethods/qtim-fcitx.so`.......
(3)因此,怀疑通过deb包安装或者直接使用AppImage二进制文件时存在依赖的缺失或者相关依赖之间的版本不匹配,故尝试了本博文所述方法,成功解决问题。
在Linux系统中,为了使用基于fcitx的中文输入法(如,搜狗),安装基于Qt开发的软件时最好从命令行安装,尽量避免使用deb包或者AppImage二进制文件。
[1] texmaker无法使用fcitx输入法?
[2] ubuntu下texstudio或qtcreator无法输入中文的问题
[3] ubuntu 16.04里面的qtcreator或者texstudio无法使用中文输入的问题
[4] wps texstudio不能调用fcitx中文输入,但zim vim firefox octave shell spyder均可
[5] fcitx经常不能输入中文
[6] How to type Chinese by fcitx in texstudio?
[7] How to type Chinese by fcitx in texmaker?
[8] Ubuntu 17.04系统中QT5.9.2支持fcitx输入法的解决方案
[9] ubuntu16.04下安装为知笔记
[10] How to install fcitx-libs-qt5 on Ubuntu 16.04 (Xenial Xerus)
[11] How To Install "fcitx-libs-qt5" Package on Ubuntu
[12] 谁能够解决Linux下RStudio的fcitx输入不了中文问题
[13] 解决 Debian 中 RStudio 和 Mendeley 下 Fcitx 输入法不能使用的问题