Fluxboxのメニューバーなどの日本語表示

UbuntuにFluxboxをいれたとき、ウィンドウのメニューバー(と呼ぶのでしょうか?)の日本語表示が文字化けしていましたが、つぎのように設定ファイルに書き込むとよいことを学びました。こちらのCookiesさんのfluxboxを入れてみたという記事にあるとおりです。

fluxboxの起動設定ファイル(~/.fluxbox/startup)をひらいて、「xmodmap "/home/zedo/.Xmodmap"」と「exec fluxbox」の間のどこかにつぎの一行を書きます(この部分はスタートアップで起動したいプログラムを書く部分だということです)。


export LANG=ja_JP.UTF-8

imagemagickでPDFファイルをTIFFにする

PDFファイルをTIFFに変換したときのメモです。

imagemagickを使って複数ページのPDFファイルをページごとにJPEGにするというのはかんたんにできます。


$ convert filename.pdf filename.jpg

これで出力ファイル名の拡張子の前に自動的に連番が付けられます(PNGへの変換なども同様にできます)。ではTIFFで書き出すには?


$ convert filename.pdf filename.tif

このようにすると、マルチページのTIFFがひとつできあがります。バラバラにしたいときはこれをあらためてバラせばいいといえばそれまでなのですが、つぎのように書くことで変換したいPDFのページを指定することができるということです(連番は「0」から始まります)。


$ convert filename.pdf[0] filename00.tif
$ convert filename.pdf[1] filename01.tif

ブレース展開を使ってfor文でループをまわすと次のように書けます。


$ for i in filename.pdf[{0..55}]; do convert $i $i.tif; done

ファイル名はrenameなどを使ってきれいにすればいいと思います。

デジタル・カメラで文書を複写する 14 ― 二刀流


ひさしぶりにカメラを使った複写について書いてみます。

このところあまり複写に時間を使えなかったのでカメラをしまい込んでいたのですが、久しぶりに取り出したので、カメラを2台使って書籍を複写する方法について少し書きます。基本的にはつぎのような方針。

  1. クランプやアームなどでカメラを固定
  2. 本に傾きをつけることで2台のカメラで左右のページを狙う
  3. 照明は真上からあてる
  4. インターバル撮影を駆使

1

クランプなどをつかってカメラを固定します。基本的には前に書いたデジタル・カメラで文書を複写する 10 ― 携帯用複写台を自作のやりかたでふたつ作ります。

2

本を90度の傾きで開き、左右に45度ずつの傾きをつけます。図を見てください。お仕事をお手伝いしている研究所が生協で購入したマックブック・プロの厚紙の梱包材がよいかんじでした。ちょうど同じころに生協でマックブック・プロを買った友達がいたので、その梱包材をもらってきました。みなさんもぜひ複写のためにマックブック・プロを生協で買いましょう(ぼくは買いません)。イギリスの国立文書館では、ゴムのような材質で断面が1:1:√2のブロックがたくさん置いてありました。そういうものをホームセンターなどで見つけられるといいのですがなかなかありません。(求む情報)

3

本は両ページとも45度の傾きがつけられているので、照明は真上から当てるとちょうど紙の面に対して45度の角度で当たります。環境を整えにくい場合は部屋の照明でも条件を満たすので便利です。

4

インターバル撮影機能を駆使します。コンパクト機ならリコーのものはだいたいこの機能がついているようです。一眼なら本体についてなくてもリモコンで実現できます。

ここでポイント。左右のカメラのシャッターを切るタイミングを少しずらします。そうすることで、左右のページを交互に無反射ガラスでおさえることができます。1. 左ページにガラス置く、2. 右手のカメラのシャッター切る(自動)、3. 右ページにガラス置く、4. 左手カメラのシャッター切る、5. ページめくる。といった作業の繰り返しになります。図にあるように、右手のカメラが左ページを、左手のカメラが右ページを狙うことになります。本の状態にもよりますが、ぼくはだいたい15秒くらいのインターバルに設定することにしています。

さいごに

以上で基本的な作業の説明はおしまいです。撮影した画像はUSBケーブルでコンピュータに転送することにしています。そうすればカメラを雲台から取り外さなくてすむので、設置の手間が省けます。Eye-fiを使いたいのですが、Linux対応のプログラムがないのが困ったものです。いいかげん開発してもらいたいものです。

なお、量産品のデジタル・カメラにも、どうしても個体差は出てしまうということです。ぼくはその点についてはあきらめています。自分の目で見る分には気にならないし、ぼくの最終的な目標はきれいな画像を撮ることではなくて、OCRにかけてテキスト版を作成することだからです。カメラはリコーのGXRとA12 50mmレンズをメインで使っています。適当な大きさでしかも性能が良いので個人で行なう複写目的には、今のところこれが決定版のような気がします。

英辞郎をLinuxのコマンドラインで使う

書き物をしていたり翻訳していたりするときに、コマンドライン英辞郎が使えたらいいのに、と思っていたらあっさりできたのでメモします。ぼくは少し古い第4版を持っていたのでそのデータを使っていますが、新しい版だと違うかもしれません。DebianUbuntuで試したので、それを前提に書きます。

yikemacさんのLinux活用Tipsを参考にしました。

やること:

  1. Windows上で英辞郎のデータを書き出す
  2. データの文字コードUTF-16からUTF-8にする
  3. データの置き場所をつくってコピー(/usr/share/dict/eijiro/)
  4. シェルスクリプトをつくる(/usr/local/bin/eiwa)
  5. シェルスクリプトを実行可能にする

1

Windowsにインストールした英辞郎を見るためのPDICというソフトウェアからデータを書き出します。PDICを起動して、[File]->[辞書設定<詳細>]と進んで辞書を選びます。今回は英和辞書だけあればよかったので、「Eijiro112.dic」を選択して右クリックから[辞書の変換]を選択。「変換先ファイル形式」を「PDIC1行テキスト形式」にして、「変換先辞書」は好きなところを指定。OK。できたファイルを外付けメディア等に保存してLinuxに移します。

2

Linux上でデータの文字コードUTF-16からUTF-8に変換。nkf文字コードを調べてみたらUTF-16でした。


$ nkf -g Eijiro112.txt
UTF16

なので、iconvで変換(iconvのほうが使い慣れているからというだけです)。


$ iconv -f UTF16 -t UTF8 Eijiro112.txt > Eijiro112_utf8.txt

3

データの置き場所をつくってコピーします。ここでは、/usr/share/dict/eijiro/におくことにします。


$ sudo mkdir /usr/share/dict/eijiro
$ sudo cp Eijiro112_utf8.txt /usr/share/dict/eijiro

4

シェルスクリプトをつくります。エディタをたちあげて次のようなかんじのスクリプトを書いて、「eiwa」とでも名づけて保存します。


#!/bin/sh

DICT=/usr/share/dict/eijiro/

WORD=$1
grep -Eh "^$WORD ///" $DICT/Eijiro112_utf8.txt | sed -r "s/(\/\/\/|\\\\)/\n/g" | sed -r "s/◆/ #/g" | more

辞書のデータを見ると、見出しとそれ以下が「///」で区切られ、訳が複数ある場合は「\」で区切られていることがわかるので、それを改行文字に置換。それから訳の補足説明のようなものが「◆」につづけて書かれていますが、見にくいので「 #」に置換しています。

これを次のディレクトリにコピー


$ sudo cp eiwa /usr/local/bin/

5

シェルスクリプトを実行可能にします。


$ cd /usr/local/bin/
$ sudo chmod +x eiwa

以上で英辞郎の英和辞書がコマンドラインから使えるようになりました。二語以上の見出しの場合はクオートします。grepを使っているので正規表現も使えます。このようなかんじです。


$ eiwa Mughal
Mughal
【名・形】ムガール人(の) #1526〜1857インド大半を制覇したモンゴル系のイスラム王朝の人々

$ eiwa "civil service"
civil service
公務(員)、行政事務 #【略】CS
【形】<→civil-service>

$ eiwa viceroy.+
viceroyalty
【名】副王[総督]の職[位・権限・任期]
viceroyship
【名】副王[総督]の職[位・権限・任期]

検索結果をmoreやlessで出すようにしておくと、分割したEmacsのペインなどでターミナルを動かしていて縦幅が狭くても見やすいです。もちろん、Emacsを使わなくてもターミナルが開いてあればいつでも使えます。

Ubuntuの古いカーネルを消す

Ubuntuを起動するときにOSの選択肢がふえすぎたので、古いカーネルを削除しました。そのメモ。

Winとデュアルブートにしているのですが、最近は選択肢がふえすぎてWinのところまでいくのに次画面までいかなくてはならなくなったので、とっても面倒でした。

まず、いまあるカーネルをチェック。たくさんためたなと思います。


$ dpkg -l | grep linux-image
ii linux-image-2.6.32-21-generic 2.6.32-21.32 Linux kernel image for version 2.6.32 on x86
ii linux-image-2.6.32-25-generic 2.6.32-25.45 Linux kernel image for version 2.6.32 on x86
ii linux-image-2.6.32-26-generic 2.6.32-26.48 Linux kernel image for version 2.6.32 on x86
ii linux-image-2.6.32-27-generic 2.6.32-27.49 Linux kernel image for version 2.6.32 on x86
ii linux-image-2.6.32-28-generic 2.6.32-28.55 Linux kernel image for version 2.6.32 on x86
ii linux-image-2.6.32-29-generic 2.6.32-29.58 Linux kernel image for version 2.6.32 on x86
ii linux-image-2.6.32-30-generic 2.6.32-30.59 Linux kernel image for version 2.6.32 on x86
ii linux-image-2.6.32-31-generic 2.6.32-31.61 Linux kernel image for version 2.6.32 on x86
ii linux-image-generic 2.6.32.31.37 Generic Linux kernel image

このうち21から28までを削除。念のため古いのもふたつくらい残しておきます。


$ sudo apt-get remove --purge linux-image-2.6.32-{21..28}-generic

これで、起動時のGRUBの画面でOSがずらっとたくさん並ばなくなりました。キレイになった。

連番の名前がついたファイルを操作(bash)

カメラやスキャナから取り込んだ連番のついたデータを、たとえばタイトルごとにディレクトリをわけて整理したいとき、Linuxのコマンドではどのように操作するのがいちばんラクか。その答えはおそらく、ブレース展開{}を使ってforループで回す。

たとえば、リコーのカメラだと「RIMG0001.JPG」というように名前がつきます。こうして並んだファイルの「RIMG0023.JPG」から「RIMG0056.JPG」までを他のディレクトリにコピーしたいとき。


for filename in RIMG{0023..0056}.JPG; do cp $filename directoryname; done

でよいわけですね。こんなラクだったのですね。もっと複雑なスクリプト書いてました。


追記:

いや、ちがう。コピーをするのにfor文でループを回す必要はないですね。だから、もっと簡単になります。


cp RIMG{0023..0056}.JPG directoryname

でよいわけですね。わざわざ複雑に考えていました。何をやっているのやら…。要はブレース展開を使えばよいということです。

ブレース展開は、bash3.0から使えるようになったという話です。