diff --git a/.filenameignore b/.filenameignore new file mode 100644 index 0000000..6f89b7f --- /dev/null +++ b/.filenameignore @@ -0,0 +1,24 @@ +# Paths to ignore for filename/path validation checks. +# Patterns use fnmatch syntax and are relative to repo root. + +_site/** +.quarto/** +.github/** +_extensions/ + +# Common documentation files to ignore +LICENSE-CODE.md +LICENSE.md +LICENSE +README.md +README +README-template.md +CITATION.cff +CITATION-template.cff +_quarto.yml +404.qmd + +# exceptions +assets/ +hallgren-2013 +ihle-2020 \ No newline at end of file diff --git a/.github/workflows/README.md b/.github/workflows/README.md new file mode 100644 index 0000000..f659f84 --- /dev/null +++ b/.github/workflows/README.md @@ -0,0 +1,76 @@ +# Workflows (GitHub Actions) + +This document explains the GitHub Actions workflows in `.github/workflows/` in beginner-to-intermediate friendly language: what each workflow does, how it is triggered, and what is essential to keep working. + +## Quick summary + +- Location: `.github/workflows/` +- How to run: workflows run automatically on `push` to `main`, on a schedule, or manually via the **Actions** tab → "Run workflow" (if `workflow_dispatch` is enabled). + +--- + +## Individual workflows + +### citation-check.yml — Validate `CITATION.cff` + +- Purpose: Validate the project's `CITATION.cff` so metadata (authors, ORCID, affiliations) is well-formed and machine-readable. +- Triggers: `push` to `main` when `CITATION.cff` changes, and manual runs (`workflow_dispatch`). +- What it does: checks out the repo and runs `dieghernan/cff-validator@v3`. +- Essentials to keep: the `Checkout` step and the validator step. No extra secrets are required. +- Tips: safe to update the validator action version; don't remove checkout. + +### filename-check.yml — Enforce filename rules + +- Purpose: Ensure file and path names meet limits (length, depth, allowed extensions) to prevent publishing problems. +- Triggers: `push` to `main`, `pull_request`, and manual runs. +- What it does: uses `NeuroShepherd/check-filenames-action@v1` with inputs such as `max-path-length`, `max-depth`, and allowed `file-types`. It may respect a `.filenameignore` file when present. +- Essentials to keep: the check-filenames action and its configuration inputs. +- Tips: adjust `max-path-length`/`max-depth` or add `.filenameignore` entries if legitimate files are flagged. + +### publish.yaml — Render and publish the Quarto site + +- Purpose: Build the Quarto site and publish the rendered site to the `gh-pages` branch. +- Triggers: `push` to `main`, weekly schedule (cron), and manual runs. +- What it does (high-level): checks out code, installs Quarto, installs system and R dependencies as needed, renders the site, and publishes to `gh-pages` using `quarto-actions/publish@v2`. +- Essentials to keep: + - `quarto-dev/quarto-actions/setup@v2` (Quarto install) + - the render and publish step (`quarto-actions/publish@v2`) + - repository permission for `contents: write` to allow publishing +- Notes: + - If you use R, the workflow detects `renv.lock` and restores packages; include `renv.lock` for reproducible builds. + - The workflow installs system libraries via `apt` (image handling, PDF, and some R packages require these). Remove packages only if you understand the consequences. +- Common edits: change schedule timing or branch triggers. Removing the publish step disables automatic deployment. + +### style.yaml — Format R/QMD code using `styler` + +- Purpose: Automatically format R and Quarto/R Markdown code using `styler::style_dir()` and optionally commit formatted code. +- Triggers: currently manual (`workflow_dispatch`) — push triggers are commented out. +- What it does: installs R and `styler`, runs `styler::style_dir()`, and if files were reformatted the workflow commits and pushes changes using `GITHUB_TOKEN`. +- Essentials to keep: the style run and cache steps; the commit step is optional depending on whether you want automatic changes. +- Tips: to avoid unexpected commits, run manually or restrict to PR checks instead of auto-committing. + +--- + +## Quick guidance — what to change vs what to leave alone + +- Safe to change: + - Schedules and branch triggers + - Input limits for checks (e.g., filename length, allowed file types) + - Action versions (bump to newer versions) +- Be careful editing: + - The `publish` workflow's render/publish steps — removing them will stop site builds and deployment. + - System dependency installation (`apt` lines) used by rendering and some R packages. + - The auto-commit logic in `style.yaml` if you don't want automatic pushes. That is this workflow only runs on `workflow_dispatch` meaning it currently can only be manually triggered in Actions. + +## How to run workflows manually + +- In GitHub: Open the repository → **Actions** tab → choose a workflow → click **Run workflow** (if available). +- Locally: To test Quarto rendering locally, use `quarto preview` or `quarto render` in your project directory. + +## Where to look for failures + +- Open the **Actions** tab in GitHub, select the workflow run, and inspect step logs to see errors and stack traces. + +--- + + diff --git a/.github/workflows/citation-check.yml b/.github/workflows/citation-check.yml new file mode 100644 index 0000000..db7b4eb --- /dev/null +++ b/.github/workflows/citation-check.yml @@ -0,0 +1,21 @@ +on: + workflow_dispatch: + push: + branches: [main] + paths: + - CITATION.cff + +name: Check CITATION.cff is Valid +jobs: + Validate-CITATION-cff: + runs-on: ubuntu-latest + name: Validate CITATION.cff + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Validate CITATION.cff + uses: dieghernan/cff-validator@v3 diff --git a/.github/workflows/filename-check.yml b/.github/workflows/filename-check.yml new file mode 100644 index 0000000..7fc2971 --- /dev/null +++ b/.github/workflows/filename-check.yml @@ -0,0 +1,22 @@ +name: Filename Checks + +on: + workflow_dispatch: + pull_request: + push: + branches: + - main + +jobs: + check-names: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Check filenames + uses: NeuroShepherd/check-filenames-action@v1 + with: + max-path-length: "65" + max-depth: "2" + file-types: "html,md,qmd,css,scss,rmd,pdf,png,jpg,svg,yml" + ignore-file: ".filenameignore" + dotfile-mode: "strip-leading-dot" \ No newline at end of file diff --git a/.github/workflows/link-checker.yml b/.github/workflows/link-checker.yml new file mode 100644 index 0000000..7fa9f73 --- /dev/null +++ b/.github/workflows/link-checker.yml @@ -0,0 +1,44 @@ +name: Link Checker + +on: + schedule: + - cron: '0 0 1 * *' + workflow_dispatch: + +jobs: + check-links: + runs-on: ubuntu-latest + permissions: + issues: write + steps: + - name: Check links + id: check + uses: filiph/linkcheck@master + continue-on-error: true + with: + arguments: https://${{ github.repository_owner }}.github.io/${{ github.event.repository.name }}/ + + - name: Create issue on broken links + if: steps.check.outputs.exit_code != '0' + uses: actions/github-script@v7 + with: + script: | + const fs = require('fs'); + const report = fs.readFileSync('log', 'utf8'); + + const { data: issues } = await github.rest.issues.listForRepo({ + owner: context.repo.owner, + repo: context.repo.repo, + state: 'open', + labels: 'link-checker' + }); + + if (issues.length === 0) { + await github.rest.issues.create({ + owner: context.repo.owner, + repo: context.repo.repo, + title: '🔗 Broken Links Found on Site', + body: `The monthly link checker detected broken links.\n\n${report}`, + labels: ['link-checker'] + }); + } \ No newline at end of file diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 120b8aa..a1937d4 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -1,12 +1,14 @@ on: workflow_dispatch: + schedule: + - cron: "0 23 * * 0" push: - branches: main + branches: [main] -name: Quarto Publish +name: Render Quarto Site jobs: - build-deploy: + quarto-publish: runs-on: ubuntu-latest permissions: contents: write @@ -16,16 +18,85 @@ jobs: - name: Set up Quarto uses: quarto-dev/quarto-actions/setup@v2 + with: + tinytex: true + + - name: Install system dependencies + run: | + sudo apt-get update + sudo apt install -y \ + libcurl4-openssl-dev \ + libfontconfig1-dev \ + libssl-dev \ + libxml2-dev \ + libpng-dev \ + libjpeg-dev \ + libtiff-dev \ + libcairo2-dev \ + libxt-dev \ + libfreetype6-dev \ + libharfbuzz-dev \ + libfribidi-dev \ + zlib1g-dev \ + libv8-dev \ + libglpk-dev \ + librsvg2-bin - - name: Install R + - name: Install R with renv uses: r-lib/actions/setup-r@v2 with: - r-version: '4.4.0' + r-version: renv + if: ${{ hashFiles('renv.lock') != '' }} - - name: Install R Dependencies + - name: Install R Dependencies with renv uses: r-lib/actions/setup-renv@v2 with: cache-version: 1 + if: ${{ hashFiles('renv.lock') != '' }} + + - name: Install R latest + uses: r-lib/actions/setup-r@v2 + if: ${{ hashFiles('renv.lock') == '' }} + + - name: Set R library path (no lockfile) + run: echo "R_LIBS_USER=$HOME/.local/lib/R/site-library" >> "$GITHUB_ENV" + if: ${{ hashFiles('renv.lock') == '' }} + + - name: Cache R library (no lockfile) + uses: actions/cache@v4 + with: + path: ~/.local/lib/R/site-library + key: ${{ runner.os }}-r-nolock-${{ hashFiles('**/*.R', '**/*.Rmd', '**/*.qmd', '_quarto.yml') }} + restore-keys: | + ${{ runner.os }}-r-nolock- + if: ${{ hashFiles('renv.lock') == '' }} + + - name: Install R latest dependencies + run: | + lib <- Sys.getenv("R_LIBS_USER") + if (nzchar(lib)) { + dir.create(lib, recursive = TRUE, showWarnings = FALSE) + .libPaths(c(lib, .libPaths())) + } + install.packages("renv") + install.packages("rmarkdown") + install.packages("yaml") + deps <- unique(stats::na.omit(renv::dependencies()$Package)) + if (length(deps) > 0) install.packages(deps) + shell: Rscript {0} + if: ${{ hashFiles('renv.lock') == '' }} + + - name: Ensure Quarto R runtime packages + run: | + lib <- Sys.getenv("R_LIBS_USER") + if (nzchar(lib)) { + dir.create(lib, recursive = TRUE, showWarnings = FALSE) + .libPaths(c(lib, .libPaths())) + } + pkgs <- c("knitr", "rmarkdown") + missing <- pkgs[!vapply(pkgs, requireNamespace, logical(1), quietly = TRUE)] + if (length(missing) > 0) install.packages(missing) + shell: Rscript {0} - name: Render and Publish uses: quarto-dev/quarto-actions/publish@v2 diff --git a/.github/workflows/style.yaml b/.github/workflows/style.yaml new file mode 100644 index 0000000..c8ef65f --- /dev/null +++ b/.github/workflows/style.yaml @@ -0,0 +1,27 @@ +on: + workflow_dispatch: + +name: Air Formatting + +permissions: + contents: write + +jobs: + format: + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v5 + with: + fetch-depth: 0 + + - name: Install Air + uses: posit-dev/setup-air@v1 + + - name: Format + run: air format . + + - name: Commit and push changes + uses: stefanzweifel/git-auto-commit-action@v7 + with: + commit_message: "Style code (Air)" diff --git a/.github/workflows/update-extension.yml b/.github/workflows/update-extension.yml new file mode 100644 index 0000000..4e52ef7 --- /dev/null +++ b/.github/workflows/update-extension.yml @@ -0,0 +1,32 @@ +name: Update Tutorial Template Extension + +on: + schedule: + - cron: "0 0 2 * *" + workflow_dispatch: + +permissions: read-all + +jobs: + update-downstream-tutorials: + # prevent action from running in actual extension repo--else, recursive installations + # only users of the extension should have these auto-updates + if: github.repository != 'lmu-osc/tutorial-template' + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Checkout repo + uses: actions/checkout@v5 + with: + fetch-depth: 0 + + - name: Setup Quarto + uses: quarto-dev/quarto-actions/setup@v2 + + - name: Update tutorial-template extension + run: quarto update lmu-osc/tutorial-template --no-prompt + + - uses: stefanzweifel/git-auto-commit-action@v7 + with: + commit_message: "Update tutorial-template extension (GHA)" diff --git a/.gitignore b/.gitignore index 330a18e..dea1398 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,9 @@ rsconnect/ .httr-oauth .quarto _site/ +**_files/ + +**/*.quarto_ipynb + +# ignore posi assistant settings +.posit/assistant \ No newline at end of file diff --git a/404.qmd b/404.qmd new file mode 100644 index 0000000..515733c --- /dev/null +++ b/404.qmd @@ -0,0 +1,14 @@ +--- +title: Uh-oh, looks like the page is missing! +description: The page you are looking for cannot be found 😟 +--- + +The page you are looking for either does not exist or has been moved. Please check the URL and try again. If you believe this is an error, please contact the website administrator for assistance. + +Note: many pages within our old tutorials have been moved to new locations as part of standardization efforts. It's likely the page you are looking for has been moved to a new location within the site. + + diff --git a/CITATION.cff b/CITATION.cff index 2356958..2bd3c69 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -1,12 +1,10 @@ cff-version: 1.2.0 -message: "If you use this software, please cite it as below." +message: "If you refer to this tutorial, please cite it as below." authors: -- family-names: "Ihle" - given-names: "Malika" - orcid: "https://orcid.org/0000-0002-3242-5981" - affiliation: - - name: "LMU Open Science Center" - ror: "https://ror.org/029e6qe04" + - family-names: "Ihle" + given-names: "Malika" + orcid: "https://orcid.org/0000-0002-3242-5981" + affiliation: "LMU Open Science Center" title: "Introduction to Simulations in R" version: 0.1.0 doi: "DOI_HERE_AFTER_GENERATED" diff --git a/README.md b/README.md index 6bf59ff..08a1483 100644 --- a/README.md +++ b/README.md @@ -16,28 +16,28 @@ It is licensed under a [Creative Commons Attribution-ShareAlike 4.0 Internationa ## Self-paced workshop ### How it works -The self-paced tutorial (pages linked below) will alternate presentation of concepts and simple exercises for you to try to apply them in R. Each time you see written **YOUR TURN**, switch to your local copy of the exercise script (you can choose between a file with or without the solutions depending on e.g. your level of familiarity with R), review the examples if needed, complete the exercise, and check out the proposed answer (which often contains additional tips). Come back to the online tutorial and after finishing one page, you can navigate to the next page linked at the bottom to continue. The exercise script contains code for all the exercises and code that generates the plots that appear in the online tutorial, all in order of appearance in the tutorial. +The self-paced tutorial (pages linked below) will alternate presentation of concepts and simple exercises for you to try to apply them in R. Each time you see written **YOUR TURN**, switch to your local copy of the exercise script (you can choose between a file with or without the solutions depending on e.g. your level of familiarity with R), review the examples if needed, complete the exercise, and check out the proposed answer (which often contains additional tips). Come back to the online tutorial and after finishing one page, you can navigate to the next page linked at the bottom to continue. The exercise script contains code for all the exercises and code that generates the plots that appear in the online tutorial, all in order of appearance in the tutorial. It is necessary that you work through the sections of the tutorial in order. Please read the blurbs of each section below to get an overview of this workshop. Then click on the first page 'Download the material' and follow along by navigating to the next page linked at the bottom of each page! You can get back to this overview at any time by clicking on the title 'Introduction-Simulations-in-R' at the top of each page. ### Tutorial -* [Download the material](./tutorial_pages/download-repo.qmd) – Get this tutorial onto your machine. -* [Definition](./tutorial_pages/definition.qmd) – What are simulations? -* [Purpose](./tutorial_pages/purpose.qmd) – What can we use simulations for? -* [Basic principles](./tutorial_pages/basic-principles.qmd) – What do we need to create a simulation? -* [Random number generators](./tutorial_pages/random-numbers-generators.qmd) – How to generate random numbers in R? -* [Repeat](./tutorial_pages/repeat.qmd) – How to repeat the generation of random numbers multiple times? -* [Setting the seed](./tutorial_pages/seed.qmd) – How can you generate the same random numbers? -* [Sample size `n`](./tutorial_pages/sample-size-n.qmd) – How many values should you generate within a simulation? -* [Number of repetitions `nrep`](./tutorial_pages/number-of-simulations-nrep.qmd) – How many repeats of a simulation should you run? -* [DRY rule](./tutorial_pages/dry-rule.qmd) – How to write your own functions? -* [Simulate to check alpha](./tutorial_pages/check-alpha.qmd) – Write your first simulation and check the rate of false-positive findings. -* [Simulate to check power](./tutorial_pages/check-power.qmd) – Simulate data to perform a power analysis. -* [Simulate to prepare a preregistration](./tutorial_pages/simulate-for-preregistration.qmd) – Simulate data to test statistical analyses before preregistering them. -* [General structure](./tutorial_pages/general-structure.qmd) – What is the general structure of a simulation? -* [Limitations](./tutorial_pages/limitations.qmd) – What are the limitations of simulations? -* [Real-life example](./tutorial_pages/real-life-example.qmd) – What are real-life examples of simulations? -* [Additional resources](./tutorial_pages/resources.qmd) – What resources can help you write your own simulation? +* [Download the material](./tutorial-pages/download-repo.qmd) – Get this tutorial onto your machine. +* [Definition](./tutorial-pages/definition.qmd) – What are simulations? +* [Purpose](./tutorial-pages/purpose.qmd) – What can we use simulations for? +* [Basic principles](./tutorial-pages/basic-principles.qmd) – What do we need to create a simulation? +* [Random number generators](./tutorial-pages/random-numbers-generators.qmd) – How to generate random numbers in R? +* [Repeat](./tutorial-pages/repeat.qmd) – How to repeat the generation of random numbers multiple times? +* [Setting the seed](./tutorial-pages/seed.qmd) – How can you generate the same random numbers? +* [Sample size `n`](./tutorial-pages/sample-size-n.qmd) – How many values should you generate within a simulation? +* [Number of repetitions `nrep`](./tutorial-pages/number-of-simulations-nrep.qmd) – How many repeats of a simulation should you run? +* [DRY rule](./tutorial-pages/dry-rule.qmd) – How to write your own functions? +* [Simulate to check alpha](./tutorial-pages/check-alpha.qmd) – Write your first simulation and check the rate of false-positive findings. +* [Simulate to check power](./tutorial-pages/check-power.qmd) – Simulate data to perform a power analysis. +* [Simulate to prepare a preregistration](./tutorial-pages/simulate-for-preregistration.qmd) – Simulate data to test statistical analyses before preregistering them. +* [General structure](./tutorial-pages/general-structure.qmd) – What is the general structure of a simulation? +* [Limitations](./tutorial-pages/limitations.qmd) – What are the limitations of simulations? +* [Real-life example](./tutorial-pages/real-life-example.qmd) – What are real-life examples of simulations? +* [Additional resources](./tutorial-pages/resources.qmd) – What resources can help you write your own simulation? diff --git a/_extensions/lmu-osc/tutorial-template/_extension.yml b/_extensions/lmu-osc/tutorial-template/_extension.yml new file mode 100644 index 0000000..b1fce78 --- /dev/null +++ b/_extensions/lmu-osc/tutorial-template/_extension.yml @@ -0,0 +1,48 @@ +title: tutorial-template +author: Patrick Callahan +description: A template website for the LMU Open Science Center's tutorials +version: 1.0.4 +license: CC0-1.0 +quarto-required: ">=1.9.0" +contributes: + metadata: + project: + brand: _extensions/lmu-osc/osc-brand/brand.yml + project: + project: + type: website + website: + search: + location: sidebar + repo-actions: [edit, source, issue] + back-to-top-navigation: true + page-navigation: true + # favicon: Quarto detects the "small" image from the brand file automatically + reader-mode: true + navbar: + background: primary + logo: small + format: tutorial-template-html+tutorial + formats: + html+tutorial: + theme: + light: + [flatly, brand, _extensions/lmu-osc/osc-brand/lmu-osc-custom.scss] + dark: [darkly, brand, _extensions/lmu-osc/osc-brand/lmu-osc-custom.scss] + toc: true + toc-title: " " + code-tools: true + code-overflow: wrap + code-copy: true + code-link: true + smooth-scroll: true + link-external-icon: true + link-external-newwindow: true + footnotes-hover: true + citations-hover: true + crossrefs-hover: true + grid: + sidebar-width: 300px + css: + - assets/bootstrap-grid.min.css + html+base: osc-brand-html diff --git a/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/_extension.yml b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/_extension.yml new file mode 100644 index 0000000..07ccc65 --- /dev/null +++ b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/_extension.yml @@ -0,0 +1,16 @@ +title: LMU Open Science Center Brand +author: Patrick Callahan +version: 1.0.0 +url: https://github.com/lmu-osc/osc-brand +description: LMU Open Science Center brand assets and default HTML format +license: MIT +quarto-required: ">=1.9.0" +contributes: + metadata: + project: + brand: brand.yml + formats: + html: + theme: + light: [flatly, brand, lmu-osc-custom.scss] + dark: [darkly, brand, lmu-osc-custom.scss] diff --git a/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/brand.yml b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/brand.yml new file mode 100644 index 0000000..3dd6c6f --- /dev/null +++ b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/brand.yml @@ -0,0 +1,120 @@ +# minimal brand.yml enabling dark mode + +meta: + name: + full: LMU Open Science Center + short: OSC + link: + home: https://www.osc.lmu.de/ + github: https://github.com/lmu-osc + bluesky: https://bsky.app/profile/lmu-osc.bsky.social + description: | + Home of open science praxis at Ludwig-Maximilian Universität München. + founded: 2019 + author: Pat Callahan + +# replace with your brand colors, logos, and typography! +color: + palette: + lmu-green: "#00883A" + lmu-black: "#232323" + lmu-white: "#FFF" + lmu-darkgrey: "#626468" + lmu-darkgray: "#626468" + lmu-middlegrey: "#C0C1C3" + lmu-middlegray: "#C0C1C3" + lmu-lightgrey: "#E6E6E7" + lmu-lightgray: "#E6E6E7" + lmu-lichtgrau: "#F5F5F5" + lmu-blue: "#0F1987" + lmu-cyan: "#009FE3" + lmu-violet: "#8C4091" + lmu-red: "#D71919" + lmu-orange: "#F18700" + background: + light: lmu-white + dark: lmu-black + foreground: + light: lmu-black + dark: lmu-white + primary: + light: lmu-green + dark: lmu-green + secondary: + light: lmu-black + dark: lmu-middlegray + tertiary: + light: lmu-blue + dark: lmu-violet + success: + light: lmu-cyan + dark: lmu-cyan + info: + light: lmu-violet + dark: lmu-violet + warning: + light: lmu-orange + dark: lmu-orange + danger: + light: lmu-red + dark: lmu-red + +logo: + images: + icon: + path: lmu-osc-favicon.jpg + alt: "LMU Open Science Center open book icon" + default: + path: lmu-osc-logo.svg + alt: "LMU Open Science Center logo" + dark: + path: lmu-osc-logo-dark.svg + alt: "LMU Open Science Center logo" + large: + path: lmu-osc-logo-large.jpg + alt: "LMU Open Science Center logo, large" + small: icon + medium: + light: default + dark: dark + large: + light: large + dark: large + +# https://www.lmu.de/de/die-lmu/struktur/zentrale-universitaetsverwaltung/presse-und-kommunikation-puk/lmu-brand-guide/designgrundsaetze/schrift/ +# Compatil is the official font, but license limited. Online content should use Roboto, and other software e.g. presentations use Arial +typography: + fonts: + - family: Roboto + source: google + - family: Arial + source: google + - family: Fira Code + source: google + base: + family: "Roboto, Arial" + # size: 1.1rem + # line-height: 1.65 + # weight: + # style: + headings: + family: "Roboto, Arial" + color: secondary + monospace: + family: "Fira Code" + # size: + # weight: + monospace-inline: + family: "Fira Code" + # color: + # background-color: + monospace-block: + family: "Fira Code" + # line-height: + # color: + # background-color: + # link: + # weight: + # color: + # background-color: + # decoration: diff --git a/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-custom.scss b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-custom.scss new file mode 100644 index 0000000..4dc2397 --- /dev/null +++ b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-custom.scss @@ -0,0 +1,35 @@ +/*-- scss:defaults --*/ + +// Define custom brand SCSS variables +// These can reference Bootstrap theme variables (which are derived from brand.yml) +// but note that Bootstrap vars are only available in the /*-- scss:rules --*/ section. + +/*-- scss:rules --*/ + + +#quarto-content +h1, #quarto-content h1[class], #quarto-content .h1[class], +h2, #quarto-content h2[class], #quarto-content .h2[class], +h3, #quarto-content h3[class], #quarto-content .h3[class] { + margin-top: 1.33rem; + margin-bottom: 0.75rem; +} + +#quarto-content +h4, #quarto-content h4[class], #quarto-content .h4[class], +h5, #quarto-content h5[class], #quarto-content .h5[class], +h6, #quarto-content h6[class], #quarto-content .h6[class] { + margin-top: 0.66rem; + margin-bottom: 0.5rem; +} + +#quarto-content +h2, #quarto-content h2[class], #quarto-content .h2[class] { + border-bottom: $brand-lmu-violet 2px solid; +} + +#quarto-content +h3, #quarto-content h3[class], #quarto-content .h3[class] { + border-bottom: $brand-lmu-violet 1.5px solid; + padding-bottom: 0.25rem; +} \ No newline at end of file diff --git a/assets/LMU-OSC_favicon.jpg b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-favicon.jpg similarity index 100% rename from assets/LMU-OSC_favicon.jpg rename to _extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-favicon.jpg diff --git a/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo-dark.svg b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo-dark.svg new file mode 100644 index 0000000..338367e --- /dev/null +++ b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo-dark.svg @@ -0,0 +1,281 @@ + + + + diff --git a/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo-large.jpg b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo-large.jpg new file mode 100644 index 0000000..25bfdcc Binary files /dev/null and b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo-large.jpg differ diff --git a/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo.svg b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo.svg new file mode 100644 index 0000000..e7b48ef --- /dev/null +++ b/_extensions/lmu-osc/tutorial-template/_extensions/lmu-osc/osc-brand/lmu-osc-logo.svg @@ -0,0 +1,281 @@ + + + + diff --git a/_extensions/lmu-osc/tutorial-template/assets/bootstrap-grid.min.css b/_extensions/lmu-osc/tutorial-template/assets/bootstrap-grid.min.css new file mode 100644 index 0000000..82bb1bc --- /dev/null +++ b/_extensions/lmu-osc/tutorial-template/assets/bootstrap-grid.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap Grid v5.3.8 (https://getbootstrap.com/) + * Copyright 2011-2025 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap-grid.min.css.map */ \ No newline at end of file diff --git a/_quarto.yml b/_quarto.yml index 39014f9..63c29e8 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -1,76 +1,96 @@ +# Begin Project project: - type: website + type: tutorial-template render: - "*.qmd" - - "!Hallgreen2013/" - - "!Ihle2020/" + - "!hallgren-2013/" + - "!ihle-2020/" +# End Project +# Begin Website +repo-url: https://github.com/lmu-osc/Introduction-Simulations-in-R website: title: "Introduction to Simulations in R" page-footer: - center: "Copyright, 2024 Open Science Center at LMU Munich" border: false - search: - location: sidebar + center: © 2024 Malika Ihle. Published by LMU Open Science Center. Licensed under CC BY-SA 4.0. repo-url: https://github.com/lmu-osc/Introduction-Simulations-in-R - repo-actions: [edit, issue] - back-to-top-navigation: true - page-navigation: true - favicon: assets/LMU-OSC_favicon.jpg - margin-header: | - {width="175"} + + navbar: + right: + - about.qmd + left: + - href: index.qmd + text: Home + tools: + - icon: github + menu: + - text: Source Code + href: https://github.com/lmu-osc/Introduction-Simulations-in-R + - text: Report a Bug + href: https://github.com/lmu-osc/Introduction-Simulations-in-R/issues + - icon: house-heart + url: https://www.osc.lmu.de/ sidebar: style: docked contents: - - text: "Home" + - text: "Overview" href: index.qmd - section: "Tutorial" contents: - - href: ./tutorial_pages/download-repo.qmd + - href: tutorial-pages/download-repo.qmd text: Download the material - - href: ./tutorial_pages/definition.qmd + - href: tutorial-pages/definition.qmd text: Definition - - href: ./tutorial_pages/purpose.qmd + - href: tutorial-pages/purpose.qmd text: Purpose - - href: ./tutorial_pages/basic-principles.qmd + - href: tutorial-pages/basic-principles.qmd text: Basic principles - - href: ./tutorial_pages/random-numbers-generators.qmd + - href: tutorial-pages/random-numbers-generators.qmd text: Random number generators - - href: ./tutorial_pages/repeat.qmd + - href: tutorial-pages/repeat.qmd text: Repeat - - href: ./tutorial_pages/seed.qmd + - href: tutorial-pages/seed.qmd text: Setting the seed - - href: ./tutorial_pages/sample-size-n.qmd + - href: tutorial-pages/sample-size-n.qmd text: Sample size `n` - - href: ./tutorial_pages/number-of-simulations-nrep.qmd + - href: tutorial-pages/number-of-simulations-nrep.qmd text: Number of repetitions `nrep` - - href: ./tutorial_pages/dry-rule.qmd + - href: tutorial-pages/dry-rule.qmd text: DRY rule - - href: ./tutorial_pages/check-alpha.qmd + - href: tutorial-pages/check-alpha.qmd text: Simulate to check alpha - - href: ./tutorial_pages/check-power.qmd + - href: tutorial-pages/check-power.qmd text: Simulate to check power - - href: ./tutorial_pages/simulate-for-preregistration.qmd + - href: tutorial-pages/simulate-for-preregistration.qmd text: Simulate to prepare a preregistration - - href: ./tutorial_pages/general-structure.qmd + - href: tutorial-pages/general-structure.qmd text: General structure - - href: ./tutorial_pages/limitations.qmd + - href: tutorial-pages/limitations.qmd text: Limitations - - href: ./tutorial_pages/real-life-example.qmd + - href: tutorial-pages/real-life-example.qmd text: Real-life example - - href: ./tutorial_pages/resources.qmd + - href: tutorial-pages/resources.qmd text: Additional resources +# End Website -format: - html: - theme: - - cosmo - - custom.scss - css: styles.css - toc: true - include-in-header: - - file: matomo-analytics.html +# Begin Includes +include-in-header: + - file: matomo-analytics.html +include-after-body: + - file: footer/footer.html +# End Includes +# Begin Format +format: + tutorial-template-html+tutorial: + css: + - footer/footer-style.css +# End Format +# Begin Editor +editor: source +# End Editor +bibliography: references.bib diff --git a/about.qmd b/about.qmd new file mode 100644 index 0000000..51395c5 --- /dev/null +++ b/about.qmd @@ -0,0 +1,52 @@ +--- +title: "About" +date: 2021-11-22 +citation: + type: "webpage" + title: "Introduction to Simulations in R" + container-title: "LMU Open Science Center" + url: https://lmu-osc.github.io/Introduction-Simulations-in-R + doi: "DOI_HERE_AFTER_GENERATED" +author: + - name: Malika Ihle + roles: [conceptualization, funding acquisition, investigation, methodology, project administration, software, resources, supervision, validation, visualization, writing - original draft, writing - editing & review] + degrees: + - B.Sc. + - M.Sc. + - PhD + affiliation: + - id: osc + name: LMU Open Science Center + ror: https://ror.org/029e6qe04 + - id: other1 + name: LMU Munich + ror: https://ror.org/05591te55 + isni: 000000041936973X + orcid: 0000-0002-3242-5981 +google-scholar: true +--- + +## Contributors + +This site was authored by Malika Ihle, based on materials from Joel Pick, Hadley Wickham, and Kevin Hallgren, with contributions from James Smith. + +## Licenses + +The overall project is available under the [**CC BY-SA 4.0**](https://creativecommons.org/licenses/by-sa/4.0/) license found at [LICENSE](LICENSE.md); all code without any narrative text is also (at your option) available under the [**CC0 1.0 Universal**](https://creativecommons.org/publicdomain/zero/1.0/) license found at [LICENSE-CODE](LICENSE-CODE.md). + +Why two licenses? The CC BY-SA 4.0 license is for the content of the website, while the CC0 1.0 Universal license is for the code and configuration files. This is a common practice for websites that include code snippets and other content that may be reused in other projects, particularly because the CC BY-SA 4.0 license is not intended to be used with software. + +## Notes + +This tutorial was primarily written in 2021 using R and RStudio. + +## Tutorial Template Quarto Extension + +This tutorial was written using the [`lmu-osc/tutorial-template`](https://github.com/lmu-osc/tutorial-template) Quarto extension [@callahan2026]. + +::: {#refs} +::: + +## How to Cite + +**To cite this tutorial, please refer to the project's [CITATION.cff](CITATION.cff) file or use the BibTeX citation provided in the appendix below.** diff --git a/assets/1000hist10N01.png b/assets/1000-hists-n10-n01.png similarity index 100% rename from assets/1000hist10N01.png rename to assets/1000-hists-n10-n01.png diff --git a/assets/24hist10N01.png b/assets/24-hists-n10-n01.png similarity index 100% rename from assets/24hist10N01.png rename to assets/24-hists-n10-n01.png diff --git a/assets/24hist1000N01.png b/assets/24-hists-n1000-n01.png similarity index 100% rename from assets/24hist1000N01.png rename to assets/24-hists-n1000-n01.png diff --git a/assets/download.PNG b/assets/download.png similarity index 100% rename from assets/download.PNG rename to assets/download.png diff --git a/assets/existing-directory.PNG b/assets/existing-directory.png similarity index 100% rename from assets/existing-directory.PNG rename to assets/existing-directory.png diff --git a/assets/files-list.PNG b/assets/files-list.png similarity index 100% rename from assets/files-list.PNG rename to assets/files-list.png diff --git a/assets/find-directory.PNG b/assets/find-directory.png similarity index 100% rename from assets/find-directory.PNG rename to assets/find-directory.png diff --git a/assets/hist10N01.png b/assets/hist-n10-n01.png similarity index 100% rename from assets/hist10N01.png rename to assets/hist-n10-n01.png diff --git a/assets/lmu-osc-favicon.jpg b/assets/lmu-osc-favicon.jpg new file mode 100644 index 0000000..a06a839 Binary files /dev/null and b/assets/lmu-osc-favicon.jpg differ diff --git a/assets/LMU-OSC_logo.jpg b/assets/lmu-osc-logo.jpg similarity index 100% rename from assets/LMU-OSC_logo.jpg rename to assets/lmu-osc-logo.jpg diff --git a/assets/lmu-osc-logo.svg b/assets/lmu-osc-logo.svg new file mode 100644 index 0000000..e7b48ef --- /dev/null +++ b/assets/lmu-osc-logo.svg @@ -0,0 +1,281 @@ + + + + diff --git a/assets/musd-24-10-N01.png b/assets/musd-24-n10-n01.png similarity index 100% rename from assets/musd-24-10-N01.png rename to assets/musd-24-n10-n01.png diff --git a/assets/musd-24-1000-N01.png b/assets/musd-24-n1000-n01.png similarity index 100% rename from assets/musd-24-1000-N01.png rename to assets/musd-24-n1000-n01.png diff --git a/custom.scss b/custom.scss deleted file mode 100644 index 442fd2b..0000000 --- a/custom.scss +++ /dev/null @@ -1,5 +0,0 @@ -/*-- scss:defaults --*/ -// Base document colors -$navbar-bg: #009933; -$link-color: #006426; -$sidebar-hl: #006426; diff --git a/exercise_script_with_solutions.R b/exercise-script-with-solutions.R similarity index 100% rename from exercise_script_with_solutions.R rename to exercise-script-with-solutions.R diff --git a/exercise_script_without_solutions.R b/exercise-script-without-solutions.R similarity index 100% rename from exercise_script_without_solutions.R rename to exercise-script-without-solutions.R diff --git a/footer/accessibilty.qmd b/footer/accessibilty.qmd new file mode 100644 index 0000000..9ed86c5 --- /dev/null +++ b/footer/accessibilty.qmd @@ -0,0 +1,122 @@ +--- +title: "Accessibility" +page-layout: full +--- + + + +:::{.accessibility-container} + +The Ludwig-Maximilians-Universität München strives to make its offers accessible in accordance with § 9 Act on Digitalisation in the Free State of Bavaria (Bayerisches Digitalgesetz – BayDig). + +This Accessibility Statement applies to applications available at [https://www.lmu.de/de/index.html](https://www.lmu.de/de/index.html), [https://www.lmu.de/de/index.html](https://www.lmu.de/de/index.html) and all subdomain pages. + +#### Status of Compliance + +Partially compliant: This application partially corresponds to § 1 BayEGovV. + +##### Legal Name +Ludwig-Maximilians-Universität München + +##### Website(s): +[https://www.lmu.de/de/index.html](https://www.lmu.de/de/index.html), [https://www.lmu.de/de/index.html](https://www.lmu.de/de/index.html) and all subdomain pages. + +#### Known Accessibility Issues +List and explanation of the problems encountered when implementing the accessibility of these websites + +##### Content Not Accessible to People With Disabilities +- Apart from the main pages, alternative text-based content for images and tables may be missing. There may also be errors in content hierarchy and links may be unintelligible. +- PDF documents created before 09/23/2018 have not yet been converted to a fully accessible format. +- Some documents have been provided by institutions of the LMU, which are not yet all available in a fully accessible version. +- Many of our videos also lack subtitles and audio descriptions. +We will be adding written directions for the maps used to give directions. +- Quotes are often not indicated as such using the appropriate HTML tag. +- Responsive design (for viewing on mobile devices) is only partially available for the websites, screen orientation is otherwise limited to landscape format. For non-responsive pages, texts do not wrap correctly in a small viewport. +- Fields for inputting user data are not always sufficiently designated as such. +- Words or passages in other languages are not always indicated as such. +- Because of the Google Search plugin, the criteria for "valid HTML text" is not being fulfilled. + +#### Explanation + +All LMU websites are currently undergoing a complete relaunch. It therefore no longer makes sense to revise the existing websites.\ +The deficiencies of the old website have been listed above. + + +**Creation Date**: 09/22/2019\ +**Methodology**: Self-assessment + +#### Feedback Mechanism +As a user, you can inform us of any shortcomings in complying with accessibility requirements or request information in an accessible format that is not required to be displayed in an accessible format. + +##### Contact Information +Unit VI.5 Internet Services\ +Martiusstraße 4\ +80802 Munich\ +Mail: [it.internet@verwaltung.uni-muenchen.de](mailto:it.internet@verwaltung.uni-muenchen.de)\ +Phone: +49 (0) 89 / 2180-9832 + +#### Enforcement Procedure +If a request for contact remains unanswered in whole or in part within six weeks, the Landesamt für Digitalisierung, Breitband und Vermessung (Agency for Digitisation, High-Speed Internet and Surveying) will, at the request of the user, examine whether measures are necessary with regard to the monitoring of the obligated party. + +##### Contact information of the agency responsible for the enforcement procedure +Landesamt für Digitalisierung, Breitband und Vermessung\above +Alexandrastraße 4\ +80538 Munich\ +Phone: +49 89 2129-1111\ +Fax: +49 89 2129-1113\ +Email:[service@geodaten.bayern.de](mailto:service@geodaten.bayern.de)\ +[https://www.ldbv.bayern.de/service/kontakt/](https://www.ldbv.bayern.de/service/kontakt/) + +##### Other Help Services +Students with disabilities are supported by the [Beratungsstelle für Studierende mit Behinderung und chronischer Erkrankung](https://www.lmu.de/de/workspace-fuer-studierende/support-angebote/studieren-mit-beeintraechtigung/) (Counselling Center for Students with Disabilities and Chronic Illnesses). + +The [Schwerbehindertenvertretung (Representative for Disabled Persons)](https://login.lmu.de/idp/profile/SAML2/Redirect/SSO?execution=e3s1) (access protected on the service portal) can support employees. + +::: \ No newline at end of file diff --git a/footer/footer-style.css b/footer/footer-style.css new file mode 100644 index 0000000..12cb5e8 --- /dev/null +++ b/footer/footer-style.css @@ -0,0 +1,21 @@ + +.osc-footer-card { + --osc-primary-green: #00883A; + background-color: var(--osc-primary-green); +} + +.osc-footer-socials a:hover { + transform: scale(1.05); + filter: brightness(1.2); + transition: all 0.2s ease; +} + +.osc-footer-card a:focus-visible { + outline: 2px solid #FFD700; + outline-offset: 2px; +} + +/* no external window thing for the icons */ +.osc-footer-socials a::after { + display: none !important; +} \ No newline at end of file diff --git a/footer/footer.html b/footer/footer.html new file mode 100644 index 0000000..f2e2998 --- /dev/null +++ b/footer/footer.html @@ -0,0 +1,91 @@ + diff --git a/footer/imprint.qmd b/footer/imprint.qmd new file mode 100644 index 0000000..ddff8e9 --- /dev/null +++ b/footer/imprint.qmd @@ -0,0 +1,112 @@ +--- +title: "Imprint and Disclaimer" +format: + html: + toc: false + page-layout: full +--- + + + +:::{.imprint-container} + +Information pursuant to § 5 Telemedia Law and § 18 Abs. 2 Medienstaatsvertrag (MStV) + +Ludwig-Maximilians-Universität München is a state institution of the Free State of Bavaria and a legal entity under public law (Art. 4 (1) sentence 1 BayHIG). It is legally represented by its President, Professor Dr. med. Dr. h.c. Matthias H. Tschöp. + +#### Address +Ludwig-Maximilians-Universität München\ +Geschwister-Scholl-Platz 1\ +80539 Munich\ +Phone: +49 (0) 89 / 2180-0 + +Web presence: [https://www.lmu.de/de/index.html](https://www.lmu.de/de/index.html) \ +Contact: [poststelle@verwaltung.uni-muenchen.de](mailto:poststelle@verwaltung.uni-muenchen.de)\ +[Addition contact information](https://www.lmu.de/en/index.html) + +#### Notices for encrypted communication + +In the event that you wish to send us an encrypted message, please use the following public X509-certificate for encryption of your message. + +#### Authorized Oversight Agency + +Bavarian State Ministry for Science and Art\ +Salvatorstraße 2\ +80333 Munich + +Internet: [https://www.stmwk.bayern.de](https://www.stmwk.bayern.de) + +#### Sales Tax ID Number of the LMU + +Sales tax ID number pursuant to § 27 a Sales Tax Law:\ +DE 811205325 + +#### Responsible for content according to § 18 para. 2 MStV + +Ludwig-Maximilians-Universität München\ +Felix Schönbrodt\ +Email: [felix.schoenbrodt@psy.lmu.de](mailto:felix.schoenbrodt@psy.lmu.de) + +#### Responsible party for technical implementation + +The webmaster of the facility is responsible for technical implementation. Technical implementation is handled by the Content Management System Fiona by [Infopark AG](https://www.lmu.de/en/index.html). + +#### Statement of Release + +The information herein is correct to the best of our knowledge, however, error cannot be avoided with absolute certainty. Solely the specifications in the pertinent legal bases (laws, orders, statutes) are legally binding. + +We cannot assume any liability for the particular currency, accuracy, completeness and availability of the provided information. + +We are not liable for damages caused by the use of this internet offer. This exclusion of liability shall not apply if the regulations of § 839 BGB (liability for violation of official duty) are involved. We are not liable for any damages caused by call-up or downloading of data by damaged software or by the installation or use of software. + +This exclusion of liability does not apply to information that falls within the scope of the Order (EU) 2016/679 of the European Parliament and of the Council dated 27 April 2016 (General Data Protection Regulation). The accuracy and currency of this information is guaranteed. + +#### Disclaimer +The information offered by the LMU contains cross-references (“links”) to other internet offers by the LMU or by external, third-parties. Basically the internet pages will open automatically in a new window. + +Through this cross-reference, the LMU handles access for use of this content (§ 5 Telemedia Law). We are not responsible for this “foreign” content since we do not initiate the transmission of the information, have not selected the addressee of the transmitted information and also have not selected or changed the transmitted information. + +An automatic, short-term interim saving of this “foreign information” by the LMU does not occur due to the selected call-up and linking method, so that the LMU does not thereby assume any responsibility for this foreign content. + +However, upon initial linking with these internet offers, the LMU has checked the foreign content to determine whether it may trigger a potential responsibility under civil or penal law. But we do not receive any automatic information about changes to the foreign internet offers and thus cannot constantly monitor their content for any changes. Therefore we also cannot assume any responsibility for them. Solely the particular merchant of the foreign internet offer is liable for illegal, erroneous or incomplete content, and in particular for damages which arise from the use or non-use of information by third parties. However, we endeavor to check the included links regularly with regard to these named criteria. + +::: \ No newline at end of file diff --git a/footer/privacy.qmd b/footer/privacy.qmd new file mode 100644 index 0000000..3f31fd0 --- /dev/null +++ b/footer/privacy.qmd @@ -0,0 +1,179 @@ +--- +title: "Privacy Policy" +format: + html: + toc: false + page-layout: full +--- + + + +For data collected by the LMU Open Science Center, [LMU's general privacy policy](https://www.lmu.de/en/footer/privacy-policy/index.html){target="_blank"} applies. + +Additionally, this site is hosted on the webhosting service GitHub Pages ([https://docs.github.com/en/pages](https://docs.github.com/en/pages)) with it's own privacy policy available at [https://docs.github.com/de/site-policy/privacy-policies/github-general-privacy-statement](https://docs.github.com/de/site-policy/privacy-policies/github-general-privacy-statement). + + + + +#### Matomo Tracking Opt-Out + +This opt-out is only for the Matomo web analytics tool in use directly the LMU Open Science Center website. It does not affect any other tracking or analytics tools that may be in use on this site, including those used by GitHub Pages. + +```{=html} +
+ +``` \ No newline at end of file diff --git a/Hallgren2013/bootstrapping.r b/hallgren-2013/bootstrapping.r similarity index 100% rename from Hallgren2013/bootstrapping.r rename to hallgren-2013/bootstrapping.r diff --git a/Hallgren2013/mediation_raw_data.csv b/hallgren-2013/mediation-raw-data.csv similarity index 100% rename from Hallgren2013/mediation_raw_data.csv rename to hallgren-2013/mediation-raw-data.csv diff --git a/Hallgren2013/novel_question_output.csv b/hallgren-2013/novel-question-output.csv similarity index 100% rename from Hallgren2013/novel_question_output.csv rename to hallgren-2013/novel-question-output.csv diff --git a/Hallgren2013/novel question.R b/hallgren-2013/novel-question.R similarity index 100% rename from Hallgren2013/novel question.R rename to hallgren-2013/novel-question.R diff --git a/Hallgren2013/power analysis.R b/hallgren-2013/power-analysis.R similarity index 100% rename from Hallgren2013/power analysis.R rename to hallgren-2013/power-analysis.R diff --git a/Hallgren2013/ReadingSheet.md b/hallgren-2013/reading-sheet.md similarity index 99% rename from Hallgren2013/ReadingSheet.md rename to hallgren-2013/reading-sheet.md index 8f4f770..4a5e96d 100644 --- a/Hallgren2013/ReadingSheet.md +++ b/hallgren-2013/reading-sheet.md @@ -1,3 +1,5 @@ + + # Conducting Simulation Studies in the R Programming Environment - Reading Sheet *** diff --git a/Ihle2020/glm_Freq_vs_YN.R b/ihle-2020/glm-freq-vs-yn.R similarity index 100% rename from Ihle2020/glm_Freq_vs_YN.R rename to ihle-2020/glm-freq-vs-yn.R diff --git a/index.qmd b/index.qmd index 6bf59ff..6eaf6f4 100644 --- a/index.qmd +++ b/index.qmd @@ -1,4 +1,6 @@ -# Introduction to Simulations in R +--- +title: "Introduction to Simulations in R" +--- ## About this work This tutorial was created by [Malika Ihle](https://www.osc.uni-muenchen.de/about_us/coordinator/index.html) based on materials from [Joel Pick](https://joelpick.github.io/), [Hadley Wickham](https://www.yumpu.com/en/document/view/19077330/simulation-hadley-wickham), and [Kevin Hallgren](https://doi.org/10.20982/tqmp.09.2.p043), with contributions from [James Smith](https://github.com/worcjamessmith). @@ -16,28 +18,55 @@ It is licensed under a [Creative Commons Attribution-ShareAlike 4.0 Internationa ## Self-paced workshop ### How it works -The self-paced tutorial (pages linked below) will alternate presentation of concepts and simple exercises for you to try to apply them in R. Each time you see written **YOUR TURN**, switch to your local copy of the exercise script (you can choose between a file with or without the solutions depending on e.g. your level of familiarity with R), review the examples if needed, complete the exercise, and check out the proposed answer (which often contains additional tips). Come back to the online tutorial and after finishing one page, you can navigate to the next page linked at the bottom to continue. The exercise script contains code for all the exercises and code that generates the plots that appear in the online tutorial, all in order of appearance in the tutorial. +The self-paced tutorial (pages linked below) will alternate presentation of concepts and simple exercises for you to try to apply them in R. Each time you see written **YOUR TURN**, switch to your local copy of the exercise script (you can choose between a file with or without the solutions depending on e.g. your level of familiarity with R), review the examples if needed, complete the exercise, and check out the proposed answer (which often contains additional tips). Come back to the online tutorial and after finishing one page, you can navigate to the next page linked at the bottom to continue. The exercise script contains code for all the exercises and code that generates the plots that appear in the online tutorial, all in order of appearance in the tutorial. It is necessary that you work through the sections of the tutorial in order. Please read the blurbs of each section below to get an overview of this workshop. Then click on the first page 'Download the material' and follow along by navigating to the next page linked at the bottom of each page! You can get back to this overview at any time by clicking on the title 'Introduction-Simulations-in-R' at the top of each page. ### Tutorial -* [Download the material](./tutorial_pages/download-repo.qmd) – Get this tutorial onto your machine. -* [Definition](./tutorial_pages/definition.qmd) – What are simulations? -* [Purpose](./tutorial_pages/purpose.qmd) – What can we use simulations for? -* [Basic principles](./tutorial_pages/basic-principles.qmd) – What do we need to create a simulation? -* [Random number generators](./tutorial_pages/random-numbers-generators.qmd) – How to generate random numbers in R? -* [Repeat](./tutorial_pages/repeat.qmd) – How to repeat the generation of random numbers multiple times? -* [Setting the seed](./tutorial_pages/seed.qmd) – How can you generate the same random numbers? -* [Sample size `n`](./tutorial_pages/sample-size-n.qmd) – How many values should you generate within a simulation? -* [Number of repetitions `nrep`](./tutorial_pages/number-of-simulations-nrep.qmd) – How many repeats of a simulation should you run? -* [DRY rule](./tutorial_pages/dry-rule.qmd) – How to write your own functions? -* [Simulate to check alpha](./tutorial_pages/check-alpha.qmd) – Write your first simulation and check the rate of false-positive findings. -* [Simulate to check power](./tutorial_pages/check-power.qmd) – Simulate data to perform a power analysis. -* [Simulate to prepare a preregistration](./tutorial_pages/simulate-for-preregistration.qmd) – Simulate data to test statistical analyses before preregistering them. -* [General structure](./tutorial_pages/general-structure.qmd) – What is the general structure of a simulation? -* [Limitations](./tutorial_pages/limitations.qmd) – What are the limitations of simulations? -* [Real-life example](./tutorial_pages/real-life-example.qmd) – What are real-life examples of simulations? -* [Additional resources](./tutorial_pages/resources.qmd) – What resources can help you write your own simulation? +* [Download the material](./tutorial-pages/download-repo.qmd) – Get this tutorial onto your machine. +* [Definition](./tutorial-pages/definition.qmd) – What are simulations? +* [Purpose](./tutorial-pages/purpose.qmd) – What can we use simulations for? +* [Basic principles](./tutorial-pages/basic-principles.qmd) – What do we need to create a simulation? +* [Random number generators](./tutorial-pages/random-numbers-generators.qmd) – How to generate random numbers in R? +* [Repeat](./tutorial-pages/repeat.qmd) – How to repeat the generation of random numbers multiple times? +* [Setting the seed](./tutorial-pages/seed.qmd) – How can you generate the same random numbers? +* [Sample size `n`](./tutorial-pages/sample-size-n.qmd) – How many values should you generate within a simulation? +* [Number of repetitions `nrep`](./tutorial-pages/number-of-simulations-nrep.qmd) – How many repeats of a simulation should you run? +* [DRY rule](./tutorial-pages/dry-rule.qmd) – How to write your own functions? +* [Simulate to check alpha](./tutorial-pages/check-alpha.qmd) – Write your first simulation and check the rate of false-positive findings. +* [Simulate to check power](./tutorial-pages/check-power.qmd) – Simulate data to perform a power analysis. +* [Simulate to prepare a preregistration](./tutorial-pages/simulate-for-preregistration.qmd) – Simulate data to test statistical analyses before preregistering them. +* [General structure](./tutorial-pages/general-structure.qmd) – What is the general structure of a simulation? +* [Limitations](./tutorial-pages/limitations.qmd) – What are the limitations of simulations? +* [Real-life example](./tutorial-pages/real-life-example.qmd) – What are real-life examples of simulations? +* [Additional resources](./tutorial-pages/resources.qmd) – What resources can help you write your own simulation? + + + +:::: {.columns} + +::: {.column width="47.5%"} + +::: {.callout-tip title="Support the LMU Open Science Center!"} + +**Like this tutorial? Be sure to give [the repository](https://github.com/lmu-osc/Introduction-Simulations-in-R) a star and [follow us on GitHub](https://github.com/lmu-osc)!** +::: + +::: + +::: {.column width="5%"} +::: + +::: {.column width="47.5%"} + + +::: {.callout-tip title="Questions about this tutorial?"} +**If you have questions for the author of this tutorial, please take a look at the [About](about.qmd) page.** +::: + +::: + +:::: diff --git a/references.bib b/references.bib new file mode 100644 index 0000000..90464e4 --- /dev/null +++ b/references.bib @@ -0,0 +1,10 @@ + +@book{callahan2026, + title = {LMU Open Science Center Tutorial Template: A Quarto Extension}, + author = {Callahan, Patrick}, + year = {2026}, + month = {07}, + date = {2026-07}, + doi = {10.5281/zenodo.21263721}, + url = {https://github.com/lmu-osc/tutorial-template} +} diff --git a/styles.css b/styles.css deleted file mode 100644 index 42bf444..0000000 --- a/styles.css +++ /dev/null @@ -1,5 +0,0 @@ -/* css styles */ - -.nav-page .nav-page-text { - font-size: 15pt; -} diff --git a/tutorial_pages/basic-principles.qmd b/tutorial-pages/basic-principles.qmd similarity index 81% rename from tutorial_pages/basic-principles.qmd rename to tutorial-pages/basic-principles.qmd index 6fe48b3..7f7fc3d 100644 --- a/tutorial_pages/basic-principles.qmd +++ b/tutorial-pages/basic-principles.qmd @@ -1,4 +1,7 @@ -# Basic principles +--- +aliases: [tutorial_pages/basic-principles.html] +title: "Basic principles" +--- Basically, a simulation consists of: **1) Generating `n` random numbers from a known distribution.** diff --git a/tutorial_pages/check-alpha.qmd b/tutorial-pages/check-alpha.qmd similarity index 97% rename from tutorial_pages/check-alpha.qmd rename to tutorial-pages/check-alpha.qmd index 40ad5d0..129cc32 100644 --- a/tutorial_pages/check-alpha.qmd +++ b/tutorial-pages/check-alpha.qmd @@ -1,4 +1,7 @@ -# Using simulations to check alpha +--- +aliases: [tutorial_pages/check-alpha.html] +title: "Using simulations to check alpha" +--- In most quantitative sciences, we accept a type I error rate of 0.05, which is often called the `alpha` or significance level. This value tells us the probability of rejecting the null hypothesis (i.e. of finding an effect) given that the null hypothesis is true. diff --git a/tutorial_pages/check-power.qmd b/tutorial-pages/check-power.qmd similarity index 97% rename from tutorial_pages/check-power.qmd rename to tutorial-pages/check-power.qmd index 376d6f2..0a56461 100644 --- a/tutorial_pages/check-power.qmd +++ b/tutorial-pages/check-power.qmd @@ -1,4 +1,7 @@ -# Checking power through simulations +--- +aliases: [tutorial_pages/check-power.html] +title: "Checking power through simulations" +--- The power of a statistical test tells us the probability that the test correctly rejects the null hypothesis. In other words, if we only examine true effects, the power is the proportion of tests that will (correctly) reject the null hypothesis. Often, the power is set to 80%, though, as with `alpha = 0.05`, this is an arbitrary choice. diff --git a/tutorial_pages/definition.qmd b/tutorial-pages/definition.qmd similarity index 89% rename from tutorial_pages/definition.qmd rename to tutorial-pages/definition.qmd index 0571263..bc96418 100644 --- a/tutorial_pages/definition.qmd +++ b/tutorial-pages/definition.qmd @@ -1,4 +1,7 @@ -# Definition +--- +aliases: [tutorial_pages/definition.html] +title: "Definition" +--- **"A computer simulation (or 'sim') is an attempt to model a real-life or hypothetical situation on a computer so that it can be studied to see how the system works. By changing variables in the simulation, predictions may be made about the behavior of the system. It is a tool to virtually investigate the behavior of the system under study."** *Wikipedia* diff --git a/tutorial_pages/download-repo.qmd b/tutorial-pages/download-repo.qmd similarity index 80% rename from tutorial_pages/download-repo.qmd rename to tutorial-pages/download-repo.qmd index 14af993..f302d72 100644 --- a/tutorial_pages/download-repo.qmd +++ b/tutorial-pages/download-repo.qmd @@ -1,4 +1,7 @@ -# Make this repository a local RStudio project +--- +aliases: [tutorial_pages/download-repo.html] +title: "Make this repository a local RStudio project" +--- You have two options to fetch this material: @@ -11,7 +14,7 @@ Fork and clone [this repository](https://github.com/lmu-osc/Introduction-Simulat Please download the GitHub repository that we are using today: https://github.com/lmu-osc/Introduction-Simulations-in-R.
+
+
+
+
+
+
+