質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

LaTeX

LaTeXは、レスリー・ランポートが開発したテキストベースの文書整形システムです。 電子製版ソフトウェアである「TeX」にマクロパッケージを組み込む形で構成されており、 通常のTeXより扱いやすくなっているのが特徴です。

TeX

フリーの組版システムで、字や図版などの要素を紙面に配置するという作業をコンピュータで行います

Q&A

1回答

2005閲覧

VScodeのLaTeXで「$」を入力したら「$$」と補完されるようにしたい

neg315

総合スコア12

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

LaTeX

LaTeXは、レスリー・ランポートが開発したテキストベースの文書整形システムです。 電子製版ソフトウェアである「TeX」にマクロパッケージを組み込む形で構成されており、 通常のTeXより扱いやすくなっているのが特徴です。

TeX

フリーの組版システムで、字や図版などの要素を紙面に配置するという作業をコンピュータで行います

0グッド

0クリップ

投稿2022/07/07 10:43

編集2022/07/15 02:06

前提・実現したいこと

VScodeで.texファイルを書いている時、文中に数式を入れる時の$を入力した際、ユーザースニペットを使わず、自動で$$と補完できるようにしたいです。

大抵のエディタは(を入力した時、同時に)で閉じる動作をすると思います。これを$に置き換えた動作を実現したいです。

以前はこの動作が実現できていたのですが、WindowsかVScodeのアップデートの影響なのか原因は不明ですが、この動作ができなくなってしまいました。

発生している問題

参考にした記事
https://code.visualstudio.com/api/language-extensions/language-configuration-guide
https://qiita.com/BlueSilverCat/items/c245bd098396dc2eb656
によると、この動作を実現するためには、VScodeの言語構成ファイルであるlanguage-configuration.jsonというファイルを編集する必要があるそうなので、その中のLaTeX用のC:\Users\xxx\AppData\Local\Programs\Microsoft VS Code\resources\app\extensions\latex\latex-language-configuration.json を以下のように編集しました。
しかし、VScodeのウィンドウをリロードしても設定が適用されず、$$$に補完されません。

latex_language_configuration.json

1"autoClosingPairs": [ 2 省略 3 [ // 追加部分 4 "$", 5 "$" 6 ], 7 [ 8 "{", 9 "}" 10 ], 11 [ 12 "[", 13 "]" 14 ], 15 [ 16 "(", 17 ")" 18 ], 19 [ 20 "`", 21 "'" 22 ] 23 ], 24 "surroundingPairs": [ 25 [ 26 "{", 27 "}" 28 ], 29 [ 30 "[", 31 "]" 32 ], 33 [ 34 "(", 35 ")" 36 ], 37 [ 38 "\"", 39 "\"" 40 ], 41 [ 42 "'", 43 "'" 44 ], 45 [ 46 "`", 47 "'" 48 ], 49 [ // 追加部分 50 "$", 51 "$" 52 ]

また、setting.jsonは以下のように変えました。

setting.json

1// ---------- Language ---------- 2 "[tex]": { 3 // スニペット補完中にも補完を使えるようにする 4 "editor.suggest.snippetsPreventQuickSuggestions": false, 5 // インデント幅を2にする 6 "editor.tabSize": 2, 7 "editor.autoClosingBrackets": "languageDefined", 8 "editor.autoClosingQuotes": "languageDefined", 9 "editor.autoSurround": "languageDefined", 10 }, 11 "[latex]": { 12 // スニペット補完中にも補完を使えるようにする 13 "editor.suggest.snippetsPreventQuickSuggestions": false, 14 // インデント幅を2にする 15 "editor.tabSize": 2, 16 "editor.autoClosingBrackets": "languageDefined", 17 "editor.autoClosingQuotes": "languageDefined", 18 "editor.autoSurround": "languageDefined", 19 }, 20 "[bibtex]": { 21 // インデント幅を2にする 22 "editor.tabSize": 2 23 },

試したこと

autoClosingPairs$の部分を以下のようにopenとcloseにしても補完されませんでした。

{ "open": "$", "close": "$" },

また、回答してくださったujimushi_sradjp様のご提案により、以下のように$\\$に変えてみましたが、それも補完されませんでした。

{ "\\$", "\\$" },

しかし、LaTeXではなく、試しにbatファイルの言語構成ファイルであるC:\Users\xxx\AppData\Local\Programs\Microsoft VS Code\resources\app\extensions\bat\language-configuration.jsonautoClosingPairs部分に$の補完設定を以下のように記述し、.batファイルに$を入力したら、自動で$$に補完することに成功しました。

"autoClosingPairs": [ [ "{", "}" ], [ "[", "]" ], [ "(", ")" ], [ // 追加部分 "$", "$" ], { "open": "\"", "close": "\"", "notIn": [ "string" ] } ],

また、.texファイルの文字を選択し、選択範囲で$を入力したら選択範囲が$で囲まれたので、latex-language-configuration.jsonsurroundingPairsの設定は適用されているのだと考えました。
ですが、試しにlatex-language-configuration.jsonの全文をコメントアウトして保存し、再度ウィンドウをリロードしても選択範囲が$で囲まれたので、そもそもlatex-language-configuration.jsonが適用されておらず、編集するべきファイルではない可能性も出ました。

一体どうすれば$$$に補完できるでしょうか?ご助言を頂きたいです。

以下の記事を参考にしました。
https://code.visualstudio.com/api/language-extensions/language-configuration-guide
https://qiita.com/BlueSilverCat/items/c245bd098396dc2eb656

環境は以下の通りです。

  • Windows11:バージョン21H2(OS ビルド 22000.739)
  • Visual Studio Code:バージョン 1.68.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

https://meshikui.com/2019/01/26/1450/内で言及されているとおり,
"\\$"のように記述すると解決するのではないでしょうか?

設定ファイル内で$は特別な意味があるので\でエスケープしないといけないのですが,https://teratail.com/questions/374274で過去に回答したように,設定ファイル内では\\と記述しないといけないようです。

投稿2022/07/09 09:38

ujimushi_sradjp

総合スコア2091

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

neg315

2022/07/14 12:22 編集

ujimushi_sradjp様、ご回答ありがとうございます。 恐らく回答者様が言及されているのは「ユーザースニペット」のファイルだと思いますが、私が対象としているのはVScodeの言語構成ファイルである「language-configuration.json」ファイルです。質問の内容が不足しており、申し訳ございません。 ユーザースニペットは「prefix」にあたる文字列を入力した時、スニペットの候補が出て、それをEnterキーで押すとスニペットが実行される、という流れだと思いますが、 私がやろうとしているのは「$」を入力したときには既に「$$」と変換されるようにすることです。例えば、「(」を入力した時、大抵は「)」で自動で閉じるようになっていると思います。この動作を「$」に置き換えて実行したいのです。 この方法を以前に試した時は実際に「$」が「$$」となり、成功していました。しかし、バージョンアップの影響か何かわからないですが、いつからかこの変換ができなくなってしまいました。 また、回答者様の通りに、「latex-language-configuration.json」の「$」部分を「\\$」に変更しましたが、適用されませんでした。 また、「latex-language-configuration.json」のファイルが適用されているか確認するために、試しにこのファイルの文字列を全てコメントアウトしてみましたが、ファイルに記述されていた設定は全て使えるようになっていたので、やはり編集するファイルが間違っている可能性もあります。 以下が参考にしたサイトです。 https://code.visualstudio.com/api/language-extensions/language-configuration-guide https://qiita.com/BlueSilverCat/items/c245bd098396dc2eb656
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問