转到新页面,除非文档之前是空的

转到新页面,除非文档之前是空的

简单地说,我有一个包含几个文件的文档(仅当它们存在时,否则它什么也不做)。

然后我想在新的一页上开始“某事”。

问题是,如果没有任何我想要包含的文件确实存在,我不希望“某些内容”出现在第 2 页,而第 1 页只包含标题。在这种情况下,我希望“某些内容”出现在第 1 页,就在标题下方。

我认为我找到了以下解决方案(我绝对不是乳胶专家):

\documentclass{article}

\usepackage{ifthen}

\title{Sample Doc}
\author{Giulio}

\newboolean{p}


\begin{document}

\setboolean{p}{false}

\maketitle

\IfFileExists{toBeIncluded.tex}
{
    \setboolean{p}{true}
    \input{toBeIncluded.tex}
}
{
    % do nothing
}

\IfFileExists{toBeIncluded2.tex}
{
    \setboolean{p}{true}
    \input{toBeIncluded2.tex}
}
{
    % do nothing
}

\ifthenelse{\boolean{p}}
{
    \newpage
}
{
}

This should start on a new page, unless there is really nothing before it, in which case it should start jst below the title on page one.

\end{document}

这是一个不错的解决方法吗?我是否遗漏了什么微妙之处?还有更好的方法吗?

多谢

答案1

第一个问题:是的,这是一个体面的这样做的方法。

第二个问题:是否有更好的这样做?当然,更好的有时这取决于旁观者的看法,但我建议,为了让您更轻松地输入内容,并为文档将来可能的扩展提供更灵活的方式,将您的代码包装成两个宏:

  • \myinclude它会测试文件是否存在,如果包含该文件则设置布尔值。
  • \mynewpage检查布尔值,并在出现分页符的情况下将布尔值重置为 false(这允许您在代码中多次使用此构造)。

以下是一个例子:

\documentclass{article}
\usepackage{ifthen}
\usepackage{lipsum}

\usepackage{filecontents}
\begin{filecontents*}{test3.tex}
    \lipsum[2]
\end{filecontents*}

\newboolean{p}\setboolean{p}{false}
\newcommand{\myinclude}[1]{\IfFileExists{#1}{\setboolean{p}{true}\input{#1}}{}}
\newcommand{\mynewpage}{\ifthenelse{\boolean{p}}{\clearpage\setboolean{p}{false}}{}}

\title{Sample Doc}
\author{Giulio}

\begin{document}

\maketitle

\myinclude{test1.tex}
\myinclude{test2.tex}
\mynewpage

\lipsum[1]

\section{My section}
\myinclude{test3.tex}
\mynewpage
\lipsum[3]

\end{document}

在此处输入图片描述

相关内容