• Publicidad

Eliminar palabras en distintas posiciones de un archivo

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Eliminar palabras en distintas posiciones de un archivo

Notapor pablgonz » 2014-01-28 15:13 @675

Hola a todos, vuelvo a recurrir al foro, con un dilema de eliminación de palabras de un archivo, trataré de explicarlo en forma clara a ver si se me da una epifanía como en mi mensaje anterior. Va así:

Tengo un fichero de entrada (latex) del cual deseo eliminar una lista de palabras desde que inicia el documento hasta que encuentra la primera aparición de la palabra \begin{document}, para ello leo el archivo completo y los divido con split(); luego busco las palabras que deseo y con una expresión regular las elimino.

La lista de palabras es algo así:
Sintáxis: [ Descargar ] [ Ocultar ]
  1. pstricks, pstricks-add, psfrag, auto-pst-pdf, graphicx,pst-algo1, pst-algo2, pst-algo(n) 
algunas las deseo eliminar y otras modificar, llamaré a estas palabras familia para reducir la escritura. Se dan los siguientes casos:
Sintáxis: [ Descargar ] [ Ocultar ]
Using latex Syntax Highlighting
  1. % Caso 1, en lineas separadas, incluye []
  2. \usepackage{pstricks-add}
  3. \usepackage{pst-algo1}
  4. \usepackage[opcion=1, opcion=2]{psfrag}
  5. \usepackage{auto-pst-pdf}
  6. \usepackage[opcion]{graphicx}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using latex Syntax Highlighting
  1. % Caso 2a, varios de la misma familia en una misma linea (sin [])
  2. \usepackage{pst-algo1,pst-algo2,pst-algo3,pst-algo4,pstricks-add,pstricks}
  3. % Caso 2b, varios de la misma familia en distintas lineas; sin [] y comienza (o termina) con (o sin) salto de linea.
  4. \usepackage{
  5.                         pst-algo1,
  6.                         pst-algo1,
  7.                         pst-algo1,
  8.                         pst-algo1,
  9.                         pstricks-add,
  10.                         pstricks
  11.                         }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using latex Syntax Highlighting
  1. % Caso 3a, uno o varios en una misma linea, pero de distinta familia (sin [])
  2. \usepackage{lmodern,pstricks,amsmath,fourier,etc,graphicx}
  3. % Caso 3b, uno o varios en una distintas lineas y de distintas familias; sin [] y comienza (o termina) con (o sin) salto de linea.
  4. \usepackage{
  5.                         lmodern,
  6.                         pstricks,
  7.                         amsmath,
  8.                         fourier,
  9.                         etc,
  10.                         graphicx
  11.                         }
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Con el siguiente script, logro resolver el caso 1 y el caso 2a:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use v5.16;
  3. use autodie;
  4.  
  5. # Abro y leo todo el archivo
  6. open my $IPDF, '<', "test.tex";
  7. undef $/;                              # read all file
  8.  
  9. # Lo divido en dos y cierro
  10. my ( $uno, $dos ) = split( /\\begin\{document\}/, <$IPDF>, 2 );
  11. close $IPDF;
  12. my @coment = $uno;                     # me quedo con $uno
  13. my @preamb;                            # acá guardo las líneas modificadas
  14.  
  15. # Lo recorro y aplico las expresiones regulares
  16. foreach my $line (@coment) {
  17.  
  18.     #chomp($line); # quito los finales de línea
  19.     # Esta expresión es para \usepackage[...]{pst-algo}, cuando tiene [...]
  20.     $line =~ s/\\usepackage(?:\[.+?\])?\{pst.+?}//gx;               # elimino
  21.     $line =~ s/(\\usepackage(?:\[.+?\])?)\{auto-pst.+?}//gx;        # elimino
  22.  
  23.     # Esta expresión es para \usepackage[...]{psfrag}, cuando tiene [...]
  24.     $line =~ s/\\usepackage(?:\[.+?\])?\{psfrag}//gx;               # elimino
  25.     $line =~ s/(\\usepackage(?:\[.+?\])?)\{vaucanson-.+?}//gx;      # elimino
  26.     $line =~ s/(\\usepackage(?:\[.+?\])?)\{psgo}//gx;               # elimino
  27.  
  28.     # Esta expresión es para \usepackage[...]{graph}, cuando tiene [...]
  29.     $line =~ s/(\\usepackage(?:\[.+?\])?)\{graph/\%$1\{graph/gx;    # añado %
  30.  
  31.     # Quito las líneas que deje en blanco al eliminar
  32.     $line =~ s/\n+/\n/g;
  33.  
  34.     # Añado las líneas a @preamb
  35.     push( @preamb, $line );
  36. }                                                                   # cierro foreach
  37.  
  38. # Uno y añado las líneas que necesito
  39. my $clean = join( "\n",
  40.     @preamb,
  41.     "\\usepackage{grfext}\n\\\PrependGraphicsExtensions*{pdf}\n\\usepackage{graphicx}\n\\graphicspath{{images/}}\n\\begin{document}"
  42.         . $dos );
  43.  
  44. # Abro otro archivo y guardo los cambios
  45. open my $OPDF, '>', "test-out.tex";    # escribo la salida
  46. print $OPDF $clean;
  47. close $OPDF;
  48.  
  49. __END__
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
pero, me quedan pendiente el resto de los casos. Si el fichero de entrada es de este tipo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using latex Syntax Highlighting
  1. \documentclass{article}
  2. \usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
  3. \usepackage{pstricks-add}
  4. \usepackage{pst-algo1}
  5. \usepackage[opcion]{graphicx}
  6. \usepackage{pst-algo1,pst-algo2,pst-algo3,pst-algo4,pstricks-add,pstricks,auto-pst-pdf}
  7. \usepackage{            pst-algo1,
  8.                         pst-algo1,
  9.                         pstricks-add,
  10.                         pstricks
  11.                         }
  12. \usepackage{lmodern,pstricks,amsmath,fourier,etc,graphicx}
  13. \usepackage{
  14.                         lmodern,
  15.                         pstricks,
  16.                         amsmath,
  17.                         fourier,graphicx
  18.                         }
  19. \begin{document}
  20.  
  21. Esta sección del archivo no debe ser modificada
  22.  
  23. \begin{verbatim}
  24. \usepackage{pstricks-add}
  25. \usepackage{lmodern}
  26. \usepackage{pstexample}
  27. \usepackage[opcion]{graphicx}
  28. \begin{document}
  29. \begin{pspicture}
  30. Algo
  31. \begin{pspicture*}
  32. \end{document}
  33. \end{verbatim}
  34. \end{document}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Debería obtener este fichero de salida
Sintáxis: [ Descargar ] [ Ocultar ]
Using latex Syntax Highlighting
  1. \documentclass{article}
  2. \usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
  3. %\usepackage[opcion]{graphicx}
  4. \usepackage{lmodern,amsmath,fourier,etc}
  5. \usepackage{
  6.                         lmodern,
  7.                         amsmath,
  8.                         fourier
  9.                         }
  10. \usepackage{grfext}
  11. \PrependGraphicsExtensions*{pdf}
  12. \usepackage{graphicx}
  13. \graphicspath{{images/}}
  14. \begin{document}
  15.  
  16. Esta sección del archivo no debe ser modificada
  17.  
  18. \begin{verbatim}
  19. \usepackage{pstricks-add}
  20. \usepackage{lmodern}
  21. \usepackage{pstexample}
  22. \usepackage[opcion]{graphicx}
  23. \begin{document}
  24. \begin{pspicture}
  25. Algo
  26. \begin{pspicture*}
  27. \end{document}
  28. \end{verbatim}
  29. \end{document}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
el cual no he logrado generar.

Tengo una idea de cómo resolverlo más menos así:
  1. Crear una lista con las palabras que deseo buscar (no son tantas y puedo ir agregando otras en el futuro)
  2. Crear una expresión regular para buscar las palabras de la lista y eliminarlas
  3. Dentro de la expresión regular crear un test para que quite la coma si está a la derecha o izquierda según sea el caso.
Espero haberme explicado claro.
Agradecido de antemano,
Pablo
pablgonz
Perlero nuevo
Perlero nuevo
 
Mensajes: 236
Registrado: 2010-09-08 21:03 @919
Ubicación: Concepción (Chile)

Publicidad

Re: Eliminar palabras en distintas posiciones de un archivo

Notapor explorer » 2014-01-28 23:28 @019

Fíjate que en la línea 12 estás guardando el escalar $uno en el array @coment, por lo que este array solo contiene un elemento, por lo que te sobra el array de la línea 13 y el bucle de la línea 16. Te vale con aplicar las expresiones regulares directamente a la variable $uno.

En cuanto a las transformaciones a realizar, basta con encontrar las expresiones regulares adecuadas, aunque algunas pueden ser endiabladas ;)

El siguiente código genera la salida que esperas, a partir del archivo de entrada propuesto.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use v5.16;
  3. use File::Slurp;
  4. use autodie;
  5.  
  6. ## Constantes #################################################################
  7. my $BEGINDOC = quotemeta('\begin{document}');
  8. my $USEPACK  = quotemeta('\usepackage');
  9. my $GRAPHICX = quotemeta('{graphicx}');
  10.  
  11. ## Exp. Reg.
  12. my $CORCHETES = qr/\[ [^]]*? \]/x;
  13. my $PALABRAS  = qr/\b (?: pst-algo\d+ | pstricks (?: -add )? | psfrag | auto-pst-pdf | graphicx )/x;
  14. my $FAMILIA   = qr/\{ \s* $PALABRAS (?: \s* [,] \s* $PALABRAS )* \s* \}/x;
  15.  
  16.  
  17. ## Leer archivo ###############################################################
  18. my $IPDF = read_file(shift);                    # el archivo a procesar lo pasamos como argumento al programa
  19.  
  20.  
  21. ## Dividir el archivo #########################################################
  22. my($cabeza, $cuerpo) = $IPDF =~ m/\A (.+?) ($BEGINDOC .+?) \z/msx;
  23.  
  24.  
  25. ## Filtrado ###################################################################
  26. # comentar
  27. $cabeza =~ s/ ^ ($USEPACK $CORCHETES $GRAPHICX) /%$1/msxg;
  28.  
  29. # eliminar líneas enteras
  30. $cabeza =~ s/ ^ $USEPACK (?: $CORCHETES )? $FAMILIA \n//msxg;
  31.  
  32. # eliminar palabras sueltas
  33. $cabeza =~ s/ (?: ^ $USEPACK \{ | \G) [^}]*? \K (,?) \s* $PALABRAS (\s*) (,?) /$1 and $3 ? ',' : $1 ? $2 : ''/gemsx;
  34.  
  35.  
  36. ## Añadir #####################################################################
  37. $cabeza .= <<'EXTRA';
  38. \usepackage{grfext}
  39. \PrependGraphicsExtensions*{pdf}
  40. \usepackage{graphicx}
  41. \graphicspath{{images/}}
  42. EXTRA
  43.  
  44.  
  45. ## Escritura ##################################################################
  46. write_file('test-out.tex', $cabeza . $cuerpo);
  47.  
  48. __END__
  49. #while ($cabeza =~ m/ ^ ( $USEPACK \{ .*? \} ) /gmsx) {
  50. #    my $inicio = $-[1];                                        # lugar donde comienza
  51. #    my $cadena = $1;
  52. #    my $largo  = length $cadena;
  53. #
  54. #    $cadena =~ s/ ,? \s* $PALABRAS //gx;
  55. #
  56. #    substr($cabeza, $inicio, $largo) = $cadena;                # nuevo contenido
  57. #    pos($cabeza) = $inicio + length($cadena);
  58. #}
  59.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Eliminar palabras en distintas posiciones de un archivo

