gpt4 book ai didi

ruby - 如何仅在某些 LaTeX 命令参数的范围内进行替换?

转载 作者:太空宇宙 更新时间:2023-11-03 17:29:49 24 4
gpt4 key购买 nike

下面的 Latex 写在一行中,但也可能超过几行。

问题是标题命令中的 # 必须转义,所以问题是如何仅在标题中执行此操作?

或者是否存在一个 Perl/Ruby 模块可以在如此复杂的情况下找到结束

\caption{\small{Et elliptisk område i planen er afgrænset af en ellipse som er niveaukurven $\mathcal{K }_{0}(f)$ for andengradspolynomiet $f(x,y) = 2\cdot x^{2} + 2\cdot y^{2} + 2\cdot x\cdot y -8\cdot x -10 \cdot y + 13$. Se opgave \ref{exercEllipseLevel} og eksempel \href{./20-Keglesnit.pdf#evncount.20.1}{ 20.1} i eNote \ref{tn20}.}} \label{figEllipseLevel}

最佳答案

现在您已经添加了 Ruby 标记,这是一个 Ruby 中的强力解决方案。它效率不高,但安全且简单。

x.split('\caption').each_with_index.map { |str, i|
next str if i == 0
indent = 0
end_caption = str.length
str.split('').each_with_index do |c, ci|
if c == '{'
indent = indent + 1
elsif c == '}'
indent = indent - 1
if (indent == 0)
end_caption = ci
break
end
end
end
str[0..(end_caption)].gsub(/([^\\])#/,'\1\\#')+ str[(end_caption+1)..-1]
}.join(‘\caption')

或者如果您正在寻找单线,那么

x.gsub(/\\caption\{((?:[^{}]+|\{\g<1>\})+)\}/m)  { |xx| Regexp.last_match[0].gsub(/([^\\])#/,’\1\\#’) }

所有这些当然都需要您的 Latex 文件可以编译。

对于 Perl,您可以考虑 Text::Balanced

关于ruby - 如何仅在某些 LaTeX 命令参数的范围内进行替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44926686/

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