É possível impedir que os usuários vejam os códigos do pacote enquanto ainda podem usar suas macros expostas publicamente?

É possível impedir que os usuários vejam os códigos do pacote enquanto ainda podem usar suas macros expostas publicamente?

Suponha que eu tenha um pacote confidencial e ninguém tenha permissão para ver o código-fonte. Os usuários só estão autorizados a usar macros públicas. Esta questão está intimamente relacionadaminha outra pergunta.

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

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

É possível impedir que os usuários vejam os códigos do pacote enquanto ainda podem usar suas macros expostas publicamente?

Responder1

A resposta curta é não'. TeX é uma linguagem de expansão de macro, o que significa que não há nenhum 'código compilado' que você possa usar: o mais próximo que você pode chegar é criar um formato personalizado (um arquivo de formato pré-constrói o código em um formato binário interno). Você também pode tornar o código difícil de ler usando técnicas como aquelas emxii.tex. Mesmo se você fizer isso, seus usuários poderão usar \showsuas macros ou usá-las \tracingallpara ver o que está acontecendo. Portanto, é mais provável que você dificulte sua própria vida na manutenção de seu código fazendo esses truques do que evitando que os curiosos vejam o que está acontecendo.

Responder2

Recentemente escrevi um código para pegar uma fonte TeX, encontrar padrões repetidos esubstitua-os por macros. Isso poderia ser usado como uma etapa para tornar o código-fonte menos legível. Ele também pode ser modificado para transformar nomes de macros em uma bagunça ilegível, de modo que \shownão \tracingallpossa fornecer informações sobre o que está acontecendo. Infelizmente, se você usar pacotes, você terá que copiá-los como um novo arquivo (caso contrário, seus usuários veriam quais pacotes você carrega) e também ofuscá-los (caso contrário, seus usuários seriam capazes de procurar quais pacotes possuem essas macros internas) .

informação relacionada