2009-03-12 13 views
1

LaTexには段落を含む長い文書があります。段落には、後続のセンテンスが改行されないような文章が含まれています。LaTexの新しい行で各文をAWK/Pythonで始めることができません

後続する各文を、自分の.texファイルの新しい行からどのように始めることができますか?問題

から

私の試みは、私たちは文章Bは、その前に文Aを持つ文Bの最後に\ nを配置する必要があります。

マークが\である状況に\ nを置いてはいけません。

AWKとPythonで問題が解決できることがわかりました。

答えて

2

各期間の後に改行を置くと何が問題になりますか?例:

awk '{ gsub(/\. +/, ".\n"); print }' 

$ echo "abc. 123. xyz." | awk '{ gsub(/\. +/, ".\n"); print }' 
abc. 
123. 
xyz. 
+0

ジョーンズ博士のようなものになるだろう、私は推測します。 –

+0

@David: "gsub(/ \。+ /、"。\ n ")"という部分は分かりません。それを説明してください。 –

+1

subは、正規表現と文字列を受け入れ、正規表現に一致するテキストを文字列に置き換えるawk関数です。 「gsub」の「g」は「1行に複数回置き換える」ことを意味します。正規表現とは、「1つ以上の空白が続くリテラルピリオドと一致します」を意味します。それは助けますか? –

2

したがって、.texファイル内のすべてのセンテンスを新しい行で始めることができますが、追加の段落を追加する必要はありませんか?あれは正しいですか?

おそらくファイルを調べて、「。」が表示されている可能性があります。空白と大文字の後に改行を挿入します。

Pythonで:

import re 
sentence_end = r'\.\s+([A-Z])' 

source = open('myfile.tex') 
dest = open('myfile-out.tex', 'w') 
for line in source: 
    dest.write(re.sub(sentence_end, '.\n\g<1>', line)) 
2

質問を正しく読んだ場合は、\newlineコマンドが必要です。それぞれの文の後に置く。 \\はこのためのショートカットです。これを行うには

正規表現は

s/\. ([A-Z])/.\\newline\1/ 
+0

sedの仕事のように思えます –

関連する問題