如果我使用scrlayer-scrpage
样式的页眉/页脚命令(例如\chead
)standalone
子文件时,
不会发出 header 或 footer 命令。
有人知道为什么会发生这种情况以及如何防止它吗?
请注意,header2/footer2 命令发布
00-TitlePage
后01-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}