gpt4 book ai didi

python - 使用 python 修改 LaTex 文件中的单词,忽略 LaTeX 标记

转载 作者:太空宇宙 更新时间:2023-11-04 00:32:56 25 4
gpt4 key购买 nike

我想对一些 LaTex 文件运行自动“拼写检查器”(除了拼写外,它还会检测某些自定义单词等)。我需要阅读 LaTex 文件,在文档文本中找到某些单词(即忽略单词,如果它们是 LaTeX 标记代码的一部分),然后将每个单词包装在额外的 LaTeX 突出显示标记中,然后将文件写回。例如

\title{My Document}
...
I won the title!

如果我搜索“title”,那么它应该忽略“\title”。

这样一来,在呈现时,修改后的 LaTeX 将使用我添加的高亮显示找到的单词,例如:

\title{My Document}
...
I won the \colorbox{red}{title}!

一个库会很有帮助,因为我最终可能需要额外的解析/控制功能,但现在我只需要简单的修改。

看起来困难的部分是从实际正文中辨别 LaTex 命令、注释等。

谢谢。

最佳答案

您需要一个 Python LaTeX 解析器来执行此操作。这看起来是个不错的候选人https://github.com/alvinwan/TexSoup , 有几个可用的。

像 BeautifulSoup 一样,有搜索功能可以让你找到所有的文本节点,然后你可以使用常规的 python 拆分/搜索功能来找到你拼错的单词,然后用一组新的 latex 节点替换文本节点(用所选单词周围的环绕语法)。

TexSoup 的文档对于如何写回文档有点不清楚,但是查看他们的源代码他们似乎覆盖了 repr 函数,所以:

with open('out.tex','w') as f:
f.write(repr(soup))

应该为你做。

编辑:

如果您查看 descendants 生成器:

>>> [x for x in soup.descendants if isinstance(x, str)]
['\x08egin', '(n.) A sacred fruit. Also known as:', '\x08egin', 'Here is the prevalence of each synonym.', '\x08egin', 'red lemon & uncommon ', 'Hello \textit', '.', 'Watermelon', 'red lemon', 'life', 'itemize', '& common', 'tabular', 'document']

“ child ”是 strTexNode 的混合。您可以在那里挑选纯弦进行检查,然后自己走树。 children 属性奇怪地只包含 TextNode 元素。

关于python - 使用 python 修改 LaTex 文件中的单词,忽略 LaTeX 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45160896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com