好的,我想做的事对于 LaTeX 来说有点不寻常,但我会尽力解释。
我正在编写一份文档,最终会将其编成一本书,我希望以这样一种方式组织它,使每个部分(或子部分)占用的空间不超过两页(即偶数页和奇数页)。我的目标是,当读者打开书的某个部分时,有关该部分的所有信息都在这两页中——读者不必来回翻页。因此,我希望能够在撰写手稿时控制两页的布局,这样一切都恰到好处。
现在,我知道我可以手动完成这项工作:我可以在编写和编译之间来回切换,相应地更改所有内容,以便内容完全符合我想要的空间量。但我想知道是否有更简单、更自动化的方法来做到这一点。
基本上我正在寻找一种方法来力量指定 LaTeX 代码块(部分或环境块,或类似的东西)被限制在单个两页跨页中,无论我是否超出该空间?也许有些东西会在跨页不足或过满时向我发出警告,但不会使内容溢出到下一页。
以下是一个基本的 MWE:
\documentclass[twoside,10pt]{book}
\usepackage[
inner=2.1cm, outer=2.1cm,
top=2cm, bottom=3cm,
papersize={6.0in,9.0in}]{geometry}
\begin{document}
\chapter{Chapter 1...}
\section{Example Section 1}
Text, equations, and images go here,
but no matter how much or little there is,
it all remains confined to a single two-page spread.
(Maybe with the option to change the size fixed space if necessary...)
\section{Example Section 2}
Same thing here....
\end{document}
答案1
这说明如何检查行数和已使用的垂直空间,以及判断是否超出了页面范围(无论内容是什么)。请注意,可以使用包disable
中的选项隐藏所有边距注释。todonotes
\documentclass[twoside,10pt]{book}
\usepackage[pagewise,switch*]{lineno}
\usepackage[textwidth=4.5em,textsize=tiny]{todonotes}
\usepackage{lipsum}
\usepackage[inner=2.1cm, outer=2.1cm,top=2cm, bottom=3cm, papersize={6.0in,9.0in}]{geometry}
\usepackage{graphicx}
\def\WARNING{\todo[color=yellow,inline]{ \ifdim\the\pagetotal>480pt
WARNING: \bfseries JUST ONE MORE LINE \else \bfseries WRITE MORE! \fi}}
\begin{document}
\linenumbers
\chapter{foo}
\lipsum[1][1-4]
\todo[color=green!20]{You have written now \thelinenumber\ lines and
\the\pagetotal\ of the \the\textheight.}
\section{Bah}
\lipsum[2][1-6]
\todo[color=red!20]{Wrong: \thelinenumber\ lines and
\the\pagetotal}
\lipsum[2][7-10]
\WARNING
\todo[color=green!20]{Right: \thelinenumber\ lines and
\the\pagetotal\ of the \the\textheight.}
\par You have written now \thelinenumber\ lines and \the\pagetotal\ of the \the\textheight.
\begin{figure}[h]
\centering
\includegraphics[width=1cm]{example-image.png}
\end{figure}
\lipsum[9][1-7]
\WARNING
\section{baz}
\lipsum[3-5]
\WARNING
\newpage\section{whatever}
\lipsum[3-6]
\lipsum[7][1-9]
\WARNING
\end{document}