我认为这个问题在 stack-overflow 和 TeX 论坛上都有相关性和重叠性,但怀疑 TeX 社区可能更适合,所以在这里发布了它。
我的文本/tex 文件需要重新格式化
我一直在写论文,但不幸的是,我养成了将所有段落写在一行上的坏习惯。虽然这不会造成太大的不便,但当涉及到合并或交叉协作时,这简直就是一场噩梦。 我想重新格式化我的 tex 文件,以便每个句子都在新行开始。(受到鼓励这里和这里)。
TeX 覆盖‘文本’
我已经看到了一些关于如何对一些简单的纯文本执行此操作的建议,但考虑到句号.
(或也可能是:
,,,等等)可能出现在数学环境或类似环境中(通常在末尾),我担心一些解析器会引入大量的断点。?
!
解析器已经存在了吗?
我很乐意尝试软件工具(我了解 Python 和 C,但也看到过一些 Java 工具),但我认为专门设计的命令行工具会更理想。我很想尝试sed
或awk
解析,但怀疑有太多极端情况,我不愿意尝试制作自己的解析器。
规则和指南
我认为解析器应该遵循的一些“指南”是(强调关键要求):
- 如果在任何形式的数学模式中,可能什么都不做。(例如
\!
出现几个或类似的,以及广泛使用align
或gather
环境)。 - 如果在里面
lstlisting
,那么肯定什么也不做! - 如果句号前面除了空格、换行符或 之外的其他字符,则
\\
可能不执行任何操作。(例如U.S.A
、2.3kg
、\footnote{Some sentence.}
.Dr.\,Brown
、Downing Jr.
、 等)。 - 如果我已经在新行中添加了下一句,则不要再插入另一句,否则这可能会分裂一个段落或破坏几个数学模式环境。
- 我经常写
something e.g. example
哪里e.g.
(也i.e.
)“通常”不应该换行,而something etc. Something
通常应该换行(并非总是如此,但如果下一个字母是大写字母,那么很有可能)。(我通常也会在括号中列出例子,因此它读作something, something else, etc.).
)。 - 不会取消注释,因此如果某一行读作
% Something is bad. Really bad. To be avoided.
或
A genuine \tex sentence. % This. is. interesting!
,则不能插入注释。(即不会改变输出)。 - 通常,这种行为应该延伸到关闭
.}
、.}}
等模式,但前提是第一个模式}
前面紧接着一个,尽管我怀疑这个要求太多了。(特别是在数学环境中使用(或).?!:
时,字距调整很危险)。...\!}
\:}
注意 - 任何处理工具都不应改变结果的输出(例如,如果使用则为pdf
pdflatex
)。
PS - 我认为我通常使用合理的习惯,例如写作\colon
而不是:
用句号后括号内的句子,写成\ldots
而不是...
等等。
那里已经有什么了?
- 一些用于原始文本的 Python 工具,(https://stackoverflow.com/q/4576077/5134817)。
- 对于 Java 也类似,(https://stackoverflow.com/q/21430447/5134817)。
但正如我所说,我不认为这些是为 TeX/LaTeX 构建的,所以担心它们的性能会很差。
优先
- 设计时考虑了 Tex/LaTeX。
- 具有中等智能,因此可以处理部分/大部分边缘情况。
- 稳定版本。
- 命令行友好。
- 用户友好且“易于”使用。