6月 28, 2009

文字コードを判別してTeXにかけるPerlスクリプト

とある事情で、Ubuntu上ではUTF-8およびShift_JISの2種類のTeX文書を処理している。一々 platex -kanji=utf8 とか platex -kanji=sjis とか、したくないので、文字コードを判別してから組版し、ついでにPDFに変換して文書ビューアで表示させる Perl スクリプトを作ってみた。

ユーザーは自分だけなので、思いっきり手抜きだが、まずまず役立っている。

#! /usr/bin/perl -w
#
# [usage] myplatex hoge
#  hoge.tex の文字コードを判別して、platex -kanji=KANJICODE とコンパイル
#  引き続いて dvipdfmx で PDF を作り、文書ビューアー evince を起動する
#  とりあえず,普段使っている UTF-8 と Shift_JIS のみサポート

use strict;

my $basename;   # hoge
my $texfile;    # hoge.tex
my $dvifile;    # hoge.dvi
my $pdffile;    # hoge.pdf
my $kanjicode;  # UTF-8, Shift_JIS

$basename = $ARGV[0];
$texfile = $basename."\.tex";
$dvifile = $basename."\.dvi";
$pdffile = $basename."\.pdf";

open (INFILE, "<$texfile") || die "File Not Found\n";
close INFILE;

$kanjicode = `nkf -g $texfile`;
chomp($kanjicode);

if ($kanjicode eq "UTF-8") {
 system("platex -kanji=utf8 -interaction=nonstopmode $texfile");
} elsif ($kanjicode eq "Shift_JIS") {
 system("platex -kanji=sjis -interaction=nonstopmode $texfile");
} else {
 die "Not supported\n";
}

system("dvipdfmx $dvifile");
system("evince $pdffile");

熱暴走

かみさんのVAIOにHDDを外付けし、Ubuntu GNU/Linux として使用しているのだが、何と何と、熱暴走なるものを初体験してしまった。システムのアップデートから再起動を促されたので、一旦シャットダウン。さて、再起動しようとするが、途中でカーネル・パニックの表示が出てダウンしてしまう。ええ〜 😯 ワタシ、何もしてないのに〜。今度はリカバリーモードでブートさせるのだが、これも途中でダウン。画面に一瞬、critical temperature らしき文字が出たのに気づいたのが幸いだった。も、もしかして熱が原因でしょうか? 触ってみると、おお、熱い! 😯

ということで、しばらく冷ましてからブートさせる。何事もなかったように起動。ああ良かった・・・。それにしても、カーネルパニックの表示が出たときはビビったなあ。