Notapor pablgonz » 2014-01-29 02:49 @159

Excelente, aquí es donde uno siente la diferencia entre los (casi) 10 años que llevas en el foro (y quizás cuantos más programando en Perl) lamentablemente no puedo usar el módulo File::Slurp ya que mi distro Linux (Fedora 19) me está dando problemas con yum:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. [Errno -1] repomd.xml does not match metalink for updates-testing
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

y no lo tenía instalado, intentaré con CPAN, (hace rato que estoy con problemas) creo que migraré todo a un disco externo y me instalaré la nueva edición (con Perl 5.18).

En fin, ¿se puede lograr sin ese módulo?, me estuve cabeceando bastante con una expresión regular que diera con uno de los casos... de hecho llevo horas tratando...

Agradecido,
Pablo.

P.D.: A propósito de un hilo que pusiste en el foro intermedio respecto a la seguridad junto a los comentarios que dieron en otro mensaje del foro básico, me gustaría proponer una idea: muchos de los novatos del foro (incluido), no hemos tenido la oportunidad de tener a mano el libro Perl Best Practices, quizás, sería una buena idea tener un marco de referencia de cómo escribir un buen script (algo como la ortografía básica del español) con notas sobre el uso de or o ||, los módulos básicos que deberíamos cargar, no usar perl dentro de perl, usar my, etc.

