Como dicen en argentina... SOS UN MONSTRUO. Esta solución está más allá de mis capacidades actuales. Pensé que podría lograrlo yo mismo usando solo expresiones regulares (y extendidas) pero, claramente no pude.
Y como de costumbre, un par de interrogantes:
1. Si deseo que busque en otras expresión, distinta de
\verb, por ejemplo
\lst, pero, que cumple con las mismas condiciones, ¿debo definir un nuevo bucle? ¿O solo copio la línea cambiando
\verb por
\lst?
2. (Creo que esto no es posible) Supongamos que el archivo de entrada cumple con las condiciones anteriores y se agrega esto:
Using latex Syntax Highlighting
\documentclass{article}
\usepackage{pstricks-add}
\usepackage{fancyvrb}
\newenvironment{postscript}{}{}
\begin{document}
Los entornos pstricks se inician \verb|\pspicture(argumento) o \pspicture*(argumento)| para plain TeX
y \verb+\begin{pspicture} o \begin{pspicture*}+ para LaTeX, antes o después de cada entorno, es necesario
definir \verb'\psset{opciones}' por ejemplo:
\DefineShortVerb[]{\|}
Usamos el delimitador barra |\begin{pspicture} o \begin{pspicture*}| ...
ahora lo cambiamos indefinimos
\UndefineShortVerb{\|}
y ahora definimos el (mas)+
\DefineShortVerb[]{\+}
Usamos el delimitador mas +\begin{pspicture} o \begin{pspicture*}+ ...
\UndefineShortVerb{\+}
y ahora definimos el (almoadilla)
\DefineShortVerb[]{\#}
Usamos el delimitador almoadilla #\begin{pspicture} o \begin{pspicture*}# ...
%%% \pspicture*(4,2)(8,1) o \begin{pspicture*}(4,2)(8,1)
\pspicture*(4,2)(8,1)
\psset{unit=1.0cm}
\psscaleboxto(8,2){foo bar baz}
\endpspicture
% se puede \endpspicture o \end{pspicture*}
% \pspicture(4,2)(8,1) o \begin{pspicture}(4,2)(8,1)
\pspicture(4,2)(8,1)
\psset{unit=1.0cm}
\psscaleboxto(8,2){foo bar baz}
\endpspicture
%\endpspicture o \end{pspicture}
\end{document}
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Es decir, al final de la línea
\DefineShortVerb[]{\|} (justo antes de
}) define el carácter de inicio y fin de donde debo buscar para cambiar, donde los corchetes [] son opcionales, pero, ahora sin
\verb y la línea
\UndefineShortVerb{\|} si es que está presente me permite cambiar el delimitador a uno nuevo. Las expresiones dentro de los delimitadores se comportan de igual manera que en
\verb, pero, el delimitador puede ir cambiando dentro del archivo.
En mi mente sería algo así:
1. Primero recorro todas las líneas con el
script que me dejaste arriba.
2. Recorro nuevamente el archivo de la siguiente manera
2.a. Busco
\DefineShortVerb[]{\|} y me quedo con lo que esté justo atrás de la llave de cierre, en este caso "|"
2.b. Efectuó un reemplazo idéntico a lo que hacía en
\verb, como
verb|...| ya está cambiado no le pasara nada, hasta que encuentre la línea
\UndefineShortVerb{\|}. Si es que está presente sigo en 3, si no, termino
3. Vuelvo a iniciar el proceso desde la línea en que se encontraba
\UndefineShortVerb{\|} (si es que estaba) busco la siguiente aparición de
\DefineShortVerb[]{\+} y repito esto hasta el final del documento
¿Es esto posible? Sería el ideal... para lo que busco.
Agradecido por la solución y la explicación (ese es el plus de tus respuestas).
Pablo