namazu-dev(ring)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
supporting tex document with detex
- From: Satoru Takabayashi <satoru-t@xxxxxxxxxxxxxxxxxx>
- Date: Thu, 30 Dec 1999 22:21:38 +0900
fj.comp.texhax でこんな記事を見つけました。
Message-ID: <84ev0c$a7n$1@xxxxxxxxxxxxxxxxx>
| TeX・LaTeX のソースから,コマンドを削除してプレインテキストにするツー
| ルには detex や untex などがあります。
さっそく両者を取ってきて試しました。
* DeTeX Home Page
<http://www.cs.purdue.edu/homes/trinkle/detex/>
* untex
<ftp://ring.asahi-net.or.jp/pub/text/CTAN/support/untex/>
どちらも機能に大差はないようですが、
* 前者は lex を使って真面目に字句解析をしている
* 前者は現在でも保守が続いているようだ
* 後者はたった 478行と、胡散臭い
* 後者は 1994年で保守が止まっているようだ
という理由で DeTex の方が好ましいようです。さっそく、DeTex
を用いた Namazu 用のフィルタを用意しました。
が、File::MMagic で *.tex ファイルをapplication/x-tex として
認識させることができません。mknmz のsetup_magic()に
$Magic->addSpecials("application/x-tex",
"^\\document(style|class)");
$Magic->addFileExts('\\.tex$', 'application/x-tex');
を追加するだけでは駄目なのでしょうか? > 野首さん
とりあえず mknmz -t application/tex のように文書形式を指定す
れば動きます。
-- Satoru Takabayashi
おまけ: Perl Cookbook に載っていた正規表現の面白い応用
1. 正規表現で素因数分解をしよう!
# Perl Cookbook のコードをわずかに修正した
while (<>) {
chomp;
for ($N = ('o' x $_); $N =~ /^(oo+?)\1+$/; $N =~ s/$1/o/g) {
print length($1), " $N // ", length($N), "\n";
}
print length($N), " $N // ", length($N), "\n";
print "\n";
}
実行例:
% perl prime-pattern.pl
30
2 oooooooooooooooooooooooooooooo // 30
3 ooooooooooooooo // 15
5 ooooo // 5
54
2 oooooooooooooooooooooooooooooooooooooooooooooooooooooo // 54
3 ooooooooooooooooooooooooooo // 27
3 ooooooooo // 9
3 ooo // 3
2. 正規表現で不定方程式を解こう!
# solve for 12x + 15y + 16z = 281, maximizing x
if (($X, $Y, $Z) =
(('o' x 281) =~ /^(o*)\1{11}(o*)\2{14}(o*)\3{15}$/))
{
($x, $y, $z) = (length($X), length($Y), length($Z));
print "One solution is: x=$x; y=$y; z=$z.\n";
} else {
print "No solution.\n";
}
実行結果:
% perl diophantine-equations.pl
One solution is: x=17; y=3; z=2.
# 正規表現メイリングリストがあるといいな (どなたか作りません?)