我有下面的一段LaTeX代码,希望删除所有出现的\NEW{“文本跨越多行”}。“文本跨越多行”需要保留,只有“\NEW{”和文件“}”中的某个地方需要删除,新括号内的内容应该保持不变。需要保留制表符、空格和换行符。我已经尝试编写一个python应用程序,但无法生成像样的输出。最困难的部分是你移除括号的地方(可以在下一行)。在
输入:
\chapter{A \NEW{very} small \NEW{chapter}}
\begin{itemize}
\item \NEW{Bla}
\item Dusse
\item Mekker
\end{itemize}
\NEW{This is new
multiline \texttt{text} with some things \TBD{TBD} in between
} The end
输出(预期):
^{2}$在python中使用自己的解决方案:
#!/usr/bin/env python2.7 import sys marker=chr(255) marked=False marked_cnt=0 fin = open("file.tex", "r") fout = open("file.tex.out", "w") for line in fin: l = line.replace("\NEW{", marker) for c in l: if c == marker: marked = True marked_cnt = 0 continue elif c == '{': marked_cnt += 1 elif ((c == '}') and (marked == True)): marked_cnt -= 1 if marked_cnt == -1: marked = False marked_cnt = 0 continue fout.write(c) fin.close() fout.close()
尝试使用正则表达式:
然而,这并不能解决多行问题。要解决这个问题,请直接遍历字符串,然后检查括号的开合:
^{pr2}$相关问题 更多 >
编程相关推荐