是否可以阻止用戶看到包代碼,同時仍然可以使用其公開的巨集?

是否可以阻止用戶看到包代碼,同時仍然可以使用其公開的巨集?

假設我有一個機密包,任何人都不允許看到原始碼。使用者只能使用公共宏。這個問題與以下問題密切相關我的另一個問題

\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深入了解正在發生的情況。不幸的是,如果您使用包,則必須將它們複製為新文件(否則您的用戶將看到您加載的包),並且還會混淆這些包(否則您的用戶將能夠搜索哪個包具有這些內部宏) 。

相關內容