我如何以手动方式获得精确的水平边距?

我如何以手动方式获得精确的水平边距?

似乎我得到的左右边距值不精确。是什么魔法让geometry我得到不精确的值?

我预期的纸张尺寸是 A4(但正如评论和回答中所讨论的那样,情况并非完全如此)。我测量了左侧 18 毫米和右侧 16 毫米。打印时没有缩放。<— 只是为了澄清这一点:我将 pdf 打印到一张实体纸上,并使用了一把尺子和我的近视眼。

\documentclass{article}
\usepackage{fontspec}% xelatex
\usepackage{lipsum}
\setlength{\textwidth}{\dimexpr \paperwidth - 20mm * 2 \relax}
\setlength{\oddsidemargin}{\dimexpr (\paperwidth - \textwidth)/2 - 1 in\relax}
\begin{document}
\lipsum

\lipsum
\end{document}

答案1

让我们看看发生了什么。

默认情况下,LaTeX 将纸张大小设置为美国信纸。如果我只添加您的示例,则在之后\begin{document}

\showthe\paperwidth
\showthe\textwidth
\showthe\oddsidemargin

控制台显示

> 614.295pt.
l.8 \showthe\paperwidth

? 
> 500.484pt.
l.9 \showthe\textwidth

? 
> -15.36449pt.
l.10 \showthe\oddsidemargin

? 

这与我们通过以下方式获得的值完全相同

\usepackage[left=20mm,right=20mm]{geometry}

但是,xdvipdfmx根据您的评论,设置为输出到 A4 纸。如果我打开 PDF 文件并检查其属性,我会得到

Creator:         XeTeX output 2018.01.09:1918
Producer:       xdvipdfmx (20170318)
CreationDate:   Tue Jan  9 19:18:31 2018
Tagged:         no
Form:           none
Pages:          2
Encrypted:      no
Page size:      595.28 x 841.89 pts (A4) (rotated 0 degrees)
File size:      13853 bytes
Optimized:      no
PDF version:    1.5

变成

Creator:         XeTeX output 2018.01.09:1923
Producer:       xdvipdfmx (20170318)
CreationDate:   Tue Jan  9 19:23:09 2018
Tagged:         no
Form:           none
Pages:          2
Encrypted:      no
Page size:      612 x 792 pts (letter) (rotated 0 degrees)
File size:      13845 bytes
Optimized:      no
PDF version:    1.5

何时geometry加载:这是因为geometry通知xdvipdfmx输出纸张尺寸。

根据我的测量,“非geometry”版本的左边距为 20 毫米,右边距为 14 毫米。612 – 595.28(Postscript 点)是多少?是 5.9 毫米。

如果你这样做

\documentclass[a4paper]{article}
\usepackage{fontspec}
\usepackage{lipsum}
\setlength{\textwidth}{\dimexpr \paperwidth - 20mm * 2 \relax}
\setlength{\oddsidemargin}{\dimexpr (\paperwidth - \textwidth)/2 - 1 in\relax}
\begin{document}
\lipsum

\lipsum
\end{document}

您将获得所需的利润。

相关内容