latexをVScode上で動かす。

# latexをvscodeで環境構築
いろいろなサイトを参考にしたが，決定打になる一つのサイトがなく，組み合わせて環境できたのでメモ
環境はwindows11
latexはtex live 2022
参考：
https://www.google.com/search?q=latex+vscode&rlz=1C1QABZ_jaJP899JP899&oq=latex+vscode&aqs=chrome..69i57j0i512l4j69i61l3.2280j0j4&sourceid=chrome&ie=UTF-8
## （そもそも)latexの実行
ptex2pdfを使う場合は，
texファイルをコンパイルしてpdfにしているので，日本語環境では
コマンドプロンプトで
```console
ptex2pdf -l -ot -kanji=utf8 -synctex=1 <texファイル名>
```
で多数のファイルとともにpdfファイルが出てくる。
vscodeで困ったときはコマンドプロンプトで上を実行するとエラーの位置で教えてくれるので，スニペットでメモしておくと便利。
面倒なのは，
- label, refがあるときは複数回の実行
- bibファイルがあるときはpbibtexを一回挟む

## 拡張機能latex workshopをインストール
latex workshopはコンパイルをGUIのボタンで実行できる。
この拡張機能はコマンドプロンプトで本来実行できることをボタンクリックだけでできるようにしてくれるだけ
\+ 数式をリアルタイムで見れる機能(crtl+alt+m)(physics，siunitxなど対応していないパッケージもあり)など
## latex workshopの設定変更
settingsからsettings.jsonを開く。

下のコードを入れる。
```json
  // ---------- Language ---------
    "[latex]": {
      // スニペット補完中にも補完を使えるようにする
      "editor.suggest.snippetsPreventQuickSuggestions": false,
      // インデント幅を2にする
      "editor.tabSize": 2,
  },
    // ---------- LaTeX Workshop ----------
    // 使用パッケージのコマンドや環境の補完を有効にする
    "latex-workshop.intellisense.package.enabled": true,
    "latex-workshop.latex.tools": [
        {
          "command": "ptex2pdf",
          "args": ["-l", "-ot", "-kanji=utf8 -synctex=1", "-interaction=nonstopmode", "%DOC%"],
          "name": "Step 1: ptex2pdf"
        },
        {
          "command": "pbibtex",
          "args": ["%DOCFILE%", "-kanji=utf8"],
          "name": "Step 2: pbibtex"
        },
        {
          "command": "ptex2pdf",
          "args": ["-l", "-ot", "-kanji=utf8 -synctex=1", "-interaction=nonstopmode", "%DOC%"],
          "name": "Step 2: ptex2pdf"
        },
        {
          "command": "ptex2pdf",
          "args": ["-l", "-ot", "-kanji=utf8 -synctex=1", "-interaction=nonstopmode", "%DOC%"],
          "name": "Step 3: ptex2pdf"
        },
        {
          "command": "ptex2pdf",
          "args": ["-l", "-ot", "-kanji=utf8 -synctex=1", "-interaction=nonstopmode", "%DOC%"],
          "name": "Step 4: ptex2pdf"
        }
      ],
      "latex-workshop.latex.recipes": [
        {
          "name": "ptex2pdf",
          "tools": [
            "Step 1: ptex2pdf",
          ]
        },
        {
          "name": "nobib",
          "tools": [
            "Step 1: ptex2pdf",
            "Step 2: ptex2pdf",
          ]
        },
        {
          "name": "bib",
          "tools": [
            "Step 1: ptex2pdf",
            "Step 2: pbibtex",
            "Step 3: ptex2pdf",
            "Step 4: ptex2pdf"
          ]
        },        
      ],
      "latex-workshop.view.pdf.viewer": "tab",
      "latex-workshop.chktex.enabled": true,
      "latex-workshop.latex.autoBuild.run": "never", 
    "latex-workshop.latex.clean.fileTypes": [
        "*.aux",
        "*.bbl",
        "*.blg",
        "*.idx",
        "*.ind",
        "*.lof",
        "*.lot",
        "*.out",
        "*.toc",
        "*.acn",
        "*.acr",
        "*.alg",
        "*.glg",
        "*.glo",
        "*.gls",
        "*.ist",
        "*.fls",
        // "*.log", // 
        "*.fdb_latexmk",
        "*.snm",
        "*.nav",
        "*.dvi",
        // "*.synctex.gz" // synctexを使うならcommentout
    ],
    "latex-workshop.latex.autoClean.run": "onBuilt",
    "latex-workshop.latex.recipe.default": "bib",
    "editor.suggest.snippetsPreventQuickSuggestions": false, // https://qiita.com/t_kemmochi/items/dd38bbf2b823c770d1ec
    "latex-workshop.synctex.afterBuild.enabled": true, // https://qiita.com/t_kemmochi/items/dd38bbf2b823c770d1ec



    "files.associations": {
      "*.py": "python"
    },
    "python.analysis.completeFunctionParens": true,
    "python.autoComplete.extraPaths": [
    
    ],
    "editor.unicodeHighlight.allowedLocales": {
      "zh-hans": true
    },
    "editor.tabCompletion": "on",
    "editor.snippetSuggestions": "top",
    "editor.quickSuggestions": {
    
      "other": "on",
      "comments": "off",
      "strings": "off"
    },
    "workbench.editorAssociations": {
      "*.pdf": "default"
    },
    "editor.minimap.enabled": false,
```

toolsのひとつひとつは，一回の実行，recipesは複数実行をどのように行うかの手法をまとめている。toolsで定義したnamesをrecipesで使用して実行手順をまとめたものを一つrecipeとして格納している。
例えばtoolsに"step1: ptex2pdf"があるので，bibファイルがあるときの実行はbibのボタンを押せば以下の順で実行される。
- Step 1: ptex2pdf
- Step 2: pbibtex
- Step 3: ptex2pdf
- Step 4: ptex2pdf

どのrecipeがctrl+alt+B or texファイル右上の緑の▷で実行できるかは，latex-workshop.latex.recipe.defaultで指定できる。

引用がないときはptex2pdfを何回も実行してもしょうがないのでnobibやptex2pdfをrecipesに追加している。