2009-03-12 5 views
1

Ich habe ein langes Dokument in LaTex, das Absätze enthält. Die Absätze enthalten Sätze, so dass kein nachfolgender Satz bei einer neuen Zeile beginnt.Nicht möglich, jeden Satz in LaTex durch eine neue Zeile von AWK/Python zu starten

Wie kann jeder nachfolgende Satz in einer neuen Zeile in meiner .tex-Datei beginnen?

Mein Versuch, das Problem

Wir brauchen \ n bis zum Ende des Satzes B in dem Satz B Satz A, bevor es zu setzen.

Wir dürfen \ n nicht in Situationen bringen, in denen die Markierung \ vorhanden ist.

Ich sehe, dass das Problem von AWK und Python gelöst werden kann.

Antwort

2

Was ist falsch mit einem Zeilenumbruch nach jeder Periode? ZB:

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

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

Dr. Jones sein würde, nehme ich an. –

+0

@David: Ich verstehe den Teil "gsub (/ \. + /,". \ N ")" nicht. Können Sie es bitte erklären –

+1

Sub ist eine awk-Funktion, die einen regulären Ausdruck und eine Zeichenfolge akzeptiert und ersetzt Text, der den regulären Ausdruck mit der Zeichenfolge übereinstimmt. Das 'g' in 'gsub' bedeutet "mehr als einmal pro Zeile ersetzen". Der reguläre Ausdruck bedeutet "Übereinstimmung einer literalen Periode gefolgt von einem oder mehreren Leerzeichen". Diese Hilfe? –

2

Sie möchten also, dass jeder Satz in Ihrer .tex-Datei in einer neuen Zeile beginnt, aber ohne zusätzliche Absätze einzufügen? Ist das korrekt?

Möglicherweise könnten Sie Ihre Datei durchlaufen und jedes Mal, wenn Sie ein '.' gefolgt von Leerzeichen und einem Großbuchstaben, fügen Sie einen Zeilenumbruch ein.

z.B. in python:

2

Wenn ich Ihre Frage richtig zu lesen, was Sie brauchen die \newline Befehl ist. Legen Sie es nach jedem Satz. \\ ist eine Abkürzung dafür.

Regulärer Ausdruck, dies zu tun so etwas wie

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

Scheint wie ein Job für sed, wenn Sie es so sagen –

Verwandte Themen