sysv-rc-conf

2010/06/28未分類import
設定ファイルなどをいじることなく,
OSの起動と同時に立ち上がるデーモンをランレベルごとに指定できる便利なコマンド.
Debian系限定.Red Hat系は別の「chkconfig」というコマンドを利用することになる.
標準では入っていないので,aptitudeでインストール.
実行はそのまま,sysc-rc-confとタイプするだけ.操作は画面上に記載されているので特に困らない.
良くこのコマンド名を忘れるので記載.

ただし,Gnomeデスクトップにログインできる環境にある場合,
システム設定の項目に同様のものがあるのでそれを使うというのもありです.

dvioutのEPS表示設定

2010/06/18未分類import
WindowsでTeXを使う際,最も一般的なプレビューソフトはdvioutだと思う.
このプログラムは,EPS形式の画像ファイルについては標準の設定でプレビューをサポートします.
しかし,このプレビュー時に問答無用で作成されるpbmファイルは,
画像を追加する度にその数だけ,編集しているファイルのあるディレクトリに無秩序に追加されていき邪魔な存在です.

この問題に対しての解決策がネットにあったので,メモっておきます.こちらが参考にさせていただいたサイトです.ありがとうございます.

要は,dvioutの設定画面で,pbmファイルの保存先を指定してやればよいということでした.
私は以下のように設定しています.

WS000038.jpg


このようにgdat:というパスをpbmを置きたい場所にすればよいのです.
ただし,この設定では,PNGやJPGなどのファイルを取り込んだときはエラーになり,正常に表示されません.
TeXで何かを作るときは,EPSにした方が精神衛生上よいでしょう*1

*1 : ただし,dvipdfmxを使ってPDF変換する際は正常に表示されます.

inkscapeで数式

2010/06/16未分類import

textextを使ってTeX文章をベクトル画像化

inkscape上で,textextを使ってTeX文章をベクトル画像化します.
同じことを扱っているネット上の記事は多いですが,成功例ということで記述します.

環境について

使っているパソコンにTeXの環境と,pstoedit,inkscape本体がインストールされていることが必要です*1
特に,pstoeditはパスを通しておくことが必要だと思います*2
TeXについては以下の環境で構築しました.
dvioutのSystemInfoからの抜粋です.なお,ハードはThinkPad X200です.
 --- Environment ---
C:\usr\dviout\dviout.exe
dviout          : Ver 3.18.1 (July 20, 2006)
OS              : Windows2000  Version 6.0 (4 日本語 (日本)) ←つまり,Vistaです.Windows Vista Business 32bit.
comctl32.dll    : Version 5.82
shell32.dll     : Version 6.0
printer         : Brother HL-5070DN series(1200dpi)
TeX 3.1415926 (Web2C 7.5.7)
pTeX 3.1415926-p3.1.10 (sjis) (Web2C 7.5.7)
dvips(k) p1.7b 
dvipdfmx-20090115(cvs) 
GPL Ghostscript 8.64 (2009-02-03)
TEXMF=""
TEXMFMAIN=""
TEXMFCNF=""
GS_LIB=""
PATH="C:\Program Files\ImageMagick-6.5.7-Q16;C:\Program Files\ImageMagick-6.5.5-Q16;C:\Program Files\Intel\WiFi\bin\;c:\l2h\zlib\bin;c:\l2h\tool;c:\l2h\tiff\bin;c:\l2h\rle\bin;c:\l2h\png\bin;c:\l2h\netpbm\bin;c:\l2h\jpeg\bin;c:\l2h\jbigkit\bin;C:\MinGW\bin;C:\Program Files\Common Files\Roxio Shared\9.0\DLLShared\;C:\Program Files\Common Files\Roxio Shared\DLLShared\;C:\Program Files\Common Files\Roxio Shared\DLLShared\;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\gs\gs8.64\lib;C:\gs\gs8.64\bin;C:\usr\bin;C:\Program Files\Lenovo\Client Security Solution;C:\Program Files\ThinkPad\ConnectUtilities\;c:\Program Files\Common Files\Lenovo;C:\Windows\System32\Wbem;C:\Windows;C:\Windows\system32;C:\PROGRA~1\JUSTSY~1\JSLIB32;C:\Perl\bin;C:\Perl\site\bin;C:\Program Files\ThinkPad\Bluetooth Software\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\JustSystems\JSLIB32;C:\Software\gfortran\libexec\gcc\i586-pc-mingw32\4.5.0;C:\Software\MinGW\bin;C:\borland\bcc55\Bin;c:\l2h\jbigkit\bin;c:\l2h\jpeg\bin;c:\l2h\netpbm\bin;c:\l2h\png\bin;c:\l2h\rle\bin;c:\l2h\tiff\bin;c:\l2h\tool;c:\l2h\zlib\bin;C:\borland\bcc55\Bin;C:\Software\gnuplot\bin;C:\Program Files\OpenVPN\bin;C:\Software\pstoedit;C:\Software\potrace-1.8.win32-i386;C:\Software\gfortran\libexec\gcc\i586-pc-mingw32\4.5.0;C:\Software\MinGW\bin;"
 --- parameters ---
