我正在尝试实现一个开始章节的宏。我不想使用 latex 或 fancyhdr,而只使用纯 tex(出于教学原因)。代码如下
\headline={\hfil{\tenrm\folio}\hfil}
\nopagenumbers
% Counters and macros for handling chapters
\newcount\fChapterNumber
\global\fChapterNumber=0
\def\fBeginChapter#1{
% Initialization
\advance\fChapterNumber by 1
% Formatting
\vfill\eject
\hrule height0.7mm
\vskip 5mm
\centerline{\tenrm \noindent Chapter \the\fChapterNumber}
\vskip 18mm
{\tenbf \noindent #1}
\vskip 35mm
}
% DOCUMENT %
\fBeginChapter{Analisis I}
blah, blah, blah, blah,...
\vfill\eject
blah, blah, blah, blah,...
\bye
如您所见,页眉将打印在两页上,但我不想将其打印在章节的第一页上。我一直在思考并在网上搜索,但没有成功。最好的方法是什么?
答案1
使用条件:
% Counters and macros for handling chapters
\newif\iffChapter
\newcount\fChapterNumber
\fChapterNumber=0
\def\fBeginChapter#1{
% Initialization
\global\advance\fChapterNumber by 1
% Formatting
\vfill\eject
\global\fChaptertrue
\hrule height0.7mm
\vskip 5mm
\centerline{\tenrm \noindent Chapter \the\fChapterNumber}
\vskip 18mm
{\tenbf \noindent #1}
\vskip 35mm
}
\headline={\iffChapter\global\fChapterfalse\else\hfil{\tenrm\folio}\hfil\fi}
\nopagenumbers
% DOCUMENT %
\fBeginChapter{Analisis I}
blah, blah, blah, blah,...
\vfill\eject
blah, blah, blah, blah,...
\bye
begin chapter 命令将条件设置为 true;在这种情况下,标题中的代码只会将条件切换为 false,否则会打印页码。
请注意,你的\global\fChapterNumber=0
是没用的,而 a\global
应该在 前面\advance\fChapterNumber
。
如果要在章节起始页的底部设置页码,可以使用相同的想法:
\headline={\iffChapter\else\hfil{\tenrm\folio}\hfil\fi}
\footline={\iffChapter\hfil{\tenrm\folio}\hfil\global\fChapterfalse\fi}
并且不\nopagenumbers
;\iffChapter
必须由 footline 代码设置为 false,因为它被执行后标题中的一个。
答案2
一种简单的方法是检查奇数。
\headline={\hfil{\tenrm\folio}\hfil}
\nopagenumbers
% Counters and macros for handling chapters
\newcount\fChapterNumber
\global\fChapterNumber=0
\def\fBeginChapter#1{
% Initialization
\advance\fChapterNumber by 1
% Formatting
\ifodd\the\fChapterNumber\vfill\eject
\hrule height0.7mm
\vskip 5mm
\centerline{\tenrm \noindent Chapter \the\fChapterNumber}
\vskip 18mm
{\tenbf \noindent #1}
\vskip 35mm
\fi
}
% DOCUMENT %
\fBeginChapter{Analisis I}
blah, blah, blah, blah,...
\vfill\eject
blah, blah, blah, blah,...
\bye
然而,为了正确起见,您需要通过例程调用您的例程output
。