下面的 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/