multi=4
dpi=600
GS=16
gsx="C:\gs\gs8.64\bin\gswin32c.exe "
spi=c:\usr\dviout
ToEdit=^c^V
gen="`C:\usr\bin\mktexpk.exe --dpi ^d --bdpi ^D --mag ^M ^s"
Wshow=+
TEXROOT=C:\usr\share\texmf\fonts;C:\usr\share\texmf-local\fonts
TEXPK=^r\tfm\\^s^tfm;^r\pk\\^s.^dpk;^r\vf\\^s.vf;^r\ovf\\^s.ovf;^r\tfm\\^s.tfm

 --- End ---

textextの入手とインストール

公式サイト?から最新版をダウンロードしてきます.
アーカイブか実行ファイルかはお好きな方を.インストーラで入れた方が確実といえば確実ですが,
どちらの場合であっても,必要なソフトのパスを通し,
inkscapeのインストールフォルダのshare/extesions/以下にtextext.inxとtextext.pyを置けば問題ないはずです.
この操作だけで,すんなりと動けば良かったのですが,
このままではWindows上では正常にこのプログラムは動かないので,いくつか変更する場所が出てきます.

半角文字だけのTeX文書を正常に実行できるようにする

上の状態では,このtextextは動きません.
一時ファイルの保存場所が,ユーザのディレクトリになっているのが問題らしいです.
そのため,インストールしたtextext.pyを直接編集します.バックアップをしたのち,下記のように編集してください.


まず,650行付近を編集します.スペースもしっかり合わせるようにしないと,
Pythonは正常に動作しないとのことなので注意が必要です.
        #self.tmp_path = tempfile.mkdtemp()
        self.tmp_path = 'c:/tmp/textext/'
	self.tmp_base = 'tmp'
730行付近.パスを消す必要はないのでそれをコメントアウトします.
    def remove_temp_files(self):
        """Remove temporary files"""
        base = os.path.join(self.tmp_path, self.tmp_base)
        for filename in glob.glob(base + '*'):
            self.try_remove(filename)
        #self.try_remove(self.tmp_path)
この2個所の編集で,ちゃんとTeX記法で数式が打てるようになるはずです.
画面のように操作できるようになります.
WS000031.jpg

WS000034.jpg


日本語を含むTeX文章を入力できるようにする

上記に加えて,もう少し設定すると日本語を含んだTeX文章もinkscape上で利用できるようになります.
方針としては,PDFファイルを作成するのに利用するプログラムをpdflatexからplatex + dvipdfmxに変更し,
フォントを一度ベクトル画像に置き換えたepsファイルを作って,pstoeditに渡してやるというもののようです.

まず,55行目付近を下のように変更します.
import inkex
import codecs
import os, sys, tempfile, traceback, glob, re, md5, copy
from lxml import etree
720行目付近
        # Convert TeX to PDF

        # Write tex
        f_tex = open(self.tmp('tex'), 'w')
        try:
            #f_tex.write(texwrapper)
	    sjis_tex = codecs.getwriter('shift_jis')(f_tex)
	    sjis_tex.write(texwrapper)
        finally:
            f_tex.close()
            
        # Exec pdflatex: tex -> pdf
        #exec_command(['pdflatex', self.tmp('tex')] + latexOpts)
        exec_command(['platex', self.tmp('tex')] + latexOpts)
	exec_command(['dvipdfmx', self.tmp('dvi')])
	if not os.path.exists(self.tmp('pdf')):
            raise RuntimeError("pdflatex didn't produce output")
850行目付近
        # Exec pstoedit: pdf -> svg
	exec_command(['gswin32c', '-dSAFER', '-q', '-dBATCH', '-dNOPAUSE',
	              '-sDEVICE=epswrite', '-dEPSCrop', '-r9600',
	              '-sOutputFile='+self.tmp('eps'), self.tmp('pdf')])
	exec_command(['pstoedit', '-f', 'plot-svg',
	              self.tmp('eps'), self.tmp('svg')]
	              + pstoeditOpts)

