我正在尝试通过软件包为我的文档设置自定义纸张大小geometry
。但是,每当我添加 [papersize={x,y}] 选项时,我都会得到错误的输出。文档编译成功(使用 XeLaTeX),但页面大小没有改变,而且边距看起来乱糟糟的(文本超出了底部边距)。
这不会发生在新文档上,所以我怀疑几何包与我正在使用的其他包之一发生冲突;但我不知道是哪一个。
这是我的代码:
\documentclass[twoside,11pt]{memoir}
%set page dimensions
\usepackage[
xetex,
outer=1.84in,inner=0.92in,
top=0.92in, bottom=2.1in,
papersize={8.27in,13.39in}]{geometry}
%Set English lang.
\usepackage{polyglossia}
\setmainlanguage{english}
%enable emphasis with color instead of italics
\usepackage{xcolor}
\definecolor{ecol}{gray}{0.15}
\renewcommand\emph[1]{\textcolor{ecol}{\textbf{#1}}}
%define typeface
\usepackage{fontspec}[ligatures=tex]
\setmainfont{Baskerville}[SmallCapsFont = Bodoni 72 Smallcaps]%
\usepackage{microtype}
%figures and graphics
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{wrapfig}
\usepackage{caption}
%layout debugging
\usepackage{layout}
%for referencing labels
\usepackage[colorlinks=true, anchorcolor=red]{hyperref}
\usepackage{lipsum}
\begin{document}
\lipsum[1-20]
\end{document}
对于导致该问题的原因您有什么想法吗?
答案1
通过修剪示例并向 hyperref 添加选项后,人们发现当使用选项setpagesize=false
时会发生一些可疑的事情。colorlinks
\documentclass[twoside,11pt]{memoir}
%\documentclass{article}
%set page dimensions
\usepackage[
%xetex,
outer=1.84in,inner=0.92in,
top=0.92in, bottom=2.1in,
papersize={8.27in,13.39in}
]{geometry}
%Set English lang.
%\usepackage{polyglossia}
%\setmainlanguage{english}
%enable emphasis with color instead of italics
%\usepackage{xcolor}
%\definecolor{ecol}{gray}{0.15}
%\renewcommand\emph[1]{\textcolor{ecol}{\textbf{#1}}}
%define typeface
%\usepackage{fontspec}[ligatures=tex]
%\setmainfont{Baskerville}[SmallCapsFont = Bodoni 72 Smallcaps]%
%\usepackage{microtype}
%figures and graphics
% \usepackage{graphicx}
% \usepackage{subcaption}
% \usepackage{wrapfig}
% \usepackage{caption}
%layout debugging
%\usepackage{layout}
%for referencing labels
\usepackage[setpagesize=false,
colorlinks=true,
%anchorcolor=red
]{hyperref}
\usepackage{lipsum}
\begin{document}
\lipsum[1-20]
\end{document}
注释掉colorlinks=true
后,得到这个
但有了colorlinks=true
主动,就会得到这个
我现在不知道是什么原因造成的。我还用用户(不是 Lipsum)段落进行了测试,只是为了确保hyperref
和之间没有一些奇怪的交互lipsum
。这在正常的非 Lipsum 生成的文本中也发生过同样的情况。
由于您正在使用memoir
类,我假设您已经阅读了它的文档,因此也许尝试使用它自己的界面进行页面布局。(未经测试)
修剪后的示例也可以用 pdflatex 编译,结果相同。它不是 xetex 特有的。不要将 xetex 选项传递给 geometry,它知道这一点。
你可能想向memoir
维护者报告
\documentclass{memoir}
\usepackage[papersize={10cm,25cm}]{geometry}
\usepackage[setpagesize=false,
colorlinks=true
]{hyperref}
\begin{document}
Hello
\end{document}
显示问题。注释掉 即可解决colorlinks=true
。使用article
class 或book
class 则没有问题。
\documentclass{book}
\usepackage[papersize={10cm,25cm}]{geometry}
\usepackage[setpagesize=false,
colorlinks=true
]{hyperref}
\begin{document}
Hello
\end{document}
当使用 latex 检查 dvi 时,人们在案例colorlinks=true
(回忆录类,10cm 和 25cm)中发现 dvi 中的以下内容
papersize=614.295pt,794.96999pt papersize=284.52756pt,711.3189pt papersize=614.295pt,794.96999pt
我删除了一些非 ASCII 字节。
无论colorlinks=false
有没有选择,人们都会在 dvi 中的相同位置看到类似的东西:
papersize=614.295pt,794.96999pt papersize=284.52756pt,711.3189pt
似乎 的colorlinks=true
选项hyperref
会触发另一个特殊的页面设置,但 不会发生这种memoir
情况article
。
似乎只需加载即可解决问题 geometry
后 hyperref
. (然后setpagesize=false
就不再需要了)
但我没有花时间去调试(现有)问题的根本原因memoir
++ hyperref
。geometry
正如@UlrikeFischer 所解释的那样(参见https://tex.stackexchange.com/a/384952/4686以及她的评论),并加载colorlinks=true
该color
软件包,从而触发使用图形提供的驱动程序。
驾驶员现在已经memoir
意识到并使用了\stockwidth
这些长度,\stockheight
但geometry
没有修改它们。
(使用 pdftex 驱动程序,在文档开始时执行)
\ifdim\stockwidth>0pt\relax
\ifdim\stockheight>0pt\relax
\pdfpagewidth=\stockwidth
\pdfpageheight=\stockheight
\fi
\fi
因此,hyperref
在循环之外,以下 MWE 也会触发该问题:
\documentclass{memoir}
\usepackage[papersize={10cm,10cm}]{geometry}
\usepackage{graphicx}% or color package
\listfiles
\begin{document}
Hello
\end{document}
选项无效,因为它不影响之后加载图形提供的驱动程序的setpagesize=false
效果。hyperref
geometry
正如我上面推荐的那样,方法是使用memoir
用户界面,(这也是@daleif 和@UlrikeFischer 的建议,Ulrike 在评论中说:
我的回答中的建议是明确设置
\setstocksize{<width>}{<height>}
。但 David 希望更新几何图形,以便将来不再需要这样做。
)
或geometry
最后加载或color
先加载并使用(setpagesize=false
如果 hyperref 是最后一个)。
\documentclass{memoir}
\usepackage{color}
\usepackage[papersize={10cm,10cm}]{geometry}
\usepackage[setpagesize=false,
colorlinks=true]{hyperref}
\listfiles
\begin{document}
Hello
\end{document}
有正确的输出现在setpagesize=false
有效果,而且是需要的。因此,您可以通过提前加载来解决问题color
。或者更好的是,使用memoir
自己的界面来调整页面尺寸。
答案2
geometry
我可能会说这是一个+ hyperref
vs的问题memoir
,而不是直接的memoir
问题。
如果你使用回忆录布局界面而不是geometry
\setstocksize{13.39in}{8.27in}
\settrimmedsize{\stockheight}{\stockwidth}{*}
\setlrmarginsandblock{0.92in}{1.84in}{*}
\setulmarginsandblock{0.92in}{2.1in}{*}
\checkandfixthelayout[fixed]
请参阅memoir
手册以了解的解释fixed
,我可能会使用nearest
它。
正如对 @jfbu 的评论一样
\documentclass{memoir}
\usepackage[
papersize={10cm,20cm},
]{geometry}
\usepackage[
setpagesize=false
]{hyperref}
\usepackage{lipsum}
\begin{document}
\lipsum[1-20]
\end{document}
给出 (pdfinfo)
Creator: LaTeX with hyperref
Producer: pdfTeX-1.40.19
CreationDate: Thu Oct 18 14:37:39 2018
ModDate: Thu Oct 18 14:37:39 2018
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 9
Encrypted: no
Page size: 283.465 x 566.929 pts
Page rot: 0
File size: 33104 bytes
Optimized: no
PDF version: 1.5
图片(来自 Evince)
和
\documentclass{memoir}
\usepackage[
papersize={10cm,20cm},
]{geometry}
\usepackage[
%setpagesize=false
]{hyperref}
\usepackage{lipsum}
\begin{document}
\lipsum[1-20]
\end{document}
Creator: LaTeX with hyperref
Producer: pdfTeX-1.40.19
CreationDate: Thu Oct 18 14:40:31 2018
ModDate: Thu Oct 18 14:40:31 2018
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 9
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 33115 bytes
Optimized: no
PDF version: 1.5
图像:
所有内容均使用 TeXLive 2018,已全面更新