scrlayer-scrpage:页眉/页脚在子文件中使用时仅持续一页

scrlayer-scrpage:页眉/页脚在子文件中使用时仅持续一页

如果我使用scrlayer-scrpage 样式的页眉/页脚命令(例如\chead
standalone子文件时,
不会发出 header 或 footer 命令。

有人知道为什么会发生这种情况以及如何防止它吗?

请注意,header2/footer2 命令发布
00-TitlePage01-HeaderFooter不会触发。

还请注意第 2 页上重置中的初始 header1/footer1 命令00-TitlePage

(运行 MasterFile,尽管
除 Preamble 之外的任何其他文件都可以独立运行。)

主文件.tex

\documentclass[crop=false,float=true,class=scrartcl]{standalone}

\providecommand{\main}{.}
\input{\main/Subfiles/Preamble.tex}                     % Preamble [document configuration]

\chead{HeaderMasterPre}

\begin{document}

%\chead{HeaderMaster}

\input{\main/Subfiles/00-TitlePage}
\input{\main/Subfiles/01-HeaderFooter}
\input{\main/Subfiles/02-Main}

\end{document}

序言.tex

\usepackage{standalone}                 % allows for independent runs of subfiles.
\usepackage{scrlayer-scrpage}

\usepackage{lipsum}

\chead{HeaderPreamble}

00-标题页.tex

\documentclass[crop=false,float=true,class=scrartcl]{standalone}

\providecommand{\main}{..}
\input{\main/Subfiles/Preamble.tex}                     % Preamble [document configuration]

\chead{HeaderTitlePagePre}

\begin{document}

\chead{HeaderTitlePage}

\begin{center}
\Huge{ \textbf{Title} }
\end{center}

\clearpage

\chead{HeaderTitlePageCP}

\end{document}

01-HeaderFooter.tex

\documentclass[crop=false,float=true,class=scrartcl]{standalone}

\providecommand{\main}{..}
\input{\main/Subfiles/Preamble.tex}                     % Preamble [document configuration]

\chead{HeaderHeaderFooterPre}

\begin{document}

\chead{HeaderHeaderFooter}

\end{document}

02-主.tex

\documentclass[crop=false,float=true,class=scrartcl]{standalone}

\providecommand{\main}{..}
\input{\main/Subfiles/Preamble.tex}                     % Preamble [document configuration]

\begin{document}

\lipsum

\end{document}

答案1

在解释之前,由于解决方案不太优雅,我提出了一个不同的解决方案。对于多文件项目,如果您想要结合单独排版每个文件的可能性,并能够快速连接所有内容,请查看 -package subfiles。我相信下面解释的分组行为不存在,但我可能是错的。

分组

免责声明:在下面的回答中,我将只关注中心页眉。其他页眉和页脚项目当然也会采用类似的方法。

这是因为变量\chead{text}及其朋友都存储在本地的一个组中。当有standalone文档时,它们都使用\begin{document} and\end{document},这是一个组,这意味着更改只会在该组中进行。组结束后,变量将恢复为其先前的值。这就像写入\begin{group}\chead{text}\end{group},不会导致任何明显的变化。

解决方案:全局变量

我们可以做的是使用 设置一个全局变量\gdef。这些变量随处可见。在不改变\chead{}和 的定义的情况下,让我们创建一个新变量,使用宏作为更方便输入的快捷方式。

\gdef\zcenterHead{}
\newcommand{\centerHead}[1]{\gdef\zcenterHead{#1}}
\chead{\centerHead}

现在我们可以使用命令\centerHead{}来存储全局变量。\chead{\zcenterHead}只会设置一次,并将检索全局变量。

在您的文档中,要更改中心标题,请使用宏\centerHead{text}

主文件.文本

\documentclass[crop=false,float=true,class=scrartcl]{standalone}
\gdef\centerHead{}
\providecommand{\main}{.}
\input{Preamble}
\chead{\centerHead}
\usepackage{lipsum}                 % Preamble [document configuration]

\begin{document}
\input{00-TitlePage}

\section{nono}
hello
\input{01-HeaderFooter}
\input{02-Main}

\end{document}

00-标题页.tex

\documentclass[crop=false,float=true,class=scrartcl]{standalone}

\providecommand{\main}{..}
\input{\main/Subfiles/Preamble.tex}                     % Preamble [document configuration]

\begin{document}

\centerHead{oh yo}
\cfoot{Footer1}

\begin{center}
\Huge{ \textbf{Title} }
\end{center}

\clearpage

\centerHead{Header2a}
\cfoot{Footer2a}

\end{document}

相关内容