TeXで長文を書くとき、\inputを使うと,ファイルを適切に分割できて便利なのだけど,TeXじゃなくても\inputしたかったので,ワンライナーを書いた.
ruby -e 'puts ARGF.read.gsub(/^\\input\{\s*(\S*)\s*\}$/){ File.open($1).read }'
使い方はTeXと同じで,本文中に
\input{ 挿入したいファイル名 }
した後に,
ruby -e 'puts ARGF.read.gsub(/^\\input\{\s*(\S*)\s*\}$/){ File.open($1).read }' 本文.txt
とかすると,挿入したファイルが展開された状態で標準出力されるので,リダイレクション等でファイルに保存できる.
このままでは\inputした先のファイルで\inputしても展開されないが.再帰的に\inputするには,ワンライナーではなくて,例えば,inputcatとかいうコマンドにしておいて,File.open($1).readではなくて,system("inputcat", $1)とかにする必要がある.