# 进阶用法
## include，包含文件内容

使用以下语法,您可以将文件包含到您的书中:
```
{{#include file.rs}}
```
文件的路径必须是**当前**源文件的**相对**路径.

通常,此命令用于包含代码段和示例。在这种情况下, 可指定文件的包含部分,例如其中只包含示例的相关行.

mdBook 会将include文件解释成markdown。自从include命令常用来插入代码片段和示例，你会习惯使用 
``
\```
`` 
包裹这些命令，显示（include）文件的内容，而不是去解释它们。

````
```
{{#include file.rs}}
```
````

## 只 Include 一个文件的部分内容

常见要求是你只要文件的部分内容 e.g. 以行编号作为例子。我们对部分内容插入，支持了几种模式:

```hbs
\{{#include file.rs:2}}
\{{#include file.rs::10}}
\{{#include file.rs:2:}}
\{{#include file.rs:2:10}}
```

我们支持四种不同的决定`file.rs`部分模式:

- 第一个命令仅包含文件中的第二行.
- 第二个命令包含直到第 10 行的所有行。即，从 11 到文件末尾的行被省略.
- 第三个命令包含第 2 行的所有行，即省略第一行.
- 最后一个命令包含摘录`file.rs`由 2 到 10 行组成.

为了防止文件的修改（行数的变化），导致图书呈现内容的变化， 你还可以使用锚点(anchor)，选择一个特定的部分，
行数就不再相关。
一个 anchor 是一对匹配的行。 匹配的内容正是正则式，如开头的行 anchor 必须匹配 `ANCHOR:\s*[\w_-]+` and similarly 结尾行则是 `ANCHOR_END:\s*[\w_-]+`。只要内容匹配了，注释的写法格式倒是没有限制。

考虑下面 要 include 的文件:

```rs
/* ANCHOR: all */

// ANCHOR: component
struct Paddle {
    hello: f32,
}
// ANCHOR_END: component

////////// ANCHOR: system
impl System for MySystem { ... }
////////// ANCHOR_END: system

/* ANCHOR_END: all */
```

给个示例，你要做的:

````hbs
Here is a component: ```rust,no_run,noplayground
\{{#include file.rs:component}} ``` Here is a system:
```rust,no_run,noplayground
\{{#include file.rs:system}} ``` This is the full file.
```rust,no_run,noplayground
\{{#include file.rs:all}} ```
````

在已 include anchor 内的，若还包含 anchor 匹配模式，则会被忽略。