次の月 / 最新

hiChangeLog / 2006-11

2006-11
SMTWTFS
1234
567891011
12131415161718
19202122232425
2627282930

2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12

2006-11-30 Thu

ヘッダやフッタをいじる場合はfancyhdrを使う [TeX]

PDFのドキュメントが(私の環境では)
C:\usr\local\share\texmf\doc\latex\misc\fancyhdr.pdf
に用意されていた。今のところ必要性は感じていないが、いつか触るかも

Graphにおいて、Alt押しながらTagのテキスト部分をドラッグし、Trace上にドロップすることで、Tagの位置を指定できる [Igor Pro]

Graph => Add Annotation においてTagを選ぶと、お目当てのTraceに線や矢印が自動で引けて便利である。その位置はTraceの種類や場所はダイアログから変えられるが、Altを押しながらのドラッグ&ドロップで視覚的に決定することもできる。(もちろん、目的の位置にドロップするのである)

Graphにおいて、Ctrl + Alt でdraw toolを選択できる [Igor Pro]

タイトルのまんま。もちろんTool Paletteは表示しておく必要がある(Ctrl + T)

2006-11-28 Tue

EPS画像をサムネイル表示するためにはどうすればよいか [TeX][Illustrator][Igor Pro][画像ファイル]

TeXにおいて画像はEPSが一番相性が良い。で、論文を書く際には大量のEPSが生産されるのであるが、そのうちどのファイル名がどの画像に対応するのかわけがわからなくなってくる。そんな場合はサムネイル表示が活躍するわけであるが、jpgやpngなどと違い、EPSのサムネイル表示はややハードルが高い。

一覧するためのソフトを幾つか試した所感:
= Irfanviewがフリーで高機能で便利なのだが、EPSの表示は私の環境では遅く、やや不満。キャッシュもしてくれない。また、ディレクトリのパスを手入力やペーストができないのも残念。
= XnViewもフリーで高機能で便利。EPS表示は遅いが、キャッシュしてくれるようなので、2回目以降の閲覧は高速。Irfanviewで残念だった所をカバーしている感がある。
= susieプラグインでEPS用のものがいくつかあるようだが、手元のEPSは見られなかった。このあたりは、プレビューあるなしなどEPS作成時の事情に強く依存するようである。あふを愛用してる関係で、susieプラグインがあると一番嬉しいのだが、難しいようだ。
= エクスプローラは何げに優秀で、Illustrator CSで「サムネールを作成」としたものはサムネイル表示が可能である。しかし、Igor Proから出力したEPSは"Suppress Preview"のチェックをオフにしてもサムネイル表示はできなかった。偶然だろうが、Illustrator CSの「ファイルを開く」ダイアログや、Photoshop CSのファイルブラウザでも同様であった。Adobe Bridgeを試したいが、そんなカネはない。

というわけで今日のドラフト結論:
= XnView便利そう
= EPS出力の際、Illustrator CSの「プレビュー」と「サムネール」、Igor Proの"Preview"などのオプションがあるが、これらは不要。でも「サムネール」はファイル開く時に便利だからあってもいいかも。Igor Proの"Preview"はつけるとdvioutでコケたりする(dvipdfmは問題なし)のでつけるべきではない。つけるメリットもない

2006-11-27 Mon

TeXで、用紙の余白(マージン)を設定する [TeX]

TeXで文章を作成する際、普段は何も考えずにjsarticleを使うのであるが、定型書類などでは用紙の余白が例えば3cmとかに決められている場合がある。こんな時に手動で余白を設定する方法をメモする。

本文が描かれるのは、\textheightという高さと\textwidthという幅の領域である。ここから用紙の端までの長さは、左端が(1inch + \hoffset + \evensidemarginもしくは\oddsidemargin)、上端が(1inch + \voffset + \topmargin + \headheight + \headsep)、となっている。なので、例えばletterサイズ(8.5in x 11in)の用紙に1インチの余白を設ける場合は以下のようにする。本文の領域の大きさは(用紙サイズ - 1inch x 2)として決定され、その位置はデフォルトでついてくる1inchのマージンに任せてある。(話を簡単にするためには、hoffsetやvoffsetを -1inch にして相殺させてしまった方が良いかもしれない)

\documentclass[letter]{article} % letter: 8.5in x 11in
\setlength{\oddsidemargin}{0in}
\setlength{\hoffset}{0in} % default
\setlength{\textwidth}{6.5in} % 8.5in - 1in - 1in

\setlength{\topmargin}{0in}
\setlength{\headheight}{0in}
\setlength{\headsep}{0in}
\setlength{\voffset}{0in} % default
\setlength{\textheight}{9in} % 11in - 1in - 1in