Es solo una idea, en el foro existe MUCHO código, y si bien, lo entretenido de Perl es que se puede lograr un mismo efecto de muchas formas, quizás si exista una "normativa general" sobre cómo escribir de correctamente esas formas, a mi parecer esto está bastante relacionado con la seguridad de un script (entendiendo por seguridad no solo a hackear un script, sino cómo un error en lo escrito puede afectar al sistema en cual estamos trabajando).
pablgonz
Perlero nuevo
Perlero nuevo
 
Mensajes: 236
Registrado: 2010-09-08 21:03 @919
Ubicación: Concepción (Chile)

Re: Eliminar palabras en distintas posiciones de un archivo

Notapor Aceitunas » 2014-01-29 03:12 @175

Hola, Pablo.

Aunque explorer te dará seguramente la solución de cómo instralar correctamente el módulo, te dejo esta posible solución, usando el método aspiradora:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.     use v5.16;
  3.     #use File::Slurp;
  4.      
  5.     ## Constantes #################################################################
  6.     my $BEGINDOC = quotemeta('\begin{document}');
  7.     my $USEPACK  = quotemeta('\usepackage');
  8.     my $GRAPHICX = quotemeta('{graphicx}');
  9.      
  10.     ## Exp. Reg.
  11.     my $CORCHETES = qr/\[ .+? \]/x;
  12.     my $PALABRAS  = qr/pst-algo\d+ | pstricks (?: -add )? | psfrag | auto-pst-pdf | graphicx/x;
  13.     my $FAMILIA   = qr/\{ \s* $PALABRAS (?: \s* [,] \s* $PALABRAS )* \s* \}/x;
  14.      
  15.     ## Leer archivo ###############################################################
  16.     #my $IPDF = read_file('test.tex');
  17.      
  18.    
  19.     open my $INFILE, '<', $nombre;
  20.     undef $/;                            
  21.     my $IPDF = <$INFILE>;          
  22.     close   $INFILE;
  23.  
  24.     ## Dividir el archivo #########################################################
  25.     my($cabeza, $cuerpo) = $IPDF =~ m/\A (.+?) ($BEGINDOC .+?) \z/msx;
  26.      
  27.     ## Filtrado ###################################################################
  28.     # comentar
  29.     $cabeza =~ s/ ^ ( $USEPACK    $CORCHETES   $GRAPHICX ) $/%$1/msxg;
  30.      
  31.     # eliminar líneas enteras
  32.     $cabeza =~ s/ ^   $USEPACK (?:$CORCHETES)? $FAMILIA \s*    //msxg;
  33.      
  34.     # eliminar palabras sueltas
  35.     #while ($cabeza =~ m/ ^ ( $USEPACK \{ .*? \} ) /gmsx) {
  36.     #    my $inicio = $-[1];                                        # lugar donde comienza
  37.     #    my $cadena = $1;
  38.     #    my $largo  = length $cadena;
  39.     #
  40.     #    $cadena =~ s/ ,? \s* $PALABRAS //gx;
  41.     #
  42.     #    substr($cabeza, $inicio, $largo) = $cadena;                # nuevo contenido
  43.     #    pos($cabeza) = $inicio + length($cadena);
  44.     #}
  45.     $cabeza =~ s/ (?: ^ $USEPACK \{ | \G) [^}]*? \K ,? \s* $PALABRAS //gmsx;
  46.      
  47.      
  48.     ## Añadir #####################################################################
  49.     $cabeza .= <<'EXTRA';
  50.     \usepackage{grfext}
  51.     \PrependGraphicsExtensions*{pdf}
  52.     \usepackage{graphicx}
  53.     \graphicspath{{images/}}
  54.     EXTRA
  55.      
  56.     ## Escritura ##################################################################
  57.     #write_file('test-out.tex', $cabeza . $cuerpo);
  58.      
  59.     open my $OUTFILE, '>test-out.tex';
  60.     print   $OUTFILE "$cabeza . $cuerpo";
  61.     close   $OUTFILE;
  62.     __END__
  63.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


