Alterando as margens superior, inferior, esquerda e direita instantaneamente

Alterando as margens superior, inferior, esquerda e direita instantaneamente

Estou tentando encontrar uma maneira de modificar todas as margens de uma página sempre que quiser e quantas vezes quiser em uma única página, para poder colocar o texto com muita facilidade onde quiser. uma página.

Eu pensei em usar o pacote de geometria e usar

 \newgeometry{left=6.75cm, right=1cm, top=1cm, bottom=1cm}
 %…
 \restoregeometry

mas infelizmente isso só funciona para páginas inteiras, então só posso alterar as margens uma vez por página (e então elas são válidas para a página inteira sem ter a possibilidade de alterá-las novamente).

Encontrei o seguinte script na internet que permite aos usuários alterar as margens rapidamente, como eu desejo. O código abaixo funciona bem e me permite alterar as margens esquerda e direita da minha página quantas vezes eu quiser, mas infelizmente não me dá a opção de alterar as margens superior e inferior.

% 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}

Por esse motivo, tentei adaptar o código acima e cheguei ao código abaixo:

% 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}

Ele compila e ainda altera as margens esquerda e direita mas a margem superior permanece inalterada. (Ainda não tentei alterar a margem inferior).

Alguém pode me ajudar a fazer esse código funcionar completamente e permitir que eu modifique as margens esquerda, direita, superior e inferior de uma página? Obrigado.

Responder1

Você pode usar uma combinação degeometry(para alterar as margens superior e inferior) e o adjustwidthambiente fornecido pelochangepagepacote (este usa internamente uma lista e é semelhante ao seu changemarginambiente):

\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}

insira a descrição da imagem aqui

Eu sugiro fortemente que você, como opinião pessoal,nãopara fazer isso.

Responder2

Apenas por uma questão de completude: com umClasse KOMAvocê pode produzir os mesmos resultados estranhos com o próprio addmarginambiente do KOMA-Scripts.

Tomei a liberdade de tomarGonzalo Medinaexemplo e ajuste-o para 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}

Como a saída parece quase a mesma, não forneço uma imagem.

informação relacionada