如何用 Unicode 符号替换 LaTeX 命令?

Ela*_*ich 5 windows typing autohotkey unicode

通常,在对话、电子邮件或论坛中,我想输入一些数学公式,但我不需要完整的方程支持。Unicode 符号应该足够了。

我需要的是一种简单的方法来输入与数学相关的 Unicode 符号。由于我已经了解 LaTeX,因此使用 LaTeX 符号助记符来键入数学符号是有意义的。

我目前所做的是编写一个 AutoHotkey 脚本,\使用 AutoHotkey 功能自动将 后面的 LaTeX 符号名称替换为相应的 Unicode 符号hotstring。然而,事实证明 AutoHotkey 热字符串对于许多字符串来说不稳定。有几十行会导致 AHK 有时无法识别字符串。

还有其他解决方案吗?(不,Alt+(Unicode number)不够方便。)

附件是我的 AHK 脚本。该PutUni函数取自此处

::\infty::
PutUni("e2889e")
return
::\sum::
PutUni("e28891")
return
::\int::
PutUni("e288ab")
return
::\pm::
PutUni("c2b1")
return
::\alpha::
PutUni("c991")
return
::\beta::
PutUni("c992")
return
::\phi::
PutUni("c9b8")
return
::\delta::
PutUni("ceb4")
return
::\pi::
PutUni("cf80")
return
::\omega::
PutUni("cf89")
return
::\in::
PutUni("e28888")
return
::\notin::
PutUni("e28889")
return
::\iff::
PutUni("e28794")
return
::\leq::
PutUni("e289a4")
return
::\geq::
PutUni("e289a5")
return
::\sqrt::
PutUni("e2889a")
return
::\neq::
PutUni("e289a0")
return
::\subset::
PutUni("e28a82")
return
::\nsubset::
PutUni("e28a84")
return
::\nsubseteq::
PutUni("e28a88")
return
::\subseteq::
PutUni("e28a86")
return
::\prod::
PutUni("e2888f")
return
::\N::
PutUni("e28495")
return
Run Code Online (Sandbox Code Playgroud)

Kas*_*per 4

我使用 JavaScript 书签在 math.stackexchange.com 上输入 unicode 符号。Mathjax 呈现大多数 unicode 与相应的 Latex 宏相同。例如$\xe2\x84\x9d$$\\mathbb{R}$给出相同的结果。我喜欢 tex 代码与 unicode 符号保持更紧凑和可读的方式。

\n\n

我认为这段代码能够实现你想要的功能。我不喜欢使用太多的击键,所以\\alpha我不使用\\a来生成\xce\xb1. 您可以根据自己的需要修改此脚本,然后将其转换为小书签,例如使用此网站:http://jasonmillerdesign.com/Free_Stuff/Instant_Bookmarklet_Converter

\n\n

如果您想在没有 jquery 的网站上使用此脚本,那么您首先需要运行此书签: http: //www.learningjquery.com/2006/12/jquerify-bookmarklet/