mejorar-funciones-de-leer-archivos-t8445.html#p36371
Voy a llegar hasta el final, voy a subir la velocidad - Migue Benítez.
Aceitunas
Perlero nuevo
Perlero nuevo
 
Mensajes: 117
Registrado: 2013-11-07 15:25 @684
Ubicación: Ciudad Real, España.

Re: Eliminar palabras en distintas posiciones de un archivo

Notapor pablgonz » 2014-01-29 03:43 @197

Muchas gracia,s Aceitunas, por la respuesta. Estaba trabajando en sacarme el uso del módulo, ahora que lo puedo ejecutar me percato de algunas cosas.

El "." en :
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print $OUTFILE "$cabeza$cuerpo";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
creo que no es necesario.

Me percato de un caso que no había considerado en mi primer análisis:
Sintáxis: [ Descargar ] [ Ocultar ]
Using latex Syntax Highlighting
  1. \usepackage{pstricks,amsmath,fourier,etc,graphicx}
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
aquí se lleva la palabra, pero, deja la coma.

Y algo que no tomé en cuenta en un principio, debo usar comillas dobles en:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $cabeza .= <<'EXTRA';
  2. \usepackage{grfext}
  3. \PrependGraphicsExtensions*{pdf}
  4. \usepackage{graphicx}
  5. \graphicspath{{imageDir}}
  6. EXTRA
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
puesto que imageDir lo cambiaré por un string:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $imageDir = "images";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Saludos y gracias una vez más.
Pablo.

