July 6,2007
Linux Scilab 中文關鍵障礙排除程序
這是開發 Linux 版之 ADE 中文 Scilab 關鍵技術,藉由網路擴散出去,希望有更多開發者不再為這些雜學所困。
ADE 中文 Scilab Linux 版預定 11, 12 月 間公佈。
Scilab 中文化之步調無法與官方版一致,這是必然的現象;中文問題只能靠使用中文的開發族群解決。因此 Linux 上之中文版決定採用 Scilab-GTK 一方面是考慮到中文開發人力不足,只能以 C/C++ 作為主要開發語言,另一方面則是準備將 Scilab 與中文桌面系統結合進行準備。
將 locale 設定為 zh_TW.UTF8 (環境參數 LANG=zh_TW.UTF8) 後,將 Scilab-GTK 下載後在 Fedora 6 上編譯後發現以下中文處理問題:- Scilab 之 console 視窗上無法啟動中文輸入
解決方案: 必須使用 GTK2 以及選用 vte 終端機視窗程式庫,請參考 中文 Scilab 所需之GKT2 軟體環境
- Scilab 編輯器 (SciPad) 無法輸入中文
解決方案: TCL/TK 及 Scipad 之中文問題
- 中文字串螢幕輸入、輸出
解決方案: 使用 GTK 時,沒有這個問題 (但在 Windows 環境必須修改程式)
- 中文字串檔案輸入、輸出
解決方案: 使用 GTK 時,沒有這個問題 (但在 Windows 環境必須修改程式)
- 繪圖指令(如 plot2d ) 中無法顯現中文標示
解決方案: GTK 繪出中文問題
- scicos 文字方塊中(Edit/palettes/other) 無法顯示中文
解決方案: GTK 繪出中文問題
- 選單中文化
解決方案:
- 主選單
修改次目錄 routine\gtksci 中之檔案 menus.c 內容之函數 sci_window_initial_menu - 圖形選單
修改次目錄 routine\gtksci 中之檔案 menus.c 內容之函數 graphic_initial_menu
- 主選單
- Scilab 增加中文語言選項
再測試 locale Big5
- Consol 可輸入中文, 不需更動
- SciPad 可輸入中文, 不需更動
- 繪圖指令(plot2d 等) 無法輸出中文標示, 但 Scicos 之 text 方塊 (位於 Edit\palette\other )可接受中文
解決方案:繪出字串前先判斷是否為 utf8 碼, 否則先由 locale 轉 utf8 , 參考 GTK 繪出中文問題 - 中文選單正常, 不需更動
July 4,2007
Scilab 中之 BIG5 , UTF8 中文
目前只剩下一部分內部之 BIG5-> UTF8 未加入應該是在 pango_draw_text 中檢查字串判斷是否為 UTF8 如果不是, 則將他轉碼 (也許由 lang 環境參數決定如何轉碼) (2007/07/03)
可能參考
Character Set Conversion
gboolean is_utf8 g_get_charset (G_CONST_RETURN char **charset);
charset : return location for character set name
Returns : TRUE if the returned charset is UTF-8
if(! g_get_charset (&charset) g_locale_to_utf8(string)
http://203.64.187.41/gtk/GTK-Lesson-4.html
#define BIG5(s) g_locale_to_utf8(s, strlen(s),NULL, NULL, NULL)
以 g_utf8_validate() 檢查是否為 UTF8 有效字串 ( Text Handling in GTK+ 2.0)
...繼續閱讀
July 2,2007
Scicos 文字顯現問題
若使用 pango 繪, 則顏色選擇必須注意, 否則 Scicos 中之 Other 圖版 Text 無法畫出字來原因為前景 和背景顏色相同.
已解決 (參考 :http://mail.gnome.org/archives/gtk-app-devel-list/2004-February/msg00322.html)
GdkGC *gc 需設定如下:
void pango_draw_text(BCG *ScilabXgc,GdkDrawable *drawable,int xx, int yy,char *string)
{
PangoLayout *pl;
// PangoFontDescription *font_desc
// = pango_font_description_from_string ("arial black 12");
// gtk_widget_modify_font (ScilabXgc->drawing, font_desc);
// pango_font_description_free (font_desc);
pl = gtk_widget_create_pango_layout(ScilabXgc->drawing,NULL);
pango_layout_context_changed(pl);
pango_layout_set_text(pl, string,-1);
GdkGC *gc;
gc = gdk_gc_new(drawable);
gdk_draw_layout( drawable,gc,xx,yy,pl);
g_object_unref(gc);
g_object_unref(pl);
}
////////////
June 29,2007
在 Scicos 中 使用 文字方塊 (Other 中的 text) 時, 無法顯現
Scilab Windows 和 GTK 版本差異
但 copy 及 paste 似乎不正常。檢查後發現
copy --> 雙擊左 mouse button 或 CTL+shift+C (與 Windows 不同)
paste--> 同時按左右 mouse button CTL+shift+V(與 Windows 不同)
GTK 版上,. 沒有變換語言之選單
whatis.htm 檔案之格式
要改為
否則 apropos 指令失敗, (因為使用 gtkhtml, 而非 tclhelp , 會先產生指標檔 )
June 28,2007
有關 Scilab 教育
June 27,2007
GTK 繪出中文字問題
// 使用 gdk_draw_layout 取代 gdk_draw_text
void outgtextP(BCG *ScilabXgc,int xx, int yy,char *string)
{
PangoLayout *pl;
pl = gtk_widget_create_pango_layout(ScilabXgc->drawing,NULL);
pango_layout_context_changed(pl);
pango_layout_set_text(pl, string,-1);
gdk_draw_layout( ScilabXgc->pixmap,ScilabXgc->wgc,xx,yy,pl);
g_object_unref(pl);
}
///////////////////////////
void C2F(displaystring)(char *string, integer *x, integer *y, integer *v1, integer *flag, integer *v6, integer *v7, double *angle, double *dv2, double *dv3, double *dv4)
{
gint lbearing, rbearing, iascent, idescent, iwidth;
gdk_string_extents(ScilabXgc->font,"中", &lbearing, &rbearing,
&iwidth, &iascent, &idescent);
...
if ( ScilabXgc->Cdrawable == ScilabXgc->drawing->window)
outgtextP(ScilabXgc,*x, *y- iascent-idescent, string) ;
// gdk_draw_text(ScilabXgc->pixmap,ScilabXgc->font,ScilabXgc->wgc,
// *x, *y - idescent , string, strlen(string));
June 26,2007
GTK 中文相關資料
June 25,2007
Scilab 中文測試範例
Scilab 中文測試範例 :
LANG=zh_TW.UTF8
Test 1-7 成功(2007/07/03)
LANG=zh_TW.BIG5
Test2 失敗 ,其餘失敗 (2007/07/03)
//
//Test1. 註解輸入測試
//
//Test2. 繪圖中文標示
//
x=[0:0.1:2*%pi]';
plot2d(x,sin(x),leg="正弦 sin(x)")
//
//Test3. 中文 write
//
write(%io(2),'中文 write')
//
//Test4.. 中文 Print
//
a=rand(3,3);p=poly([1,2,3],'s');l=list(1,'中文 Print',[1 2 3]);
print(%io(2),a,p,l)
// Test 5 中文檔案輸出
b=%pi;
[fd,err]=mopen('chTestBig5.txt','w');
mfprintf(fd,'%s %f','中文檔案輸出入測試',b); mclose(fd);
//Test 6 中文檔案輸入
[fd,err]=mopen('chTestBig5.txt','r');
[n,c,d]=mfscanf(fd,'%s %f') ; mclose(fd);
// Test 7 Scicos text block 中 輸入中文
June 24,2007
待進行之工作
-
中文選單 -
編輯器 SciPad 輸入中文 -
write , print 可輸出中文字串 -
繪圖可標示中文 -
Scicos 方塊圖可加中文標示 - whatis.htm 檔轉格式 , (寫一 Perl 程序自動轉換)
- TCLHelp 自動產生 Big5 charset (參考 Windows 版修改)
----------------------------------------------------------------'
新段落
ADE 中文 Scilab
Scilab-GTK
超連結
粗體 斜體 下線 刪除
藍色
紅色
藍紫
朱黃
- 編號 1
- 編號 2
- 條列 a
- 條列 b
文章靠左
文章
文章置中
文章
文章靠右
文章
縮排縮排縮排縮排縮排縮排縮排縮排
排縮排縮排縮排排縮排
Scilab 架構(Fortran,C 函數)
Scilab 語言解譯器
system 解譯器
system2 矩陣結構
fileio 檔案系統
通用介面
console 終端通用介面
os_specific 與作業系統相關動態連結通用函數
graphics 圖形通用介面
intersci sci 和 C 之資料介面
interf 數值函數介面
tclsci TCL/TK 與 Scilab 之界面
dld 動態連結 (Unix Only)
menusX: Scilab 通用 menus 內涵
GTK , Windows , X-Windows 三個具體設計
圖形介面 :
gtksci: gtk 和 sci 之介面
gzvt2: 圖形 console
數學環境
int: 基本數學運算
arpack
lapack : 線性代數程式庫
blas
calelm 基礎數學函數,特殊函數
dcd: 累積分佈
integ: 及常微分
maxplus : 線性代數
optim: 最佳化
default: 使用者設定函數之內定函數
qsort: 重排
randlib: 亂數產生
sparse: 稀疏矩陣
control: 控制
slicos : 控制
signal: 訊號處理
不易分類 :
windools: Windows 上特定函數
gd : 圖形程式庫
不再使用的部份 :
f2c : fortran 轉 C
X11:
xsci:
wsci:
gtk1:
June 23,2007
中文 Scilab 網路線上編輯器
- 格式
而若要能對文件內容進行自動化處理,必須訂好能包含數學公式的簡易文件格式,才適合群組合作。 ADE Scilab 內先暫定使用過去發展的 CPOD 格式 。
未來可考慮使用目前已逐漸標準化的格式如 reStructureText 相關資料如 :
VST(Vim reStructured Text)簡介 。
http://blog.seety.org/everydaywork/tags/53/
XML 问题: reStructuredText
http://porta2030.tossug.org/wiki/WikiFormatting
- 網路編輯功能,可考慮加上 Wiki 引擎, 如 :
wikipedia 原始檔
http://en.wikipedia.org/wiki/Wikipedia:Manual_of_Style_(mathematics)
關鍵技術 :
- CPOD 格式轉換
一旦選定格式後,必須將現有文件 CPOD 格式轉為 reStructureText 或 Wiki 所認識之格式
- Server 設定
PHP, LaTex 背景工具及 Web Server 設定
- 與 Scilab 文件系統連結
開發連結技術,使 Scialb 文件與 Wiki 結成一體
June 19,2007
TCL/TK 及 Scipad 之中文問題
ADE 中文 Scilab 在 Linux 版使用 ScilabGTK 為基礎,並且使用 TCL/TK 8.5a 版但還是有中文輸入輸出問題 (與 Scilab 無關)。
- 安裝 TCL/TK 8.5a 後, 編輯器 SciPad 還是無法輸入中文 (不顯現)
( 位於 "tcl/scipadsources/commonbindings.tcl" 指令
bind Text <KeyPress> {if {{%A} != {{}}} {puttext %W %A}}
要改為bind Text <KeyPress> { puttext %W %A}
中文才能顯示。
已回報 Scilab 討論群
- 選擇文字之後再按 <CTL+C> 會清空選擇範圍
位於 "tcl/scipadsources/inputtext.tcl" 指令if {[gettaselind $w single] != ""} {
要刪除。
$w delete sel.first sel.last
}
June 18,2007
中文 Scilab 所需之GKT2 軟體環境
----------------------------------------------------------------------
CPPFLAGS="-I/usr/local/include"
LDFLAGS="-L/usr/local/lib"
LD_LIBRARY_PATH="/usr/local/lib"
PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"
export CPPFLAGS LDFLAGS PKG_CONFIG_PATH LD_LIBRARY_PATH
cd dependencies
tar xvfz glib-2.12.12.tar.gz
cd glib-2*
./configure
make
make install
cd ..
tar xvfz pango-1.16.4.tar.gz
cd pango-1.16.4
./configure
make
make install
cd ..
tar xvfz cairo-1.2.6.tar.gz
cd cairo-1.2.6
./configure
make install
cd ..
cd ..
tar tar xvfz gtk+-2.10.13.tar.gz
cd gtk+-2*
./configure
make
make install
cd ..
tar tar xvfz libgtkhtml-2.11.0.tar.gz
cd libgtkhtml-2.11.0
./configure
make
make install
cd ..
tar tar xvfz vte-0.16.5.tar.gz
cd vte-0.16.5
./configure
make
make install
cd ..