其他几点说明:

其他几点说明:

编辑:看起来我并没有清楚我为什么要这样做。

我想设计一种方法,让我可以有一个全宽的章节介绍页,这样我就可以填满只设计在该页面上的信息...也许像图片一样,在图片下方有一个简介,介绍一些关于章节主题和该图片之间关系的背景信息...就像许多教科书所做的那样。实际内容只会从下一页开始,但那些页面会有不同的边距,大概是为了留出空间来放边距注释。

我知道我可以使用changepage来临时更改页面上的段落或块的边距,但我希望一次更改整个页面,然后在下一页更改回来。文本段落中间的边距不会更改。


\documentclass[twoside]{report}

\usepackage{etoolbox}
\usepackage{lipsum}
\usepackage{geometry}

\preto{\chapter}{\newgeometry{left=.75in,right=.75in}}
\appto{\chapter}{\restoregeometry} %% <--- This line doesn't work.

\begin{document}
  \lipsum
  \chapter{Test}
  \lipsum[1-15]
\end{document}

使用 etoolbox,我可以使用命令\geometry来运行,但是不起作用...是因为它没有像我想象的那样工作吗?\chapter\preto\appto{\chapter}{\restoregeometry}

答案1

\appto不是解决问题的办法。

你可能会认为你可以这样做

\savegeometry{mysavedgeometry}
\usepackage{afterpage}
\newcommand{\mychapter}[1]{%
    \newgeometry{margin=0.5in}%
    \chapter{#1}% 
    \afterpage{\loadgeometry{mysavedgeometry}}}

但这不起作用,因为参数仅在内部进行本地设置\afterpage

但故事还没完。您可以进入并以全局方式手动更改参数。这有点麻烦,但您可以做到。

\documentclass{report}
\usepackage[margin=1in]{geometry}
\usepackage{lipsum}
\usepackage{afterpage}
\newcommand{\mychapter}[1]{%
    \newgeometry{margin=2in}
    \chapter{#1}
    \afterpage{%
        \global\setlength{\oddsidemargin}{0in}%
        \global\setlength{\evensidemargin}{0in}%
        \global\setlength{\hsize}{\dimexpr\paperwidth-2in\relax}
    }}
\begin{document}

\lipsum[1-10]

\mychapter{test}

\lipsum[1-40]

\end{document}

结果并不理想。如上面的评论所述,您无法在段落中间更改段落的有效宽度。因此,当段落从章节开头溢出时,下一页的格式不正确。据我所知,没有很好的解决方法。

这意味着您必须进入文档,并\pagebreak在任何将溢出到下一页的段落之前手动输入新的页面几何形状,以使新页面几何形状生效。我不确定这个解决方案是否真的能为您省去任何麻烦。但也许您会觉得添加\pagebreak比手动重置页面尺寸要容易得多。

但这样你可能会有很长的段落,一半出现在章节的第一页,另一半出现在下一页。处理起来有点麻烦,而且需要在文档中进行更多的手动处理。

\documentclass{report}
\usepackage[margin=1in]{geometry}
\usepackage{lipsum}
\usepackage{afterpage}
\newcommand{\mychapter}[1]{%
    \newgeometry{margin=2in}
    \chapter{#1}
    \afterpage{%
        \global\setlength{\oddsidemargin}{0in}%
        \global\setlength{\evensidemargin}{0in}%
        \global\setlength{\hsize}{\dimexpr\paperwidth-2in\relax}
    }}
\begin{document}

\lipsum[1-10]

\mychapter{test}

\lipsum[1-2]

{Nulla malesuada porttitor diam. Donec felis erat, congue non, volut-
pat at, tincidunt tristique, libero. Vivamus viverra fermentum
felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper
elit. Proin fer- mentum massa ac quam. Sed diam turpis, molestie vitae,
placerat a, mo- lestie nec, leo. Maecenas lacinia. Nam ipsum ligula,
eleifend at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula
feugiat magna. Nunc eleifend consequat lorem. Sed lacinia nulla vitae
enim. Pellentesque tincidunt\parfillskip0pt\par}\pagebreak

\noindent   puvel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
bibendum quam in tellus. Nullam cursus pulvinar lectus. Donec et
mi. Nam vulputate metus eu enim. Vestibulum pellentesque felis eu
massa.

\lipsum[4-40]

\end{document}

这看起来可能会造成很多麻烦。此外,我还必须手动添加分页符。

其他几点说明:

我不太确定使用etoolboxto\preto\appto是否可行。您实际上并不是想改变 a 的\chapter作用。您只是想要改变章节第一页的页面布局。因此,我认为\chapter通过定义包装函数来构建包装器\mychapter可能是更好的方法。

第二点,LaTeX 会自动添加1in有效左边距。如果你试图设置\oddsidemargin1in认为你会得到一个1in左边距,那么你会相当失望。

最后,你可能想看看我的沉思关于如何回答您的问题,以了解为什么更改\textwidth\linewidth不会影响您想要的页面几何形状的更改。

相关内容