我正在尝试创建一个环境,它的作用类似于长文档的致谢或摘要部分:标题居中且文本比正常情况略窄的页面。此外,它应该从页面顶部下方的较短位置开始。
到目前为止,我尝试使用引文环境。对于少于一页的部分,它工作得很好,如下面的“摘要”示例,但如果内容超过一页,如“致谢”示例,则会在页眉前插入一个额外的分页符。为什么会发生这种情况?我如何设置此环境,使其从页面顶部以下开始,当内容较短时,顶部/底部会像 MWE 一样垂直拉伸,但当内容变长时会做一些合理的事情?
梅威瑟:
\documentclass[11pt]{article}
\usepackage{lipsum}
\newenvironment{pseudochapter}[1]
{\clearpage
\vspace*{\stretch{1}}
\begin{quotation}
\begin{center} \large \textbf{#1} \\[.7em] \end{center}
}
{\end{quotation}
\vspace*{\stretch{3}}
\clearpage
}
\begin{document}
\begin{pseudochapter}{Abstract}
\lipsum[1]
\end{pseudochapter}
\begin{pseudochapter}{Acknowledgments}
\lipsum[1-4]
\end{pseudochapter}
\end{document}
答案1
这个提议很可能有些过头了。它主要是为了宣传很好的宏,可以让人知道是否在第一行。它似乎可以做你想做的事。
\documentclass[a4paper,12pt]{article}
\usepackage{lipsum}
\usepackage[pagewise]{lineno}
\pagewiselinenumbers
\makeatletter
\def\storepagewiselineno#1{%from https://tex.stackexchange.com/a/413117/121799
\bgroup % This group is to keep the value of \c@linenumber local
\testNumberedPage % store the page-wise line number into \c@linenumber
\expandafter\egroup % smuggle \c@linenumber out of the scope
\expandafter\edef\expandafter#1\expandafter{\the\c@linenumber}%
}
\makeatother
\def\testinglinenumber{\storepagewiselineno\temp
\ifnum\temp>1\relax\clearpage\else I am in first line\fi\par
}
\renewcommand\LineNumber{} %turn off showing the line numbers
\newenvironment{pseudochapter}[1]
{\storepagewiselineno\temp
\ifnum\temp>1\relax~\clearpage\else\relax\vspace*{\stretch{1}}\fi
\begin{quotation}\interlinepenalty=10000
\begin{center} \large \textbf{#1} \\[.7em] \end{center}\nobreak
}
{\vspace*{\stretch{3}}
\end{quotation}%
% \clearpage
}
\begin{document}
\lipsum[1]
\begin{pseudochapter}{Abstract}
\lipsum[1]
\end{pseudochapter}
\begin{pseudochapter}{Acknowledgments}
\lipsum[1-4]
\end{pseudochapter}
\end{document}