在 \documentclass{slides} 中使用时,\pageref 给出错误的幻灯片链接编号

在 \documentclass{slides} 中使用时,\pageref 给出错误的幻灯片链接编号

\pageref无论您返回哪张幻灯片,链接始终指向幻灯片~0 \pageref。这似乎是一个反向问题。而且没有幻灯片 0。

我附加了一份 MWE,其中有两张幻灯片来展示该问题。

处理幻灯片的相同代码\documentclass{powersem}会生成正确的反向引用。但是,我没有使用任何其他幻灯片文档类的选项。

感谢您的帮助。

路易斯· A.

\documentclass{slides}
%\documentclass{powersem}
\usepackage[landscape]{geometry}  
\begin{document}
%--------------------------------------------
\begin{slide}{}\centering{\textbf{Title for Slide One}}

\begin{itemize}
  \item~\label{slide:this.is.slide.one}
  Here I page-referenced Slide-Two using \newline \verb+Slide~\pageref{slide:this.is.slide.two}.+

  But I got the wrong page-reference: Slide~\pageref{slide:this.is.slide.two}.\newline
  It should read: Slide~2.
\end{itemize}
\end{slide}
%--------------------------------------------
%--------------------------------------------
\begin{slide}{}\centering{\textbf{Title for Slide Two}}

  \begin{itemize}
\item~\label{slide:this.is.slide.two}
  Here I page-referenced Slide-One using \newline \verb+Slide~\pageref{slide:this.is.slide.one}.+

  But I got the wrong page-reference: Slide~\pageref{slide:this.is.slide.one}.\newline
  It should read: Slide~1.

\end{itemize}
\end{slide} 
%--------------------------------------------
\end{document}

答案1

我希望我没有忽略一些太明显的东西,但据我所知,你不能使用正常的页面计数器slides,因为——根据包文档——它被设置为零“除非为幻灯片、注释或覆盖放出额外的页面。”因此,在你的情况下\thepage总是返回 0(而幻灯片编号由 返回\theslide)。

和宏\label需要\ref\refstepcounter。但是包在输出新幻灯片时显然不会调用此宏。因此,我在包代码中插入了这个宏:

\documentclass{slides}
%\documentclass{powersem}

\usepackage{etoolbox}
\newcounter{slidenum}
\patchcmd{\slide}{\stepcounter{slide}}{\stepcounter{slide}\refstepcounter{slidenum}}{}{}

\usepackage[landscape]{geometry}  
\begin{document}
%--------------------------------------------
\begin{slide}\label{slide:this.is.slide.one}
\begin{center}\textbf{Title for Slide One}\end{center}

\begin{itemize}
  \item
  Here I page-referenced Slide-Two using \newline \verb+Slide~\pageref{slide:this.is.slide.two}.+

  But I got the wrong page-reference: Slide~\ref{slide:this.is.slide.two}.\newline
  It should read: Slide~2. 
\end{itemize}

\end{slide}
%--------------------------------------------
%--------------------------------------------
\begin{slide}
\begin{center}\textbf{Title for Slide Two}\end{center}

\begin{itemize}
  \item\label{slide:this.is.slide.two}
  Here I page-referenced Slide-One using \newline \verb+Slide~\pageref{slide:this.is.slide.one}.+

  But I got the wrong page-reference: Slide~\ref{slide:this.is.slide.one}.\newline
  It should read: Slide~1.
\end{itemize}

\end{slide} 
%--------------------------------------------
\end{document}

相关内容