Grep con InDesign al rescate del maquetador #1

      A veces te preguntan para qué sirve las operaciones de búsqueda y cambio con los comodines conocidos como "expresiones regulares" (GREP), como si no hubiera diferencia con las búsquedas y reemplazos de texto normales. Si estás un poco espeso, te quedas con la duda de cómo explicarlo con un caso que no sea demasiado complicado y que, a la vez, sea muy común y muy pesado e imposible de resolver con esas búsquedas.

      Éste es uno de esos casos, muy habitual para un maquetador de revistas o libros en los que aparezcan columnas con listados de productos numerados, del tipo de "1. Bañador a cuadros. 2. Sombrero de fieltro. 3 Agenda de cuero…"

      Para evitar que pueda quedar un número con su punto al final de una línea y que el producto descrito quede al comienzo de la siguiente línea, lo procedente es que el espacio que los separa sea un "espacio de no separación". El problema es que después de que volquemos el texto o después de que alguien lo repase y edite, muchos de los espacios en blanco que van después de los números serán espacios normales, que permiten la partición de línea."

      Cambiar esos espacios —y sólo esos— por espacios de no separación es algo que sólo podemos hacer a mano… o con una simple operación de búsqueda y cambio con una expresión regular, GREP.

      Cómo hacerlo

      Ponemos el cursor de texto dentro de cualquier punto de la caja de texto con el texto en cuestión y vamos al menú "Edición - Buscar/Cambiar". Seleccionamos la solapa "GREP".

      En la caja "Buscar" escribimos la secuencia: (\d+)\. (\D+), que en lenguaje humano quiere decir "cualquier cifra, sea una o más de una" \d+, seguidas de "un punto y un espacio" \. y a continuación "una o más letras que no sean cifras" \D+. Las barras invertidas indican que se trata de comodines de expresiones regulares y no de caracteres tipográficos. Los paréntesis se ponen para dividir y agrupar la búsqueda en tres grupos. Eso permite después hacer referencia sólo a partes de la búsqueda y no a la totalidad.

      En la caja "Cambiar a..." escribimos la secuencia $1.^S$2, que en lenguaje humano quiere decir "sólo la primera parte de la búsqueda, sin cambiar nada de lo que hubieras encontrado" $1 —siendo $0 la totalidad de la búsqueda—, seguido de un punto y un espacio irrompible .^S^S es el caracter oculto que InDesign usa para indicar ese tipo de espacio—, "terminado por la segunda parte del resultado de la búsqueda, sin cambiar nada" $2.

      Si no lo acabas de entender, te sugiero que leas un segundo una explicación sencilla sobre los patrones de reemplazo en las búsquedas GREP de InDesign y la interfaz de buscar/cambiar con GREP en InDesign.

      Si ejecutas la orden aplicándola a "Documento" o "artículo" en la opción "Buscar en" los espacios adecuados cambiarán de forma automática. Al "Mostrar los caracteres ocultos" en el menú "Texto", podrás verlo correctamente.

      Si la orden ha funcionado bien y la vamos a usar frecuentemente, es buena idea guardarla como valor predeterminado de búsqueda GREP. Para ello apretamos el icono de "Guardar consulta GREP del cuadro de diálogo. Le damos un nombre descriptivo y ya estará a nuestra disposición en la persiana "Consulta siempre que la necesitemos.

      13 comentarios

      Excelente ejemplo

      Gracias por el tutorial. La verdad es que no existe mucha documentación en español sobre GREP. En mi libro https://www.smashwords.com/books/view/357027 encuentran GREP explicado y 40 "recetas" para agilizar el trabajo en InDesign.

      Documentación GREP

      La mejor explicación sobre patrones GREP la encontré en la documentación de PHP:

      http://www.php.net/manual/en/regexp.introduction.php
      http://www.php.net/manual/es/regexp.introduction.php

      Pongo los enlaces en inglés y en castellano

      Un saludo

      Hay un simulador online: GREPGrokker

      Muchas gracias

      Dos de los problemas de GREP, aparte de que es complejo de usar, son que no todos los sabores de GREP son exactamente iguales y que es difícil construir cómo va a funcionar una expresión de forma muy precisa.

      Para ayudarnos en el segundo problema existe GREPGrokker, un simulador GREP en la red de la empresa neozelandesa Rorohiko que nos permite construir fórmulas GREP expresamente para InDesign y ver cómo actuará sobre un pequeño texto de nuestra elección hasta dar con la expresión exacta para nuestras necesidades.

      Una razón más para cambiar de Quark a InDesign

      He comprobado que en el Quark 9 no existe la posibilidad de buscar/reemplazar con expresiones regulares, lo que se suma a mi lista de razones por las cuales cambiar Quark por InDesign.

      Repito, son MIS razones, desde el punto de vista técnico (que es el que me toca).

      Un saludo

      Otro ejemplo de uso sencillo casi igual

      A cuenta de una pregunta que me envían —"Necesito que todos los porcentajes de mi documento tengan espacios irrompibles"—, la respuesta es: "Buscar" la secuencia "(\d+) (\%)", donde \% representa el símbolo de porcentaje escapado; eso quiere decir que, como el símbolo de porcentaje se usa como operador y modificador en las búsquedas GREP, hay que decirle a GREP que ahora lo queremos usar con su caracter literal, por lo que le aplicamos una barra inclinada (escape) delante.

      Usando esta orden, todos las cifras como 60 % y 37,4 % pasaran a tener un espacio irrompible delante del símbolo de porcentaje..

      Mover de posición un punto

      Muy buenas, necesito ayuda con GREP.

      Tengo los puntos de final de linea antes de la llamada de la nota al pie de pagina de tal manera que quedan .1 .2 .80 etc.

      Necesito colocar esos puntos detrás de la llamada pero no lo consigo es imposible la formula seria .~F pero al cambiar en grep a ~F. me cambia el numero de nota por la F y elimina las notas.

      ¿Cual seria la formula para cambiar?

      Debes usar los patrones de reemplazo de GREP

      Hola,

      Fíjate en los llamados "patrones de reemplazo" de GREP. En tu búsqueda, debes usar el adecuado en el campo "Cambiar a".

      Un saludo

      PS: Si te ías un poco, un uso adecuado de los paréntesis en el campo "Buscar" ayuda a acotar los consiguientes patrones de reemplazo.

      Buscar número en un intervalo de páginas y sustituir calculado

      Buenas tardes, a ver si me puedes ayudar:

      Tengo que modificar los números de página de un índice pues al remaquetarlo con ID justo a partir de la página 539 y hasta el final tengo que restarle 8, o sea, que la página 539 será la 531, la 540 será la 532... y así hasta el final. ¿Se puede automatizar la tarea con GREP?

      Muchas gracias

      ¿No usaste numeración automática?

      Hola,

      Disculpa la observación, pero no acabo de entender la necesidad de esa operación... si los números de página se han hecho usando la numeración automática y has hecho el índice correctamente, bastaría con actualizar el primer número de la secuencia que quieres cambiar en la página donde comienza el cambio y a continuación actualizar el índice. Creo. Por eso Sale a cuenta usar numeración automática y colocarla en las páginas maestras.

      Sin numeración automática

      Hola,

      No hay numeración automática en el índice analítico que tengo que manipular pues incluso los archivos los he tenido que importar de un programa antiguo llamado Pagemaker. Sucede que de una edición a otra de la obra se han suprimido las páginas 531 a 538 y tengo que renumerar las páginas del intervalo desde la página 539 hasta el final del documento.

      ¿Habría alguna forma de automatizar el proceso?

      Gracias anticipadas

      Me temo que con Grep, no

      Hola,

      Si vas a usar muchas veces ese documento igual te compensa añadirle la numeración automática según se indicacaba en los enlaces del comentario que hice antes. En cualquier caso, me temo que no, que Grep no va a servir para eso. Al menos en mi escaso conocimiento.

      Saludos

      Añadir nuevo comentario