为子文件添加单独的 \maketitle,该命令仅在子文件独立编译时执行

为子文件添加单独的 \maketitle,该命令仅在子文件独立编译时执行

我正在编写一个包含多个文件的文档,并希望像这样为它们添加标题:

%%% main.tex
\documentclass{article}
\usepackage{subfiles}
\title{Main}
\begin{document}
\maketitle
Some text
\subfile{a}
\end{document}

%%% a.tex
\documentclass[main]{subfiles}
\title{A}
\begin{document}
\maketitle
Subordinate text
\end{document}

当我编译时main.texmain.pdf内容是:

主要的

一些文本

下属文本

当我编译时a.texa.pdf内容是:

A

下属文本

这可能吗?提前谢谢您!

答案1

subfiles 包提供了\ifSubfilesClassLoaded宏,允许您测试是否编译子文件或主文件:

%%% a.tex
\documentclass[main]{subfiles}
\title{A}
\begin{document}

\ifSubfilesClassLoaded{%
  \maketitle
}{}

Subordinate text
\end{document}

答案2

您可以使用的一个简单方法是在前言中定义一个辅助命令,由于子文件的前言将被忽略,因此您可以使用该辅助命令代替\maketitle

下面针对您的两个文件执行此操作:

%%% main.tex
\documentclass{article}
\usepackage{subfiles}
\title{Main}
\newcommand\submaketitle{}
\begin{document}
\maketitle
Some text
\subfile{a}
\end{document}
%%% a.tex
\documentclass[main]{subfiles}
\title{A}
\newcommand\submaketitle{\maketitle}
\begin{document}
\submaketitle
Subordinate text
\end{document}

然后,如果你编译,main.tex你将获得:

main.tex 的结果

如果你编译的话,a.tex你会得到:

a.tex 的结果

相关内容