TEXMACS在ubuntu下的使用

TEXMACS在ubuntu下的使用

1 編譯好的texmacs

從官網下載編譯好的texmacs,然後在linux下設置好環境變量後.運行texmacs,發現輸入中文後,texmacs顯示亂碼(會顯示一些奇怪的字符).如果打開工具欄的幫助-用戶手冊的一些中文文檔,能夠正常顯示中文,那麼該問題不是由於沒有安裝中文字體庫引起的.
然後查看命令行終端顯示:
QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed
QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
之所以不能顯示中文正是因爲iconv_open這個函數打開失敗
libiconv庫是GNU下的一個項目.可以從官網重新編譯安裝.不過這樣做後並沒有解決原來的問題.事實上這個問題是因爲在/usr/lib目錄下有一個gconv文件夾,這個文件夾中存放了一些icov需要用到的國際編碼轉換的一些庫.但是這個庫在/usr/lib下並不存在.而是存在於/usr/lib/i386-linux-gnu/和/usr/lib/x86_64-linux-gnu/兩個目錄下.而texmacs在調用iconv_open時,試圖在/usr/lib目錄下尋找,但是無法找到.因此導致了上述問題.
解決辦法:把/usr/lib/i386-linux-gnu/目錄下的giconv拷貝到/usr/lib/目錄下,但是這個只有在32位ubuntu下才能成功.在64位下不能成功.具體原因,我猜應該涉及到32位程序調用64位庫的問題.要根本解決這個方法,只有下載源碼包,重新安裝

2 源碼安裝texmacs-1.99.5

從官網上下載texmacs-1.99.5源碼.
解壓縮
在texmacs解壓縮目錄下運行./configure
發現./configure錯誤,報出:

configure: error: compulsory library gmp not found

2.1最近研究GNU項目的編譯automake工具後的解決方法

很簡單,只要下載automake工具,然後在TexMacs根目錄下執行autoconf語句就可以重新生成正確的configure文件,然後執行./configure

2.2以前的解決方法

然後我重新安裝了gmp的庫,發現這個問題仍然沒有解決.到網上搜了一下,說是pkg-config的問題,沒有pc文件.但是添加了後還是沒有解決問題.
後來發現gmp是guile的依賴庫,安裝了guile後,gmp已經自動安裝了.但是configure始終找不到.然後查看目錄下的config.log(這個是運行./configure導出的日誌文件),然後發現如下的log:
g++ -o conftest -pthread -I/usr/include -I/usr/include/guile conftest.cpp -lgmp -lguile -lltdl -lgmp -lcrypt -lm -lintl >&5
/usr/bin/ld: cannot find -lintl
collect2: error: ld returned 1 exit status
是因爲缺失了intl的庫導致出現這種奇怪的問題.至於爲什麼configure報gmp的錯我也不知道.另外這個-lintl這個參數是configure自己添加進去得到的.而非運行guile-config得到的.
因此解決辦法就比較簡單了,sudo gedit configure,打開configure文件,搜索”-lintl”字符串,將其出現的地方全部刪掉.這樣編譯configure就能通過.
或者有人擔心刪掉-lintl出現問題.那怎麼辦?intl這個庫是gettext的依賴庫,只要安裝了gettext,這個庫就會自動安裝.但是編譯時用-lintl選項仍然找不到intl庫.可以cd /usr後,用命令locate libintl命令或者find /usr -name “libintl”命令查找libintl庫所在的位置,我的64位ubuntu16.10下運行結果如下:
/usr/include/libintl.h
/usr/lib/x86_64-linux-gnu/preloadable_libintl.so
發現有一個preloadable_libintl.so的庫,然後sudo cp preloadable_libintl.so libintl.so,把這個文件拷貝成libintl.so文件,這樣configure就能找到這個庫了.至於庫名稱前爲什麼有一個preloadable我也不清楚
繼續./configure 又會發現報出 -lGuile錯誤
繼續gedit configure ,然後搜索-lGuile,把它改成-lguile,這應該是一個bug,大小寫錯誤
繼續configure,這樣就應該configure成功了

make出現的錯誤

然後make
發現又報錯了
g++ -include config.h -ISystem -ISystem/Boot -ISystem/Misc -ISystem/Classes -ISystem/Files -ISystem/Language -ISystem/Link -IKernel -IKernel/Types -IKernel/Abstractions -IKernel/Containers -IData -IData/Convert -IData/Document -IData/String -IData/Observers -IData/Tree -IData/Drd -IData/History -IGraphics -IGraphics/Types -IGraphics/Colors -IGraphics/Fonts -IGraphics/Handwriting -IGraphics/Renderer -IGraphics/Gui -IGraphics/Mathematics -IGraphics/Spacial -IGraphics/Pictures -IGraphics/Bitmap_fonts -I../TeXmacs/include -IScheme -IPlugins -IPlugins/Iconv -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -D_REENTRANT -DG_gr_system_ -c ./System/Misc/._sys_utils.cpp -o Objects/._sys_utils.o
./System/Misc/._sys_utils.cpp:1:1: warning: null character(s) ignored
./System/Misc/._sys_utils.cpp:1:2: error: stray ‘\5’ in program
發現是因爲這個文件._sys_utils.cpp導致錯誤.這個問題出現的原因是:這個文件也被makefile當成是源代碼進行編譯.事實上不是.把這個文件刪除即可.
然後make install.成功

2.3運行出現的問題

然後運行texmacs,又發現關於輸入法新的問題(我用的是fcitx).
1.輸入法光標跟隨問題.如果編輯界面不停下拉的話,那麼輸入法提示框會越來越低,直到消失到底部.但是升級到ubuntu17.04後,輸入法提示框仍然會下降,但是不會消失(還是位置不對)
這是源碼的一個bug,如果想解決這個問題,要修改源碼.具體的解決方法見
https://www.douban.com/group/topic/55268688/
2.如果點擊texmacs的工具欄(比如插入標題什麼的),然後在編輯界面進行中文輸入,這時texmacs不會響應中文輸入.然後把texmacs程序切換出去(隨便點個其它應用,調出中文輸入法),再切換回來,中文輸入法又能重新使用了(windows下的texmacs也有類似問題).但有時候又沒這個問題.不知道在ibus輸入法框架下,有沒有這個問題.在texmacs下進行中文輸入,會首先進入pre edit狀態下(見工具欄,會轉化狀態),但是不響應的情況下,這個狀態並不會出現.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章