Impossibile fare in modo che ogni frase inizi in una nuova riga in LaTex di AWK / Python
Domanda
Ho un lungo documento in LaTex, che contiene paragrafi. I paragrafi contengono frasi tali che nessuna frase successiva inizia in una nuova riga.
Come puoi fare in modo che ogni frase successiva inizi con una nuova riga nel mio file .tex?
Il mio tentativo di risolvere il problema
Dobbiamo mettere \ n alla fine della Frase B dove la Frase B ha la Frase A prima di essa.
Non dobbiamo mettere \ n nelle situazioni in cui è presente il segno \
.
Vedo che il problema può essere risolto da AWK e Python.
Soluzione
Cosa c'è di sbagliato nel mettere una nuova riga dopo ogni periodo? Ad esempio:
awk '{ gsub(/\. +/, ".\n"); print }'
$ echo "abc. 123. xyz." | awk '{ gsub(/\. +/, ".\n"); print }'
abc.
123.
xyz.
Altri suggerimenti
Quindi vuoi che ogni frase nel tuo file .tex inizi su una nuova riga, ma senza introdurre paragrafi extra? È corretto?
Probabilmente potresti consultare il tuo file e, ogni volta che vedi un '.' seguito da spazi bianchi e una lettera maiuscola, inserire una nuova riga.
es. in 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))
Se ho letto correttamente la tua domanda, quello che ti serve è il comando \ newline
. Mettilo dopo ogni frase. \\
è una scorciatoia per questo.
Una regex per fare questo sarebbe qualcosa di simile
s/\. ([A-Z])/.\\newline\1/