これで,日本語化ができたと思います.

WS000035.jpg

WS000036.jpg


ちなみに,textextの項目がなぜ「Tex Text」と「Tex Text Japanese」があるのかといえば,
何となく,最初に説明した個所を直したものを前者に,日本語化したものを後者に*3している関係でです.
こうすると,ファイルサイズが抑えられるかもしれないので*4


なお,この記事を書くにあたっては,こちらの記事と,こちらの記事,こちらの記事などを参考にしています.
特に,この記事の設定例は前の2つのページに沿っています.ただただ感謝するばかりです.

使い道

inkscapeのオブジェクトは,コピーペーストで
Word,Excel,PowerPoint,花子などにベクトル画像として貼り付けられます.
なので,図と数式を使って説明する資料を作成する場合にこの方法は非常に役に立つのです.
Adobeの製品のように追加で高額な投資をしなくても良いし,数式表現は厳密なものが使えますので.
活用してみてください.

*1 : 本記事の例では,pstoeditはversion3.50,inkscapeは0.47です.

*2 : インストーラを使うとパスの設定はしてくれるようですが,手動でやっても問題ないです.公式サイトはこちら

*3 : textext-jp.py,textext-jp.inxとリネームして,タイトルなどを適宜変更しています.

*4 : 日本語化の時点で,フォントが完全に図形になっているので…….ただ,日本語化前ももしかしたらフォントを図形化しているような気もするので意味はほとんどありません.

Wake-on-LANの使い方

2010/06/02Linuximport

Wake-on-LANを使ってLinuxサーバからWindowsクライアントをスリープ解除する

Wake-on-LANとはパソコンをLAN経由でリモート起動する操作のことです.
Linuxマシン(サーバ)から,同一LAN内のWindowsマシンを起動するのにどういうことをしたか,というのをメモしておきます.

Windowsマシン側の設定1 OSの設定

  1. コントロールパネルから下の画面を辿ってデバイスマネージャまでたどり着きましょう.

WS000001.JPG


WS000002.JPG


WS000003.JPG


WS000004.JPG




たどり着いたら,そこのネットワークアダプタのプロパティーの内,下に示したような項目を設定しましょう(マザーボードやNICによって異なります.).

WS000005.JPG


WS000006.JPG


WS000007.JPG


WS000008.JPG



追記.下の画面のように,「管理ステーションでのみ、コンピュータのスタンバイ状態を解除できるようにする」にもチェックを入れてください.そうしないと,スタンバイ状態に移行してすぐに勝手に復帰してしまいます.

WS000010.JPG

BIOSの設定

BIOSの設定も適切に行わないと,Wake-on-LANは働きません.
これもマザーボードによってことなります.
BIOSの設定画面で,電源管理やLANなどと書いてある項目をEnableにします.
これは勘でやってください.項目名を見ながらそれっぽいなと思ったところをいじると,それでたぶん当たります.

以上で,Windows側の設定は終わりです.

Linuxサーバ側の設定と操作

wakeonlanコマンドのインストール

コマンドラインで動作する,wakeonlanという名前そのままのプログラムがあるのでそれをインストールします.
Debianなら,aptitudeで簡単に導入できます.実はこれだけで準備完了です.

実際の使い方

Windowsマシンをスリープモードにした後,
Linuxサーバの端末上(もちろん遠隔地のクライアントからアクセスしていても構わない)で,
下のように入力します.一般ユーザで構いません.
username@BigOwl:~$ wakeonlan ○○:○○:○○:○○:○○:○○
なお,『○○:○○:○○:○○:○○:○○』は対象のWindowsマシンのMACアドレスです.
Windowsマシンでipconfigコマンドを使って調べるなどしてください.
そして,エンターを押すと,下のような表示が出て,Windowsマシンがスリープモードから立ち上がります.
username@BigOwl:~$ wakeonlan ○○:○○:○○:○○:○○:○○
Sending magic packet to 255.255.255.255:9 with ○○:○○:○○:○○:○○:○○
username@BigOwl:~$
使い道ですが,私の環境ではサーバ機はWANからSSHでアクセスできるようにしてあるので,
そこを基点に,Windowsマシンを必要なときにだけ起動して,
それ以外の時はスタンバイにしておくというようなことができます.省エネですね.