我正在尝试创建一个类,允许您使用以下方式定义名称
\name{Whatever}
这定义为
\newcommand{\name}[1]{\def\gsy@name{#1}}
传递给此处的任何内容都将在标题中使用,并且后面还会跟着\\
更多内容:
\rhead{\gsy@name\\More stuff on the next line}
不幸的是,如果有人传递空字符或者一个空格,整个过程就会中断\name
:
\name{ }
这导致\\
尝试结束一个空白行,并且整个过程拒绝编译。
有什么方法可以检测是否有无法跟踪的内容\\
传递给我的宏?
答案1
使用\notblank{\gsy@name}{stuff with \\}{empty or other stuff}
of应该可以工作。它\expandafter
测试\gsy@name
第一个参数是否为空(空白/空格/空白)。
请不要fancyhdr
抱怨\headheight
价值
\documentclass{article}
\usepackage{fancyhdr}
\usepackage{etoolbox}
\makeatletter
\newcommand{\name}[1]{\def\gsy@name{#1}}
\rhead{\expandafter\notblank\expandafter{\gsy@name}{\gsy@name\\More stuff on the next line}{}}
\makeatother
%\name{Stuff }
\name{}
\pagestyle{fancy}
\begin{document}
Foo
\end{document}