使 paperheight(页面长度)与部分长度相同

使 paperheight(页面长度)与部分长度相同

我想要一个文档,其中每个部分后面都有一个分页符,但其他部分页。各部分的长度各不相同,主要是由于每个部分中的图片大小不同。

到目前为止我所拥有的是:

\documentclass{article}
% make all pages long
\usepackage[paperheight=26in]{geometry}
\usepackage{hyperref} % essential
\usepackage[demo]{graphicx}
\usepackage{lipsum}
% from \documentclass{memoir}
 \makeatletter
 \newcommand*{\centerfloat}{%
   \parindent \z@
   \leftskip \z@ \@plus 1fil \@minus \textwidth
   \rightskip\leftskip
   \parfillskip \z@skip}
 \makeatother
% Redefine \section to add \clearpage at the beginning
\newcommand*{\OrgSection}{}
  \let\OrgSection\section
\renewcommand*{\section}{
  \clearpage
  \OrgSection
}
%
\begin{document}
%\tableofcontents
%\newpage
\section{First section}
\lipsum[4]
\begin{figure}
\centerfloat
\includegraphics[width=1.3\textwidth, height=12in]{demo}
\caption{Short caption}
\end{figure}
\section{Second section}
\lipsum[5]
\begin{figure}
\centerfloat
\includegraphics[width=1.3\textwidth, height=4in]{demo}
\caption{Short caption}
\end{figure}
\end{document}

给予:

在此处输入图片描述

这不是要打印的。许多图表比标准页面长,但不是全部。我试图避免过多的空白。我还希望避免图表“浮动”到另一个部分。

上述解决方案有效,但在某些情况下页面太长。我试图避免必须[paperheight]为每个部分手动重新定义,因为有 40 多个。

我愿意接受这里的其他设计建议。

\makeatletter由于对此还比较陌生,所以如果解决方案能够有一点解释就好了。

我一直在看测试包屏幕阅读这与我想要的很接近,只是我的一些图形也比标准文本宽度略宽,而上面的方法不支持这一点。此外,在上面,.pdf 查看器的默认放大率会根据节长度而变化,这也不理想……

答案1

您可以修改\@makecol输出例程中的宏,以便将页面重新设置为其自然高度,而不是强制将其设置为文本高度,然后设置\pdfpageheight为该框的高度(加上 TeX 使用的 1 英寸偏移量和页边距的一些额外高度)。

在此处输入图片描述

\documentclass{article}
% make all pages long
\usepackage[paperheight=26in,top=20pt]{geometry}
\usepackage{hyperref} % essential
\usepackage[demo]{graphicx}
\usepackage{lipsum}
% from \documentclass{memoir}
 \makeatletter
 \newcommand*{\centerfloat}{%
   \parindent \z@
   \leftskip \z@ \@plus 1fil \@minus \textwidth
   \rightskip\leftskip
   \parfillskip \z@skip}


\let\old@makecol\@makecol
\def\@makecol{\old@makecol
 \setbox\@outputbox\vbox{\unvbox\@outputbox}%
 \pdfpageheight=\dimexpr\ht\@outputbox+\dp\@outputbox+1.5in\relax}

 \makeatother

 \let\OrgSection\section
\renewcommand*{\section}{%
  \clearpage
  \OrgSection
}

%
\begin{document}
%\tableofcontents
%\newpage
\section{First section}
\lipsum[4]
\begin{figure}
\centerfloat
\includegraphics[width=1.3\textwidth, height=12in]{demo}
\caption{Short caption}
\end{figure}
\section{Second section}
\lipsum[5]
\begin{figure}
\centerfloat
\includegraphics[width=1.3\textwidth, height=4in]{demo}
\caption{Short caption}
\end{figure}
\section{Thirdsection}
\lipsum
\end{document}

相关内容