使用子文件在标题中包含标题

使用子文件在标题中包含标题

我将 LaTeX 文档拆分为子文件,并尝试使用 将标题放在标题中\fancyhead。我在封面文件中定义\thetitle名为“cover.tex”,我在下面的 MWE 中重现了该文件

\documentclass[main.tex]{subfiles}
\title{This is my title}
\author{My Name}

\makeatletter
\let\thetitle\@title
\let\theauthor\@author
\makeatother

\fancyhf{}
\fancyhead[R]{\theauthor}
\fancyhead[L]{\thetitle}

\begin{document}
\begin{titlepage}
\Large \thetitle\\
\normalsize \theauthor\\
\end{titlepage}
\end{document}

我在主文件中使用它,像这样

\documentclass[12pt]{article}
\usepackage{subfiles} % split the document in multiple files
\usepackage{fancyhdr} % header and footer
\pagestyle{fancy}
\begin{document}
\subfile{cover}
\newpage
Here I will include my text from multiple subfiles.
\end{document}

我收到错误消息

! Undefined control sequence.
\f@nch@olh ->\thetitle
                       \strut

我发现问题出在 中subfiles。我注意到,如果我将“cover.tex”文件的内容直接放入主文件中,就不会出现错误。但为了便于阅读,我想避免这样做。我还尝试将该行放在\fancyhead[L]{\thetitle}主文档中,但产生了相同的错误。

我认为问题在于将\thetitle变量传播到子文件中。我的问题是,如何才能最好地将标题放在标题中,而无需多次定义它,也不必将完整的“cover.tex”移动到主文件中?

在此先感谢您的帮助。

答案1

只是一个建议:

%% main.tex
\input{preamble}

% start of main document
\begin{document}
\input{cover}

Here I will include my text from multiple (sub)files.
\end{document}


%% preamble.tex
\documentclass[12pt]{article}
%\usepackage{subfiles} % split the document in multiple files
\usepackage{fancyhdr} % header and footer
\pagestyle{fancy}

\makeatletter
\author{My Name}
\title{This is my title}
\let\thetitle\@title
\let\theauthor\@author

\fancyhf{}
\fancyhead[R]{\@author}
\fancyhead[L]{\@title}
\makeatother


%% cover.tex
\begin{titlepage}
  \Large \thetitle\\
  \normalsize \theauthor\\
\end{titlepage}

相关内容