Bootstrap: docker From: ubuntu:24.04 %labels Author SciTeX Writer Project Version 1.0.0 Description Complete LaTeX environment for scientific manuscript writing %help SciTeX Writer - Apptainer/Singularity Container Complete LaTeX environment for reproducible manuscript compilation. Usage: apptainer build scitex-writer.sif scitex-writer.def apptainer run scitex-writer.sif ./compile.sh manuscript Or with bind mount: apptainer run --bind $(pwd):/workspace scitex-writer.sif ./compile.sh manuscript %environment export LANG=C.UTF-8 export LC_ALL=C.UTF-8 export PATH=/usr/local/bin:$PATH %post # Prevent interactive prompts export DEBIAN_FRONTEND=noninteractive # Update and install system dependencies apt-get update apt-get install -y --no-install-recommends \ texlive-latex-base \ texlive-latex-extra \ texlive-fonts-recommended \ texlive-fonts-extra \ texlive-science \ texlive-bibtex-extra \ texlive-publishers \ texlive-luatex \ texlive-xetex \ texlive-lang-european \ texlive-lang-english \ latexdiff \ chktex \ ghostscript \ imagemagick \ perl \ parallel \ make \ wget \ curl \ git \ python3 \ python3-pip \ python3-venv # Install yq (Go version) wget -qO /usr/local/bin/yq \ https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 chmod +x /usr/local/bin/yq # Upgrade pip python3 -m pip install --upgrade pip # Install Python packages pip3 install --no-cache-dir \ xlsx2csv>=0.8.0 \ csv2latex>=0.1.0 \ pyyaml>=6.0 # Clean up apt-get clean rm -rf /var/lib/apt/lists/* %runscript # Default: Run bash or execute provided command if [ $# -eq 0 ]; then exec /bin/bash else exec "$@" fi %test # Test that required commands are available command -v pdflatex || exit 1 command -v latexdiff || exit 1 command -v yq || exit 1 command -v python3 || exit 1 echo "All required commands are available" # Test LaTeX pdflatex --version # Test yq yq --version # Test Python packages python3 -c "import yaml; print('PyYAML available')"