No se puede hacer que cada oración comience en una nueva línea en LaTex por AWK / Python

StackOverflow https://stackoverflow.com/questions/636887

  •  10-07-2019
  •  | 
  •  

Pregunta

Tengo un documento largo en LaTex, que contiene párrafos. Los párrafos contienen oraciones para que ninguna oración posterior comience en una nueva línea.

¿Cómo puede hacer que cada oración posterior comience en una nueva línea en mi archivo .tex?

Mi intento de resolver el problema

Necesitamos poner \ n al final de la Oración B, donde la Oración B tiene la Oración A antes.

No debemos poner \ n en las situaciones donde hay la marca \ .

Veo que AWK y Python pueden resolver el problema.

¿Fue útil?

Solución

¿Qué tiene de malo poner una nueva línea después de cada período? Por ejemplo:

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

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

Otros consejos

¿Entonces quiere que cada oración en su archivo .tex comience en una nueva línea, pero sin introducir párrafos adicionales? ¿Es eso correcto?

Posiblemente podría revisar su archivo y, cada vez que vea un '.' seguido de espacios en blanco y mayúscula, inserte una nueva línea.

p. en 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))

Si leo su pregunta correctamente, lo que necesita es el comando \ newline . Ponlo después de cada oración. \\ es un acceso directo para esto.

Una expresión regular para hacer esto sería algo así como

s/\.  ([A-Z])/.\\newline\1/
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top