라텍스를 유니 코드 심볼로 교체


3

종종 대화 나 이메일 또는 포럼에서 수학을 입력하고 싶지만 완전한 방정식 지원이 필요하지 않습니다. 유니 코드 기호로 충분합니다.

내가 필요한 것은 수학 관련 유니 코드 기호를 입력하는 쉬운 방법입니다. 이미 라텍스를 알고 있으므로 라텍스 기호 니모닉을 사용하여 수학 기호를 입력하는 것이 좋습니다.

내가 지금 한 것은 "hotstrings"AutoHotKey 기능을 사용하여 \ latexSymbol을 해당 유니 코드 기호로 자동 대체하는 AutoHotKey 스크립트를 작성하는 것입니다. 그러나 AutoHotKey 핫 스트링은 많은 문자열에서 불안정한 것으로 판명되었습니다. 수십 줄이 있으면 AHK가 때때로 문자열을 인식하지 못할 수 있습니다.

다른 해결책? (아니요, Alt + 유니 코드 번호는 충분하지 않습니다)

첨부 된 것은 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

북마크릿이 효과가 있었습니까?
카스퍼

아직 시도하지 않았습니다.
Elazar Leibovich

답변:


3

math.stackexchange.com에서 유니 코드 기호를 입력하기 위해 자바 스크립트 북마크를 사용합니다. Mathjax는 대부분의 유니 코드를 해당 라텍스 매크로와 동일하게 렌더링합니다. 예를 들어 $ℝ$$\mathbb{R}$같은 결과를 제공한다. 나는 tex 코드가 유니 코드 기호로보다 간결하고 읽을 수있는 방식을 좋아합니다.

이 코드가 원하는 것을 할 수 있다고 생각합니다. 키 스트로크를 너무 많이 사용하지 않고을 생성하는 대신 \alpha사용 \a합니다 α. http://jasonmillerdesign.com/Free_Stuff/Instant_Bookmarklet_Converter와 같이이 웹 사이트를 사용하여이 스크립트를 원하는대로 수정 한 다음 북마크릿으로 변환 할 수 있습니다.

jquery없이 웹 사이트에서이 스크립트를 사용하려면 먼저이 책갈피를 실행해야합니다. http://www.learningjquery.com/2006/12/jquerify-bookmarklet/

