是否可以阻止用户查看包代码,但仍然可以使用其公开的宏?

是否可以阻止用户查看包代码,但仍然可以使用其公开的宏?

假设我有一个机密包,任何人都不允许查看源代码。用户只能使用公共宏。这个问题与我的另一个问题

\documentclass{article}
\usepackage{mypackage}% it is allowed.
\usepackage{listings}

\begin{document}
\publicmacro% it is allowed.
\lstinputlisting{mypackage.sty}% it is not allowed.
\end{document}

是否可以阻止用户查看包代码,但仍然可以使用其公开的宏?

答案1

简短的回答是“不”。TeX 是一种宏扩展语言,这意味着您无法使用“编译代码”:最接近的方法是制作自定义格式(格式文件将代码预先构建为内部二进制格式)。您还可以使用诸如xii.tex。即使你这样做了,你的用户也可以使用\show你的宏或使用\tracingall来查看发生了什么。因此,通过使用这些技巧,你更有可能让自己在维护代码时更加困难,而不是阻止好奇的人看到发生了什么。

答案2

我最近写了一些代码来获取 TeX 源,找到重复的模式,然后用宏替换它们。这可以用作使源代码更难读的一步。它也可以修改为将宏名称变成不可读的混乱,这样就\show无法\tracingall洞察正在发生的事情。不幸的是,如果您使用包,您必须将它们复制为新文件(否则您的用户将看到您加载了哪些包),并且还要混淆它们(否则您的用户将能够搜索哪个包具有这些内部宏)。

相关内容