VSCode + LuaLaTeX環境を整える(Windows)

:::note warn
この記事は後輩のために作ったmdを移植したものです
:::

VSCodeが入っているのは前提として話を進める

# インストール


インストーラーをダウンロード + インストーラーを起動してインストール

https://www.tug.org/texlive/acquire-netinstall.html

容量が少ない人は以下の記事を参考してみるといいと思う

https://qiita.com/SuzuTomo2001/items/07c3ba6ff9f29ebf6282



Windowsマークの横の検索欄からcmdと検索してCommand Promptを開いてtexとlualatexがちゃんと入っているか確認

↓確認方法↓
![terminal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/73a9f781-537c-9483-c6cc-41f3620f1cd0.png)


`C:\Users\ユーザー名\`に`.latexmkrc`を作成

![latexmkrc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/9bc9e2d6-7b4b-b6eb-ae66-dfa0f2356d17.png)


`.latexmkrc`を右クリックorダブルクリックしてVSCodeを開いて以下をコピペ

```sh:.latexmkrc
if ($^O eq 'MSWin32') {
  $latex = 'uplatex %O -kanji=utf8 -no-guess-input-enc -synctex=1 -interaction=nonstopmode %S';
  $pdflatex = 'pdflatex %O -synctex=1 -interaction=nonstopmode %S';
  $lualatex = 'lualatex %O -synctex=1 -interaction=nonstopmode %S';
  $xelatex = 'xelatex %O -synctex=1 -interaction=nonstopmode %S';
  $biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B';
  $bibtex = 'upbibtex %O %B';
  $makeindex = 'upmendex %O -o %D %S';
  $dvipdf = 'dvipdfmx %O -o %D %S';
  $dvips = 'dvips %O -z -f %S | convbkmk -u > %D';
  $ps2pdf = 'ps2pdf.exe %O %S %D';
  $pdf_mode = 3;
  if (-f 'C:/Program Files/SumatraPDF/SumatraPDF.exe') {
    $pdf_previewer = '"C:/Program Files/SumatraPDF/SumatraPDF.exe" -reuse-instance';
  } elsif (-f 'C:/Program Files (x86)/SumatraPDF/SumatraPDF.exe') {
    $pdf_previewer = '"C:/Program Files (x86)/SumatraPDF/SumatraPDF.exe" -reuse-instance';
  } else {
    $pdf_previewer = 'texworks';
  }
} else {
  $latex = 'uplatex %O -synctex=1 -interaction=nonstopmode %S';
  $pdflatex = 'pdflatex %O -synctex=1 -interaction=nonstopmode %S';
  $lualatex = 'lualatex %O -synctex=1 -interaction=nonstopmode %S';
  $xelatex = 'xelatex %O -synctex=1 -interaction=nonstopmode %S';
  $biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B';
  $bibtex = 'upbibtex %O %B';
  $makeindex = 'upmendex %O -o %D %S';
  $dvipdf = 'dvipdfmx %O -o %D %S';
  $dvips = 'dvips %O -z -f %S | convbkmk -u > %D';
  $ps2pdf = 'ps2pdf %O %S %D';
  $pdf_mode = 3;
  if ($^O eq 'darwin') {
    $pvc_view_file_via_temporary = 0;
    $pdf_previewer = 'open -ga /Applications/Skim.app';
  } else {
    $pdf_previewer = 'xdg-open';
  }
}
```

拡張機能(LaTeX Workshop)をインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/1f07adf1-9b0b-ff6c-e2a8-eb641dc90387.png)


VSCode上で`Ctrl + Shift + P`で`setting`を検索して設定を開く

(`: 設定`と末尾についていればなんでもいい)

![settings.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/5d4d69cb-f604-2e35-a47e-f7bc0d6796d9.png)



右上の黄色で囲っているアイコンをクリック

![settingjson.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/635df61f-3fc6-4c88-4d91-7852125cd968.png)


`setting.json`が開くので末尾に以下をコピペ

```json:setting.json
{
// なんかいろいろ書いてある
...,

// ここから

    // ---------- Language ----------

    "[tex]": {
        // スニペット補完中にも補完を使えるようにする
        "editor.suggest.snippetsPreventQuickSuggestions": false,
        // インデント幅を2にする
        "editor.tabSize": 2
    },

    "[latex]": {
        // スニペット補完中にも補完を使えるようにする
        "editor.suggest.snippetsPreventQuickSuggestions": false,
        // インデント幅を2にする
        "editor.tabSize": 2
    },

    "[bibtex]": {
        // インデント幅を2にする
        "editor.tabSize": 2
    },


    // ---------- LaTeX Workshop ----------



    // 生成ファイルを "out" ディレクトリに吐き出す
    "latex-workshop.latex.outDir": "out",

    // ビルドのレシピ レシピとツール内にこれらの内容を追記する。
    "latex-workshop.latex.recipes": [
            {
                "name": "Paper(ja)",
                "tools": [
                    "lualatex(ja)"
                ]
            },
        ],
        "latex-workshop.latex.tools": [
            {
                "name": "lualatex(ja)",
                "command": "lualatex",
                "args": [
                    "-synctex=1",
                    "-halt-on-error",
                    "-interaction=nonstopmode",
                    "-file-line-error",
                    "-output-directory=%OUTDIR%",
                    "%DOC_EXT%"
                ],
                "env": {}
            },
            {
                "name": "pbibtex(ja)",
                "command": "pbibtex",
                "args": [
                    "-kanji=utf8",
                    "%OUTDIR%/%DOCFILE%"
                ]
            },
        ],

// ここまでをコピペ
}
```

# テスト


`/ドキュメント`等にテスト用のフォルダを作っておく

VSCodeで左上のファイル→フォルダーを開く→テスト用フォルダを選択(※例ではtest_latex(※フォルダ名に日本語を用いない方が望ましい))

![test_latex.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/6fc7b356-928e-1f3e-3512-7967de5bff3d.png)

`test.tex`と`./assets/`フォルダを作る(上にある+ボタンをクリック)

![make_file.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/43d0b62b-12ea-e1c0-40b7-fbf2fa2ea3c3.png)


`test.tex`に以下をコピペ

```tex:test.tex
\documentclass[11pt]{article}

