Latex 如何在当前页面上查看新章节是否开始?

Latex 如何在当前页面上查看新章节是否开始?,latex,conditional,tex,Latex,Conditional,Tex,我正在使用这个软件包。使用\adderyPageHook命令,我可以在文档的每一页的开头重复操作。现在我想做这样的事情: \AddEverypageHook{ \if "New chapter starts at current page." - "Do stuff." \else "Do other stuff." \fi } 我怎样才能签入latex,新章节是否从当前页面开始?我有一个解决方案。目的是检查chapternumber计数器是否已更改。这是由自定义计数器完成的:

我正在使用这个软件包。使用\adderyPageHook命令,我可以在文档的每一页的开头重复操作。现在我想做这样的事情:

\AddEverypageHook{
  \if "New chapter starts at current page." - "Do stuff." 
  \else "Do other stuff."
  \fi
}

我怎样才能签入latex,新章节是否从当前页面开始?

我有一个解决方案。目的是检查chapternumber计数器是否已更改。这是由自定义计数器完成的:

\newcounter{CurrentChapNum}
  • 如果章节计数器没有更改,那么我们仍然在当前章节中,所以请执行\customcommand1内容
  • 如果计数器已更改,则我们似乎处于新章节的开头,因此请填充\customcommand2并将CurrentChapNum计数器重置为当前章节的值
这是由以下代码完成的

\AddEverypageHook{ 
   \ifnum\value{chapter}=\value{CurrentChapNum} \customcommand1 
   \else \customcommand2 \setcounter{CurrentChapNum}{\value{chapter}} 
   \fi  
}

因为我对latex标记非常陌生,我希望这不会太笨拙。

我有一个解决方案。目的是检查chapternumber计数器是否已更改。这是由自定义计数器完成的:

\newcounter{CurrentChapNum}
  • 如果章节计数器没有更改,那么我们仍然在当前章节中,所以请执行\customcommand1内容
  • 如果计数器已更改,则我们似乎处于新章节的开头,因此请填充\customcommand2并将CurrentChapNum计数器重置为当前章节的值
这是由以下代码完成的

\AddEverypageHook{ 
   \ifnum\value{chapter}=\value{CurrentChapNum} \customcommand1 
   \else \customcommand2 \setcounter{CurrentChapNum}{\value{chapter}} 
   \fi  
}

由于我对latex标记的内容还不太熟悉,我希望这不会太笨拙。

在一个典型的文档中,发出
\chapter
命令之后会自动分页符。例如,请参见中的
\chapter
的功能:

它发出一个
\clearpage
(或
\cleardoublepage
),刷新任何挂起的内容并从新页面开始

因此,根据您的设置,使用的
\afterpage{}
宏在当前页面之后执行
就足够了。例如,在序言中,您将

\let\oldchapter\chapter % Store \chapter
\renewcommand{\chapter}{% Redefine \chapter to...
  \afterpage{\customcommand}% ...execute \customcommand after this page
  \oldchapter}
当然,这只有在不在非章节页面上执行任何其他操作时才有意义,因为该条件与
\chapter
相关。因此,在每个页面上做出文档范围的决策可能需要稍微不同的方法

我仍然建议点击
\chapter
宏,但使用条件。下面是一个示例(单击以放大图像):


上述方法的优点是它适用于
\chapter
\chapter*
\chapter*
不会增加
chapter
计数器,因此依靠基于这种比较的条件是不够的。

在典型文档中,发出
\chapter
命令后会自动分页符。例如,请参见中的
\chapter
的功能:

它发出一个
\clearpage
(或
\cleardoublepage
),刷新任何挂起的内容并从新页面开始

因此,根据您的设置,使用的
\afterpage{}
宏在当前页面之后执行
就足够了。例如,在序言中,您将

\let\oldchapter\chapter % Store \chapter
\renewcommand{\chapter}{% Redefine \chapter to...
  \afterpage{\customcommand}% ...execute \customcommand after this page
  \oldchapter}
当然,这只有在不在非章节页面上执行任何其他操作时才有意义,因为该条件与
\chapter
相关。因此,在每个页面上做出文档范围的决策可能需要稍微不同的方法

我仍然建议点击
\chapter
宏,但使用条件。下面是一个示例(单击以放大图像):


上述方法的优点是它适用于
\chapter
\chapter*
\chapter*
不会增加
chapter
计数器,因此依靠基于这种比较的条件是不够的。

点击
\chapter
宏可能比每页检查更容易。你到底想做什么?嗨,沃纳。我为每个页面添加了一个彩色的拇指索引(这就是everypage包的原因)。这很有效。但是,我希望包含“chapter X”字符串的页面的外观有所不同。@Werner:因为我不知道是否有其他代码在某个地方重新定义了chapter宏,所以再次这样做是否有危险?点击
\chapter
宏可能比检查每一页更容易。你到底想做什么?嗨,沃纳。我为每个页面添加了一个彩色的拇指索引(这就是everypage包的原因)。这很有效。但是,我希望包含“chapter X”字符串的页面的外观有所不同。@Werner:因为我不知道是否有其他代码在某个地方重新定义了chapter宏,再次这样做是否危险?除非您使用的是
\chapter*
,否则这种用法应该可以。我添加了地址。除非您使用的是
\chapter*
,否则这种用法应该可以。我补充了这个问题。