包中的局部变量

包中的局部变量

我正在定义自己的 latex 包mypackage.sty。如何定义本地命令,以便:mycommand

  • 如果mycommand已经在其他地方定义,它将在包内部重新定义
  • 如果mycommand尚未定义,它将在包内部本地定义,并且无法从包外部获得

相同的问题,长度将使用\newlength和进行局部定义\setlength

答案1

您可能正在考虑一种编译或解释语言,其中函数定义提供本地作用域,从而隐藏调用代码的实现。该习语不适用于 TeX 等宏扩展语言。

\foo如果你的包根据一些仅与包内部代码相关的辅助命令来定义用户命令,那么

\newcommand\foo{zzz \internalfoohelper zzz}

然后当\foo在文档中使用时,它只会扩展为 zzz \internalfoohelper zzz ,因此\internalfoohelper需要定义在那时候您不能仅在包代码中本地定义它。

通常的解决方案是选择一些唯一的前缀,例如longtable启动所有内部命令\LT@...

相关内容