我将 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}