This thesis project uses Quarto to create a multi-format academic document with advanced features including task management, cross-referencing, and interactive visualizations.
This document describes the full, reproducible setup process to ensure the same Python/R environment is available across:
- Terminal
- RStudio (via
reticulate) - VS Code
- Quarto CLI / Notebooks
curl -L https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-MacOSX-arm64.sh -o mambaforge.sh
bash mambaforge.shFollow the on-screen prompts. Once finished, restart your terminal and ensure:
conda --version
mamba --versionmamba create -n quarto-env -y \
python=3.11 \
jupyter \
ipykernel \
pyyaml \
numpy \
pandas \
matplotlib
# Optional R support (recommended for RStudio + reticulate)
mamba install -n quarto-env -y \
r-base \
r-irkernel \
r-reticulatesource ~/mambaforge/bin/activate
conda activate quarto-envAppend to ~/.zshrc (done automatically by script):
export QUARTO_PYTHON="/Users/<your-user>/mambaforge/envs/quarto-env/bin/python"
alias update-quarto-env='conda activate quarto-env && mamba update --all'Then:
source ~/.zshrcreticulate::use_condaenv("quarto-env", required = TRUE)conda env export --name quarto-env > environment.ymlproject/
├── .Rproj # Optional for RStudio users
├── README.md # Include this documentation
├── environment.yml # Exported conda environment
├── notebooks/ # Python notebooks (e.g. .ipynb)
├── analysis.qmd # Main Quarto document
├── figures/
└── data/
conda activate quarto-env # Enter environment
conda deactivate # Exit environment
update-quarto-env # Auto-updates packages (alias)- Do not use
basefor development - This setup is optimized for Apple Silicon (M1/M2/M3)
- For Quarto CLI: no extra config is needed if
QUARTO_PYTHONis set
SWITCH BETWEEN BOOK AND MAUSCRIPT QUARTO BY (UN-)COMMENTING THE RESPECTIVE SECTION IN THE _quarto.yml file
thesis/ ├── _quarto.yml # Main configuration ├── index.qmd # Main thesis document ├── chapters/ # Chapter files │ ├── 1.Introduction.qmd │ ├── 2.Context.qmd │ └── ... ├── ref/ # References │ └── MAref.bib ├── images/ # Figures and graphics ├── AMTAIR_Prototype/ # Code and notebooks └── latex/ # LaTeX customizations
- HTML comments with
[ ]for tasks visible in ToDo-Tree - Categories: FIND, VERIFY, CREATE, TODO
- Progress tracking with
[x](done) and[-](verified)
- HTML: Interactive web version with navigation
- PDF: Professional academic document
- LaTeX: Source for further customization
- DOCX: For collaboration
- Sections:
@sec-section-name - Figures:
@fig-figure-name - Tables:
@tbl-table-name - Citations:
@citation-key
- Interactive Jupyter notebooks
- Mermaid diagrams
- Math equations (LaTeX)
- Callout blocks
- Extensive footnotes
- Glossary and abbreviations
bash
# HTML output
quarto render --to html
# PDF output
quarto render --to pdf
# All formats
quarto rendermarkdown
<!-- [ ] TODO: Task description -->
<!-- [ ] FIND: @missing-citation: "Description" -->
<!-- [ ] VERIFY: @suggested-citation: "Source" -->
<!-- [ ] CREATE: {#fig-name}: "Figure description" -->json
{
"todo-tree.tree.showScanModeButton": false,
"todo-tree.highlights.customHighlight": {
"TODO": {
"icon": "check",
"type": "text",
"foreground": "#000000",
"background": "#ffcc00"
},
"FIND": {
"icon": "search",
"foreground": "#ffffff",
"background": "#ff6b6b"
},
"VERIFY": {
"icon": "verified",
"foreground": "#ffffff",
"background": "#4ecdc4"
},
"CREATE": {
"icon": "add",
"foreground": "#ffffff",
"background": "#45b7d1"
},
"WRITE": {
"icon": "pencil",
"foreground": "#ffffff",
"background": "#96ceb4"
},
"FIX": {
"icon": "wrench",
"foreground": "#ffffff",
"background": "#fa8231"
}
},
"todo-tree.general.tags": [
"TODO",
"FIND",
"VERIFY",
"CREATE",
"WRITE",
"EXPAND",
"REVISE",
"REVIEW",
"FIX",
"TEST",
"OPTIMIZE",
"IMPLEMENT",
"UPDATE",
"IMPROVE",
"URGENT",
"HIGH",
"MEDIUM",
"LOW"
]
}json
{
"Todo Task": {
"prefix": "todo",
"body": [
"<!-- [ ] TODO: ${1:description} -->"
]
},
"Find Citation": {
"prefix": "findcite",
"body": [
"<!-- [ ] FIND: @${1:key}: \"${2:description}\" -->"
]
},
"Create Figure": {
"prefix": "createfig",
"body": [
"<!-- [ ] CREATE: {#fig-${1:name}}: \"${2:description}\" -->"
]
}
}- Create/edit
.qmdfiles in chapters/ - Update
_quarto.ymlif adding new chapters - Add citations to
ref/MAref.bib - Place images in
images/
- Use American spelling throughout
- Follow heading hierarchy (##, ###, ####)
- Maintain consistent citation style
- Use semantic line breaks
- Create tasks as you write
- Update task status regularly
- Use categories for clarity
- Include implementation details
- Commit frequently with descriptive messages
- Use branches for major revisions
- Tag releases (draft versions)
- Comment complex code blocks
- Provide alt text for all figures
- Keep this README updated
- Document any custom scripts
- LaTeX errors: Check
_quarto.ymlfor LaTeX settings - Missing references: Ensure citations are in
MAref.bib - Broken links: Use relative paths for internal links
- Task visibility: Install ToDo-Tree extension in VS Code
- Quarto documentation: https://quarto.org
- Project repository: https://github.com/VJMeyer/submission
- Contact: [email protected]
MIT License - See LICENSE file for details