\n\n
jQuery.fn.autocorrect = function(options)\n{\n    if ("text" != jQuery(this).attr("type") && !jQuery(this).is("textarea"))\n    {\n        return;\n    }\nvar defaults = {\n        corrections: {\n            a: "\xce\xb1",\n            b: "\xce\xb2",\n            c: "\xce\xb3",\n            d: "\xce\xb4",\n            e: "\xcf\xb5",\n            emp : "\xe2\x88\x85",\n            f: "\\\\frac{}{}",\n            in : "\xe2\x88\x88",\n            s: "\xcf\x83",\n            t: "\\\\text{}",\n            tau : "\xcf\x84",\n            th : "\xce\xb8",\n            p: "\xcf\x80",\n            pm : "\xc2\xb1",\n            o : "\xcf\x89",\n            O : "\xce\xa9",\n            r : "\xcf\x81",\n            A : "\xe2\x88\x80",\n            E : "\xe2\x88\x83",\n            R: "\xe2\x84\x9d",\n            C: "\xe2\x84\x82",\n            H: "\xe2\x84\x8d",\n            N: "\xe2\x84\x95",\n            Q: "\xe2\x84\x9a",\n            Z: "\xe2\x84\xa4",\n            int: "\\\\int_{}^{}",\n            inf : "\xe2\x88\x9e",\n            sum : "\\\\sum_{}^{}",\n            "-1": "^{-1}",\n            ph: "\xcf\x95",\n            ch: "\xcf\x87",\n            ps: "\xcf\x88",\n            leq : "\xe2\x89\xa5",\n            xi : "\xce\xbe", \n            geq : "\xe2\x89\xa4",\n            "/=" : "\xe2\x89\xa0",\n            "==" : "\xe2\x89\xa1",\n            "<" : "\\\\langle {} \\\\rangle",\n            "->" : "\xe2\x86\x92",\n            "=>" : "\xe2\x87\x92",\n            "<=" : "\xe2\x87\x90",\n            "<>" : "\xe2\x87\x94",\n            "sq" : "\\\\sqrt{}"\n    }\n};\nif (options && options.corrections)\n{\n    options.corrections = jQuery.extend(defaults.corrections, options.corrections);\n}\nvar opts = jQuery.extend(defaults, options);\ngetCaretPosition = function(oField)\n{\n    var iCaretPos = 0;\n    if (document.selection)\n    {\n        var oSel = document.selection.createRange();\n        oSel.moveStart("character", 0 - oField.value.length);\n        iCaretPos = oSel.text.length;\n    }\n    else if (oField.selectionStart || oField.selectionStart == "0")\n    {\n        iCaretPos = oField.selectionStart;\n    }\n    return (iCaretPos);\n}\nfunction setCaretPosition (oField, iCaretPos)\n{\n    if (document.selection)\n    {\n        var oSel = document.selection.createRange();\n        oSel.moveStart("character", 0 - oField.value.length);\n        oSel.moveStart("character", iCaretPos);\n        oSel.moveEnd("character", 0);\n    }\n    else if (oField.selectionStart || oField.selectionStart == "0")\n    {\n        oField.selectionStart = iCaretPos;\n        oField.selectionEnd = iCaretPos;\n    }\n}\nthis.keyup(function(e)\n{\n    if (32 != e.keyCode)\n    {\n        return;\n    }\n    var caretPosition = (getCaretPosition(this) - 1);\n    if (1 > caretPosition)\n    {\n        return;\n    }\n    var valueOfField = this.value;\n    var stringUptoCaretPosition = (valueOfField).substr(0, caretPosition);\n    if (" " == stringUptoCaretPosition.charAt(caretPosition - 1))\n    {\n        return;\n    }\n    var beginIndex = stringUptoCaretPosition.lastIndexOf(\'\\\\\');\n    if (beginIndex < stringUptoCaretPosition.lastIndexOf(\' \'))\n    {\n        return;\n    }\n    var stringToSearch = stringUptoCaretPosition.substring(beginIndex+1);\n    var stringNotToSearch = stringUptoCaretPosition.substring(0, beginIndex);\n    if (!opts.corrections[stringToSearch])\n    {\n        return;\n    }\n    var stringToReplace = opts.corrections[stringToSearch];\n    stringUptoCaretPosition = stringNotToSearch+ stringToReplace;\n    var stringFromCaretPositionUptoEnd = (valueOfField).substr(caretPosition+1);\n    this.value = (stringUptoCaretPosition + stringFromCaretPositionUptoEnd);\n    if (stringToReplace.indexOf("{}")!=-1 )\n    {\n    setCaretPosition(this, stringUptoCaretPosition.indexOf("{}")+1);\n    }\n    else { setCaretPosition(this, stringUptoCaretPosition.length);}\n\n});\n};\n$(document).ready(function()\n{\n    $("textarea").autocorrect();\n});\n
Run Code Online (Sandbox Code Playgroud)\n