假设我有一个机密包,任何人都不允许查看源代码。用户只能使用公共宏。这个问题与我的另一个问题。
\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
洞察正在发生的事情。不幸的是,如果您使用包,您必须将它们复制为新文件(否则您的用户将看到您加载了哪些包),并且还要混淆它们(否则您的用户将能够搜索哪个包具有这些内部宏)。