Linux その5 伊藤敏 今月はMule(Emacs)をもう少し使いこなして行きましょう.大変強力なエディタです.前回紹介した機能も繰り返して述べるかも知れません.Mule(Emacs)はかなり自由にカスタマイズができます.しかし,カスタマイズについは他の本等を参照して下さい.そして,基本の使い方が分かってからにしましょう.起動はmuleまたは mule filename と入れるだけです.起動時に指定できるいろいろのオプションがあります.合わせて表1に示します. **** 表1 mule(emacs)の標準キーバインド ----------------------------------------------------- 表記方法: 'C+x'はCtrlキーとxを同時に押すことを示します. 'M+v'はAltキーとvを同時に押すか,またはESCを押した後vを押す ----------------------------------------------------- 起動時のオプション -nw ktermまたはxtermの中で起動.新しいウインドウを作らない. -r 表示の反転.コンソール画面の様に背景が黒,文字が白く表示 ----------------------------------------------------- 基本のキーバインド C+x C+c mule(emacs)の終了 カーソルの移動 C+b カーソル1文字左(back) C+f 1文字右(forward) C+n 1行下(next) C+p 1行上(previous) C+a 現在カーソルのある行の先頭へ C+e 現在カーソルのある行の最後に C+v 1画面後ろへ M+v 1画面前へ M+> テキストファイルの先頭へ M+< テキストファイルの最後へ M+x goto-line [Return] 100 [Return] 100行目へジャンプ 知っておきたい操作 C+g コマンドの実行中止(困ったら押しましょう) C+l カーソルのある行を画面の中心に,再表示 C+_ 変更取消(undo) C+x u 変更取消(undo) 削除 [DEL] カーソル位置の前の文字を削除 C+d カーソル位置の文字を削除 C+k カーソルから行の最後まで削除 ファイル操作 C+x C+s ファイルのセーブ C+f C+w file2 file2にセーブ(ファイル名の変更) C+x C+f file3 file3ファイルの読み込み C+x i file4 カーソル位置にfile4ファイルを読み込む 領域指定と削除 C+[Space] カーソルの位置にマーク指定(特に印は付かない) C+@ カーソルの位置にマーク指定(特に印は付かない) C+x C+x マークとカーソル位置を入れ換え(マーク位置の確認に使用) C+w マークとカーソルの間をリージョンと呼びます.リージョンの削除 M+w リージョンの記録 移動とコピー C+y 最後にC+kで削除されたテキストまたはC+w(M+w)で削除(記録)されたリージョンのカーソル位置への取り込み.カーソルを移動する前にC+yをして,カーソル移動後に再びC+yをするとコピーに,カーソル移動後のみにC+yで移動. 検索 C+s string ファイルの後方へstringをサーチ.sを入れるとsをtを入れるとst,rを入れるとstrを検索する(インクリメントサーチ) C+r string ファイルの前方へstringをサーチ(インクリメントサーチ) 置換 M+% string [Return] newstring stringを問い合わせながらnewstringへ置換.スペースで置換,[DEL]またはnで置換せず M+x replace-string [Return] Replace string : string [Return] with : newstring カーソル以降の文字列stringを一括してnewstringに置換 サスペンジョン(一時停止) C+z Kterm上で使用の場合,Ktermが使用可能になる.fg で復活.,X WindowのWindowで使用するとアイコン化する. 漢字コードの切替え(Muleの場合) C+x C+k f File-coding-system: と表示されるので eucコードなら *euc-japan* (他に*euc-japan*doc,*euc-japan*unix,*euc-china*,*euc-korea*がある) jisコードなら *junet* (他に*junet*dos,*juent*unixあり) sjisコードなら *sjis* (他に*sjis*dos,*sjis*unixあり) 漢字コードの切替え(emacsの場合) C+x C+k f C+x C+k fを押すたびに順番に漢字コードが切り替わる *************** 表1 終り******* エディタの使い心地は各自の好みの要素が強く,どれが良いとは言えません.しかし,DOSの世界にいた人はVz等のワードスターライクなキー配置がなれていると思います.Mule(emacs)のキー配置は慣れるまで少し時間がかかるかも知れません.しかし,はじめてMuleを使って感激したことは,かなり大きなファイルを平気で編集できたことです.Vzを使っていてファイルの後半が切れてしまい,苦労した経験がありますので. 表1を見ながら,日本語のテキストファイルを作って見ましょう.test.txtとします. % mule -r test.txt 筆者は反転表示の方が目が疲れず,好きです.ここからWnnとCannaの使用法を別々に述べます. *Wnnの場合 起動したら, C+\で日本語入力が可能になります.日本語入力が可能になるとMule(Emacs)の左下に表示されていたモードライン J_:-----Mule: (Muleの場合) が -[ あ ]J.:--**-Mule: と表示されます.ここで,ローマ字で入力するとかなが表示されます. hajimetenonihongonyuuryokudesu. と入れて見ましょう. |はじめてのにほんごにゅうりょくです.| と入力したローマ字がたて棒(|)に囲まれてひらがなで表示されます.ここで,スペースキーを押すと漢字に変換されます.望みの漢字ではなかったら,さらにスペースキーを押して別の漢字を表示します.目的の漢字が表示されたら[Return]キーで確定できます.スペースキーを押しても「サーバと接続できませんでした」と表示された場合はjserverが起動されていないか,環境設定ファイル中で setenv JSERVER localhost (cshの場合) export JSERVER=localhost (bshの場合) の設定がなされていないのでしょう.確認をして下さい.確定前の文節はC+fとC+bで前と後ろに移動します.文節区切りの変更はC+oで伸ばし,C+iで縮めます.日本語入力モードから抜けるにはC+\を押します.日本語モードでもMule(Emacs)の編集用キー配置は使用できます. *Cannaの場合 Cannaの場合は M+x canna [Return]をしてから C+o です.日本語が入力可能になるとWnnの場合と同じように左下のモードラインが変化します.ローマ字で入力をすると未変換部分がたて棒(|)または,下線または確定した部分とは違った色になります.変換の方法はほぼWnnと同じで,スペースキーで変換します.日本語入力モードから抜けるにはC+oを押します. 日本語入力システムも各自の好みの要素が大きく,何とも言えませんが,WnnやCannaもかなり自由にカスタマイズが出来ます.Cannaの場合は /usr/local/canna/lib/sample ディレクトリにサンプルカスタマイズファイルが置かれております.たとえば just.canna は一太郎に似たキー配置, vje.canna はvjeに似たキー配置の例が納められております.詳しくは「UNIX日本語環境」(松田晃一・暦本純一 著 アスキー出版)を参照して下さい. 入力した日本語ファイルをセーブして,Mule(Emacs)を終了しましょう.つぎはこのファイルを印刷します.ここで,またシステムの設定の話になってしまいますが,少し我慢して下さい.unixではlprと言うコマンドを使ってlpdという印刷を請け負うプログラム(デーモン)にファイルを渡します.suでrootになって下さい. /etc/printcap と言うファイルを編集します.Muleで編集しますが,Ktermの中で起動しましょう.新しい窓を作らないオプション -nw を付けます. # mule -nw /etc/printcap つぎの内容を追加して下さい. txt|text|pr201 for text file:\ :lp=/dev/lp1:sd=/usr/spool/lp1:if=/usr/local/bin/txtpr201-filter:sh Muleを終了したら,つぎに /etc/printcap の中で指定した /usr/local/bin/txtpr201-filter ファイルを作ります. /usr/local/bin/txtpr201-filter にリスト1を打ち込みます. ** リスト1 テキスト印刷用フィルタ PR201用 txtpr201-filter #!/bin/sh /usr/bin/pf -DPCPR -IEUC -T4 -W80 -A13 -N60 -L72 -Q26 -H -M10 exit 0 最後に /usr/local/bin/txtpr201-filter に実行属性を付けておきます. # chmod +x /usr/local/bin/txtpr201-filter これで,設定は終りです.rootからlogoutして,いよいよ test.txt の印刷をしましょう.プリンタの電源をいれて,つぎのコマンドをいれます. % lpr -Ptxt test.txt しばらくすると, test.txtが印刷されます.pfと言うプログラムを使ってDOSやMS-Winodwsで使うプリンタに出力が出来るようにコードを変換しております.pfの詳しい使い方はJEのソースのBASEディレクトリのpfアーカイブの中のpf.docに説明があります.オプションのいくつかを表2にまとめました. *** 表2 pfのオプション -W 行幅 -L ページ長 -N 1ページに印字する行数 -D 出力タイプの設定 ESC/P,PCPR,FMPRにに対応.ESC/PはESCPとセット -I 文字コードのセット *** お使いのプリンタがPR201以外の場合はリスト1の2行目の -DPCPR を変更します.設定が終ったら,忘れない内にrootからexitしておきましょう. これで,日本語を打ち込んで,プリンタで印刷をすることが出来るようになりました.しかし,もっときれいな印刷をしたいですね.そこで,LaTeXを使うことにします.LaTeXとは印刷システムです.ワープロではありません.見たそのままが印刷物として得られるのではなく,文章の中に必要なコードを埋め込んで,レイアウトやその他の細かいことはシステムにお任せの印刷システムです.見栄えの良い印刷物を作るにはそれなりのセンスが要求されます.もしそのセンスにあまり自信がなければLaTeXにお任せするのが良いでしょう.ここでは概略と理工系で必要に数式等の書き方を紹介するにとどめます.あとは良い参考書が多く出版されておりますのでそちらを見て下さい. リスト2のように入力して下さい.ファイル名はtest.texとしましょう.ファイル名の終りは tex とします. *** リスト2 test.tex \documentstyle{jarticle} \begin{document} これはtest用の文です. beginとendの間に,印刷をしたい文を入力します. \end{document} *** つぎに,これをコンパイルします. % jlatex test.tex つぎのようなごちゃごちゃとしたメッセージがでて,test.dviと言うファイルが生成されます. This is PTeX, C Version 2.99 j1.7e p1.0.9F (no format preloaded) (test.tex LaTeX Version 2.09 <24 May 1989> (/usr/local/lib/tex/macros/jarticle.sty Document Style `jarticle' <18 Dec 88>. (/usr/local/lib/tex/macros/jart10.sty)) No file test.aux. [1] (test.aux) Output written on test.dvi (1 page, 380 bytes). Transcript written on test.log. もし途中で止まってしまったら,xを入れて止まった原因をソースから修正します.ここで作られたdviファイルは出力デバイスには依存しない,出力情報ファイルで,DOSにもっていって印刷することも可能です.自分の思った通りの出力結果かどうかを見るのに,xdviを用います. % xdvi test.dvi として下さい.ここで,すぐにでも印刷をしたいのですが少し待って下さい.理工系では図やグラフが入る文章多いですから,それらにも対応できるようにしてから印刷に付いて述べます.当面必要なLaTeXの命令を入れた例文をリスト3に示し,それを表示した結果を図1に示します.両者を比べて,自分が使いたい表現を図1の中から見つけ,それに対応する命令をリスト3から捜し出すことで,すぐにでもLaTeXが使えると思います. 先頭の \documentstyle[12pt,a4j,jtwocolumn]{jarticle} の それぞれの意味は 12pt は12ポイントで印刷,他に 11ptがあります.指定をしなければ10ptになります.a4jは日本語A4版を使用で,他に a5j, b4j,b5jがあります.jtwocolumnは2段組で を表しています.最後のjarticleは他に jreport, jbook, 日本語を含まない場合ははじめのjが抜けたarticle等があります.紙を横置きにして印刷をする場合は [ ]内にlangscapeを指定します.後で述べますが,グラフや図を取り込む場合もここに取り込みの形式のスタイルファイルを指定します. *** リスト3 LaTeXの例 -- ソース (example.tex) \documentstyle[12pt,a4j,jtwocolumn]{jarticle} %\pagestyle{empty} <- ページ番号を出さない場合行頭の%を外す \title{例題} \author{Satoshi Itou} %\date{1995吉日} \date{} \begin{document} \maketitle \section{字について} \subsection{大きさ} これは標準の大きさです.\\ 大きさをかえます.\\ {\tiny トラ技コンピュータ Linux }\\ {\scriptsize トラ技コンピュータ Linux }\\ {\footnotesize トラ技コンピュータ Linux}\\ {\small トラ技コンピュータ Linux}\\ {\large トラ技コンピュータ Linux}\\ {\Large トラ技コンピュータ Linux}\\ {\LARGE トラ技コンピュータ Linux}\\ {\huge トラ技コンピュータ Linux}\\ {\Huge トラ技コンピュータ Linux}\\ \subsection{書体} 普通の書体\\ {\bf 太めの書体}\\ 英文字の書体指定\\ {\rm Linux} {\bf Linux} {\it Linux} {\sl Linux} {\sf Linux} {\sc Linux} {\tt Linux} \section{打ち込んだ通りに出力} Cのソースファイルなどで入力した通りに出力したい場合. \begin{verbatim} #include main() { printf("Hello Linux!"); } \end{verbatim} \section{左寄せ,中央,右寄せ} \begin{flushleft} 左寄せ \end{flushleft} \begin{center} 中央 \end{center} \begin{flushright}右寄せ \end{flushright} \section{箇条書き} \begin{itemize} \item Linuxのインストール \item 環境設定 \item 理工系に特化した使用法 \end{itemize} \section{表を作る} \begin{tabular}{|l|c|r|} \hline 温度 & 測定値 & 計算値 \\ \hline 50.0 & 1.23 & 159 \\ \hline 60.0 & 2.34 & 345 \\ \hline 70.0 & 3.45 & 987 \\ \hline \end{tabular} \section{数式・その他を書く} \subsection{数式} 数式を書くには $ x^2+2 x+1=0 $ や \[ a x_{1}^{2} + b x_{2}^{3} +c x_{3}^4 = 0 \] と書きます.または \begin{math} F = m a \end{math} とも書きます. \subsection{分数と行列} 分数は \[ y= \frac{x^2+3x+2}{x-2} \] \[ \frac{d y}{d x} = x +2 \] 行列は \[ A = \pmatrix{ a_{11} & a_{12} & \ldots & a_{1n} \cr a_{21} & a_{22} & \ldots & a_{2n} \cr \vdots & \vdots & \ddots & \vdots \cr a_{m1} & a_{m2} & \ldots & a_{mn} \cr } \] と書くか, \[ B = \left[ \matrix{ b_{11} & b_{12} \cr b_{21} & b_{22} \cr } \right] \] とします. \subsection{微分積分や和の記号} 微分は $ d x /d t = v $ ,偏微分は \[ \frac{\partial y}{\partial x} \] \\ 積分は \[ y = \int x dx \] \[ S = \int_0^\infty x^2 dx \] 和は \[ \sum_{k=1}^{10} x_k = x_1 + x_2 + \ldots + x_{10} \] \subsection{関数名など} 三角関数などは \[ x = r \sin ( a t +b) +\cos ( a t +b) \] \[ y = \log_e x^2 \] 平方根は \[ \sqrt{2} +\sqrt{3} \] \subsection{ギリシャ文字など} ギリシャ文字は数式モードで書きます. ここでは少し大きめに書きます.\\ {\Large $ \alpha \beta \gamma \delta \epsilon \zeta \eta \theta \iota \kappa \lambda \mu \\ \nu \xi o \pi \rho \sigma \tau \upsilon \phi \chi \psi \omega $ } \\ 大文字は \\ $ \Gamma \Delta \Theta \Lambda \Xi \Pi \Sigma \Upsilon \Phi \Psi \Omega $ \\ 変形ギリシャ文字は $ \varepsilon \vartheta \varphi $ 等があります. \\ 大文字の筆記体を書くには,数式モードで \begin{math}{\cal ABCHLPQTXYZ} \end{math} その他に,特殊記号として $ \imath \jmath \ell \Re \Im $\\ 摂氏温度をあらわすのは $ 28.4 ^\circ $ C とします.\\ その他には, \[ \pm \mp \times \div \ast \le \ge \gg \equiv \sim \simeq \approx \neq \oint \prod \] 最後に, $\flat \natural \sharp \clubsuit \diamondsuit \heartsuit \spadesuit $ \section{図の環境} 文字の周りに線を引きましょう. \\ \unitlength=1cm \begin{picture}(3.0,1) \put(0,0){\framebox(1,1){文字}} \put(1.5,0){\framebox(2.5,0.7){Linux}} \end{picture} \\ 自由な図形を描くにはかなりの労力が必要です.他のツールを使い,それを取り込んだ方が得策です. \end{document} *** リスト3 終り *** *** 図1 LaTexの例 -- xdvi による表示(example.ps) *** では,この得られたexample.dviファイルをどのように印刷するのでしょうか.はじめに,jdvi2kps を用いてポストスクリプトファイルに変換します.そして,変換されたポストスクリプトファイルをghostscriptを用いてポストスクリプトプリンタでない通常のプリンタのコードに変換をして印刷をします.JEに含まれる日本語対応のghostscriptはx11出力には対応しております(すなわち,ポストスクリプトファイルをx11の画面に表示できます)が,通常にDOS,MS-Windowsで用いるプリンタには対応するようにコンパイルされておりません.そこで,ソースファイルからghostscriptを自分の環境にあわせて自分でコンパイルする必要があります.自分でコンパイルと言うととんでもないと,後込む人もお見えになると思います.しかし,あるファイルの一部を書き換えて,いくつかのファイルをコピーして'make'とするだけです.来月はこのgsのメイクに挑戦して見ましょう. 先月はgnuplotの紹介をしました.もっといろいろな機能を紹介したいのですが,連載という性格上,同じソフトばかりという訳にもいきません.もっと突っ込んだgnuplotの使い方は必要に応じて紹介します.当面は,他の雑誌や本を参照して下さい.なお,ディレクトリ /usr/lib/gnuplot/demos にgnuplotのデモが用意されてます.これを自分のワークエリアにコピーして実行して見ると,大いに参考になります. % cp -r /usr/lib/gnuplot/demos . とすると,現ディレクトリの下に,demosが作られ, /usr/lib/gnuplot/demosの内容がコピーされます. % cd demos % gnuplot gnuplot > load "all.dem" で,gnuplotの持つ多くの機能が実行されます.そして,その命令を使うには all.dem の内容を見て下さい.そこから,他のファイルをたどって見ることで,かなりの機能がマスターできます. DOS,MS-Windowsの世界ではワープロの次に表計算と言われてます.Linuxでは表計算ソフトとして,slackwareをインストールする際に,コンソールではsc,Xではxspreadと言うソフトが選択できます.ここでは,xspreadを紹介しましょう. xspreadはDOSでのLotus1-2-3とよく似たソフトです.Lotus1-2-3を使える人ならば,少しの変更点を押えれば,ほとんど違和感なく使えます.ただ,残念ながら日本語は使用できません.そのためか,他の雑誌等ではほとんど紹介されてません.しかし,実験等をしている人にとっては,温度を変えながら実験データを取ったとき,解析する際には温度を摂氏から絶対温度に変換したりするのに,表計算ソフトの便利さは手放せません.インストールの際にxspreadを選択されなかった方は,slackwareのxapのディレクトリにあります.pkgtoolでインストールをして下さい. では,早速起動しましょう. % xspread -n 新しいWindowを作り,華やかさはありませんが,DOS上でのソフトと,どこか似た画面がでます.もっとも,表計算ソフトは基本コンセプトが同じですから,画面も大きく変化するはずがありませんが.列をアルファベットで,行を数字で表現しております.早速,A列の0行目から1,2,3,4と数値を入れて,下へ矢印でセルを移動して見て下さい.そして,A4のセルに =@sum(a0:a3) と入力して下さい.'='と入れると,関数の入力ができます.4つのセルの合計が計算されて表示されてます(図2).終了は'/'を押すとメニューが表示されます.そこから,'q'を選択します.もし,ワークシートを保存してなければ,セーブしますか?と質問されます.今はセーブしてませんし,その必要もないので'n'と答えて終ります.先程のxspreadの起動時にオプションとして'-n'を付けました.これを付けないと,数値の入力がいささか面倒です.'-n'を付けないで起動した時は,数値を入れるには,'=1'と入れてから,returnキーを押します.DOSで慣れた入力方法とはかなり違います.この場合は,'Ctrl+t'(Ctrlキーを押しながらtを押す)として,メニューの中から'n'(numeric)を選びます.これで,数値入力は起動時に'-n'のオプションを付けたのと同じになります. *** 図2 xspreadの画面例 (xspread.tif) *** 表 3 xspreadの基本的使い方 *** 数値の入力: 数値を入れ,カーソルを移動するか[Return]キーを押す (Numeric input enable mode : オプション -n を付けて起動の場合) 数値の入力: = 数値 [Return] (Numeric input disables mode : オプションなしの場合) 関数入力 : = 関数(最初に@が付く) [Return] 文字入力 : " 文字 [Return] 中央に表示 < 文字 [Return] 左端に表示 > 文字 [Return] 右端に表示 カーソル移動 : 矢印, mule(emacs)のキーバインド(C+pで上),viのキーバインド(hで左) ファイルのセーブ: /FP file name [Return] ファイルのロード: /FG file name [Return] 表計算の画面イメージでセーブ: /FW "image.dat" a0:g10 [Return] "dest" range ファイル名 範囲 終了 : /Q 埋め込み : /RF a1:a10 1 +2 [Return] range start inc a1からa10までの範囲を1から+2増しで埋め込む 範囲 初期値 増分 セル内容の消去 : x セルの複写 : /RC a2:a10 a1 [Return] dest_range src_range 複写先 複写元 グラフ : /GT タイプの選択 ( Line Bar XY Stack Bar Pie ) X A [Return], 1 [Return], 10 [Return] A B [Return], 1 [Return], 10 [Return] X 横軸の範囲指定 列, スタート行, 終了行 A 縦軸の範囲指定 列, スタート行, 終了行 V グラフ表示 操作の中止 : Ctrl+g または [Esc] *** Table 3 end ***** その他に,セル内で他のセルを参照できます.相対的な参照は a1,絶対番地の参照は $a$1,列のみ絶対参照は $a1,行のみはa$1です.Lotus1-2-3と同じです.