我有一个开关,我想关闭页眉和页脚,但保持正文的打开状态。哪些命令实际上告诉 TeX 在设置正文后写入页眉和页脚,我如何在这些命令之前和之后添加开关(使用etoolbox
或类似?)。
我正在寻找类似的东西\AtBeginPrintHeader
。类似于\AtBeginDocument
,或者everyhook
允许您在每个段落开头执行某些操作的钩子,数学模式等。我知道有一些可以bophook
在页面开头执行操作的东西,但我需要在编写的正文和编写的页眉和页脚之间执行某些操作。
\ohead
用\apptocmd
from进行修补etoolbox
显然行不通,因为\ohead
TeX 尝试设置标题时调用的不是该宏。\ohead
将相关的内部宏设置为它们应该设置的值,以便设置您想要的标题。所以我想我想知道的是设置标题时实际发生了什么:我应该使用什么命令\appto
才能在设置标题之前发生一些事情?
有这样的机制吗?它与scrpage2
和兼容吗fancyhdr
?
这是示例。我曾经everyhook
为每个段落添加输入行号。尴尬的是,这包括页眉和页脚中的段落。
\documentclass{article}
\usepackage{everyhook,marginnote}
\newif\ifnotmarginhook
\notmarginhooktrue
\PushPostHook{par}{%
\ifnotmarginhook%
\notmarginhookfalse%
{\marginnote{\small\ttfamily\the\inputlineno}}%
\notmarginhooktrue%
\fi%
}
\usepackage{scrpage2}
\pagestyle{scrheadings}
\newcounter{firstline}
\newcommand\nolineno[1]{\notmarginhookfalse #1\notmarginhooktrue}
\ohead{Problem $\to$}
\begin{document}
Some text
\end{document}
所以我想打开\notmarginhookfalse
标题,然后在设置更多正文之前将其重新打开...使用\ohead{\notmarginhookfalse Text}
似乎不起作用。
那么有没有办法挂接到标题或一些内部开关,以便我可以做类似的事情\ifheaders
并以这种方式修改内容
答案1
如果您everyhook
使用该[excludeor]
选项加载包,您的解决方案应该会按预期工作。(我不明白您示例中的编号系统,但这与解决方案无关。)
\documentclass{article}
\usepackage[excludeor]{everyhook}
\usepackage{marginnote}
\newif\ifnotmarginhook
\notmarginhooktrue
\PushPostHook{par}{%
\ifnotmarginhook%
\notmarginhookfalse%
{\marginnote{\small\ttfamily\the\inputlineno}}%
\notmarginhooktrue%
\fi%
}
\usepackage{fancyhdr}
\pagestyle{fancy}
\newcounter{firstline}
\newcommand\nolineno[1]{\notmarginhookfalse #1\notmarginhooktrue}
\rhead{\nolineno{Problem $\to$}}
\begin{document}
Some text
Some text
\end{document}