hitode909の日記

趣味はマリンスポーツですの日記です

TeXじゃなくても使える\inputを実装しました

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)とかにする必要がある.