
У меня есть документ, который использует класс документа KOMAscript srcprt. Для некоторых страниц мне нужно настроить пользовательские поля с использованием абсолютных значений. Я попытался использовать для этого пакет геометрии следующим образом:
\newgeometry{..options..}
..custom page..
\restoregeometry
Однако это не работает так, как ожидалось. Как только я добавляю \usepackage{geometry}
в преамбулу, макет документа KOMAscript рушится.
Можно ли это исправить?
решение1
В geometry
пакете есть очень полезная опция, а именно pass
.
Если вы позвоните
\usepackage[pass]{geometry}
пакет не будет устанавливать никаких параметров пагинации, а просто загрузит себя и сделает \newgeometry
команду доступной.
Пример использования приведен в документации пакета:
\documentclass{book}
\usepackage[pass]{geometry}
% ’pass’ disregards the package layout,
% so the original ’book’ layout is memorized here.
\begin{document}
\newgeometry{margin=1cm}% changes the first page dimensions.
Page 1
\restoregeometry % restores the original ’book’ layout.
Page 2 and more
\end{document}
решение2
Для нескольких выпусков KOMA-Script предоставляет недокументированную опцию usegeometry
для взаимодействия с package geometry
. Начиная с KOMA-Script 3.22 это документированная опция (package typearea
). Она транслирует параметры страницы package typearea
в параметры страницы package geometry
и передает их, например, как опции в geometry
.
\documentclass[usegeometry]{scrreprt}
\usepackage{geometry}
\usepackage{showframe}
\begin{document}
\newgeometry{margin=1cm}% changes the first page dimensions.
Page 1
\restoregeometry % restores the original typearea layout.
Page 2 and more
\end{document}
Сотрудничество позволяет даже изменить размер страницы или ориентацию страницы с помощью typearea
, а затем изменить поля с помощью geometry
, что в настоящее время geometry
не предусмотрено с помощью \newgeometry
. Но в этом случае вам следует использовать typearea
команды , чтобы сохранить и восстановить геометрию.