P.D.: Aceitunas, creo que es mejor usar local cuando usas undef $/.
pablgonz
Perlero nuevo
Perlero nuevo
 
Mensajes: 236
Registrado: 2010-09-08 21:03 @919
Ubicación: Concepción (Chile)

Re: Eliminar palabras en distintas posiciones de un archivo

Notapor explorer » 2014-01-29 10:08 @464

El tema del módulo ha sido resuelto fácil por Aceitunas. Verás que, usando un módulo, nos ahorramos pocas líneas, pero... queda el programa mucho más legible :)

En el foro Formación, en el primer hilo, tienes una guía general de instalación de módulos.

El tema del punto... no puse las variables entre comillas dobles porque... me pareción más bonito ponerlo separado por un '.' :)

Debes aclarar lo de la coma. A mi no queda ninguna coma suelta. ¿O deben quedar comas sueltas? La salida de mi programa es exacta, carácter por carácter, a la salida que pedías, es decir: se elimina la palabra maldita, junto con la coma que le precede (en caso de que tenga coma que le precede).

En el tema del documento incrustado, cuando pongas comillas dobles, debes acordarte que entonces debes escapar todos los caracteres '\' (pasarles a '\\').
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Eliminar palabras en distintas posiciones de un archivo

Notapor pablgonz » 2014-01-29 13:02 @585

explorer escribiste:Debes aclarar lo de la coma. A mi no queda ninguna coma suelta. ¿O deben quedar comas sueltas? La salida de mi programa es exacta, carácter por carácter, a la salida que pedías, es decir: se elimina la palabra maldita, junto con la coma que le precede (en caso de que tenga coma que le precede).
Me explico con un ejemplo, si el fichero de entrada tiene esta forma:
Sintáxis: [ Descargar ] [ Ocultar ]
Using latex Syntax Highlighting
  1. \documentclass{article}
  2. \usepackage[opcion1=algo,
  3.             opcion2={otracosa}
  4.            ]{auto-pst-pdf}
  5. \usepackage{lmodern,pstricks-add,amsmath,fourier,etc,graphicx}
  6. \usepackage{pstricks,
  7.             amsmath,
  8.             etc,
  9.            pst-algo1,
  10.            otro
  11.             }
  12. \usepackage{pst-algo2,amsmath,etc,otro}
  13.  
  14. \begin{document}
  15.  
  16. Esta sección del archivo no debe ser modificada
  17.  
  18. \begin{verbatim}
  19. \documentclass{article}
  20. \usepackage[left=2cm]{geometry}
  21. \usepackage{pstricks-add}
  22. \usepackage{pstexample}
  23. \usepackage[opcion]{graphicx}
  24. \begin{document}
  25. \begin{pspicture}
  26. Algo
  27. \begin{pspicture*}
  28. \end{document}
  29. \end{verbatim}
  30.  
  31. \end{document}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
genera:
Sintáxis: [ Descargar ] [ Ocultar ]
Using latex Syntax Highlighting
  1. \documentclass{article}
  2. \usepackage[opcion1=algo,
  3.            opcion2={otracosa}
  4.           ]{auto-pst-pdf}
  5. \usepackage{lmodern,amsmath,fourier,etc}
  6. \usepackage{,
  7.            amsmath,
  8.            etc,
  9.           otro
  10.            }
  11. \usepackage{,amsmath,etc,otro}
  12.  
  13. \usepackage{grfext}
  14. \PrependGraphicsExtensions*{pdf}
  15. \usepackage{graphicx}
  16. \graphicspath{{images/}}
  17. \begin{document}
  18.  
  19. Esta sección del archivo no debe ser modificada
  20.  
  21. \begin{verbatim}
  22. \documentclass{article}
  23. \usepackage[left=2cm]{geometry}
  24. \usepackage{pstricks-add}
  25. \usepackage{pstexample}
  26. \usepackage[opcion]{graphicx}
  27. \begin{document}
  28. \begin{pspicture}
  29. Algo
  30. \begin{pspicture*}
  31. \end{document}
  32. \end{verbatim}
  33.  
  34. \end{document}
  35.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

