やや奇妙な問題にぶつかった...文字列を変えたい:
a\左(b_{d}\右)
の中へ
a \left( b_{d} \right)
Luaスクリプトを使用してSciteで。
そこで、Scite 用の次の Lua スクリプトを作成しました。
function SpaceTexEquations()
editor:BeginUndoAction()
local sel = editor:GetSelText()
local cln3 = string.gsub(sel, "\\left(", " \\left( ")
local cln4 = string.gsub(cln3, "\\right)", " \\right) ")
editor:ReplaceSel(cln4)
editor:EndUndoAction()
end
cln3 行は正常に動作しますが、cln4 は次のようにクラッシュします。
/home/user/sciteLuaFunctions.lua:49: invalid pattern capture
>Lua: error occurred while processing command
これは、括弧文字 () が Lua の予約文字であるためだと思います。しかし、なぜ cln3 行はエスケープせずに機能するのでしょうか? ちなみに私も試しました:
-- using backslash \ as escape char:
local cln4 = string.gsub(cln3, "\\right\)", " \\right) ") -- crashes all the same
-- using percentage sign % as escape chare
local cln4 = string.gsub(cln3, "\\right%)", " \\right) ") -- does not crash, but does not match either
これを行う正しい方法は何ですか?
ありがとう、
乾杯!