A submission repository has a number of expected configuration files, content files and folders dependent on the authoring toolchain used, and if based on a template repository, will also contain GitHub Actions workflows.
Let’s review and get familiar with the various elements.
Toolchain specific elements¶
MyST Markdown
Quarto
MyST Markdown specific elements
myst.yml
- The main MyST configuration file -- this configures the MyST project and web-based paper and is the place to add frontmatter including all scholarly metadata, like the authors and their ORCIDs and affiliations, and the title and abstract.
_toc.yml
- The table of contents definition file -- this allows you to identify the root article (in this case,
article.md
) and control the order that items appear in the table of contents. It is also possible to group items, but groups may not be displayed in all web-based themes. For help on customizing this, see the Table of Contents in the MyST documentation.
Quarto specific elements
_quarto.yml
- The main Quarto project configuration file.
_extensions
- Project specific Quarto extensions - in this case providing the Quarto LaTeX template for exporting the project to a PDF in AGU journal format.
apt.txt
- Part of the reproducible environment configuration - installs
zip
andjq
system dependencies. postBuild
- Part of the reproducible environment configuration - installs
quarto
andtinytex
as system dependencies.
Common elements¶
The following elements are present independent of the authoring toolchain used in your submission.
.github/workflows/*.yml
- A GitHub Actions deployment workflow that will attempt to build your submission on each push to your
main
branch. Learn more in Pushing to GitHub. Normally, this file should not be changed. environment.yml
- The template repositories use a standard
conda
environment file for loading python dependencies. If you are usingpython
andconda
then we describe updating this file in Environment otherwise any set of Reproducible Execution Environment Specification (REES) files can be used to configure your repository as needed. REES ensures that anybinderhub
instance can provide a properly configured Jupyter server with required dependencies to reviewers and readers. (Note: the Quarto templates already include additional REES filesapt.txt
andpostBuild
), data/
- You may want to provide data files directly in your submission repository if they are needed for computations. These may be subsets or abstractions of the full data sets needed for generating figures, for example. Regardless, original data should be published separately in a suitable data repository. These and other data citations should be included in the reference section of the Notebook. For more on this topic, see Best Practices.
.gitignore
- A standard git ignore file allowing you to exclude local files from your submission. This is useful if your scripts or notebooks generate additional temporary files when they are run, for example downloaded data files or temporary result files. Customize this file to fit your needs by adding ignore patters.
Content¶
The image below shows the sample content and toolchain specific configuration files included in the repository.
MyST Markdown
Quarto
With both toolchains:
references.bib
- References are provided in standard
bibtex
in a single file at the root of the repository. If you intend to rename this file, refer to your authoring tool’s documentation. images/
,notebooks/
- You are free to organize images, notebooks, scripts and other data files within the repository as needed and reference these as normal from markdown or
ipynb
files, or otherwise use them as supported by the authoring tool that you are using. article.(md/qmd)
- This markdown file at the root of the repository is the main manuscript that references and links to the other notebooks in the repository. The filename is not fixed, but if changed, the configuration files for the authoring tool should be updated appropriately.
Next Steps¶
Now that you are familiar with the contents of your repository, let’s look at the authoring environment available for each toolchain and understand how to work locally with your content.