标题页包含在 main.tex 中时未显示在子文件{}中

标题页包含在 main.tex 中时未显示在子文件{}中

我正在编译不同类型的文章类文档,并使用报告类的主 tex 文件将其编译为一个 pdf 文件。我使用 subfile{} 来执行此操作,但文档中的 \maketitle{} 页面未显示。我该如何做到这一点而不使任何事情复杂化?我的主要 tex 文件如下Lab_Report.tex所示

\documentclass[12pt]{report} %article also works
\usepackage{subfiles}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{float}
\usepackage{parskip}
\usepackage{siunitx}
\title{}
\begin{document}



\maketitle 
\subfile{report1}
\subfile{report2}



\end{document}

report.tex看起来像

\documentclass{article}
\usepackage{amsmath} 
%assume all necessary packages included


\title{Report 1 - Make something}
\date{1st April 2022}
\begin{document}
\maketitle
\newpage
\subsection*{Aim:}
To do something
\subsection*{Apparatus:}
Whatever you have now
\end{document}

最终结果是所有包含的文件都存在,但没有 \maketitle 页面。我对 Latex 还很陌生,所以我的代码可能看起来很傻。

答案1

子文件包不应该按照您尝试的方式使用。所包含的文件应该是主文档的一部分,而不是具有不同文档类的单独文档。事实上,我很惊讶当您尝试将其与具有“article”文档类的子文件一起使用时没有收到错误。所有子文件都应该使用“subfiles”文档类。

参见文档,内容如下:

子文件必须以该行开头:

\documentclass[main file name]{subfiles}

加载类子文件。它唯一的“选项”实际上是必需的,它给出了主文件的名称。此名称遵循 TEX 约定:.tex 是默认扩展名,如果主文件位于不同的目录中,则必须提供路径,并且路径中的目录必须用 /(而不是 )分隔。因此,我们有以下结构。

如果在子文件上运行 LATEX,则该行将\documentclass[..]{subfiles} 被主文件的前言(包括其 \documentclass命令)替换。子文件的其余部分将正常处理。

如您所见,子文件不应该有自己的前言。软件包用主文档的前言替换它们的前言。它们自己的前言被忽略。因此,在编译主文件时,示例前言中的\title和命令将被忽略。\date

此外,单个文档通常不会包含多个\maketitle命令。如果需要多个\maketitle命令,则需要加载titling包。

据我所知,你有三个选择。

选项 A

这最接近您尝试的方法。titling在主文件中加载包,以允许多个\maketitle命令。

\documentclass[12pt]{report}
\usepackage{subfiles}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{float}
\usepackage{parskip}
\usepackage{siunitx}
\usepackage{titling}

\title{Main title}
\author{Author}
\date{Main date}
\begin{document}

\maketitle
\subfile{report1}
\subfile{report2}

\end{document

将子文件中的\title和命令移动到\date \begin{document}所以它们实际上已注册(请记住,前缀会被忽略)。您可以删除任何\usepackage命令;它们也会被忽略。只需确保您所需的包已加载到主文件中即可。

\documentclass[main]{subfiles}
\begin{document}
\title{Report 1 - Make something}
\date{1st April 2022}
\maketitle
\subsection*{Aim:}
To do something
\subsection*{Apparatus:}
Whatever you have now
\end{document}

当然,这里根本不使用 article 类,因此标题将采用以下样式:report(即,它们将是标题页,而不仅仅是标题)。但是 titleling 包确实允许您更改标题的样式。请参阅其文档

选项 B

将子文件视为报告的“章节”,因为报告类支持章节,而且确实需要它们。(您的\subsections 没有编号,但如果有,您会注意到章节/部分的编号以 0.0 开始,因为没有给出章节或部分命令。)这个选项实际上对我来说更有意义,因为它更符合预期的方式使用报告类。

子文件将会更简单:

\documentclass[main]{subfiles}
\begin{document}
\chapter*{Report 1 - Make something} % remove the * if you want it numbered
\subsection*{Aim:}
To do something
\subsection*{Apparatus:}
Whatever you have now
\end{document}

然后,您可以直接使用章节标题,而不是使用新\maketitle命令。如果您需要设置章节标题的样式,或将它们放在自己的页面上,可以使用类似标题安全包可以允许这样做(包括如果需要的话添加日期)。

选项 C

你可以按照你的做法去做。准备许多单独的article类文档,并与使用该包的主文件合并pdfpages,或者使用类似的工具。如果你的单独文档确实是单独的“文章”,而不是单个作品的章节,并且出于某种原因你只需要将它们放在一个 PDF 中,那么这个选项对我来说更有意义

相关内容