- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想对一些 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 ”是 str
和 TexNode
的混合。您可以在那里挑选纯弦进行检查,然后自己走树。 children
属性奇怪地只包含 TextNode
元素。
关于python - 使用 python 修改 LaTex 文件中的单词,忽略 LaTeX 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45160896/
有没有办法让某些文本仅在 [draft] 选项处于事件状态时显示。 例如,当草稿选项处于事件状态时,我希望在我的标题和摘要之间出现一些文字:“草稿:未经许可不得引用”或诸如此类。 最佳答案 通常这是用
我有一个小问题,我想将 LaTeX 文档的 svn diff 插入到 另一个 LaTeX 文档,目标是显示自修订版 XXX 以来发生的变化。 但是,由于差异包含大量 LaTeX 命令,我无法将其直接包
如何用它们的定义替换所有出现的用户定义的 latex 宏? 例如,给定这个文件 旧的.tex \newcommand{\blah}[2]{#1 \to #2} ... foo \blah{egg}{s
是否可以在 LaTeX 的一个环境 block 中使用多个命令?我试过类似的东西,但没有用...... \begin{sffamily,emph} I'm sans serif and ita
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 8 年前。 Improve
我想将每个项目彼此更靠近,即减少行距,但我没有找到任何有用的东西。 \begin{itemize} \item Processor: Intel Core \textsuperscr
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我试图在 LaTeX 文档中插入四个数字,但如果我使用 subfigure 命令,我的两个数字保留在第一行,另外两个转到第二行。像这样: 我尝试的另一个解决方案是使用 minipage 命令,但 mi
我将做大量的讲义,然后将它们编译成 LaTeX,这样我就可以拥有出色的文档供将来查看。我正在尝试组织事物,以便我可以拥有一堆包含讲座笔记的小文档,然后在学期结束时将它们编译成包含所有内容的大文档。我过
我有几个引理,其中指定了常量 $C_1$、$C_2$ 等以供以后引用。当然,当我稍后在中间插入一个新的常量定义时,这很烦人。我想要的是一个宏,它可以让我为常量分配标签并为我处理编号。我在想一些事情 %
我想制作一个包含两个目录的 LaTeX 文档,例如: Contents overview 1 - Introduction 2 - Solution Detailed contents 1 - Int
我正在使用 Latex 输入一堆数字 \begin{figure}[h] \centering \subfloat 等等。 如何让 subfloat 数字转到下一页?我的意思是,我输入了大
我在 \documentclass{article}在 latex 。我如何将顾问的名字放在第一页上?我在 latex 中看到过类似 \principaladvisor{} 的例子。但这似乎是通过论文
我目前卡住了,有两个单独的词汇表:main & acronyms . Acronyms词汇表在文本中首次使用时打印脚注,但 main词汇表没有。除了 acronyms 之外,还有什么方法可以制作任何其
如何在 Latex 中定义标签和对自定义环境的相应引用? 例子: \newcounter{fpcounter} \newenvironment{fp}[2] { \stepcounter{fpcoun
我希望doxygen文档生成器根本不生成任何LaTeX文件。 HTML对我来说足够了。是否可以配置doxygen.ini来这样做? 最佳答案 如果使用doxygen.ini是doxygen的配置文件,
我有一个关于 Latex 表的简单对齐问题。在 它看起来如下: \begin{center} \begin{tabular}{| c | l | l | } \hline \tt {
我对 LaTeX 中的定理编号有疑问。我可以按小节编号,例如 Theorem 1.2.1 对于第一节第二小节中的第一个定理。但我需要它给我看 只有小节和定理的编号,而不是节编号,如下所示: Theor
在标题部分中,我引用了文档的各个部分: \section {标题\cite {abc},\cite {def}} 文本 我也在使用目录功能,但是Latex必须首先查看标题(针对目录)中的引文,并为它们
我正在写一个程序(用C语言编写,但我想那不太重要),它与LaTeX中的一些记录 Material 有关。我希望纪录片 Material 包含原始代码中的代码片段。 为了包括源代码并使其保持最新,我在文
我是一名优秀的程序员,十分优秀!