我正在组合一个模板,并创建了一个自定义命令,我将使用该命令来设置传递给其参数的文本的特定边距和其他一些格式,如下所示:
\newcommand{\mytextbox}[1] {#1}
我希望传递给此命令的文本能够很好地拆分到新页面上,但在新页面开始之前,我想打印一个新的单独行,写着“下页继续”,并在下一页,在剩余文本上方打印一行,写着“上一页继续”。
例如,如果我在页面底部附近执行此操作:
\mytextbox{\lipsum}
它会打印几行然后流到下一页,但我的自定义标题位于下一页的底部和顶部,如下所示:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae,
felis.
**Continued on next page**
-----new-page-------------------------------
**Continued from previous page**
Curabitur dictum gravida mauris. Nam arcu libero,
nonummy eget, consectetuer id, vulputate a, magna. Donec
vehicula augue eu neque. Pellentesque habitant morbi tristique
senectus et netus et malesuada fames ac turpis egestas. Mauris
ut leo.
我一直在绞尽脑汁想办法解决这个问题。似乎没有什么办法对我有用。我最好的猜测是在 TeX 中找到一些可以控制何时换行的东西,检查它是否是页面的最后一行,并在\newpage
文本中插入一个命令,但我还没有找到这样做的方法,而且这似乎有点复杂。我不在乎它mytextbox
是命令还是环境,只要它的行为与上述相同。
答案1
这是一个解决方案,假设您通常想要plain
仅在底部显示页码的页面样式。我唯一无法修复的是“续行”和实际文本之间的空格。欢迎提出建议!我添加了斜体,如果您不喜欢,可以将其删除。无论您传递的文本是否\mytextbox
实际跳转到下一页,此代码都会添加“继续”文本。
一旦您开始弄乱页面布局,可能需要进行进一步的调整。
\documentclass{article}% This only works for one-side documents! For two-side documents, more meddling with oddfoot and evenfoot is necessary.
\usepackage{lipsum}% filler text
\usepackage{afterpage}% for commands to be executed after the page
\usepackage{fancyhdr}% for direct access to headers and footers
\usepackage{array}% improved tables
\makeatletter
% Define new page style "contbottom"
\newcommand{\ps@contbottom}{%
\renewcommand{\@oddhead}{}% empty header
\renewcommand{\@oddfoot}{%
\begin{tabular}{@{}>{\raggedright}p{.4\linewidth}@{}>{\centering}p{.2\linewidth}@{}>{\raggedleft}p{.4\linewidth}@{}}% table to get spacing correct
\textit{**Continued on next page**} &% = footer left
~\\\thepage &% = footer center, put empty line above page number
% = footer right
\end{tabular}}%
}
% Define new page style "conttop"
\newcommand{\ps@conttop}{%
\renewcommand{\@oddhead}{\textit{**Continued from previous page**}\hfill}% header
\renewcommand{\@oddfoot}{\begin{tabular}{@{}>{\raggedright}p{.4\linewidth}@{}>{\centering}p{.2\linewidth}@{}>{\raggedleft}p{.4\linewidth}@{}}% table to get spacing correct
&% = footer left
~\\\thepage &% = footer center, empty line as well so all pages look the same
% = footer right
\end{tabular}}%
}
\makeatother
% Put page number one line lower for normal pages
\pagestyle{plain}
\fancyfoot[C]{~\\\thepage}
% Define command \mytextbox
\newcommand{\mytextbox}[1]{%
\thispagestyle{contbottom}% page style contbottom for this page
\afterpage{\thispagestyle{conttop}}% page style conttop for the next page
#1% print text
}
\begin{document}
\lipsum[1-6]
\mytextbox{\lipsum}
\lipsum[1-6]
\end{document}