用于插入内联数学模式的 TeXworks 脚本

用于插入内联数学模式的 TeXworks 脚本

我一直在尝试设置一个 TeXworks 脚本,该脚本会在所选内容周围添加内联数学模式符号“$”。例如,如果选择“\omega”并执行脚本,结果将是“$\omega$”。

我毫无顾忌地以 TeXworks 中构建的两个脚本为基础。可以在“脚本/Latex 样式”下找到它们。使用 Mac OS X 10.10.5 下的文本编辑器,我编写了以下脚本。最后一行是调用将两个“$”添加到所选文本的函数。

按照 TeXworks 手册,我将其存储在正确的脚本目录中,并让 TeXworks 重新读取脚本列表。瞧,我的脚本出现在菜单中,并带有正确的按键组合。但是,唉,什么也没发生。TeXworks 识别键盘上的按键组合,但不会对选定的文本执行任何操作。

任何建议都将不胜感激。谢谢。

// TeXworksScript
// Title: Toggle Math Mode
// Shortcut: Ctrl+Shift+M
// Description: Encloses the current selection in $$
(...)
// Script-Type: standalone
// Context: TeXDocument

function addOrRemove(prefix, suffix) {

  var txt = TW.target.selection;

  var len = txt.length;

  var wrapped = prefix + txt + suffix;

  var pos = TW.target.selectionStart;

  if (pos >= prefix.length) {

    TW.target.selectRange(pos - prefix.length, wrapped.length);

    if (TW.target.selection == wrapped) {

      TW.target.insertText(txt);

      TW.target.selectRange(pos - prefix.length, len);

      return;

    }

    TW.target.selectRange(pos, len);

  }

  TW.target.insertText(wrapped);

  TW.target.selectRange(pos + prefix.length, len);

  return;

};

addOrRemove(“$”, “$”);

答案1

您的脚本有两个错误:

  1. (...)必须删除标题中的 或用注释掉//
  2. 函数调用中的引号是 ,但它们应该是"

因此这个脚本可以工作:

// TeXworksScript
// Title: Toggle Math Mode
// Shortcut: Ctrl+Shift+M
// Description: Encloses the current selection in $$
// (...)
// Script-Type: standalone
// Context: TeXDocument

function addOrRemove(prefix, suffix) {
  var txt = TW.target.selection;
  var len = txt.length;
  var wrapped = prefix + txt + suffix;
  var pos = TW.target.selectionStart;
  if (pos >= prefix.length) {
    TW.target.selectRange(pos - prefix.length, wrapped.length);
    if (TW.target.selection == wrapped) {
      TW.target.insertText(txt);
      TW.target.selectRange(pos - prefix.length, len);
      return;
    }
    TW.target.selectRange(pos, len);
  }
  TW.target.insertText(wrapped);
  TW.target.selectRange(pos + prefix.length, len);
  return;
};

addOrRemove("$", "$");

相关内容