読者です 読者をやめる 読者になる 読者になる

どせいたんさき。

ナスダヨー

複数に分かれている tex ソースをひとつにまとめるための perl スクリプト

tex で \input{hoge} を使いまくって散り散りになったソースをごしゃごしゃっとまとめて 1 つのファイルにする(標準出力に流し出す)ためのスクリプトを書いてみた.perl の復習.

もちべーしょん

レターとして論文を投稿しようと考えていたのだけど, Astrophysical Journal Letter の長さ判定ツールは単一のファイルしか受け入れてくれないので \input, \bibliography を使っていると当然ちゃんとカウントされない(というかファイルエラーで弾かれてしまう).でもだらだらと長いソースを書くのはいやだし BibTeX も使いたい.ということでツールに入力するためのソースを作ればいいんじゃないかという事でやってみた.

そーす

即席で書いたのでコメントはなし(良くないですね).再帰を使っています.なのでどこか循環していたりすると死ぬ気がする.とりあえずこれでまとめたファイルをツールに突っ込んだら 1000 words くらいオーバーしていることが分かった.うーん…….

#!/usr/bin/perl
use strict;
use warnings;

sub rec_print {
  my $file=shift;
  our $bname;
  open(my $fh, "<", $file) 
    or die "Cannot open $file: $!";

  while (<$fh>) {
    next if (/^%/);
    if (/\\input{(.*)}/) {rec_print($1); next;}
    if (/\\bibliography.*/) {rec_print($bname); next;}
    print;
  }
}

my $fname = shift;
our $bname = $fname; $bname =~ s/tex/bbl/;
rec_print($fname);