![使 paperheight(页面长度)与部分长度相同](https://linux22.com/image/294215/%E4%BD%BF%20paperheight%EF%BC%88%E9%A1%B5%E9%9D%A2%E9%95%BF%E5%BA%A6%EF%BC%89%E4%B8%8E%E9%83%A8%E5%88%86%E9%95%BF%E5%BA%A6%E7%9B%B8%E5%90%8C.png)
我想要一个文档,其中每个部分后面都有一个分页符,但其他部分一页。各部分的长度各不相同,主要是由于每个部分中的图片大小不同。
到目前为止我所拥有的是:
\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}