Латекс - изменение полей всего на нескольких страницах

90

У меня есть латексный документ, в котором мне нужно изменить поля только на нескольких страницах (страницы, на которых я добавляю много графики).

В частности, я бы хотел изменить верхние поля ( \voffset). Я пробовал делать:

\addtolength{\voffset}{-4cm}

% Insert images here

\addtolength{\voffset}{4cm}

но это не сработало. Я видел ссылки на пакет геометрии, но не нашел, как использовать его для нескольких страниц, а не для всего документа.

Есть подсказки?

pgb
источник

Ответы:

66

Я использовал это beamer, но не для общих документов, но похоже, что это то, что предлагает исходный намек.

\newenvironment{changemargin}[2]{%
\begin{list}{}{%
\setlength{\topsep}{0pt}%
\setlength{\leftmargin}{#1}%
\setlength{\rightmargin}{#2}%
\setlength{\listparindent}{\parindent}%
\setlength{\itemindent}{\parindent}%
\setlength{\parsep}{\parskip}%
}%
\item[]}{\end{list}}

Затем использовать это

\begin{changemargin}{-1cm}{-1cm}

не забывай

\end{changemargin}

в конце страницы

Я получил это из раздела «Изменение полей на лету» в TeX FAQ.

Ансате
источник
3
Для меня это работает лучше, чем использование геометрии, поскольку включение пакета геометрии в преамбулу уже нарушает макет стиля, который я должен использовать.
MAK
Большое спасибо за это!
SRG
152

Используйте пакет "geometry" и напишите, \newgeometry{left=3cm,bottom=0.1cm}где вы хотите изменить поля. Когда вы хотите сбросить поля, вы пишете \restoregeometry.

Кевин Чен
источник
5
Спасибо, это отлично работает. Я обнаружил, что это помогло взглянуть на документацию, потому что есть много других вариантов полей, кроме только левого, правого, верхнего и нижнего: sharelatex.com/learn/Page_size_and_margins
Ноа Суссман
3
Единственная проблема с geometryкомандами заключается в том, что они сбрасывают текст на следующую страницу, если они используются в середине страницы, поскольку геометрия определена для «страницы».
Emadpres
@Emadpres Так как вы хотите определить новые поля для некоторых страниц, \newpageили \pagebreakэто необходимые и естественные команды, которые вы используете в первую очередь.
CK
13

Я много боролся с различными решениями, включая \ vspace {-Xmm} вверху и внизу страницы, а также с предупреждениями и ошибками. Наконец я нашел такой ответ:

Вы можете изменить поля только одной или нескольких страниц, а затем восстановить их по умолчанию:

\usepackage{geometry}
...
... 
...
\newgeometry{top=5mm, bottom=10mm}     % use whatever margins you want for left, right, top and bottom.
...
... %<The contents of enlarged page(s)>
...    
\restoregeometry     %so it does not affect the rest of the pages.
...
... 
...

PS:

1- Это также может исправить следующее предупреждение:

Предупреждение LaTeX: Float слишком велик для страницы на ... pt в строке ввода ...

2- Для более подробного ответа посмотрите это .

3- Я только что обнаружил, что это более подробное описание ответа Кевина Чена.

Алиса
источник
5
\par\vfill\break % Break Last Page

\advance\vsize by 8cm % Advance page height
\advance\voffset by -4cm % Shift top margin
% Start big page
Some pictures
% End big page
\par\vfill\break % Break the page with different margins

\advance\vsize by -8cm % Return old margings and page height
\advance\voffset by 4cm % Return old margings and page height
Алексей Малистов
источник
2

Для цифр вы можете использовать метод, описанный здесь:
http://texblog.net/latex-archive/layout/centering-figure-table/,
а именно, сделать что-то вроде этого:

\begin{figure}[h]
\makebox[\textwidth]{%
        \includegraphics[width=1.5\linewidth]{bla.png}
    }
\end{figure}

Обратите внимание, что если у вас есть подфигуры на рисунке, вы, вероятно, захотите войти в режим абзаца внутри поля, например:

\begin{figure}[h]
\makebox[\textwidth]{\parbox{1.5\textwidth}{ %
\centering
\subfigure[]{\includegraphics[width=0.7\textwidth]{a.png}}
\subfigure[]{\includegraphics[width=0.7\textwidth]{b.png}}
\end{figure}

Позволяет расположить фигуру по центру страницы, выступая за оба поля, а не только за правое поле.
Обычно это помогает с изображениями. Обратите внимание, что при использовании этого метода заголовок изображения по-прежнему будет находиться в пределах обычных полей страницы (что хорошо).

гулять
источник
2

Небольшая модификация этого, чтобы изменить \voffsetработу для меня:

\newenvironment{changemargin}[1]{
  \begin{list}{}{
    \setlength{\voffset}{#1}
  }
  \item[]}{\end{list}}

А затем поместите свои фигуры в \begin{changemargin}{-1cm}...\end{changemargin}окружающую среду.

Ной
источник
0

Найдите \enlargethispageссылку на LaTeX.

Никто
источник
2
Не могли бы вы добавить к своему ответу больше деталей, в том числе решение?
Стив Уэстбрук,
0

У меня была такая же проблема с проектором. Для меня работал с использованием среды столбцов:

\begin{frame}
  \begin{columns}
    \column{1.2\textwidth}
    \begin{figure}
      \subfigure{\includegraphics[width=.49\textwidth]{1.png}}
      \subfigure{\includegraphics[width=.49\textwidth]{2.png}}
    \end{figure}
   \end{columns}
\end{frame}
user3510575
источник
-1

Я не мог найти простого способа установить поля для одной страницы.

Моим решением было использовать vspace с желаемым количеством сантиметров пустого пространства:

 \vspace*{5cm}                                                             

Я поместил эту команду в начало страниц, на которых я хотел иметь + 5 см поля.

Неагу Овидиу Габриэль
источник