ただしこれは「簡易版」で、ヘッダやフッタ、欄外の記述なんかは全く考慮していない。詳細は、例えばdvioutのHelp => Help TeX などを参照。

参考(背景を指定したり、任意位置に文字を出力する方法など):
書類などをTeXで頑張る方法
書式が指定された書類を TeX で書く方法

TeXのコマンドや、用紙の余白(マージン)の大きさの変数などは、dvioutのヘルプから視覚的に参照できる [TeX]

TeXにおいては、ギリシア文字くらいならともかく、普段あまり使わない演算子や余白(マージン)を司る変数なんかの名前(hoffset、voffset、topmarginとか)はいちいちとても覚えてられぬ。で、今まではこれを早見表を作りつつ失くしつつ、結局いちいち本を見ることが多い、なんて感じで迷走を続けていた。

が、dvioutのヘルプに中々便利そうな早見表ライクなものを見つけた。dvioutは普段から使うので、紛失や保管などは一切考えなくてよいのが有難い。Help => Help TeX とすると参照できる。手元のdvioutのバージョンは3.17.1。

クラスファイルの指定が、dvipdfmの出力の用紙サイズにになるわけではない [TeX]

TeXでletterサイズの文章を書く時には

\documentclass[letter]{article} % letter: 8.5in x 11in
などとすればいいやと思っていたが、dvipdfmで出力したPDFを見てみるとA4っぽいサイズになっていた。どうやら、出力したPDFの用紙サイズは改めてdvipdfmの縄張りで指定してやる必要があるみたいである。で、そのサイズはデフォルトでA4となっていたのだ。
$ dvipdfm --help

dvipdfm, version 0.13.2c-j-p1d, Copyright (C) 1998, 1999 by Mark A. Wicks
Japanese extension (S. Hirata, 2001).
(略)
Usage: dvipdfm [options] dvifile
(略)
-p papersize    Set papersize (letter, legal, ledger, tabloid,
                a6, a5, a4, a3, b6, b5, b4, b3, or b5var) [a4]
(略)
なんで、これを踏まえて以下のように
$ dvipdfm -p letter fontsizetest
オプションを指定してやれば、無事にletterサイズのPDFが出来上がった。
しかしながら、(私の場合)用紙サイズの指定はTeXのソース記述の段階で決定されているので、この情報はコマンドオプションでなくソースに埋め込みたいものである。そんな場合は以下のような命令をソースに記述しておく。場所はプリアンブルでなくてもいいようだ。
\special{pdf: pagesize width 8.5truein height 11.0truein}
これは、手元のマニュアル C:\usr\local\share\texmf\doc\dvipdfm\base\dvipdfm.pdf の"4.11 Pagesize"の項に記述されていた。

紙のサイズについて調べた(a4、letter、legal)

手元のWindowsマシンにインストールされたTeXのスタイルファイル
C:\usr\local\share\texmf\tex\latex\base\article.cls
を見ると以下のように書いてあった。

height width
a4 297mm 210mm
letter 11inch(279.4mm) 8.5inch(215.9mm)
legal 14inch(355.6mm) 8.5inch(215.9mm)

ただし、括弧内のmm換算は1inch=25.4mmとしたもの。しかしmm値はジーニアス英和辞典やとある国際会議の原稿様式の説明のものとなぜか違っていた。定義はインチでされているだろうから、きっと彼らが計算ミスを犯したのだろう。

2006-11-24 Fri

bashにおける、ワイルドカードと変数と引用符の関係おさらい [シェル]

manに詳しく出ているが、キモだけメモ。

アスタリスク * (米印) はワイルドカードとして使え、任意長の文字列とマッチする。bashはこのマッチに従い、* をカレントディレクトリのファイル名に展開する。引用符でくくれば展開は行われない。man の Pathname Expansion の項に出ている。

$ ls
fuga    hoge
$ echo *
fuga hoge
$ echo "*"
*
$ echo '*'
*

ドルマーク $ は変数の参照のために使用される。${変数名}はbashによって変数の値に置換される。二重引用符(ダブルクォーテーション)中であっても置換は行われる。引用符(シングルクォーテーション)中ならば置換は行われない。
$ echo ${SHELL}
/bin/bash
$ echo "${SHELL}"
/bin/bash
$ echo '${SHELL}'
$SHELL

Referrer (Inside): [2007-02-04-5]

maildropの設定ファイル.mailfilterについては man maildropfilter で参照できる [メール]

まあタイトルの通り。

