2

私はemacsでMathematicaコードを編集しています。ギリシャ文字のMathematicaの平文表現は次のようになります

\[Alpha], \[Beta], \[Gamma], ...

これらを入力してもかまいませんが、結果のコードは大きくて不格好に見えます。例:

k[\[Beta]_,z_]:=z^(\[Beta]/2) Hypergeometric2F1[\[Beta]/2,\[Beta]/2,\[Beta],z];

emacsに特定の文字列(のような\[Alpha])を他の文字列(アルファのUnicode文字のような)として自動的に表示させる方法はありますか?ファイルはMathematicaで正しく読み取れるはずなので、実際に1つの文字列を別の文字列に置き換えたくないことに注意してください(これは、私が正しく理解している場合、省略形が行うことです)。

4

1 に答える 1

5

はい、方法があります。単純なEmacsの解決策は、compose-regionまさにそれを行う関数を使用することです。compose-greek-symbolsこのスニペットは、font-lockがアクティブな場合に、現在のバッファーで要求された略語の置換をアクティブにする関数を定義します。

(setq
 greek-symbols
 (loop
  ;; characters are entered with `ucs-insert'
  ;; 'α' is "GREEK SMALL LETTER ALPHA"
  for ch from ?α to ?ω
  collect (let ((str (get-char-code-property ch 'name)))
        (setq str
          (upcase-initials
           (downcase
            (replace-regexp-in-string "greek small letter " "" str))))
        (cons str ch))))


(defun compose-greek-symbols ()
  (interactive)
  (font-lock-add-keywords
   nil
   '(("\\\\\\[\\([^]]+\\)\\]"
      (0 (progn (let
            ((sym (cdr-safe (assoc (match-string 1) greek-symbols))))
          (when sym
            (compose-region (match-beginning 0)
                    (match-end 0)
                    sym)))))))))

EmacsWikiはさらにいくつかのソリューションを提供します。また、新しいパッケージをインストールする場合は、 pretty-symbols-modeなどのより洗練されたものをいつでも試すことができます。

于 2013-03-21T21:56:28.580 に答える