initial commit
This commit is contained in:
54
.devcontainer/Dockerfile
Normal file
54
.devcontainer/Dockerfile
Normal file
@@ -0,0 +1,54 @@
|
||||
FROM mcr.microsoft.com/devcontainers/base:ubuntu
|
||||
|
||||
# Install dependencies for TeX Live installation and usage
|
||||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||||
perl \
|
||||
biber \
|
||||
wget \
|
||||
fontconfig \
|
||||
make \
|
||||
git \
|
||||
curl \
|
||||
python3 \
|
||||
python3-pygments \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Set non-root user provided by Microsoft base image
|
||||
ARG USERNAME=vscode
|
||||
|
||||
# Switch to user home directory
|
||||
USER $USERNAME
|
||||
WORKDIR /home/$USERNAME
|
||||
|
||||
# Set TeX Live paths and update environment
|
||||
ENV TEXLIVE_INSTALL_PREFIX="/usr/local/texlive"
|
||||
ENV TEXLIVE_INSTALL_TEXDIR="${TEXLIVE_INSTALL_PREFIX}/2025"
|
||||
ENV PATH="${TEXLIVE_INSTALL_TEXDIR}/bin/x86_64-linux:${PATH}"
|
||||
|
||||
# Download and install TeX Live 2025 as root
|
||||
RUN wget -q https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz && \
|
||||
tar -xzf install-tl-unx.tar.gz && \
|
||||
rm install-tl-unx.tar.gz && \
|
||||
cd install-tl-* && \
|
||||
echo "selected_scheme scheme-full" > texlive.profile && \
|
||||
echo "TEXDIR ${TEXLIVE_INSTALL_TEXDIR}" >> texlive.profile && \
|
||||
echo "TEXMFCONFIG /home/vscode/.texlive2025/texmf-config" >> texlive.profile && \
|
||||
echo "TEXMFVAR /home/vscode/.texlive2025/texmf-var" >> texlive.profile && \
|
||||
echo "instopt_adjustpath 1" >> texlive.profile && \
|
||||
echo "tlpdbopt_autobackup 0" >> texlive.profile && \
|
||||
sudo perl ./install-tl --profile=texlive.profile --no-interaction && \
|
||||
cd .. && rm -rf install-tl-*
|
||||
|
||||
# User-writeable directories for TeX Live and LuaLaTeX
|
||||
ENV TEXMFCONFIG="/home/vscode/.texlive2025/texmf-config"
|
||||
ENV TEXMFVAR="/home/vscode/.texlive2025/texmf-var"
|
||||
ENV LUAOTFLOAD_HOME="/home/vscode/.texlive2025/texmf-var/luatex-cache"
|
||||
ENV LUAOTFLOAD_DB="/home/vscode/.texlive2025/texmf-var/luatex-cache/database.sqlite"
|
||||
|
||||
# Install latexmk
|
||||
RUN sudo tlmgr option autobackup 0 && \
|
||||
sudo tlmgr install latexmk && \
|
||||
sudo tlmgr path add
|
||||
|
||||
# Set the working directory back to a neutral location
|
||||
WORKDIR /workspace
|
||||
121
.devcontainer/devcontainer.json
Normal file
121
.devcontainer/devcontainer.json
Normal file
@@ -0,0 +1,121 @@
|
||||
{
|
||||
"name": "LaTeX Dev Container",
|
||||
"build": {
|
||||
"dockerfile": "Dockerfile",
|
||||
"context": ".."
|
||||
},
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"settings": {
|
||||
// VSCode text editor settings
|
||||
"editor.fontSize": 16,
|
||||
"editor.tabSize": 2,
|
||||
"editor.lineHeight": 1.8,
|
||||
"editor.cursorBlinking": "phase",
|
||||
"editor.unicodeHighlight.nonBasicASCII": false,
|
||||
"editor.wordWrap": "on",
|
||||
"editor.wrappingStrategy": "advanced",
|
||||
"editor.wordBasedSuggestions": "off",
|
||||
// "editor.quickSuggestions": {
|
||||
// "other": "on",
|
||||
// "comments": "off",
|
||||
// "strings": "off"
|
||||
// },
|
||||
// "editor.acceptSuggestionOnEnter": "off",
|
||||
// LaTeX Workshop settings
|
||||
"latex-workshop.intellisense.package.enabled": true,
|
||||
"latex-workshop.intellisense.unimathsymbols.enabled": true,
|
||||
"latex-workshop.intellisense.citation.backend": "biblatex",
|
||||
"latex-workshop.latex.outDir": "build",
|
||||
"latex-workshop.latex.autoBuild.run": "onFileChange",
|
||||
"latex-workshop.latex.autoBuild.interval": 3000,
|
||||
"latex-workshop.synctex.afterBuild.enabled": true,
|
||||
"latex-workshop.view.autoFocus.enabled": false,
|
||||
"latex-workshop.view.pdf.reload.transition": "fade",
|
||||
"latex-workshop.view.pdf.viewer": "tab",
|
||||
"latex-workshop.view.pdf.zoom": "auto",
|
||||
"latex-workshop.latex.tools": [
|
||||
{
|
||||
"args": [
|
||||
"-shell-escape",
|
||||
"-synctex=1",
|
||||
"-interaction=nonstopmode",
|
||||
"-file-line-error",
|
||||
"-pdf",
|
||||
"-outdir=%OUTDIR%",
|
||||
"-out2dir=.",
|
||||
"-pdflatex",
|
||||
"-e",
|
||||
"$bibtex='biber %O %S';",
|
||||
"%DOC%"
|
||||
],
|
||||
"command": "latexmk",
|
||||
"name": "latexmk + pdflatex + biber"
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"-shell-escape",
|
||||
"-synctex=1",
|
||||
"-interaction=nonstopmode",
|
||||
"-file-line-error",
|
||||
"-pdf",
|
||||
"-outdir=%OUTDIR%",
|
||||
"-out2dir=.",
|
||||
"-xelatex",
|
||||
"-e",
|
||||
"$bibtex='biber %O %S';",
|
||||
"%DOC%"
|
||||
],
|
||||
"command": "latexmk",
|
||||
"name": "latexmk + xelatex + biber"
|
||||
},
|
||||
{
|
||||
"args": [
|
||||
"-shell-escape",
|
||||
"-synctex=1",
|
||||
"-interaction=nonstopmode",
|
||||
"-file-line-error",
|
||||
"-pdf",
|
||||
"-outdir=%OUTDIR%",
|
||||
"-out2dir=.",
|
||||
"-lualatex",
|
||||
"-e",
|
||||
"$bibtex='biber %O %S';",
|
||||
"%DOC%"
|
||||
],
|
||||
"command": "latexmk",
|
||||
"name": "latexmk + lualatex + biber"
|
||||
}
|
||||
],
|
||||
"latex-workshop.latex.recipes": [
|
||||
{
|
||||
"name": "latexmk + lualatex + biber",
|
||||
"tools": [
|
||||
"latexmk + lualatex + biber"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "latexmk + xelatex + biber",
|
||||
"tools": [
|
||||
"latexmk + xelatex + biber"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "latexmk + pdflatex + biber",
|
||||
"tools": [
|
||||
"latexmk + pdflatex + biber"
|
||||
]
|
||||
}
|
||||
],
|
||||
"latex-workshop.latex.recipe.default": "lastUsed"
|
||||
},
|
||||
"extensions": [
|
||||
"james-yu.latex-workshop",
|
||||
"wayou.vscode-todo-highlight"
|
||||
]
|
||||
}
|
||||
},
|
||||
"remoteUser": "vscode",
|
||||
"updateRemoteUserUID": true,
|
||||
"features": {}
|
||||
}
|
||||
Reference in New Issue
Block a user