如果pagestyle等于...——我该如何询问呢?

如果pagestyle等于...——我该如何询问呢?

我想使用(或定义)一个 If 语句来处理 pagestyle。
我不知道 :(

更新:
我在文档中使用了大约 4 种页面样式。举个小例子,我希望在文档的边框上显示有关作业名称、日期、时间、最后一张纸和工作表顺序以及实际页面大小的信息。实际页面的大小并不总是相同的。这就是为什么我想,如果我可以轻松定义一个 if 语句,那么它可能是一个很好的解决方案。

我的意思是说:

\ifthenelse{\equal{pagestyle}{numberone}}{size: $210 \times 297 $}{size: $420 \times 297$}

我希望现在清楚了

答案1

您可以修补页面样式声明\pagestyle\thispagestyle在宏中记录页面样式。

\documentclass{report}
\usepackage{lipsum}
\usepackage{etoolbox}

\makeatletter
\pretocmd{\pagestyle}{%
  \gdef\@regularpagestyle{#1}%
  \gdef\thepagestyle{\if@specialpage\@specialstyle\else\@regularpagestyle\fi}
  }
{\message{(patching of \string\pagestyle\ succeeded)}}
{\message{(patching of \string\pagestyle\ failed)}}
\makeatother

%\pagestyle{empty}

\begin{document}

\chapter{Chapter One}

%\thepagestyle

\lipsum

\ifdef{\thepagestyle}{
  The page style is `\thepagestyle'.%
}{%
  There is no page style declared.
}

\end{document}

命令\pretocmd\ifdef需要 e-TeX 扩展。但不必担心;您的 TeX 引擎可能使用它们。如果没有,也有解决方法。

编辑已修复以处理 @Caramdir 的观察。现在扩展为对或 的\thispagestyle字符串输入进行求值的内容。针对该字符串进行测试将变得更加困难,因为您必须再扩展一步。\pagestyle\thispagestyle

答案2

仅对空页面样式进行测试就很容易:

\makeatletter
\ifx\@evenfoot\@empty empty \else not empty\fi
\makeatother

相关内容