また、ヘッダか本文かは、正規表現の後のオプション(hかbか)で指定できる。

if (/^From: <i@am\.spam>*/:h) # ヘッダが対象
        to "$MAILDIR/spam"

if (/^.*ThisIsSpam$/:b) # 本文が対象
        to "$MAILDIR/spam"

grepの使い方もおさらいすることにした [コマンド]

$ ls
fuga1.h  fuga2.h  hoge1.c  hoge2.c hogex.c
という状況。

大文字小文字を区別しない: -i
$ ls | grep -i U
fuga1.h
fuga2.h

マッチしたものを除外する: -v
$ ls | grep 2
fuga2.h
hoge2.c
$ ls | grep -v 2
fuga1.h
hoge1.c
hogex.c

行番号表示: -n
$ ls | grep -n g
1:fuga1.h
2:fuga2.h
3:hoge1.c
4:hoge2.c
5:hogex.c

拡張正規表現(繰り返しなどが使えるようになる): -E
常にこのオプションはつけてていいっぽい。cf. http://katsu.watanabe.name/grep/
perlとかで数字を表すメタキャラクタ\dはegrepでも使えないようだ。
$ ls | grep -E "hoge[[:alpha:]]\.c"
hogex.c
$ ls | grep -E "[[:alpha:]]{4}[[:digit:]]\.(c|h)"
fuga1.h
fuga2.h
hoge1.c
hoge2.c

ちなみにパターンの繰り返しの表現は以下の通り。
{n} n回の繰返し
{n,} n回以上の繰返し
{n,m} n回以上m回以下の繰返し

xargsはfindとかと組み合わせるととても強力なコマンドである [コマンド]

xargsは、標準入力の文字列を、指定したコマンドに引数として渡してくれる、というコマンドである。例えば

$ find . -type f | xargs ls -l
で、普通のファイルの情報だけを詳しく表示できる。

入力文字列の区切りはデフォルトで空白又は改行。これらに文字としての意味を与えたいなら、-0 オプションで区切りをnull文字に変更させればよい。その時は当然、与える文字もnullで区切らなくてはならない。
$ find . -type f -print0 | xargs -0 ls -l


ここで練習問題「ディレクトリだけを選んで消す」。rmdir * でもまあいいんだが、使用例として。
$ find . -type d ! -name "." | xargs rmdir
ディレクトリを列挙する傍ら、! 以下の記述でカレントディレクトリを除外している。もちろん、grepで除去してもよい。

次に「findで一発指定は難しいような不規則なファイルの集合を消す」。
$ find . -type f (そこそこ近い条件でそこそこ絞る) > flist
$ vi flist  # 対象のファイル以外を手作業で消す
$ cat flist | xargs rm
美しいone linerにこだわる必要はない

findの使い方をメモする [コマンド]

こんなんmanしろと言われそうだが、自分でメモすることに意義があると思うのでやっとく。

名前は -name で指定

find . -name "*.eml"

ファイルタイプは -type で指定
find . -type f    # ファイルを列挙
find . -type d    # ディレクトリを列挙
find . -type l    # リンクを列挙

ファイルサイズは -size で指定
find . -size 100c  # 100 byte(cの指定に注意。bだとブロック単位)
find . -size 3k    # 3 kbyte
find . -size -3k   # 3 kbyte 未満
find . -size +3k   # 3 kbyte より大きい
単位によって一致不一致は変わる。2048cと書けば、ピッタリ2048 byteのファイルしかマッチしない。2kと書けば、1025-2048 byteのファイルがマッチする。

タイムスタンプ(変更された日)は -mtime で指定できる。この場合、24時間単位つまり (数字)*24時間 で時間を指定する。
find . -mtime 4    # ちょうど4日前
find . -mtime -4   # それより最近
find . -mtime +4   # それより過去
ただし「n日前」の日本語の表現は俺定義。cf. UNIXの部屋 検索結果: find
単位によって一致不一致が変わるのはファイルサイズと同じ。分単位のオプションはmmin

除外の条件は ! で指定する。以下ではカレントディレクトリを除外している。
$ find . -type d ! -name "."
こういうのはxargsなどでの処理の際に必要となる。

2006-11-23 Thu

nkfは文字コード変換に便利だが、判別結果だけ知りたいなあと思った [コマンド]

nkfでは、入力文字列の文字コードは自動的に判別してくれるそうだが、その結果だけ知りたいと思った。
手元のnkfのそんなオプションはなかったが、比較的最近のバージョン2.0.5にその機能が取りこまれたようだ。
http://0xcc.net/diary/20040601.html

