我有一个myclass
基于 KOMA-scriptscrartcl
类的文档类。
梅威瑟:myclass.cls
\NeedsTeXFormat{LaTeX2e}
% The document class name
\ProvidesClass{myclass}
% https://tex.stackexchange.com/a/121829
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}}
\ProcessOptions\relax
\PassOptionsToPackage{headlines=3}{typearea}
% The document class to base this class on
\LoadClass{scrartcl}
\RequirePackage[headsepline]{scrlayer-scrpage}
% The page headers
\lohead{\csname @author\endcsname\\Foo\\Bar}
如果命令*的参数非空,我该如何有条件地\csname @author\endcsname\\
在开头插入?问题是,目前总是在标题中插入换行符。lohead
\author{}
* 不确定这里的术语。
答案1
您可以像 Koma-Script 那样进行操作,查看\maketitle
其中的定义scrartcl.cls
作为示例。
\makeatletter
\lohead{\ifx\@author\@empty\else\@author\\\fi Foo\\Bar}
\makeatother
如果你确定\@author
之后不会改变\begin{document}
,你也可以只检查一次。
\makeatletter
\AtBeginDocument{%
\ifx\@author\empty
\lohead{Foo\\Bar}%
\else
\lohead{\@author\\Foo\\Bar}%
\fi
}
\makeatother