3

Here's a problem I've encountered when I tried make a script in TeXstudio with several replace queries. Suppose I have some text:

Here goes some text, more text and some more text.

And when I apply this macro

%SCRIPT
editor.replace(/\s(text)([\.,\s])/g, '\mbox{\1}\2')

to it, the resulting text is messed up:

Here goes somembox{} morembox{}and some morembox{}

(in a text field it looks like this) Here goes somembox{} morembox{}and some morembox{}

In the meantime everything works fine when the same regexp is called from GUI Replace menu:

Here goes some \mbox{text}, more \mbox{text} and some more \mbox{text}.

The text in UTF-8 encoding. Is that behaviour a bug, or my script lacks something important?

  • maybe you have to mask the \ in the replace pattern as \\ (which would be very uncommon). Or it doesn't use \1 \2 and instead $1 $2 etc. check the manual for the replacement command – musicman Oct 13 '15 at 07:15
  • @musicman The problem is - numbered matches aren't even mentioned in manual:http://texstudio.sourceforge.net/manual/current/usermanual_en.html#SECTION33 . And I've tried $1 (since these are supposed to be js-macros), but it puts '$1' literally both in macro and UI, but \1 does the substitution in UI command. – The_Keeper Oct 13 '15 at 08:39
  • @musicman hm, changing \ to \ seems to work, thanks – The_Keeper Oct 13 '15 at 08:48

1 Answers1

2

The current TeXstudio manual doesn't seem to specify the usage of numbered matches in macros. But thanks to @musicman's suggestion (changing single slash \ to double slash \\) I was able to make the script work:

%SCRIPT
editor.replace(/\s(text)([\.,\s])/g, ' \\mbox{\\1}\\2')

The result is correct now:

Here goes some \mbox{text}, more \mbox{text} and some more \mbox{text}.