我正在编译不同类型的文章类文档,并使用报告类的主 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
将子文件视为报告的“章节”,因为报告类支持章节,而且确实需要它们。(您的\subsection
s 没有编号,但如果有,您会注意到章节/部分的编号以 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 中,那么这个选项对我来说更有意义