% フォントと言語の設定
\usepackage{luatexja} % 日本語を扱うためのパッケージ
\usepackage{fontspec} % フォントを扱うためのパッケージ
\usepackage[colorlinks=true, allcolors=blue]{hyperref}
\usepackage{mathtools,amsmath,amsthm,amssymb}
\usepackage{comment}
\usepackage{comment}
\usepackage{ulem}
\usepackage{cite} %cite拡張
\usepackage{latexsym} %記号追加
\usepackage{enumerate}	%列挙用
\usepackage{setspace} %余白制御
\usepackage{multirow}
\usepackage{luatexja-preset}
\usepackage{listings, jvlisting}
\usepackage{subcaption}
\usepackage{siunitx}
\usepackage{float}
\usepackage{tikz}

\usetikzlibrary{shapes, arrows}

% 数学関連のパッケージ
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

% グラフィックス関連のパッケージ
\usepackage{svg}
\usepackage[]{graphicx}

% ページレイアウトの調整（必要に応じて変更してください）
\usepackage[top=10truemm,bottom=25truemm,left=25truemm,right=25truemm]{geometry}

% \geometry{
%     a4paper,
%     margin=25truemm
% }

% タイトル日付が邪魔だったら\date{}でいい
\title{タイトル}
\author{著者名}
\date{\today}


\begin{document}
\maketitle

\section{新しいアプローチの提案}

このセクションでは、私たちは新しいアプローチを提案します。我々の方法論は、データの分析と予測能力を高めるための革新的な手法を採用しています。具体的には、機械学習アルゴリズムを組み合わせたデータ処理パイプラインを構築し、リアルタイムでのデータ解析を可能にすることを目指しています。

\subsection{提案手法}

提案手法の主な特徴は以下のとおりです：
\begin{itemize}
    \item データの前処理と特徴エンジニアリングにおける新しいアプローチの導入
    \item 深層学習モデルとアンサンブル学習の組み合わせによる高精度な予測
    \item ストリーミングデータに対するリアルタイムでの処理と分析能力の向上
\end{itemize}

我々の提案手法は、従来の手法と比較して明確な利点をもたらすことが期待されます。実験結果から、提案手法は高い精度と効率性を示し、実世界のデータ解析タスクにおいて有望なアプローチであることが示されています。

% 画像の挿入
\begin{figure}[htbp]
    \centering
    \includegraphics[width=0.5\textwidth]{assets/graph.png} % 画像ファイル名を指定してください
    \caption{データのグラフ}
    \label{fig:graph}
\end{figure}

\section{実験と評価}

ここでは、我々の提案手法の有効性を検証するために行った実験とその評価について議論します。具体的には、様々なデータセットとメトリクスを用いて提案手法を評価し、その性能を従来の手法と比較しました。実験結果から、提案手法が高い精度と効率性を示すことが確認されました。

\end{document}
```

また、`assets`フォルダに以下の画像を入れてください

![graph.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/35b12ea9-6cb9-d083-4a84-0a1852b45601.png)


`Ctrl + S`で保存 or 黄緑の▷アイコンをクリックしたら`./out/`にpdfが吐き出される

成功したら黄色で囲ったアイコンをクリックすると右側にプレビューが出てくるはず

![preview.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/b6fbbf7f-f62f-0a6b-0859-48c01cca3838.png)


↓予想状態↓

![out.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501465/250f0317-b82d-2194-ba29-003d07cc5897.png)


また,様々な形式のテンプレートはOverleaf等に公開されているので調べてみるとよい

https://ja.overleaf.com/latex/templates/tagged/lualatex