Supongamos que tengo un paquete confidencial del que nadie puede ver el código fuente. Los usuarios sólo pueden utilizar las macros públicas. Esta pregunta está estrechamente relacionada conmi otra pregunta.
\documentclass{article}
\usepackage{mypackage}% it is allowed.
\usepackage{listings}
\begin{document}
\publicmacro% it is allowed.
\lstinputlisting{mypackage.sty}% it is not allowed.
\end{document}
¿Es posible evitar que los usuarios vean los códigos del paquete mientras aún pueden utilizar sus macros expuestas públicamente?
Respuesta1
La respuesta corta es no'. TeX es un lenguaje de expansión de macros, lo que significa que no existe un 'código compilado' que pueda usar: lo más cercano que puede llegar es crear un formato personalizado (un archivo de formato preconstruye el código en un formato binario interno). También puedes hacer que el código sea difícil de leer usando técnicas como las dexii.tex
. Incluso si hiciera eso, sus usuarios pueden usar \show
sus macros o usarlas \tracingall
para ver qué está sucediendo. Por lo tanto, es más probable que te hagas la vida más difícil manteniendo tu código haciendo estos trucos que evitando que los curiosos vean lo que está sucediendo.
Respuesta2
Recientemente escribí un código para tomar una fuente TeX, encontrar patrones repetidos yreemplazarlos por macros. Esto podría usarse como un paso para hacer que el código fuente sea menos legible. También podría modificarse para convertir los nombres de las macros en un desastre ilegible, de modo que \show
no \tracingall
puedan dar una idea de lo que está sucediendo. Desafortunadamente, si usa paquetes, tendrá que copiarlos como un archivo nuevo (de lo contrario, sus usuarios verán qué paquetes carga) y también ofuscarlos (de lo contrario, sus usuarios podrán buscar qué paquete tiene esas macros internas). .