我想使用(或定义)一个 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