Я пытаюсь найти способ изменять все поля страницы когда угодно и столько раз на одной странице, чтобы иметь возможность легко размещать текст в нужном мне месте на странице.
Я думал об использовании пакета геометрии и использовании
\newgeometry{left=6.75cm, right=1cm, top=1cm, bottom=1cm}
%…
\restoregeometry
но, к сожалению, это работает только для целых страниц, поэтому я могу изменить поля только один раз на страницу (и затем они будут действительны для всей страницы без возможности изменить их снова).
Я нашел следующий скрипт в Интернете, который позволяет пользователям изменять поля на лету, как я хочу. Код ниже работает отлично и позволяет мне изменять левые и правые поля моей страницы столько раз, сколько я хочу, но, к сожалению, он не дает мне возможности изменять верхние и нижние поля.
% placed before \begin{document}
\newenvironment{changemargin}[2]{%
\begin{list}{}{%
\setlength{\leftmargin}{#1}%
\setlength{\rightmargin}{#2}%
}%
\item[]}
{\end{list}}
% And then inside the document, whenever I want to use
% the command to change the margins on the current page
\begin{changemargin}{1.9875cm}{-3.7625cm}
% this means the left margin increases by 1.9875cm compared
% to the default left margin (4.7625cm) (so left margin=6.75cm here)
% and the right margin decreases by 3.7625cm (so right margin=1cm)
% ... (text or pictures in new environment)
\end{changemargin}
По этой причине я попытался адаптировать код выше и получил следующий код:
% placed before \begin{document}
\newenvironment{changemargin}[3]{%
\begin{list}{}{%
\setlength{\leftmargin}{#1}%
\setlength{\rightmargin}{#2}%
\setlength{\topmargin}{#3}%
}%
\item[]}
{\end{list}}
% And then to use the command:
\begin{changemargin}{1.9875cm}{-3.7625cm}{1cm}
% ...
\end{changemargin}
Он компилируется и по-прежнему изменяет левое и правое поля, но верхнее поле остается неизменным. (Я еще не пробовал менять нижнее поле).
Может ли кто-нибудь помочь мне заставить этот код работать полностью и позволить мне изменять левое, правое, верхнее и нижнее поля страницы? Спасибо.
решение1
Вы можете использовать комбинациюgeometry
(для изменения верхнего и нижнего полей) и adjustwidth
среды, предоставляемойchangepage
пакет (он использует внутри себя список и похож на вашу changemargin
среду):
\documentclass{article}
\usepackage[paperheight=14cm]{geometry}
\usepackage{changepage}
\usepackage{lipsum}
\begin{document}
\lipsum[1-3]
\newpage
\newgeometry{top=0.5cm, bottom=0.5cm}
\begin{adjustwidth}{-2cm}{-1cm}
\lipsum[4]
\end{adjustwidth}
\lipsum[1]
\begin{adjustwidth}{1cm}{2cm}
\lipsum[3]
\end{adjustwidth}
\lipsum[4]
\newpage
\restoregeometry
\lipsum[1-3]
\newpage
\newgeometry{top=2.5cm, bottom=2.5cm}
\begin{adjustwidth}{2cm}{2cm}
\lipsum[4]
\end{adjustwidth}
\lipsum[4]
\begin{adjustwidth}{3cm}{-3cm}
\lipsum[3]
\end{adjustwidth}
\end{document}
Я настоятельно рекомендую вам, как личное мнение,нетсделать это.
решение2
Просто для полноты картины: скласс КОМАвы можете получить те же странные результаты с помощью собственной addmargin
среды KOMA-Scripts.
Я взял на себя смелость взятьГонсало Мединапример и скорректируйте его для scrartcl
:
\documentclass{scrartcl}
\usepackage[paperheight=18cm]{geometry}
\usepackage{lipsum}
\begin{document}
\lipsum[1-3]
\newpage
\newgeometry{top=0.5cm, bottom=0.5cm}
\begin{addmargin}[-2cm]{-1cm}
\lipsum[4]
\end{addmargin}
\lipsum[1]
\begin{addmargin}[1cm]{2cm}
\lipsum[3]
\end{addmargin}
\lipsum[4]
\newpage
\restoregeometry
\lipsum[1-3]
\newpage
\newgeometry{top=2.5cm, bottom=2.5cm}
\begin{addmargin}[2cm]{2cm}
\lipsum[4]
\end{addmargin}
\lipsum[4]
\begin{addmargin}[3cm]{-3cm}
\lipsum[3]
\end{addmargin}
\end{document}
Поскольку результат выглядит примерно одинаково, я не привожу изображение.