我可以在 LyX 数学模式中更改空格键行为吗?

我可以在 LyX 数学模式中更改空格键行为吗?

在 LyX 数学模式下输入方程式时,按下空格键有时会退出方程式。这很烦人,因为我经常会不小心按到它。有时我打字很快,然后立即按下退格键,这会删除整个方程式。

我的问题是:

  1. 有没有办法在 LyX 2.2.1 中禁用此空格键行为?
  2. 有没有办法用退格键删除公式中的最后一个符号/元素,而不是全部的方程?

我查看了“首选项”,但没有找到相关选项。也许有一个内部解决方案……?

编辑:看起来有人尝试过类似的事情: http://www.math.ucdenver.edu/~hartkes/computer/lyx/lyx.php。不幸的是,我对此有些困惑。

编辑:交叉发布于http://latex-community.org/forum/viewtopic.php?f=19&t=28474

答案1

LyX 无法实现您想要的功能,因此我们需要编辑源代码并重新编译。这里有一个补丁,可让空间不退出数学:

diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp
index 3460cdc..9c102dc 100644
--- a/src/mathed/InsetMathNest.cpp
+++ b/src/mathed/InsetMathNest.cpp
@@ -921,14 +921,8 @@ void InsetMathNest::doDispatch(Cursor & cur, FuncRequest & cmd)
        // spacial handling of space. If we insert an inset
        // via macro mode, we want to put the cursor inside it
        // if relevant. Think typing "\frac<space>".
-       if (cmd.argument()[0] == ' '
-           && cur.inMacroMode() && cur.macroName() != "\\"
-           && cur.macroModeClose() && cur.pos() > 0) {
-           MathAtom const atom = cur.prevAtom();
-           if (atom->asNestInset() && atom->isActive()) {
-               cur.posBackward();
-               cur.pushBackward(*cur.nextInset());
-           }
+       if (cmd.argument()[0] == ' ') {
+           // do nothing
        } else if (!interpretChar(cur, cmd.argument()[0])) {
            cmd = FuncRequest(LFUN_FINISHED_FORWARD);
            cur.undispatched();

如果您使用的是 Ubuntu(或其他 Linux),编译 LyX 很容易,我可以为您提供帮助。如果您使用的是 Windows 或 Mac,也可以,但要复杂得多。

免责声明:此补丁可能会破坏某些内容,但它在有限的测试中对我有用。

相关内容