> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/knowledge-base/122-preamble-organization.md).

# Preamble Organization

## Introduction

## Generic ideas

The basic idea is to organize the preamble in a granural way: Start from the most generic packages and settings, and continue ordering the necessary packages and settings to the more project-specific ones, ending with user macros. This has three main reasons:

1. This works for dependencies; user macros in general depend on packages loaded. Mathematical and other packages can depend on fonts loaded.
2. The most often changing things go last, closest to the document's body.
3. This helps keep the preamble well organized and things easy to find and tweak.

Unfortunately, there are exceptions to this as there are packages whose loading order does matter, see [#Package loading order exceptions](#package-loading-order-exceptions) for the list.

## Some examples

## Placing the preamble into a separate file

It's possible to place the preamble into a separate file. There are three basic ways:

* Move the premable a standard `.tex` and use `\input{...}`.
* Put everything into a user package and use `\usepackage{...}`.
* Put everything into a user class and use `\documentclass{...}`.

Either way, it is always prefered to keep `\documentclass{...}` in the main file and keep the main file in the top folder of the project.

## Package loading order exceptions

For some package, the loading order is important; therefore these can't follow the generic ideas provided before.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/knowledge-base/122-preamble-organization.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
