以下の内容はhttps://ujimushisradjp.hatenablog.jp/entry/2025/12/21/000000より取得しました。


EmacsでのT-Code(2) tc.elのオプション他

はじめに

今回は,tc.elのオプションについて自分が知っている範囲で紹介します。

オプション

tcode-bushu-on-demand

あまり動作には関係しないオプションですが, 部首合成変換の初期化をどのタイミングで行うかを指定する設定です。

(setq tcode-bushu-on-demand 0)

~/.tcファイルの中で,上記のような形で指定します。

0ならtc.elのロード時,1ならCtrl+\で初めてT-Codeモードの入った時, 2なら部首合成変換開始時,もしくは文字のヘルプを初めて見ようとした時でなります。0以外はわりと待たされる(0でも初回は待たされますが…)ので,0にするのがいいでしょうか。初期値(無指定時)は2です。

tcode-shift-lowercase

T-Codeモード時にシフトを入力しながら入力すると,一時的に英文字が直接入力可能なのですが,この時に小文字を入力するかどうかの設定です。

自分はコーディングのコメント入力時に小文字の方が都合がいいので,tにしていることが多いです。

(setq tcode-shift-lowercase t)

のような形で指定します。デフォルトはnilなので,シフトで入力時は大文字です。

tcode-use-postfix-bushu-as-default

部首合成変換を後置式にするかどうかの設定です。nil以外の時は jfで後置式の部首合成変換(KanchokuWSと同じ方法)を行います。 77はその逆の方式となります。

nilの場合は前置式部首合成変換となります。

~/.tcの中で

(setq tcode-use-postfix-bushu-as-default t)

のような形で指定します。デフォルトはnil

tcode-use-prefix-mazegaki

交ぜ書き変換を前置式にするかどうかの設定です。nil以外の時は, fjで前置式の交ぜ書き変換になります。

KanchokuWSの前身,KanchokuWinとよく似た動作となります。

~/.tcの中で

(setq tcode-use-prefix-mazegaki t)

のような形で指定します。デフォルトはnil

tcode-switch-table-list

これについては,少し追加の説明が必要です。T-Codeモード中に32と入力すると,句読点の組み合わせを変更できますが,ここをカスタマイズできます。

私は古い人で,仕事で必要だったので,「,。」を追加しています。

今なら「、。」が普通なんでしょうが。なお,今でも自分が所属する 学会の論文は「,。」が要件ですね…

~/.tcファイルの中で

(defvar tcode-switch-table-list
  '(((tcode-touten . ",")
     (tcode-kuten . "。"))

    ((tcode-touten . "、")
     (tcode-kuten . "。"))

    ((tcode-touten . ", ")
     (tcode-kuten . ". "))

    ((tcode-touten . ",")
     (tcode-kuten . ".")))
  "テーブル中の変数値を切り替えるための表。")

のような形で設定しています。

tcode-ya-outset-map-list

これはある指定のキーとの組み合わせで,t-codeとは別の入力が できるように指定するものです。

デフォルトでは次のように設定されています。 ~/.tcに次のような設定を書くと,`のキーを入力すると, 画面の下にヘルプが表示され,どのキーを押すとどの文字が 表示されるかが分かります。

下の設定の場合,`を二連続で入力すると第二面が, 三連続で入力すると第三面が選択され,その後 T-Codeで利用される40キーのどれかを入力すると, その文字が出力されます。

(defvar tcode-ya-outset-map-list
  '(["¥" "†" "‡" "¶"  "▼"     "《"  "》" "【" "】" "“"

     "★" "◆" "■" "●"  "▲"     "〈"  "〉" "〔" "〕" "〃"
     "☆" "◇" "□" "○"  "△"     "←"  "↓" "↑" "→" "§"
     "※" "‥" "…" "◎"  "▽"     "♪"  "〒" "♂" "♀" "‐"]

    ["∵" "∴" "≪" "≫"  "≡"     "≦"  "≧" "∝" "∽" "⊥"

     "⊇" "⊆" "∃" "∀"  "⇔"     "<"  ">" "≠" "=" "∠"
     "∋" "¬" "∨" "∧"  "⇒"     "+"  "×" "÷" "−" "±"
     "∈" "⊂" "∪" "∩"  "⊃"     "∞"  "≒" "∫" "∬" "⌒"]

    ["■" "Ξ" "Φ" "Ψ"  "■"     "■"  "Υ" "Λ" "■" "■"

     "Γ" "Σ" "Π" "π"  "ψ"     "φ"  "γ" "Δ" "ρ" "λ"
     "α" "ο" "ε" "υ"  "ι"     "δ"  "χ" "τ" "ν" "σ"
     "Θ" "θ" "η" "κ"  "ξ"     "β"  "μ" "ω" "Ω" "ζ"])
  "* 外字のマップのリスト")