jQuery.fn.autocorrect = function(options)
{
    if ("text" != jQuery(this).attr("type") && !jQuery(this).is("textarea"))
    {
        return;
    }
var defaults = {
        corrections: {
            a: "α",
            b: "β",
            c: "γ",
            d: "δ",
            e: "ϵ",
            emp : "∅",
            f: "\\frac{}{}",
            in : "∈",
            s: "σ",
            t: "\\text{}",
            tau : "τ",
            th : "θ",
            p: "π",
            pm : "±",
            o : "ω",
            O : "Ω",
            r : "ρ",
            A : "∀",
            E : "∃",
            R: "ℝ",
            C: "ℂ",
            H: "ℍ",
            N: "ℕ",
            Q: "ℚ",
            Z: "ℤ",
            int: "\\int_{}^{}",
            inf : "∞",
            sum : "\\sum_{}^{}",
            "-1": "^{-1}",
            ph: "ϕ",
            ch: "χ",
            ps: "ψ",
            leq : "≥",
            xi : "ξ", 
            geq : "≤",
            "/=" : "≠",
            "==" : "≡",
            "<" : "\\langle {} \\rangle",
            "->" : "→",
            "=>" : "⇒",
            "<=" : "⇐",
            "<>" : "⇔",
            "sq" : "\\sqrt{}"
    }
};
if (options && options.corrections)
{
    options.corrections = jQuery.extend(defaults.corrections, options.corrections);
}
var opts = jQuery.extend(defaults, options);
getCaretPosition = function(oField)
{
    var iCaretPos = 0;
    if (document.selection)
    {
        var oSel = document.selection.createRange();
        oSel.moveStart("character", 0 - oField.value.length);
        iCaretPos = oSel.text.length;
    }
    else if (oField.selectionStart || oField.selectionStart == "0")
    {
        iCaretPos = oField.selectionStart;
    }
    return (iCaretPos);
}
function setCaretPosition (oField, iCaretPos)
{
    if (document.selection)
    {
        var oSel = document.selection.createRange();
        oSel.moveStart("character", 0 - oField.value.length);
        oSel.moveStart("character", iCaretPos);
        oSel.moveEnd("character", 0);
    }
    else if (oField.selectionStart || oField.selectionStart == "0")
    {
        oField.selectionStart = iCaretPos;
        oField.selectionEnd = iCaretPos;
    }
}
this.keyup(function(e)
{
    if (32 != e.keyCode)
    {
        return;
    }
    var caretPosition = (getCaretPosition(this) - 1);
    if (1 > caretPosition)
    {
        return;
    }
    var valueOfField = this.value;
    var stringUptoCaretPosition = (valueOfField).substr(0, caretPosition);
    if (" " == stringUptoCaretPosition.charAt(caretPosition - 1))
    {
        return;
    }
    var beginIndex = stringUptoCaretPosition.lastIndexOf('\\');
    if (beginIndex < stringUptoCaretPosition.lastIndexOf(' '))
    {
        return;
    }
    var stringToSearch = stringUptoCaretPosition.substring(beginIndex+1);
    var stringNotToSearch = stringUptoCaretPosition.substring(0, beginIndex);
    if (!opts.corrections[stringToSearch])
    {
        return;
    }
    var stringToReplace = opts.corrections[stringToSearch];
    stringUptoCaretPosition = stringNotToSearch+ stringToReplace;
    var stringFromCaretPositionUptoEnd = (valueOfField).substr(caretPosition+1);
    this.value = (stringUptoCaretPosition + stringFromCaretPositionUptoEnd);
    if (stringToReplace.indexOf("{}")!=-1 )
    {
    setCaretPosition(this, stringUptoCaretPosition.indexOf("{}")+1);
    }
    else { setCaretPosition(this, stringUptoCaretPosition.length);}

});
};
$(document).ready(function()
{
    $("textarea").autocorrect();
});

0

필요한 경우 Word에 수학을 입력하고 복사 / 붙여 넣기하는 경향이 있습니다. Word는 LaTeX가 기본적으로 사용하는 것과 동일한 매크로를 사용하고 적절한 유니 코드로 자동 변환합니다. 그리고 LaTeX 마크 업보다 선형 형식이 더 읽기 쉽습니다.

그래도 메일 수신자가 일부 벙어리 터미널에서 읽거나 적절한 글꼴 지원을하지 않으면 (XP에서) 아마도 말하고 싶은 것을 이해할 수 있도록 유니 코드 대신 원시 LaTeX를 입력하고 싶을 것입니다.


1
먼저, 유스 케이스를 명시 적으로 언급했습니다. 온라인 인터넷 포럼 / 채팅. 오늘날 UTF-8을 지원하지 않는 제정신 웹 서비스는 없습니다. 더 모호한 기호를 사용하지 못할 수도 있지만 일반적인 유니 코드 글꼴을 사용하는 일반 컴퓨터에는 사용할 수있는 것보다 훨씬 많은 기능이 있습니다. xterm이 그에 대처할 수 있어야하지만 터미널을 지원할 의사는 없습니다. Word 정보 : (1) Office07, 기타 수학 지원 절름발이에서만 작동합니다. (2)이 컨텍스트 전환을 피하려고합니다. 채팅 세션은 어떻습니까? Alt-tab + Ctrl-C + Ctrl-v가 충분하지 않습니다.
Elazar Leibovich

0

MSKLC 를 사용하여 수학 중심의 키보드 레이아웃을 만들 수 있습니다 . 예를 들어 eurokb 는 AltGr 데드 키 조합에서 ≡≤ ≠ ± ∔π∜와 같은 기호를 포함합니다. (eurokb는 아마도 수학적으로 무겁지 않지만 아이디어가 될 수 있습니다.)


