
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 \show
suas macros ou usá-las \tracingall
para 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 \show
não \tracingall
possa 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) .