2011-07-29 40 views
0

我有一個使用pandoc構建到epub文件的latex項目。我正在使用\ input {FILE}命令將章節保存在單獨的latex文件中。不幸的是,pandoc不理解\ input命令,所以我的章節永遠不會被插入。在文本文件中查找行並將其替換爲現有文本文件的內容

我需要運行一個腳本或東西來處理我的main.tex文件發現,看起來像

\input{ch1.tex} 
\input{ch2.tex} 
... 

,並在每行的線路,它與該文件中的內容替換它,然後刪除原來的\ input命令,然後將結果輸入到臨時文件或將結果直接傳遞給要構建的pandoc命令。

該項目分別在WinXP和Debian上使用MikTex和TexLive構建。在Linux上運行的解決方案是首選。

回答

2

如果你有GAWK:

gawk ' 
    match($0, /\\input\{([^\}]+)/, a) { 
     system("cat " a[1]) 
     next 
    } 
    {print} 
' 
1

使用Perl:

$ cat file1.txt 
foo 
bar 
qwe\input{file2.txt}asd\input{file3.txt}zxc 
baz 
$ cat file2.txt 
qux 
quux 
quuux 
$ cat file3.txt 
xyzzy 
xyzzzy 

$ <file1.txt perl -pe 's/\\input{([^}]*)}/open $1,"<$1";join("",<$1>)/ge' 
foo 
bar 
qwequx 
quux 
quuux 
asdxyzzy 
xyzzzy 
zxc 
baz 
+0

我得到的錯誤: 沒有足夠的論據,在開放-e 1號線,近 「開」 – Scribblemacher

相關問題