> 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/zh-cn/shen-ru-wen-zhang/04-a-visual-guide-to-latex-s-page-layout-parameters.md).

# LaTeX 页面布局参数可视化指南

## 更新：2021 年 9 月

在首次发布约 4 年后，本文已被编辑、改名并重新发布，以缩小篇幅并重新聚焦所涵盖主题的范围。原文中包含了一个基于 LuaTeX 的 LaTeX 模板，该模板依赖于旧版 Overleaf V1 功能。该模板现已过时，并且不再可用。

**注意**：如果你不需要，或者不想，了解 LaTeX 页面布局的更细节内容，Overleaf 文章 [页面大小和页边距](/latex/zh-cn/ge-shi-hua/07-page-size-and-margins.md) 解释了 [`geometry` 宏包](https://ctan.org/pkg/geometry?lang=en) ，而且可能更值得关注。

## 引言

你是否曾经为使用 LaTeX 配置书籍版式而苦恼——设置纸张尺寸、书页尺寸（裁切尺寸）和页边距？这可能很棘手，尽管有许多宏包可以帮助完成这项任务——其中包括出色的 `geometry` 宏包。（La）TeX 使用将近十个参数来完整指定那些左右页边距不同的出版物的页面布局：

* `\hoffset`, `\voffset`, `\oddsidemargin`, `\topmargin`, `\headheight`, `\headsep`, `\\textheight`, `\textwidth`, `\marginparsep`, `\marginparwidth`, `\footskip`

通常，这些参数通过宏包或模板提供的命令来设置——例如书籍出版商分发的那些模板。不过，有时你可能想了解“幕后”到底发生了什么——也许你需要对想创建的某种文档拥有更高程度的控制。

在这篇文章中，我们探讨 LaTeX 的页面模型与印刷和设计领域中常用的传统模型之间的关系。借助一组 [Google 幻灯片](#google-slides-with-animations)，其中包含详细的页面布局示意图，我们将一步一步展示如何构建一些非常简单的方程，以建立 LaTeX 布局模型与书籍设计师或按需印刷公司可能给出的典型规范之间的联系。利用这些方程，如果你愿意，可以直接计算 LaTeX 参数值，以实现你偏好的书籍版式。

### 关于 pdfTeX 和 LuaTeX/LuaHBTeX 的简短说明

请注意，除了上面列出的 `\hoffset` 和 `\voffset` 参数之外，pdfTeX 还使用参数 `\pdfhorigin` 和 `\pdfvorigin`。传统上，TeX 引擎输出 `.dvi` 文件，这些文件随后由软件转换为 PostScript 或 PDF，而该软件假定页面原点位于距离页面左边 1 英寸（25.4mm）和距离页面顶部 1 英寸（25.4mm）的地方。 `\hoffset` 和 `\voffset` 这些参数的值是 *相对的* 相对于那个（1 英寸，1 英寸）位置的。pdfTeX 的参数稍有不同，因为它们是相对于左上角，即（0mm，0mm）来定义的。因此，例如，如果你设置 `\pdfhorigin=30mm` 则等价于设置 `\hoffset` 更改为 `30–25.4`=`4.6mm` 因为 `\hoffset` 是相对于一个已经在 `25.4mm` 处、距离页面左边的位置。类似地， `\hoffset` 值为 `0mm` 等价于 `\pdfhorigin=25.4mm`。在下面的讨论/图示中，我们将使用这些参数 `\hoffset` 和 `\voffset`.

#### LuaTeX/LuaHBTeX

LuaTeX/LuaHBTeX 也 *间接地* 支持 `\pdfhorigin` 和 `\pdfvorigin` ，但为了与 pdfTeX 兼容，这些命令必须定义如下（参见 [《LuaTeX 参考手册》](https://www.pragma-ade.com/general/manuals/luatex.pdf)):

```latex
\edef\pdfhorigin{\pdfvariable horigin}
\edef\pdfvorigin{\pdfvariable vorigin}
```

## 我们的目标是什么？

本文的主题以及我们提供这些资源的目的，基于以下目标：

1. 我们希望实现由例如不使用或不支持 LaTeX 的书籍设计师或出版社提供的版式规范——或者，也许我们需要遵循按需印刷公司提供的规范。
2. 我们希望使用设计师规范中包含的传统书籍测量值（纸张尺寸、裁切尺寸和页边距），并将它们转换为 LaTeX 能理解并可用于复现设计师版式的参数和值。
3. 我们希望书页在所选纸张尺寸上水平和垂直居中——也就是说，居中于 LaTeX 生成的 PDF 页面区域内。我们还希望选择任意纸张尺寸，而不受少数标准选项（A4、US Letter 等）的限制。

### 快速提醒：如何设置纸张尺寸？

LuaTeX、XeTeX 和 pdfTeX 提供了两个命令，让你可以控制它们生成的 PDF 文档的“纸张尺寸”：

* `\pdfpagewidth`
* `\pdfpageheight`

既然知道这些命令代表纸张尺寸，我们现在可以画出一张图，来说明我们想要实现的目标：

![{{{alt}}}](/files/022cea6986f01954e28e2eabab20d63b93149510)

请注意，ΔX 和 ΔY 是让书页在纸张区域中居中的所需值——它们在 [Google 幻灯片](#google-slides-with-animations)中有讨论。从上面的图中你可以看到：

* ΔX=½(\pdfpagewidth − book-page-width)
* ΔY=½(\pdfpageheight − book-page-height)

上面的图示也包含在 [Google 幻灯片](#google-slides-with-animations) 中，并被用作推导页面布局方程的起点。

#### 补充说明：LuaTeX

LuaTeX 不再 *直接* 支持 `\pdfpagewidth` 或 `\pdfpageheight` ，而是使用两个名为 `\pagewidth` 和 `\pageheight`的新原语。通过 `\let\pdfpagewidth\pagewidth` 和 `\let\pdfpageheight\pageheight`可以实现向后兼容。感兴趣的读者可在 [《LaTeX 新闻》（第 24 期，2016 年 2 月）](https://www.latex-project.org/news/latex2e-news/ltnews24.pdf) 以及，当然还有 [官方 LuaTeX 文档](http://www.luatex.org/documentation.html).

## 本文中的资源

在 Overleaf，我们喜欢尝试新想法，因此在这篇文章中加入了一系列我们希望会有用的资源：

* **两套** [**Google 幻灯片**](#google-slides-with-animations)：这些幻灯片组包含相同内容，但一套带动画，另一套不带动画（有些人更喜欢查看不包含任何动画的幻灯片）。你还可以以 [PDF 格式](https://www.filepicker.io/api/file/7Okr2kx6QAWPo3w7mt6K)下载。幻灯片简要介绍了书页版式的基础知识，并探讨了 LaTeX 的页面模型与传统印刷和设计中所用模型之间的关系。最后几张幻灯片展示了如何得出简单方程，这些方程可用于将一组传统测量值（页面宽度/高度和页边距）转换为等效的 LaTeX 参数值，从而在 LaTeX 中重现你的书籍版式。
* **页面布局图**： [Google 幻灯片](#google-slides-with-animations) 包含详细的页面布局图，这些图用于构建一些简单方程，以计算各种 LaTeX 参数。如果你想更详细地研究这些图示，我们提供了 [PDF 版本](#download-page-layout-diagrams) 供你下载。

### 如何使用本文资源

本文的读者在使用 LaTeX 方面的经验可能各不相同，因此我们认为最好提供一系列资源供读者选择——根据你的个人经验、兴趣或偏好。我们希望这些资源对你有用，并满足 Overleaf 的 LaTeX 社区的需求和兴趣。

这些资源没有规定的使用顺序，但我们的建议如下：

1. 查看 [Google 幻灯片](#google-slides-with-animations);
2. （可选）：下载并研究 [页面布局图](#download-page-layout-diagrams);

#### 步骤 1：查看或下载 Google 幻灯片（PDF 格式）

最后一张幻灯片（如下所示）总结了演示过程中形成的方程。

![{{{alt}}}](/files/d9c3b1b07203bd49e49bb74cb1e1b55c9b0af5cd)

为了方便读者，我们提供三种查看幻灯片的方式：

1. 幻灯片 [带动画](#google-slides-with-animations);
2. 幻灯片 [不带动画](#google-slides-without-animations);
3. 幻灯片（ [PDF 格式](https://www.filepicker.io/api/file/7Okr2kx6QAWPo3w7mt6K) 供离线观看或打印。

#### 步骤 2（可选）：下载并研究页面布局图

如果你想更详细地探索页面布局图，在 [本文末尾](#download-page-layout-diagrams) 有一个链接，可下载一个 PDF 文件，其中包含所含图示的双页跨页（对页）版本，位于 [Google 幻灯片](#google-slides-with-animations).

### 关于页面布局参数和方程的说明

如果你查看 [Google 幻灯片](#google-slides-with-animations) 中给出的方程，你可能会注意到它们包含许多变量；因此，根据你想计算哪些 LaTeX 参数值以及哪些值想自己设定，可以有多种使用这些方程的方法。让我们来看一下 [Google 幻灯片](#google-slides-with-animations):

![{{{alt}}}](/files/75d84bebe8ef515f78a675e873e58fbcd8713c68)

显然，你需要决定哪些 LaTeX 参数值要计算，哪些值要由你作为起点提供。可以按如下方式进行：

1. 设置 `\hoffset` 和 `\voffset` 更改为 `0mm` （配合 `\pdfhorigin=1in` 和 `\pdfvorigin=1in`，如有必要）
2. 使用以下会影响书页的 LaTeX 参数值 *宽度*:

* `\marginparsep`
* `\marginparwidth`

4. 为以下会影响书页的 LaTeX 参数设定你偏好的值 *高度*:

* `\headheight`
* `\headsep`
* `\footskip`

6. 为你偏好的纸张尺寸以及所需的书页宽度和高度，再加上你想使用的四个书页边距值设置数值。
7. 计算以下 LaTeX 值，以实现你的书籍版式（以你选择的纸张尺寸居中）：

* `\evensidemargin`, `\oddsidemargin`, `\textwidth`, `\\textheight`和 `\topmargin`

## 文章资源

这里列出我们准备的一些资源，帮助你更好地理解 LaTeX 页面布局参数。 [Google 幻灯片](#google-slides-with-animations) 提供这些简单方程的细节；如果你愿意，可以直接用它们来计算适合任何文档需要的参数值。

### Google 幻灯片：带动画

{% embed url="<https://docs.google.com/presentation/d/e/2PACX-1vSTZiCWqckmPGdqisRh9wTflZrmWdofwpReQAkSbuW2tTBothzSy86TzwMUtfomKtqSbVwNypifdUgY/embed?start=false&loop=false&delayms=3000>" %}

### Google 幻灯片：不带动画

{% embed url="<https://docs.google.com/presentation/d/e/2PACX-1vQ_gH_Wg0Q0HdhcuyGXPplPsAUkaYbi_at_tnFLKk8q_woe22eFNPjehAF_PLvEgEV_33-qNskIYvlL/embed?start=false&loop=false&delayms=3000>" %}

### Google 幻灯片：已转换为 PDF

如果你更愿意将幻灯片作为 PDF 文档查看，或者希望将它们打印出来，你可以下载为 [PDF 格式](https://www.filepicker.io/api/file/7Okr2kx6QAWPo3w7mt6K).

### 下载页面布局图

如果你想更详细地研究页面布局图，这里有一个双页跨页（即对页）的 [PDF 格式](https://www.filepicker.io/api/file/X2O1aJM1Rca68mmYm4PT).

## 结语

我们希望本文对你有帮助，并为使用 LaTeX 探索页面布局提供了一些有用的背景信息。像往常一样，我们很高兴听到读者的反馈，所以请务必 [联系我们](https://www.overleaf.com/contact) 留下你的评论和反馈。

愉快地（La）TeX 吧！


---

# 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/zh-cn/shen-ru-wen-zhang/04-a-visual-guide-to-latex-s-page-layout-parameters.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.
