【发布时间】:2010-10-12 19:42:12
【问题描述】:
我在 LaTex 中有一个很长的文档,其中包含段落。段落包含句子,因此没有后续句子从新行开始。
如何使每个后续句子在我的 .tex 文件中从新行开始?
我对这个问题的尝试
我们需要将 \n 放在句子 B 的末尾,其中句子 B 之前有句子 A。
我们不能将\n 放在有\ 标记的情况下。
我看到这个问题可以通过 AWK 和 Python 来解决。
【问题讨论】:
我在 LaTex 中有一个很长的文档,其中包含段落。段落包含句子,因此没有后续句子从新行开始。
如何使每个后续句子在我的 .tex 文件中从新行开始?
我对这个问题的尝试
我们需要将 \n 放在句子 B 的末尾,其中句子 B 之前有句子 A。
我们不能将\n 放在有\ 标记的情况下。
我看到这个问题可以通过 AWK 和 Python 来解决。
【问题讨论】:
所以您希望 .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))
【讨论】:
在每个句点后换行有什么问题?例如:
awk '{ gsub(/\. +/, ".\n"); print }'
$ echo "abc. 123. xyz." | awk '{ gsub(/\. +/, ".\n"); print }'
abc.
123.
xyz.
【讨论】:
如果我正确阅读了您的问题,您需要的是 \newline 命令。放在每句话之后。 \\ 是一个快捷方式。
执行此操作的正则表达式类似于
s/\. ([A-Z])/.\\newline\1/
【讨论】: