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

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

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

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

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

LaTeX

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

TeX

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

Q&A

解決済

2回答

772閲覧

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

neg315

総合スコア12

Visual Studio Code

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

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

LaTeX

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

TeX

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

0グッド

1クリップ

投稿2022/10/20 04:20

前提・実現したいこと

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": "$" },

また、以下のように$\\$に変えてみましたが、それも補完されませんでした。

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

しかし、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.318)
  • Visual Studio Code:バージョン 1.72.2

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

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

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

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

回答2

0

まず、最初の投稿に記載していた動作環境の情報について不備がありました。

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

これに加え、この記事(https://zenn.dev/minatoneko/articles/b4038eb6524199)を参考にして、WSLのUbuntu上にTeX Live と VScode、LaTeX Workshopを入れ、Windows上のVScodeでリモートでWSLに接続してTeXのコードを書く、という動作環境になっていました。

これにより、ご回答くださったCrimson_Tide様のファイルパスであるC:\Users\username\.vscode\extensions\james-yu.latex-workshop-8.29.0\syntax\data\latex-language-configuration.jsonのUbuntuバージョンである/home/user/.vscode-server/extensions/james-yu.latex-workshop-8.29.0/syntax/latex-language-configuration.jsonのファイルを編集したことで、$の自動補完ができるようになりました。

つまり、Ubuntu上のVScodeのファイルではなく、Windows上のVScodeのファイルを編集していたことにより、$の補完ができない問題が発生していたので、Ubuntuの方を編集することで解決いたしました。

ご回答くださったCrimson_Tide様、ありがとうございました。m(_ _)m

投稿2022/10/31 11:22

neg315

総合スコア12

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

0

ベストアンサー

恐らくlatex関連の拡張機能の設定が優先されているのではないかと思われます。

私の環境でlatex-language-configuration.jsonを検索すると以下3つのファイルが見つかりました。

  1. C:\app\Programs\VSCode\resources\app\extensions\latex\latex-language-configuration.json
  2. C:\Users\username\.vscode\extensions\james-yu.latex-workshop-8.29.0\syntax\data\latex-language-configuration.json
  3. C:\Users\username\.vscode\extensions\james-yu.latex-workshop-8.29.0\syntax\data\latex-language-configuration.json

後者2つはLaTeX Workshopという拡張機能に関するもののようです。
LaTeX Workshopをアンインストールした状態で、1のjsonファイルで "autoClosingPairs":の項に

JSON

1 [ 2 "$", 3 "$" 4 ],

を追加し .texファイルで$を入力すると$$という状態になりました。
この状態でLaTeX Workshopをインストールすると、$を入力しても$$とはならなくなりました。

2.のjsonファイルで上記同様"autoClosingPairs":の項に追加したところ、再度$を入力すると$$という状態になりました。

以上のことから拡張機能LaTeX Workshopの設定が1.のjsonファイルより優先されているように思われます。
質問者さんも同様の状態かは不明ですが、まずはlatex-language-configuration.jsonをPC内で検索してみてはいかがでしょうか。

投稿2022/10/20 06:28

編集2022/10/20 06:38
Crimson_Tide

総合スコア509

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

回答へのコメント

neg315

2022/10/31 10:30

詳細にご回答くださっていたのにも関わらず、返信が遅くなってしまい誠に申し訳ございません。 結論から申し上げますと、回答者様のご助言により、解決いたしました。 まず、動作環境についてですが、TeX Live と Latex Workshop がWSLのUbuntu上に入っており、それをWindows上のVScodeでリモート操作して動かしている、という重要な情報が欠落していました。申し訳ございません。 その動作環境の影響により、回答者様の通りにWindows上のLaTeX Workshop の`latex-language-configuration.json`ファイルを編集しても変化が出ませんでした。 なので、Ubuntu上のLateX Workshop のファイルである`/home/user/.vscode-server/extensions/james-yu.latex-workshop-8.29.0/syntax/latex-language-configuration.json`を同じように編集したところ、`$`を打つと`$$`と自動で補完されるようになりました。 改めて、ご回答ありがとうございました!
Crimson_Tide

2022/10/31 11:44

解決したようで何よりです。 回答が解決の糸口になったのであれば幸いです。 WSLリモート接続時の拡張機能など各種設定がWSL側でもってる、という事を知っている人は多くないでしょうからはまりやすいポイントですね。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.69%

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

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

質問する

同じタグがついた質問を見る

Visual Studio Code

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

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

LaTeX

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

TeX

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