首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Latex中查找和替换来自相同环境/命令的文本

在Latex中查找和替换来自相同环境/命令的文本
EN

Stack Overflow用户
提问于 2022-09-02 20:46:54
回答 2查看 28关注 0票数 0

我正在使用背叶编写Latex,我希望轻松地从Latex文件的相同环境中找到和替换特定的文本。

示例文本,

代码语言:javascript
运行
复制
abc xyz \a{} mno

\begin{equation}
   \a{}=a+c
   \a{}=c+b
\end{equation}

klm mno
\begin{equation}
   x=\a{}\times\b{}
\end{equation}
xyz mno \a{} abc

我只想在方程中将\a{}替换为其他文本xyz

我要短信,

代码语言:javascript
运行
复制
abc xyz \a{} mno

\begin{equation}
   xyz=a+c
   xyz=c+b
\end{equation}

klm mno
\begin{equation}
   x=xyz\times\b{}
\end{equation}
xyz mno \a{} abc

我试了很多次,用我的一点点判读知识来匹配课文。这些方法正确吗?

代码语言:javascript
运行
复制
/(?:\b(?:\\begin\{equation\})="|\G(?!\\end\{equation\}))[^}]*\K(\\a\{\})/g

和,

代码语言:javascript
运行
复制
/(?<=\\begin\{equation\})[\s\S]*\\a\{\}[\s\S]*(?=\\end\{equation\})/gs
EN

回答 2

Stack Overflow用户

发布于 2022-09-02 21:20:11

不需要实际替换宏,只需让latex在方程中重新定义宏:

代码语言:javascript
运行
复制
\documentclass{article}

\def\a{a}

\AtBeginEnvironment{equation}{\def\a{xyz}}

\begin{document}

abc xyz \a{} mno

\begin{equation}
   \a{}=a+c
   \a{}=c+b
\end{equation}

klm mno
\begin{equation}
   x=\a{}\times b
\end{equation}
xyz mno \a{} abc


\end{document}
票数 1
EN

Stack Overflow用户

发布于 2022-09-02 21:31:20

您可以在/s修饰符中使用这样的模式,使模式中的点匹配任何字符,包括换行符。

代码语言:javascript
运行
复制
(?:\\begin\{equation\}|\G(?!^))(?:(?!\\a{}|\\(?:begin|end){equation}).)*\K\\a{}

解释

  • (?:非捕获群
    • \\begin\{equation\}匹配\begin{equation}
    • |
    • \G(?!^)断言上一场比赛结束时的位置

  • )关闭非捕获组
  • (?:非捕获组作为一个整体进行匹配
    • (?!\\a{}|\\(?:begin|end){equation})负前瞻,断言当前位置右侧的不是\a{}begin{equation}end{equation}
    • .匹配任何字符,包括带有/s标志的换行符。

  • )*关闭非捕获组并可选择地重复它
  • \K忘记了到目前为止匹配的
  • \\a{}匹配\a{}

在替换中使用xyz

看一个regex演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73587809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档