--- | |
title: "About Quarto" | |
--- | |
[Quarto](https://quarto.org/) is a Markdown-based documentation system that lets you write documents in Markdown or Jupyter Notebooks, and render them to a variety of formats including HTML, PDF, PowerPoint, and more. | |
You can also use Quarto to write [books](https://quarto.org/docs/books/), create [dashboards](https://quarto.org/docs/dashboards/), and embed web applications with [Observable](https://quarto.org/docs/interactive/ojs/) and [Shinylive](https://quarto.org/docs/blog/posts/2022-10-25-shinylive-extension/). | |
## Getting started with Quarto | |
Once you've created the space, click on the `Files` tab in the top right to take a look at the files which make up this Space. | |
There are a couple of important files which you should pay attention to: | |
- `Dockerfile`: This contains the system setup to build and serve the Quarto site on Hugging Face. You probably won't need to change this file that | |
often unless you need to add additional system dependencies or modify the Quarto version. | |
- `requirements.txt`: This is where you should include any Python dependencies which you need for your website. | |
These are installed when the Dockerfile builds. | |
- The `src` directory contains the source files for the Quarto website. You can include Jupyter notebooks or markdown (`.qmd` or `.md`) files. | |
- `src/_quarto.yml` defines the navigation for your website. If you want to add new pages or reorganize the existing ones, you'll need to change this file. | |
## Recommended Workflow | |
1. **Clone the space locally** | |
2. **Install Quarto**: In order to render your Quarto site without Docker, we recommend installing Quarto by following the instructions on the [official Quarto website](https://quarto.org/docs/get-started/). | |
3. **Install Quarto VS Code extension**: The [Quarto VS Code Extension](https://quarto.org/docs/tools/vscode.html) includes a number of productivity tools including YAML Autocomplete, a preview button, and a visual editor. Quarto works great with VS Code, but the extension does make it easier to get the most out of Quarto. | |
4. **Edit the site**: The website files are contained in the `src` directory, and the site navigation is defined in `src/_quarto.yml`. Try editing these files and either clicking the "Preview" button in VS Code, or calling `quarto preview src` from the command line. | |
5. **Learn more about Quarto**: You can do a lot of things with Quarto, and they are all documented on the [Quarto Website](https://quarto.org/guide/). In particular, you may be interested in: | |
- All about building [websites](https://quarto.org/docs/websites/) | |
- Building Static [Dashboards](https://quarto.org/docs/dashboards/) | |
- How to write [books](https://quarto.org/docs/books/index.html) and [manuscripts](https://quarto.org/docs/manuscripts/) | |
- Reproducible [presentations](https://quarto.org/docs/presentations/) | |
- Including [Observable](https://quarto.org/docs/interactive/ojs/) or [Shiny](https://quarto.org/docs/interactive/shiny/) applications in your Quarto site | |
::: {.callout-warning} | |
It can take a couple of minutes for the Space to deploy to Hugging Face after the Docker build process completes. Two see your changes you will need to do two things: | |
1) Wait for your space's status to go from 'Building' to 'Running'(this is visible in the status bar above the Space) | |
2) Force-reload the web page by holding Shift and hitting the reload button in your browser. | |
::: | |
## Code Execution | |
One of the main virtues of Quarto is that it lets you combine code and text in a single document. | |
By default, if you include a code chunk in your document, Quarto will execute that code and include the output in the rendered document. | |
This is great for reproducibility and for creating documents that are always up-to-date. | |
For example you can include code which generates a plot like this: | |
```{python} | |
import seaborn as sns | |
import matplotlib.pyplot as plt | |
# Sample data | |
tips = sns.load_dataset("tips") | |
# Create a seaborn plot | |
sns.set_style("whitegrid") | |
g = sns.lmplot(x="total_bill", y="tip", data=tips, aspect=2) | |
g = g.set_axis_labels("Total bill (USD)", "Tip").set(xlim=(0, 60), ylim=(0, 12)) | |
plt.title("Tip by Total Bill") | |
plt.show() | |
``` | |
When the website is built the Python code will run and the output will be included in the document. | |
You can also include [inline code](https://quarto.org/docs/computations/inline-code.html) to insert computed values into text. | |
For example we can include the maximum tip value in the `tips` data frame like this: ``{python} tips['tip'].max()``. | |
You can control [code execution](https://quarto.org/docs/computations/execution-options.html), or [freeze code output](https://quarto.org/docs/projects/code-execution.html#freeze) to capture the output of long running computations. | |
## About the Open Source AI Cookbook | |
To provide a realistic example of how Quarto can help you organize long-form documentation, | |
we've implemented the Hugging Face [Open-Source AI Cookbook](https://github.com/huggingface/cookbook) in Quarto. | |
The Open-Source AI Cookbook is a collection of notebooks illustrating practical aspects of building AI applications and solving various machine learning tasks using open-source tools and models. | |
You can read more about it, or contribute your own Notebook on the [Github Repo](https://github.com/huggingface/cookbook) | |