備忘録-快適な LaTeX 環境を作りたい
はじめに
大学のレポート用に LaTeX の環境構築をするのが目的です。
先日、 vscode に Cloud LaTeX の拡張機能を入れて環境構築をしたのですが、同期やコンパイルのターゲットの設定などの細かい部分で少し使いにくさを感じたので、 Docker を用いた環境構築をやってみることにしました。
OS は Linux Mint を使用していますが、Docker を使用しているので手順は他のOSと特に変わらないかと思います。
Docker Desktop と vscode は既にインストールしてああったので、それらのインストールについては今回は書きません。
また、今回は自分用の備忘録として書くので細かい手順も省きます。
参考にしたサイト
基本的にはこちらのサイトを参考にして環境を整えました。
GitHub で管理することを前提とした環境構築をする
Cloud LaTeX 拡張機能の良いところは、ローカルのデータが吹き飛んでもクラウド上にデータが残ることです。
大学のレポートや、あるいは論文のようなものを書く時にはそのようなバックアップが取れた方が安心です。
そこで GitHub を利用して管理をすることでローカル環境でも安心して作業できるようにしようと考えました。
手順
1. 必要なソフトのインストール
vscode
Docker Desktop
それぞれセットアップもする。
2. vscode 拡張機能のインストール
vscode の拡張機能の Dev Containers をインストールします。
インストールしたら vscode の再起動をします。
3. GitHub で以下のテンプレートを使用して自分のリポジトリを作成
Use this template から Create a new repository を選択する。
私はレポート管理などが主な目的のため Private リポジトリを作成しました。
作成したリポジトリの URL をコピーしておきましょう
4. vscode で作成したリポジトリを開く
リポジトリの複製から、コピーしたURLを貼り付けて任意の場所にクローンします。
5. フォルダーをコンテナで開き直す
クローンしたフォルダを開いたら、画面左下の青い >< をクリックし、出てきたメニューを選択し、フォルダーをコンテナで開き直す。※フォルダーを開いた時に、vscodeからコンテナで開き直すか聞かれる場合があるので、それで開き直しても大丈夫です。
これで環境構築の手順は終わりです。
LaTeXのビルドやプレビューの表示ができるようになっていれば成功です。
GitHub に自分のリポジトリを作ってからそれをクローンしているので、Git のリモートリポジトリは既に自分のものになっており、そのまま使用することができます。
おまけ スニペット登録すると便利
vscode でスニペット登録をするとテンプレートの入力が一瞬で終わるので文書の作成スピードがとても早くなります。
私はとりあえず以下のように登録しました。
{
"LaTeX Report Template": {
"prefix": "report",
"body": [
"\\documentclass[uplatex,10pt]{jsarticle}",
"",
"\\usepackage[dvipdfmx]{graphicx}",
"\\usepackage{latexsym}",
"\\usepackage{bmpsize}",
"\\usepackage{url}",
"\\usepackage{comment}",
"",
"\\def\\Underline{\\setbox0\\hbox\\bgroup\\let\\\\\\endUnderline}",
"\\def\\endUnderline{\\vphantom{y}\\egroup\\smash{\\underline{\\box0}}\\}",
"",
"\\newcommand{\\ttt}[1]{\\texttt{#1}}",
"",
"\\begin{document}",
"",
"\\title{\\bf{\\LARGE{タイトル} \\\\ \\Large{サブタイトル}}}",
"\\author{氏名}",
"\\date{\\today}",
"\\maketitle",
"",
"\\section{セクション}",
"",
"",
"\\end{document}"
],
"description": "LaTeX report template with jsarticle class."
},
"LaTeX Equation Block": {
"prefix": "math_block",
"body": [
"\\begin{equation}",
"\t$1",
"\\end{equation}"
],
"description": "Insert an equation block."
},
"LaTeX Items": {
"prefix": "items",
"body": [
"\\begin{itemize}",
"\t\\item $1",
"\\end{itemize}"
],
"description": "Insert an itemize list."
},
"LaTeX Numbered Items": {
"prefix": "num_items",
"body": [
"\\begin{enumerate}",
"\t\\item $1",
"\\end{enumerate}"
],
"description": "Insert a numbered list."
},
"LaTeX 2x2 Table": {
"prefix": "2by2",
"body": [
"\\begin{table}[H]",
"\t\\centering",
"\t\\begin{tabular}{|l|l|}",
"\t\t\\hline",
"\t\t$1 & $2 \\\\\\ \\hline",
"\t\t$3 & $4 \\\\\\ \\hline",
"\t\\end{tabular}",
"\t\\caption{$5}",
"\t\\label{tab:$6}",
"\\end{table}"
],
"description": "Insert a 2x2 table."
},
"LaTeX 3x3 Table": {
"prefix": "3by3",
"body": [
"\\begin{table}[H]",
"\t\\centering",
"\t\\begin{tabular}{|l|l|l|}",
"\t\t\\hline",
"\t\t$1 & $2 & $3 \\\\\\ \\hline",
"\t\t$4 & $5 & $6 \\\\\\ \\hline",
"\t\t$7 & $8 & $9 \\\\\\ \\hline",
"\t\\end{tabular}",
"\t\\caption{$10}",
"\t\\label{tab:$11}",
"\\end{table}"
],
"description": "Insert a 3x3 table."
},
"LaTeX 4x4 Table": {
"prefix": "4by4",
"body": [
"\\begin{table}[H]",
"\t\\centering",
"\t\\begin{tabular}{|l|l|l|l|}",
"\t\t\\hline",
"\t\t$1 & $2 & $3 & $4 \\\\\\ \\hline",
"\t\t$5 & $6 & $7 & $8 \\\\\\ \\hline",
"\t\t$9 & $10 & $11 & $12 \\\\\\ \\hline",
"\t\t$13 & $14 & $15 & $16 \\\\\\ \\hline",
"\t\\end{tabular}",
"\t\\caption{$17}",
"\t\\label{tab:$18}",
"\\end{table}"
],
"description": "Insert a 4x4 table."
},
"LaTeX 5x5 Table": {
"prefix": "5by5",
"body": [
"\\begin{table}[H]",
"\t\\centering",
"\t\\begin{tabular}{|l|l|l|l|l|}",
"\t\t\\hline",
"\t\t$1 & $2 & $3 & $4 & $5 \\\\\\ \\hline",
"\t\t$6 & $7 & $8 & $9 & $10 \\\\\\ \\hline",
"\t\t$11 & $12 & $13 & $14 & $15 \\\\\\ \\hline",
"\t\t$16 & $17 & $18 & $19 & $20 \\\\\\ \\hline",
"\t\t$21 & $22 & $23 & $24 & $25 \\\\\\ \\hline",
"\t\\end{tabular}",
"\t\\caption{$26}",
"\t\\label{tab:$27}",
"\\end{table}"
],
"description": "Insert a 5x5 table."
},
"LaTeX 6x6 Table": {
"prefix": "6by6",
"body": [
"\\begin{table}[H]",
"\t\\centering",
"\t\\begin{tabular}{|l|l|l|l|l|l|}",
"\t\t\\hline",
"\t\t$1 & $2 & $3 & $4 & $5 & $6 \\\\\\ \\hline",
"\t\t$7 & $8 & $9 & $10 & $11 & $12 \\\\\\ \\hline",
"\t\t$13 & $14 & $15 & $16 & $17 & $18 \\\\\\ \\hline",
"\t\t$19 & $20 & $21 & $22 & $23 & $24 \\\\\\ \\hline",
"\t\t$25 & $26 & $27 & $28 & $29 & $30 \\\\\\ \\hline",
"\t\t$31 & $32 & $33 & $34 & $35 & $36 \\\\\\ \\hline",
"\t\\end{tabular}",
"\t\\caption{$37}",
"\t\\label{tab:$38}",
"\\end{table}"
],
"description": "Insert a 6x6 table."
},
"Insert Image": {
"prefix": "img",
"body": [
"\\begin{figure}[H]",
"\t\\centering",
"\t\\includegraphics[width=7cm]{$1}",
"\t\\caption{$2}",
"\t\\label{fig:$3}",
"\\end{figure}"
],
"description": "Insert an image from the same directory."
},
"Import PDF": {
"prefix": "pdfimport",
"body": [
"\\begin{figure}[H]",
"\t\\centering",
"\t\\includegraphics[page=$1, width=\\linewidth]{$2}",
"\t\\caption{$3}",
"\t\\label{fig:$4}",
"\\end{figure}"
],
"description": "Import a PDF file from the same directory."
}
}
さいごに
参考にさせていただいた今回の環境構築方法は、これまで何度かやってきたLaTeX環境構築の中でもかなり簡単で使いやすいものでした。
Docker を使用しているおかげで各々の環境の違いに左右されにくいのも素晴らしいです。
リポジトリの製作者のkorosuke613様に深く感謝します。