为什么 hyperref 包会改变纸张尺寸?

为什么 hyperref 包会改变纸张尺寸?

有一天,我惊讶地发现,我用 LaTeX 制作的一些文档的纸张尺寸是美国信纸尺寸。我不住在美国。

我花了一些时间才发现这是由软件包引起的hyperref。为什么这个软件包会改变纸张大小?我可以阻止它这样做,以便使用系统默认的纸张大小吗?


最小示例:

\documentclass[]{article}

% uncomment this to trigger switch to US letter size
%\usepackage{hyperref}

\begin{document}
x
\end{document}

我使用 进行编译pdflatex


我正在使用 MacTeX 2016。我的系统上的默认尺寸是 A4。tlmgr paper输出:

Current context paper size (from /usr/local/texlive/2016/texmf-config/tex/context/user/cont-sys.tex): a4
Current dvipdfmx paper size (from /usr/local/texlive/2016/texmf-config/dvipdfmx/dvipdfmx.cfg): a4
Current dvips paper size (from /usr/local/texlive/2016/texmf-config/dvips/config/config.ps): a4
Current pdftex paper size (from /usr/local/texlive/2016/texmf-config/tex/generic/config/pdftexconfig.tex): a4
Current psutils paper size (from /usr/local/texlive/2016/texmf-config/psutils/paper.cfg): a4
Current xdvi paper size (from /usr/local/texlive/2016/texmf-config/xdvi/XDvi): a4

我知道我可以使用\documentclass[a4paper]{article}来获得 A4,但我认为当未指定尺寸时系统将只使用默认值

答案1

只是因为输出格式具有默认纸张尺寸并不意味着 LaTeX 知道它。

在“过去”,TeX 与打印/显示 DVI 文件的程序之间没有关于纸张大小的通信。因此,您提到的默认设置的原因在于 — 如果您是美国人,您会为信纸设置页边距等,因此当您打印/显示页面时,显示信纸大小的页面是有意义的。

请记住,LaTeX 旨在根据不同的计算机提供相同的输入来生成相同的文档(尽管软件包会改变其行为)。因此,[a4paper]如果您希望将文档打印或显示在 A4 大小的纸张上,则必须始终声明类选项。

回答您的具体问题,由于 pdfTeX 已经有 TeX 命令来明确设置页面大小并将其传达给输出驱动程序;由于 LaTeX 本身已基本冻结,因此它不使用这些命令,而原始行为是依靠您谈论的默认值来设置页面大小。

但是 hyperref 是一个现代软件包,引用了许多 PDF 内部内容,它所做的一件事就是确保 PDF 的纸张大小与 LaTeX 使用的纸张大小相匹配。

答案2

您可以使用布局包来测试布局。

\documentclass[a4paper]{article}
\usepackage{layout}
\begin{document}
\layout
\end{document}

这给出了信件(不含 A4paper)的值:

在此处输入图片描述

使用 a4paper 的话:

在此处输入图片描述

正如您所见,相当多的值有所不同,最重要的是 paperwidth 和 paperheight。

如果没有 hyperref,pdf 页面宽度将设置为系统默认宽度。就您而言,这意味着 pdf paperwidth 和 tex paperwidth 实际上是不同的。

hyperref(或 graphicx)将强制 pdf 纸张宽度与 tex 纸张宽度同步。

答案3

a4paper一开始不通过就是错误的。

比较一份简单文档的两份打印件\kant。您能看出区别吗?在“没有a4paper”的情况下,字块的位置不对,尺寸也不对。具体来说,左边距大于右边距,底部边距大于应有的边距。

\documentclass[
  a4paper
]{article}
\usepackage{kantlipsum}
\begin{document}
\kant[1-10]
\end{document}

没有a4paper

在此处输入图片描述

a4paper

在此处输入图片描述

相关内容