检查页面计数器是否已增加

检查页面计数器是否已增加

我需要重新定义\item命令,以便在长列表中,页面顶部显示的项目将表现不同。有什么建议吗?我的方法是找到一种方法来编写一个\ifthenelse{test}{ }{ }语句,其中“测试”检查页面计数器是否已增加。谢谢

答案1

以下示例使用-系统将内容附加到 s 以\enumerate跟踪\items 以及它们出现在哪个页面上。\label\ref

在此处输入图片描述

\documentclass{article}

\usepackage{etoolbox,lipsum,refcount}

\makeatletter
\newcounter{enumeratecntr}
\newcommand{\setitemlabel}{\label{enum-\theenumeratecntr-\csname the\@enumctr\endcsname}}
\newcommand{\saveprevitem}{\edef\previtem{\csname the\@enumctr\endcsname}}
\patchcmd{\enumerate}% <cmd>
  {\fi}% <search>
  {\stepcounter{enumeratecntr}% New enumerate environment
   \setitemlabel\saveprevitem% Set label and save previous counter
   \let\olditem\item% Store \item
   \renewcommand{\item}{% Update \item
     \olditem\leavevmode% Set regular \item
     \setitemlabel
     % Check if on a new page
     \ifnum\getpagerefnumber{enum-\theenumeratecntr-\previtem}<
       \getpagerefnumber{enum-\theenumeratecntr-\csname the\@enumctr\endcsname}
       {\bfseries New page.} \par% Set some content to identify new page
     \fi
     \saveprevitem% Update previous counter
   }%
  \fi}% <replace>
  {}{}% <success><failure>
\makeatother

\begin{document}

\lipsum[1-3]

\begin{enumerate}
  \item First
  \item Second
  \item Third
  \item Fourth
  \item Fifth
  \item Sixth
  \item Seventh
  \item Eighth
  \item Ninth
  \item Tenth
\end{enumerate}

\sloppy% Just for this example

\begin{enumerate}
  \item\lipsum[1]
  \item\lipsum[2]
  \item\lipsum[3]
  \item\lipsum[4]
  \item\lipsum[5]
  \item\lipsum[6]
  \item\lipsum[7]
  \item\lipsum[8]
  \item\lipsum[9]
  \item\lipsum[10]
  \item\lipsum[11]
  \item\lipsum[12]
\end{enumerate}

\end{document}

该补丁特定于enumerate环境,但也可以更新以使用itemize。此外,可选参数\item已被删除,以便\item立即设置(通过\leavevmode)。

相关内容