(add-hook 'tcode-ready-hook
      (function
       (lambda ()
         (tcode-set-key "`" 'tcode-insert-ya-outset))))

tcode-alnum-1-to-2-table

これは33とかで,英数文字の出力を全角モードに切り替えた時の 全角文字を指定するものです。

自分の場合は,~/.tcに次のような設定をして使っています。

理由は,Emacsの内部コードが独自コードからユニコードに変更された時に, 元々のEUC-JP→ユニコードの変換の際,どう見ても半角の文字が紛れ込んだためです。

(add-hook 'tcode-after-load-table-hook
      (lambda ()
        (when (eq tcode-input-method 'tcode)
          (setq tcode-alnum-1-to-2-table
            (concat " !”#$%&’()*+,-./0123456789:;<=>?"
                "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_"
                "‘abcdefghijklmnopqrstuvwxyz{|}~"))
          )))

全角チルダ問題対策

Linux上のEmacsを利用していますが,についてはWindowsに合わせています。 現在,デフォルトのtc.elは由緒正しいユニコードによる変換なので, Windowsとは文字コードが違います。そのため,次のような設定を書いてお茶を濁しています。

;; utf-8 cp932 文字コード変換の不都合な真実
(add-hook 'tcode-after-load-table-hook
      (lambda ()
        (when (eq tcode-input-method 'tcode)
          ;; FULLWIDTH TILDE
          (tcode-set-action-to-table '(37 36) "~")
          ;; HORIZONTAL BAR          
          ;; (tcode-set-action-to-table '(27 32) "―")
          ;; FULLWIDTH HYPHEN-MINUS
          (tcode-set-action-to-table '(27 32) "-")
          )))

また,(27 32)のところは何にするかは色々意見が分かれるところかと思います。 好みで設定されればと思います。

何が正解かは自分でもよく分かっていないところです。

これも,元々はEUC-JPの変換がWindowsと規格のEUC-JPユニコード変換と違うために 起こった不整合です。

T-Codeのキーが効かなくなる時の対策

T-Codeを利用していると,ある特定のモードで普通の英字キーを利用しているものがあり, それとバッティングすることがあります。

その時の対策として,そのキーに割り付けられている関数名をtcode-input-command-listに追加しておくことで, T-Codeモード中だけ無効にすることができます。

T-Codeモードから抜けると,無効にしている関数も有効になります。

自分の場合は次のように設定しています。

(add-hook 'tcode-ready-hook
      (function
       (lambda ()
                    ; t-codeのキー入力とかぶるものを列挙
         (add-to-list 'tcode-input-command-list 'YaTeX-math-insert-sequence)
         (add-to-list 'tcode-input-command-list 'octave-electric-semi)
         (add-to-list 'tcode-input-command-list 'tcl-electric-char)
         (add-to-list 'tcode-input-command-list 'nxml-electric-slash)
         (add-to-list 'tcode-input-command-list 'ac-clang-async-autocomplete-autotrigger)
         (add-to-list 'tcode-input-command-list 'electric-blockdiag-dot-semi)
         (add-to-list 'tcode-input-command-list 'fortran-electric-line-number)
         (add-to-list 'tcode-input-command-list 'fortran-abbrev-start)
         (add-to-list 'tcode-input-command-list 'c-electric-semi&comma)
         (add-to-list 'tcode-input-command-list 'c-electric-slash)
         (add-to-list 'tcode-input-command-list 'jedi:dot-complete)
         (add-to-list 'tcode-input-command-list 'ess-smart-comma)
         (add-to-list 'tcode-input-command-list '*table--cell-self-insert-command)
         )))

といっても歴史的な履歴といった感じで,現在使う可能性があるといえば, YaTeX-math-insert-sequence*table--cell-self-insert-commandぐらいでしょうか。 c-electric-semi&commaとかc-electric-slashとかはプログラマなら影響のある人もいるかもしれません。

bushu.helpファイル

tc.elEmacsの内部コードがUnicodeに変わった時に,一部動作が変わりました。 そこには部首合成変換の文字の組み合わせが変わったものがあります。

その対策用としてだけではないのですが, 独自の部首合成ルールを書くのにbushu.helpという名前のファイルが用いられます。

前日の記事で,「Tコード用のデータを置くディレクトリ」を設定したかと思います。 Emacsの内部では「tcode-data-directory」として設定されています。

ここのフォルダの直下にbushu.helpというファイルを作成して, 所定のフォーマットで記述しておくと,他のツールに優先して部首合成変換できます。

所定のフォーマットは

[変換後文字][入力1文字目][入力2文字目]

です。

私の場合は,次のような感じの設定をしています。

凹画画
森林木
弧引爪
伏イ大
俺イ電
崩山月
鉛金船
架加木

特に漢直WSとは全然違う組み合わせとなっている文字も多いので,漢直WSに慣れている人は その漢字の組み合わせを設定しておくといいでしょう。ただ,漢直WSが使える環境ならtc.elはいらないと思いますが。

さいごに

今回は,tc.elのオプションについて説明しました。

まぁ誰に対しても需要はないと思います。

ではまた。




以上の内容はhttps://ujimushisradjp.hatenablog.jp/entry/2025/12/21/000000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14