¿Poner desde un archivo externo?

¿Poner desde un archivo externo?

Necesito escribir un comando que lea una línea de un archivo de texto y expandirlo al contenido de esta línea, el siguiente comando lea la siguiente línea y así sucesivamente.

...
\command{arg}
...
\command{arg}
...
\command{arg}
...

el argumento de macro no se puede utilizar como índice en el archivo externo y que el archivo externo se genera mediante una secuencia de comandos de Python.

Ethan:: el archivo de texto contiene texto árabe generado línea por línea por el script Python... en un primer paso de LateX (XeLateX) cada comando \ escribe su argumento en un fileIn.txt (texto árabe)... el script de Python toma este archivo y produce fileOut.txt... en la segunda pasada de Latex cada comando \ leerá su línea correspondiente de fileOut.txt... Los dos archivos de texto contienen texto árabe simple línea por línea...

line one
line two
.
.
.
last line

aquí hay un MnWE:

usepackage{}
...
...
\newcommand{\command}[1]{....#1...}
...
\begin{document}
...
...
\command{arg0}
...
...
\command{arg1}
...
...
...
\command{arg2}
...
...
\command{arg3}
...

\end{document}

en la primera pasada, \command{..} suele ser como \index{..} que ESCRIBE contenido en un archivo externo... pero en la segunda pasada no tengo idea sobre el comando en ()TeX que PONE un contenido desde un archivo externo... espero que todo esté claro ahora.

Respuesta1

Esto puede satisfacer sus necesidades. lo encontré enEntrada y salida de archivos; Lo reproduzco (algo simplificado) aquí:

Con este archivo de muestraOut.txt:

first line, with a \TeX{} macro to expand
second line
third line

el código

\documentclass{article}

\newread\file
\openin\file=fileOut.txt

\newcommand{\getnextline}{%
 \read\file to\fileline % Reads a line of the file into \fileline
 \fileline % display it
}

\begin{document}

First line of fileOut.txt: 

\getnextline{}

More text here, then second line: \getnextline{}

Third line: \getnextline{}

Read past end of file? \getnextline{}
\closein\file

\end{document}

produce

ingrese la descripción de la imagen aquí

Espero que esto te funcione en XeTeX con texto en árabe.

Editarpara responder a las preguntas adicionales del OP:

Dado que el ejemplo aquí funciona, las declaraciones de apertura y cierre están donde pertenecen. Una buena práctica de programación (en cualquier idioma) exigiría comprobar que el archivo existe y es legible. No hice eso ya que esta respuesta es solo una prueba de concepto. Si tiene control total de su entorno y sabe que el archivo siempre estará donde se espera, no necesita preocuparse.

No sé qué pasa si no cierras un archivo abierto. Sé que TeX limita la cantidad de archivos que puedes tener abiertos al mismo tiempo. Algunas aplicaciones no son buenas para liberar identificadores de archivos por sí mismas, por lo que es un buen hábito cerrarlas usted mismo.

Tenía curiosidad sobre qué pasaría si leyera más allá del final del archivo. El ejemplo muestra que leer una línea que no está allí simplemente devuelve una cadena vacía. Debe decidir si eso es aceptable en su caso de uso. De lo contrario, pruebe eof y actúe en consecuencia.

información relacionada