Otros formatos de salida de conversión TeX | Java
Es muy poco probable que actualmente quieras convertir un archivo TeX escrito en cualquier otro formato que no sea LaTeX. Pero esto es posible si estás estudiando el lenguaje TeX y/o sus aspectos internos por algún motivo. De todos modos, Aspose.TeX para Java te permite convertir archivos escritos en formato Plain TeX. También le permite crear formatos personalizados y componer documentos diseñados en estos formatos.
Comenzaremos creando un formato personalizado.
Creando un formato personalizado
Recordemos que el archivo de formato es un volcado binario del estado interno del motor TeX.
1// Create TeX engine options for no format upon ObjectTeX engine extension.
2TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectIniTeX());
3// Specify a file system working directory for the input.
4options.setInputWorkingDirectory(new InputFileSystemDirectory(Utils.getInputDirectory()));
5// Specify a file system working directory for the output.
6options.setOutputWorkingDirectory(new OutputFileSystemDirectory(Utils.getOutputDirectory()));
7
8// Run format creation.
9TeXJob.createFormat("customtex", options);
10
11// For further output to look fine.
12options.getTerminalOut().getWriter().newLine();
Como puede ver, el código es similar al código para convertir un archivo TeX. Pero hay algunas diferencias.
Primero, aquí usamos la configuración del trabajo TeXConfig.objectIniTeX(). Se trata de una configuración especial que deja el estado del motor “virgen”, es decir, los parámetros internos tienen sus valores por defecto y el conjunto de secuencias de control coincide con el conjunto de primitivas. En nuestro ejemplo, el conjunto de primitivas se amplía en el sentido mencionado aquí.
A continuación, configuramos los directorios de trabajo de entrada y salida como de costumbre. El directorio de trabajo de entrada debe contener el archivo fuente del formato principal y todas sus dependencias.
Y la segunda diferencia clave es la forma en que ejecutamos el trabajo. En esta ocasión usamos el método estático createFormat(), que junto con las opciones toma el nombre del archivo fuente principal, que debe ser el mismo que el nombre del formato.
Componer un archivo TeX en su formato personalizado
Ahora que tenemos nuestro propio formato TeX, queremos componer un archivo TeX escrito en este formato. Aquí está el código:
1// Create the format provider using the file system input working directory.
2// We use the project output directory as our custom format file is supposed to be located there.
3final FormatProvider formatProvider = new FormatProvider(
4 new InputFileSystemDirectory(Utils.getOutputDirectory()), "customtex");
5try {
6 // Create conversion options for a custom format upon ObjectTeX engine extension.
7 TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX(formatProvider));
8 options.setJobName("typeset-with-custom-format");
9 // Specify the input working directory. This is not required here as we are providing the main input as a stream.
10 // But it is required when the main input has dependencies (e.g. images).
11 options.setInputWorkingDirectory(new InputFileSystemDirectory(Utils.getInputDirectory()));
12 // Specify a file system working directory for the output.
13 options.setOutputWorkingDirectory(new OutputFileSystemDirectory(Utils.getOutputDirectory()));
14
15 // Run the job.
16 new TeXJob(new ByteArrayInputStream(
17 "Congratulations! You have successfully typeset this text with your own TeX format!\\end".getBytes("ASCII")),
18 new XpsDevice(), options).run();
19
20 // For further output to look fine.
21 options.getTerminalOut().getWriter().newLine();
22} finally {
23 formatProvider.close();
24}
Obviamente, tenemos que especificar el formato de alguna manera. En primer lugar, necesitamos crear una instancia de la clase FormatProvider. Luego, en el constructor de opciones, usamos la configuración TeXConfig.objectTeX(), que toma nuestro proveedor de formato como argumento y carga el formato encima del estado “virgen” del motor.
El resto del código debería resultarle familiar. Utiliza las características analizadas anteriormente en esta guía.
Composición tipográfica de un archivo TeX en formato Plain TeX
Si descartamos el proveedor de formato del código que acabamos de demostrar, el motor cargará el formato predeterminado, que es Object TeX en su cuarto sentido. Por lo tanto, si tiene un archivo TeX escrito en formato Plain TeX, de esta manera puede convertirlo a cualquier formato de destino compatible.