现在 MiKTeX 具有以下设置:
我一直将其设置为 A4(A4 尺寸)。但我真的不明白这个设置应该做什么。当我编译
\documentclass{book}
%\usepackage{fullpage}
\begin{document}
Hello World!
\end{document}
我得到了一个 A4 文档,但是取消注释该fullpage
包会将其更改为 lettersize。包文档说它需要适当的 documentclass 选项,但我认为这是通过 MiKTeX 默认设置传递给类的。
那么该设置到底起什么作用?另外,为什么有两个 Letter、A4 和 A6 选项?
答案1
通常,在使用 LaTeX 类(文章、书籍、报告)时,您可以明确指定要使用的纸张尺寸,a4paper 或 letterpaper,例如:
\documentclass[a4paper,11pt]{report}
但是,当您将 DVI 文件转换为 PostScript 时,您又可以选择纸张大小。转换程序 (dvips) 不知道原始 LaTeX 文件中指定的纸张大小,但会采用其自己的默认纸张大小,除非通过以下命令另行指定,例如:
dvips -t a4 mydocdoc.dvi -o mydoc.ps
MikTeX 设置将迎合后者并正确设置纸张大小以简化命令。它将设置保存在C:\MiKTeX\dvips\config\config.ps
由于您使用 MikTeX 菜单和 pdfLaTeX 编译文档,因此程序的此设置不起作用,即您不是在生成 postcript 文件,而是pdf
直接生成。在这种情况下,重要的是您使用的类设置\pdfpageheight
和\pdfpagewidth
。
答案2
传统的 (La)TeX 与实体纸张上的打印没有直接联系。
\documentclass[a4paper]{book}
和
\documentclass{book}% US Letter
设置文本区域的宽度及其与页面左上角 1 英寸处的名义参考点的偏移量。但驱动程序的工作是.dvi
插入命令并可能进一步偏移文本,以便在物理纸张尺寸上进行打印。
pdfTeX 结合了 TeX 和驱动程序的角色,因此具有附加参数\pdfpageheight
和\pdfpagewidth
告诉.pdf
读者以何种大小显示页面边界。但默认情况下,LaTeX 不设置这些参数。(它们由包括geometry
和在内的几个包设置hyperref
)。因此,TeX 发行版中的许多工具都需要默认页面布局(几乎总是 A4 或 Letter),但是出于历史兼容性原因,大多数拥有 A4 打印机的人的默认行为是默认物理纸张尺寸为 A4,但 latex 的默认文本宽度和边距设置为 US Letter。LaTeX 没有提供更改该默认设置的方法,不针对 US Letter 的文档应使用明确选项以保持可移植性。
除了菜单的屏幕截图之外,这适用于任何 TeX 发行版,而不仅仅是 MikTeX(事实上我个人使用 TeX Live,但问题是一样的)。
答案3
首先,你说的不对。使用fullpage
包不会改变\pdfpagewidth/height
或。因此,它不会将纸张大小从 A4 更改为 letter。事实上,它会根据的值\paperwidth/height
计算并设置边距以及。默认情况下,fullpage 会将左右边距设置为 1 英寸。因此文本应该水平居中显示在页面上。\textwidth/height
\paperwidth/height
现在,MiKTeX 的默认页面大小设置显然控制了\pdfpagewidth/height
pdflatex 中的 值。这些控制写入 PDF 的页面大小。也许,它也会影响 dvips,但我没有测试过。此外,MiKTeX 不会更改 的默认值\paperwidth/height
,这意味着 documentclass 或 fullpage.sty 等包将配置您的边距,认为页面具有信函格式,而 PDF 实际上可能有 A4 页面。结果是您的文档看起来很糟糕,非常糟糕,因为文本在页面上根本没有水平居中。
当 MiKTeX 2.9 设置为 A4 默认页面大小时,看一下以下代码生成的 PDF:
\documentclass{book}
\usepackage{printlen}
\usepackage{blindtext}
\usepackage{fullpage}
\begin{document}
\noindent\blindtext
\uselengthunit{cm}
\noindent
\printlength{\paperwidth}\\
\printlength{\paperheight}\\
\printlength{\pdfpagewidth}\\
\printlength{\pdfpageheight}
\end{document}
查看 PDF,左侧可见边距明显比右侧边距宽。同时观察值有多么不一致。
我的结论是,MiKTeX 已损坏,并且默认页面大小设置应始终设置为信件大小,因为 MiKTeX 程序员没有费心修补 documentclasses 和其他包,因此 \paperwidth/height 将被设置为 A4(或其他值),而不仅仅是 \pdfpagewidth/height。
显而易见的解决方法是使用几何包或 koma-script 的 pagesize 选项使 \pdfpagewidth/height 和 \paperwidth/height 的值保持一致。