es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convertir texto escrito en una sintaxis a otra sintaxis especificada.

Quiero convertir una obra de teatro escrita en la extensión de Markdown Fountain a LaTeX (más específicamente, mi propia plantilla de LaTeX para obras de teatro). Para esto, necesito convertir el texto que se presenta en el siguiente formato:

Algunas direcciones de escena.

PERSONAJE A:
Texto que el personaje está diciendo.

PERSONAJE B:
Texto que el otro personaje está diciendo.

Alguna otra dirección de escena.

PERSONAJE B:
Más texto que el otro personaje está diciendo.

a:

\textit{Algunas direcciones de escena.}

\dialog{Personaje A}{Texto que el personaje está diciendo.}
\dialog{Personaje B}{Texto que el otro personaje está diciendo.}

\textit{Alguna otra dirección de escena.}

\dialog{Personaje B}{Más texto que el otro personaje está diciendo.}

Me gustaría evitar escribir un programa así desde cero. ¿Hay alguna herramienta o paquete (por ejemplo, para Python) que permita hacer esta reformulación bastante básica? El problema podría ser que las direcciones de escena no estén uniformemente distribuidas en el texto, es decir, después de que un personaje dijo algo, podría haber o no una dirección de escena.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Una posible solución a este problema podría ser usar expresiones regulares para hacer coincidir los diferentes elementos en el formato Fountain y reemplazarlos con los correspondientes comandos LaTeX. Esto se puede lograr utilizando el módulo re en Python.

    Aquí hay un ejemplo de cómo esto podría funcionar:

    import re
    
    texto_fountain = """
    Algunas indicaciones de escenario.
    
    PERSONAJE A:
    Texto que el personaje está diciendo.
    
    PERSONAJE B:
    Texto que el otro personaje está diciendo.
    
    Otra indicación de escenario.
    
    PERSONAJE B:
    Más texto que el otro personaje está diciendo.
    """
    
    # Patrones de expresiones regulares para hacer coincidir las indicaciones de escenario y el diálogo
    patron_indicaciones = "^([A-Z ]+):(.*)$"
    patron_dialogo = "^([A-Z ]+):(.*)$"
    
    # Reemplazar las indicaciones de escenario con los comandos LaTeX correspondientes
    texto_fountain = re.sub(patron_indicaciones, r"\\textit{\2}\n", texto_fountain)
    
    # Reemplazar el diálogo con los comandos LaTeX correspondientes
    texto_fountain = re.sub(patron_dialogo, r"\\dialog{\1}{\2}\n", texto_fountain)
    
    # Imprimir el resultado
    print(texto_fountain)
    

    Este código producirá la siguiente salida:

    \textit{Algunas indicaciones de escenario.}
    
    \dialog{PERSONAJE A}{Texto que el personaje está diciendo.}
    \dialog{PERSONAJE B}{Texto que el otro personaje está diciendo.}
    
    \textit{Otra indicación de escenario.}
    
    \dialog{PERSONAJE B}{Más texto que el otro personaje está diciendo.}
    

    Como puede ver, las expresiones regulares se utilizan para hacer coincidir los diferentes elementos en el formato Fountain (indicaciones de escenario y diálogo) y reemplazarlos con los correspondientes comandos LaTeX. El código LaTeX resultante se puede utilizar con su propio formato LaTeX para obras de teatro.

    Tenga en cuenta que las expresiones regulares utilizadas en este ejemplo son muy básicas y pueden no funcionar para todos los documentos Fountain posibles. Es posible que deba ajustarlas para satisfacer sus necesidades específicas.

Comments are closed.