y debería quedar así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using latex Syntax Highlighting
  1. \documentclass{article}
  2. \usepackage{lmodern,amsmath,fourier,etc}
  3. \usepackage{
  4.            amsmath,
  5.            etc,
  6.           otro
  7.            }
  8. \usepackage{amsmath,etc,otro}
  9.  
  10. \usepackage{grfext}
  11. \PrependGraphicsExtensions*{pdf}
  12. \usepackage{graphicx}
  13. \graphicspath{{images/}}
  14. \begin{document}
  15.  
  16. Esta sección del archivo no debe ser modificada
  17.  
  18. \begin{verbatim}
  19. \documentclass{article}
  20. \usepackage[left=2cm]{geometry}
  21. \usepackage{pstricks-add}
  22. \usepackage{pstexample}
  23. \usepackage[opcion]{graphicx}
  24. \begin{document}
  25. \begin{pspicture}
  26. Algo
  27. \begin{pspicture*}
  28. \end{document}
  29. \end{verbatim}
  30.  
  31. \end{document}
  32.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Es decir:
Sintáxis: [ Descargar ] [ Ocultar ]
Using latex Syntax Highlighting
  1. \documentclass{article}
  2. % Este caso falla, {auto-pst-pdf} va escrito solo, no puede llevar nada más entre {..}
  3. % pero puede llevar saltos de linea y cualquier carácter dentro de [ ]
  4. \usepackage[opcion1=algo,
  5.             opcion2={otracosa}
  6.             ]{auto-pst-pdf}
  7. % Este caso falla, son y sin salto de linea después de {
  8. \usepackage{pstricks,
  9.             amsmath,
  10.             etc,
  11.             pst-algo1,
  12.             otro}
  13. % Este caso falla cuando la primera palabra es una de las que deseo eliminar
  14. \usepackage{pst-algo2,amsmath,etc,otro}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Espero haber aclarado el problema.
Nuevamente gracias.
Pablo
pablgonz
Perlero nuevo
Perlero nuevo
 
Mensajes: 236
Registrado: 2010-09-08 21:03 @919
Ubicación: Concepción (Chile)

Re: Eliminar palabras en distintas posiciones de un archivo

Notapor explorer » 2014-01-29 17:10 @757

He modificado el programa, y ya sale como pides.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Eliminar palabras en distintas posiciones de un archivo

Notapor pablgonz » 2014-01-30 04:16 @219

Ahora funciona a la perfección, y como acostumbro habitualmente, un par de preguntas:
  • Buscando por la red me topé con Perl6::Slurp, ¿tiene alguna ventaja sobre el módulo File::Slurp;?
  • En un mensaje antiguo, comentaste que se debía hacer el quite a usar cpan para instalar módulos, ¿por que? ¿afectará la instalación propia de la distribución sobre la cual estamos trabajando? (Fedora en mi caso).
Bueno, eso sería todo por ahora, este fin de semana hago respaldos y reinstalo mi distribución.
Agradecido,
Pablo
pablgonz
Perlero nuevo
Perlero nuevo
 
Mensajes: 236
Registrado: 2010-09-08 21:03 @919
Ubicación: Concepción (Chile)

Re: Eliminar palabras en distintas posiciones de un archivo

Notapor explorer » 2014-01-30 10:25 @476

Perl6::Slurp lo que hace es traer la sintaxis de 'slurp' de Perl6 a Perl5. Nada más. Eso tiene sus ventajas (te empiezas a acostumbrar a usar un comando que luego usarás en caso de pasarte a Perl6.

Lo que dije sobre el comando cpan es que, antes que usarlo, es preferible ver si el módulo está antes empaquetado en la distribución del software del sistema operativo. Si no está, pues entonces lo intentaremos con el comando cpan, naturalmente.

Lo tienes todo explicado en el primer tema dentro del foro de Formación: Instalación de módulos en Perl.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 14 invitados