将命令标记为过时

将命令标记为过时

是否可以将包中的某些命令声明为过时的?我正在开发一个包,想通知用户在下一个版本的包中这些命令将被删除。在这种情况下,用户会看到什么样的消息?

答案1

在定义中添加警告:

\documentclass{article}

\newcommand{\foo}{%
\PackageWarning{eqexpl}{command foo is obsolete, please use bar instead}%
bar
}

\begin{document}

\foo

\end{document}

答案2

如果它只是一个直接替换,那么像下面这样的东西应该很好。

\documentclass{article}

\makeatletter % let's emulate a package

\newcommand{\newversion}{This is the command that should be used}

\newcommand{\oldversion}{%
  \PackageWarningNoLine{morenko}{%
     The command \noexpand\oldversion is obsolete and might get\MessageBreak
     removed in future versions of the package.\MessageBreak
     Please use \noexpand\newversion instead%
  }%
  \global\let\oldversion\newversion
  \newversion
}

\makeatother

\begin{document}

I use \oldversion.

Again I use \oldversion.

Also \newversion.

\end{document}

这样,用户将收到一个警告,旧命令将被重新定义为新命令。

但是,精确的执行方法可能取决于命令的性质:如果在扩展上下文中使用它,用户将遇到很多奇怪的错误。

相关内容