У меня есть документ с большим изображением tikz. Чтобы отобразить это изображение с помощью pdflatex, я создал макросы для переключения размера бумаги и использую пакет pdflscape
для поворота страниц при отображении в средстве просмотра PDF. Используя эту технику, я могу отобразить рисунок так, как нужно, на повернутой странице большего размера, но на следующей странице отсутствует номер страницы в нижнем колонтитуле (и без руководства \clearpage
текст не переносится на следующую страницу должным образом, вместо этого он продолжается через нижний колонтитул и в невидимую бездну за ним). На второй странице после рисунка номер страницы возвращается.
Минимальный рабочий пример ниже демонстрирует это явление:
\documentclass{article}
\usepackage{tikz}
\usepackage{pdflscape}
\usetikzlibrary{shapes}
% Macros for changing paper size
\newcommand{\startPaperSizeB}{%
\begingroup
\clearpage
\setlength{\pdfpagewidth}{11in}
\setlength{\pdfpageheight}{17in}
\setlength{\paperwidth}{\pdfpagewidth}
\setlength{\paperheight}{\pdfpageheight}
\setlength{\oddsidemargin}{0pt}
\setlength{\textwidth}{650pt}
\setlength{\topmargin}{0pt}
\setlength{\headheight}{0pt}
\setlength{\headsep}{0pt}
\setlength{\textheight}{1084pt}
}
\newcommand{\stopPaperSizeB}{\endgroup \clearpage}
\begin{document}
Some text on the first page.
\startPaperSizeB
\begin{landscape}
\begin{figure}
\centering
\begin{tikzpicture}[]
\node [draw, rectangle, minimum height=625pt, minimum width=1000pt] (1) {};
\end{tikzpicture}
\caption{Caption for the large size figure}
\end{figure}
\end{landscape}
\stopPaperSizeB
Missing page number on this page?
\clearpage
Now the page number is back!
\end{document}
Я недавно спросилочень похожий вопрос, за исключением того, что я оставил фигуру вне MWE. На этот вопрос был дан ответ, но решение не работает при вставке tikzpicture
на большую альбомную страницу - вместо этого нет большой альбомной страницы и фигуры - они просто исчезают. Я получаю предупреждение о переполненном поле, но фигуры нет. Нижеприведенный MWE демонстрирует это:
\documentclass{article}
\usepackage{tikz}
\usepackage{pdflscape}
\usetikzlibrary{shapes}
% Macros for changing paper size
\newcommand{\startPaperSizeB}{%
\setlength{\pdfpagewidth}{11in}
\setlength{\pdfpageheight}{17in}
\setlength{\paperwidth}{\pdfpagewidth}
\setlength{\paperheight}{\pdfpageheight}
\setlength{\oddsidemargin}{0pt}
\setlength{\textwidth}{650pt}
\setlength{\topmargin}{0pt}
\setlength{\headheight}{0pt}
\setlength{\headsep}{0pt}
\setlength{\textheight}{1084pt}
}
\newcommand{\stopPaperSizeB}{}
\begin{document}
Some text on the first page.
\begin{landscape}
\startPaperSizeB
\begin{figure}
\centering
\begin{tikzpicture}[]
\node [draw, rectangle, minimum height=625pt, minimum width=1000pt] (1) {};
\end{tikzpicture}
\caption{Caption for the large size figure}
\end{figure}
\stopPaperSizeB
\end{landscape}
The page number is here, but the figure is not.
\end{document}
Если размер прямоугольника достаточно уменьшить (например, до 525 на 550), то рисунок появляется на странице в конце документа, хотя страница имеет обычный размер, а рисунок выходит за ее пределы. Это заставило меня попробовать вариант [H]
из float
пакета, который, кажется, приближает меня к цели, но я все еще не достиг ее. Есть идеи?
решение1
Я нашел приемлемый ответ, используя geometry
пакет для регулировки размера текстовой области ( geometry
пакет сам по себе не позволяет изменять размер бумаги в середине документа). Важно задать textwidth
и textheight
с помощью \newgeometry
команды (есть странный эффект при установке их без использования пакета geometry
, и делать это до начала landscape
среды. Кроме того, \restoregeometry
необходимо вызывать после выхода из landscape
среды.
В приведенном ниже примере устранена как проблема с нумерацией страниц, так и проблема с исчезновением рисунка «тикз».
\documentclass{article}
\usepackage{tikz}
\usepackage{pdflscape}
\usepackage[papersize={8.5in,11in}]{geometry}
\usepackage{lipsum}
\usetikzlibrary{shapes}
% Macros for changing paper size
\newcommand{\startBSizeLandscape}{%
\newgeometry{textwidth=614pt, textheight=1084pt}
\begin{landscape}
\setlength{\pdfpagewidth}{11in}
\setlength{\pdfpageheight}{17in}
\setlength{\paperwidth}{\pdfpagewidth}
\setlength{\paperheight}{\pdfpageheight}
\setlength{\oddsidemargin}{0pt}
\setlength{\evensidemargin}{0pt}
\setlength{\marginparwidth}{0pt}
\setlength{\topmargin}{0pt}
\setlength{\headheight}{0pt}
\setlength{\headsep}{0pt}
}
\newcommand{\stopBSizeLandscape}{%
\end{landscape}
\restoregeometry
}
\begin{document}
\lipsum
\startBSizeLandscape
\begin{figure}
\centering
\begin{tikzpicture}[]
\node [draw, rectangle, minimum height=589pt, minimum width=1000pt] {};
\end{tikzpicture}
\caption{Caption for the large size figure}
\end{figure}
\stopBSizeLandscape
\lipsum
\end{document}
Компиляция этого приводит к предупреждению: 'tmargin' and 'bmargin' result in NEGATIVE (-289.03001pt). 'height' should be shortened in length.
Конечно, уменьшение textheight предотвращает это предупреждение, но вместо этого генерирует предупреждение о переполненном поле. Лучшим решением было бы отсутствие предупреждений.