![将命令标记为过时](https://linux22.com/image/395594/%E5%B0%86%E5%91%BD%E4%BB%A4%E6%A0%87%E8%AE%B0%E4%B8%BA%E8%BF%87%E6%97%B6.png)
是否可以将包中的某些命令声明为过时的?我正在开发一个包,想通知用户在下一个版本的包中这些命令将被删除。在这种情况下,用户会看到什么样的消息?
答案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}
这样,用户将收到一个警告,旧命令将被重新定义为新命令。
但是,精确的执行方法可能取决于命令的性质:如果在扩展上下文中使用它,用户将遇到很多奇怪的错误。