$ nkf --guess japanese.txt
ISO-2022-JP
$

2006-11-22 Wed

EPWINGな百科事典も欲しくなってきた

とりあえず
-平凡社『世界大百科事典』世界大百科事典Toolkit
-スーパー・ニッポニカスーパーニッポニカ Toolkit 1.05
らが、辞典としての実績もEPWINGへの変換実績も申し分ないようだ。
しかし、スーパーニッポニカの方は変換プログラムが2003年度版までの対応とのことで、そもそも入手できるかどうかがハードルになりそうだ。
参考:世界大百科をEPWING化する[デジタル/シゴト/技術]

Referrer (Inside): [2007-01-05-2]

Oxford英英辞典がイイらしいがEPWINGで使えるのか

EPWING辞書 + DDWin という環境は手放せない便利さ。辞書はいくつあってもよい。
で、そういえばOxford英英辞典 Oxford Advanced Learner's Dictionary (OALD) は持ってなかったなということでEPWING形式のものが入手可能かどうか調べてみた。
すると、OALD変換スクリプトなるものを配布してらっしゃる方を見つけた。他の場所の同様な話題は大抵ここにリンクが貼られており、一次情報源なのだろう。
最新の対象は第6版のようだが、第7版が既に出ているようである。最新版のが内容は良いのだろうが、スクリプトが適用できなかったら面倒なので、あえて旧版を買うのが賢い選択か。

Referrer (Inside): [2007-01-05-2]

EmacsでIDEみたいなことを実現する [Emacs]

ecbというやつで、VC++のようにゴテゴテした便利な統合開発環境が得られるそうだ。Emacs Code Browser
ceditなるものも一緒に必要になるそうだ。まだ試してないけど面白そう。
参考:http://www5b.biglobe.ne.jp/~kzfmsp/200408b.html

エクスプローラっぽいListViewコントロール [Windowsプログラミング]

ListViewコントロールは機能盛りだくさんで大変便利。エクスプローラみたくファイルの情報を列挙するにはどうすりゃいいかなーと調べていたら、DirLVなるサンプルをMicrosoftが配っているのを発見した。
http://support.microsoft.com/kb/234310/ja
でもまだ試してはいない

2006-11-21 Tue

rubyで改行コードの出力の際に変換された(LF => CR + LF) [ruby]

f = open('hoge','w')
f.write("\n")
なるrubyスクリプトで、改行コードは確かにLF(LFは\n, 0x0a)からCR+LF(CRは\r, 0x0d)へと変換されていた。
$ xxd hoge
0000000: 0d0a
環境はruby 1.8.4 (2005-12-24) [i386-mingw32]

apelとskkのインストール

環境はWindows + MSYS。emacsにパスを通し、

make
make what-where
make install
した。

Referrer (Inside): [2007-04-09-4]

yatexとNTEmacs22でエラーが出た [yatex]

File mode specification error: (error "Non-hex digit used for Unicode escape")
とか出た。根が深そうである。Meadow3なら特に問題ないようだ。

Referrer (Inside): [2007-02-04-4]

chalowに必要なJcodeとHTML::Templateのインストール [chalow][メモ]

HTML-Template-2.8.tar.gz をゲットし展開。管理者権限がないのでモジュールは自分のディレクトリに置きたいのだが、そのために以下のようにした。

$ perl Makefile.PL PREFIX=/Users/aki/html/itoh/usr
$ make
$ make test
$ make install

Jcode-2.06.tar.gzでも全く同様である。

また、Windows環境で、MSYS付属のmakeを使ってみたのだがうまくいかない。代わりにnmakeを使ったらうまくいった。http://aspn.activestate.com/ASPN/Mail/Message/ppm/3128192

yatexのインストール [yatex]

makefileのEMACSとEMACSDIRをいじっておいて

export DISPLAY=":0.0"
make elc
make install
でできた。

Referrer (Inside): [2007-04-16-1]

yatexからhowmを使にはどうすればよいか? [yatex][howm]

(add-hook 'yatex-mode-hook 'howm-mode)
を.emacsに追加しておく

ブール演算 [python]

pythonにおいては || や && がなく、or や and を使う。また、定数の頭文字は大文字で、 True と False である。

$ python
Python 2.3 (#1, Sep 13 2003, 00:49:11)
[GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> True and False
False
>>> True or False
True
>>>

ChangeLogメモ開始 [メモ]

D論があるにもかかわらず、とりあえず開始してみた。整理は本質的に大事。息抜きがてらちらほらやってゆくことにする。PC関連のものは積極的に公開する。

2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2010-03-08 22:21