> For the complete documentation index, see [llms.txt](https://ayakaleaf-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://ayakaleaf-pro.ayaka.space/latex/zh-cn/shen-du-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.4 毫米）和距页面顶部 1 英寸（25.4 毫米）的位置。 `\hoffset` 和 `\voffset` 参数是 *相对的* 相对于该（1 英寸，1 英寸）位置。pdfTeX 的参数略有不同，因为它们是相对于左上角的，即（0 毫米，0 毫米）。例如，如果你设置 `\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 News》（第 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：查看或下载（PDF 格式的）Google 幻灯片

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

![{{{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://ayakaleaf-pro.ayaka.space/latex/zh-cn/shen-du-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.