유일한 단점은 니모닉이 전혀 없다는 것입니다. 수십 개의 키보드 조합을 외워야합니다. BTW Eurokb 맵의 키보드 매핑에 대한 시뮬레이션을 배포뿐만 아니라 웹 사이트에 포함시켜야한다고 생각합니다. 테스트에 유용합니다.
Elazar Leibovich

(나는 : 영국이나 미국의 문서 링크를 누르고 맨 위에 있습니다.) 그래, 레이아웃을 정렬하고 기억하는 논리적 인 방법을 생각해 내야하지만, 플레이 할 수있는 많은 위도가 있습니다. 잠재적으로 이동 또는 대체 된 두 개의 키 조합을 사용할 수있는 경우. eurokb와 마찬가지로 그리스어 표준 키보드 레이아웃 ( en.wikipedia.org/wiki/Keyboard_layout#Greek )에 따라 이미 가지고있는 그리스어 문자 입니다. 그런 다음 기능별로 그룹화 할 수 있습니다 (예 : 설정 기능에 대한 AltGr + S; AltGr + S, =는 ∈, AltGr + S, /는 ∉ 등입니다.
bobince

0

중국어와 같은 비 라틴 문자가 포함 된 언어의 문자를 입력하기 위해 소프트웨어 패키지를 사용하고 싶습니다. 예를 들어, Sogou 병음 은 문자열을 다른 문자열의 유니 코드 문자로 정의 할 수 있습니다. 그런 다음 타이핑 할 때 빠르게 중국어로 전환하고 글을 쓰고 제안 목록에서 alpha선택한 α다음 자동으로 원래 입력 언어로 다시 전환합니다. 정말 편리합니다!



-2

짧은 LaTeX 프래그먼트를 입력하고 http://www.numberempire.com/texequationeditor/equationeditor.php 에 잘라 붙여넣고 "Render"를 누르라고 지시 하십시오 . 예:

\begin{align*}
R_s &\;=\; \frac{\widehat{\sigma}_s}{K} \left(\sqrt{1 - \sum^{15}_{k=1} \beta_k^2} \right) G_s
\quad.
\\
& \text{Parlez-vous Fran{\c c}ais? Czy mo\.zna u\.zy\'c tego?}
\\
& \mathbb{Z}_2 \oplus \mathbb{Z}_3 \cdots \oplus \mathbb{Z}_p,  
\end{align*}

2
-1. "필요한 것은 수학 관련 유니 코드 기호를 입력하는 쉬운 방법입니다." 라텍스를 온라인으로 이미지로 렌더링하는 방법을 알려 주셨습니다. 당신의 말이 어떻게 도움이되는지 모르겠습니다. 결과를 어디에나 붙여 넣을 수 없습니다.
Elazar Leibovich

나는 방정식을보기 위해 LaTeX를 "자르고 붙여 넣으라고 말해야한다"고 말했다.
Peon

정말 부담입니다. 10 개의 작은 방정식을 포함 시키면 어떻게됩니까? 친구와 채팅을하고 스마트 폰을 통해 읽고 있다면 어떻게해야합니까?
Elazar Leibovich

이것이 당신을 그렇게 방해한다면, 유니 코드 니모닉을 문자로 변환하는 앱을 작성하지 않는 이유는 무엇입니까? 스마트 폰 (Android, PalmOS 또는 WebOS) 용으로 작성하고 Windows 및 Mac에도 포팅하십시오. 기존의 모든 앱과도 통합하십시오. 물론 당신이 그것에 대해 진지하게 생각한다면. 그렇지 않으면 그에게 라텍스를 읽는 법을 배울 수 있습니다. 기호가 너무 제한적이기 때문에 HTML을 이해하는 앱을 사용하여 유니 코드 이스케이프 시퀀스를 유니 코드 문자로 렌더링 할 수 있습니다.
Peon

유니 코드의 좋은 점은 스마트 폰용 앱을 작성할 필요가 없다는 것입니다. 나는 유니 코드 기호를 입력 할 수 있으며, 내 편에서 아무런 노력없이 스마트 폰에 멋지게 나타날 것입니다. Windows 용 앱으로 충분합니다 (실제로 답변에 쓴 것과 비슷합니다).
Elazar Leibovich
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.