ES-TEX Archivos

Usuarios hispanohablantes de TeX

ES-TEX@LISTSERV.REDIRIS.ES

Opciones: Vista Forum

Use Monospaced Font
Mostrar las partes HTML
Mostrar todas las cabeceras de correo

Mensaje: [<< Primero] [< Prev] [Siguiente >] [Último >>]
Tema: [<< Primero] [< Prev] [Siguiente >] [Último >>]
Autor: [<< Primero] [< Prev] [Siguiente >] [Último >>]

Print Responder
Subject:
Emisor:
MANUEL GONZALEZ SUAREZ <[log in para visualizar]>
Reply To:
Usuarios hispanohablantes de TeX <[log in para visualizar]>
Fecha:
Mon, 6 Sep 2021 09:49:52 +0000
Content-Type:
text/plain
Parts/Attachments:
text/plain (1 lines)
Hola, Juan Manuel:
Gracias de nuevo por compartir tus sabios (y prácticos) conocimientos. Quisiera plantearte una pequeña duda: aun en el caso de que usemos pdfpages, si queremos hacer una edición crítica bilingüe y utilizamos, por decirlo así, el método "tradicional" de componer los dos archivos por separado, y si queremos "sincronizar" la traducción con el texto original, ¿tenemos que incluir \clearpage o \newpage? ¿O cuál es el procedimiento para sincronizar los dos textos a mano?
Gracias otra vez.
Manuel González.

-----Mensaje original-----
De: Usuarios hispanohablantes de TeX [mailto:[log in para visualizar]] En nombre de Juan Manuel Macías
Enviado el: domingo, 5 de septiembre de 2021 14:41
Para: [log in para visualizar]
Asunto: Re: [TEX] Sobre ediciones bilingües con LaTeX (¿novedades?)

Hola de nuevo:

Pues parece que he encontrado una solución (al menos para un escenario
concreto) que me empieza a satisfacer: usando el paquete flowfram y todo dentro de Org Mode, sin necesidad de recurrir a Scribus.

Como había comentado, el escenario es el siguiente: el texto de las páginas de la derecha, el de la traducción, debe formar parte del documento principal. Pero el de las páginas de la izquierda, que es una edición crítica en griego, consiste en un PDF compilado a partir de otro documento. Cada página de ese PDF debe enfrentarse con cada página del texto de la traducción. Y aquí es donde viene flowfram.

Para entender un poco lo que viene a hacer flowfram, el texto del documento fluye a través de "flowframes" previamente definidos, cada uno con su forma y tamaño y asociados a rangos de páginas. Como en los programas de maquetación. Esto nos permite componer la traducción sólo en las páginas impares, dejando vacías las pares. Es decir, partiendo de un mínimo ejemplo, podemos definir estos dos flowframes:

Uno para la parte introductoria, donde el texto irá por páginas pares e impares. En nuestro caso, este flowframe irá de la pág. 1 a la 3:

\newflowframe[1-3]{\textwidth}{\textheight}{0pt}{0pt}[antes]

El flowframe de la traducción estará en las páginas impares:

\newflowframe[odd]{\textwidth}{\textheight}{0pt}{0pt}[traduccion]

de éste excluiremos las páginas anteriores de la parte introductoria

\setflowframe*{traduccion}{excludepages={1,2,3}}

Vale, ya tenemos arreglada la parte de la traducción. Además, como formará parte del documento principal, podemos añadir índices, referencias cruzadas en las notas y demás. ¿Cómo solucionamos lo de colocar cada página del PDF en griego enfrentada a su correspondiente pág. de la traducción? Pues aquí es donde viene otro tipo de caja que tiene flowfram, las cajas dinámicas. Se puede definir una caja dinámica por cada página par en blanco y añadirle un contenido, que será una página del pdf insertada con pdf pages (la estructura se pude ver en este esquema que he hecho: https://ibb.co/b1j3mGv).

Claro, el problema es que cada caja dinámica hay que definirla expresamente en el preámbulo, darle un nombre y luego su contenido asociado. Si el PDF que queremos insertar tiene 300 páginas no es un trago agradable, pues hay que definir 300 cajas dinámicas, junto a su
contenido: total=600 líneas. Pero aquí es donde viene Org Mode y Elisp.
Si trabajamos desde Org Mode, podemos escribir una función que se ejecute durante la exportación y que escriba todo eso en el preámbulo por nosotros. Esta función que he escrito admite dos argumentos: la página donde queramos que se inicie el texto en griego y el número de páginas que queremos insertar del PDF. Tan sencillo como eso. La función viene a ser esta:

(defun mi-flowfram-paginas-pares (desde pags-pdf)
    (let* ((contador 0)
	   (contador-desde (- desde 2)))
      (with-temp-buffer
	(dotimes (num pags-pdf)
	  (let ((numero (number-to-string (setf contador (+ contador 1))))
		(numero-desde (number-to-string (setf contador-desde (+ contador-desde 2)))))
	    (insert (concat
		     "#+LaTeX_Header: \\newdynamicframe["
		     numero-desde
		     "]{\\textwidth}{\\textheight}{0pt}{0pt}[orig"
		     numero
		     "]\n#+LaTeX_Header: \\setdynamiccontents*{orig"
		     numero
		     "}{\\includepdf[pages={"
		     numero
		     "},noautoscale=true,pagecommand={\\thispagestyle{plain}}]{doc1.pdf}}\n\n"))))
	(setq mi-flowfram-res (buffer-string)))
      mi-flowfram-res))

Luego, en cualquier lugar de mi documento de Org incluyo este cuadro de código, que llama a la función durante el proceso de la exportación. En este caso quiero que el texto del pdf comience en la página 4 de mi documento y que se carguen cuatro páginas del pdf:

#+begin_src emacs-lisp :results raw :exports results :var trad-desde=4 pags-pdf=4
   (mi-flowfram-paginas-pares trad-desde pags-pdf) #+end_src

Y ya con eso bastaría. Y un plus: como el PDF que viene del otro documento hay que tenerlo al día y compilarlo antes, añado también este código con un proceso centinela: primero compila el otro documento, y hasta que no esté el PDF generado no exporta el documento principal. Así todo se hace desde el documento principal, sin necesidad de compilar varias veces:

#+begin_src emacs-lisp :eval never-export :exports none :results silent
  (let* ((archivo "doc1.tex")
	 (comando-latexmk
	  (start-process "latexmk" nil "/usr/bin/latexmk" "-lualatex" "-e" "'$lualatex=q/lualatex %O -shell-escape %S/'" archivo)))
    (set-process-sentinel
     comando-latexmk
     (lambda (p e)
       (when (= 0 (process-exit-status p))
	 (org-open-file
	  (org-latex-export-to-pdf))))))
#+end_src

He hecho este vídeo de muestra para ver el proceso en acción:
https://vimeo.com/598237960

Saludos,

Juan Manuel 

----------------------------------------------------
Normas para el correcto uso del correo electrónico:
		http://www.rediris.es/mail/estilo.html
----------------------------------------------------

----------------------------------------------------
Para darse de baja ES-TEX pincha y envia el siguiente url
mailto:[log in para visualizar]
----------------------------------------------------



ATOM RSS1 RSS2