我如何确保覆盖规范不会在 beamerarticle 中打印?

我如何确保覆盖规范不会在 beamerarticle 中打印?

我必须调整 itemize 环境以适应单独关注,但在这样做时,我以某种方式弄乱了\item命令,现在它在模式下打印覆盖规范article。这是一个 MWE:

\documentclass{article} 
\usepackage[noxcolor]{beamerarticle}

\let\olditemize\itemize
\let\olditem\item
\let\endolditemize\enditemize
\newenvironment{newitemize}[1][]{%
   \let\item\olditem%
   \def\Arg{#1}%
   \ifx\Arg\empty\olditemize\else\olditemize[#1]\fi%
   }{%
   \endolditemize%
}

\begin{document}

\begin{frame}
\begin{newitemize}
\item<2-> Why does it print the overlay specification?
\end{newitemize}
\end{frame}

\end{document} 

我不明白的是:我先将itemize列表的所有原始部分保存到olditemize第一行,然后newitemize从那里定义。但显然这并没有让我完全回到我刚开始的状态,因为原始版本itemize没有在article模式下打印覆盖规范。

有人可以解释一下为什么(以及在哪些方面)我的“newitemize”与标准“itemize”不同吗?

答案1

在这种情况下,您必须让 LaTeX 忽略没有意义的覆盖选项。在其他情况下,它将被打印。

按照我的方式,我重新定义了\item命令以忽略这个参数(在里面<>):

\documentclass{article} 
\usepackage[noxcolor]{beamerarticle}

\let\olditemize\itemize
\let\olditem\item
\let\endolditemize\enditemize
\makeatletter
\newenvironment{newitemize}[1][]{%
   \def\item{\@ifnextchar<
   {\WithOverlay}
   {\WithoutOverlay}
   }
   \def\WithOverlay<##1>
   {\olditem}
   \def\WithoutOverlay
   {\olditem}%
   \def\Arg{#1}%
   \ifx\Arg\empty\olditemize\else\olditemize[#1]\fi%
   }{%
   \endolditemize%
}
\makeatother

\begin{document}

\begin{frame}
\begin{newitemize}
\item<2-> Why does it print the overlay specification?
\end{newitemize}
\end{frame}

\end{document} 

附言:你的问题是为什么。所以,我的回答不是对你的问题(你之前的问题)的建议,而是一种让你了解如何继续下去的方法。(看来​​你学得很快……祝你 TeXing 愉快!)

相关内容