Otros formatos de salida de conversión TeX | C++
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 C++ 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 typesetting options for no format on ObjectTeX engine extension.
2System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::get_ObjectIniTeX());
3// Specify a file system working directory for input.
4options->set_InputWorkingDirectory(System::MakeObject<InputFileSystemDirectory>(RunExamples::InputDirectory));
5// Specify a file system working directory for output.
6options->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(RunExamples::OutputDirectory));
7
8// Run format creation.
9Aspose::TeX::TeXJob::CreateFormat(u"customtex", options);
10
11// For further output to look write.
12options->get_TerminalOut()->get_Writer()->WriteLine();
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 utilizamos 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 typesetting options for a custom format on ObjectTeX engine extension.
2System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::ObjectTeX(formatProvider));
3options->set_JobName(u"typeset-with-custom-format");
4// Specify the input working directory.
5options->set_InputWorkingDirectory(wd);
6// Specify a file system working directory for output.
7options->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(RunExamples::OutputDirectory));
8
9// Run typesetting.
10System::MakeObject<Aspose::TeX::TeXJob>(System::MakeObject<System::IO::MemoryStream>(System::Text::Encoding::get_ASCII()->GetBytes(u"Congratulations! You have successfully typeset this text with your own TeX format!\\end")), System::MakeObject<XpsDevice>(), options)->Run();
11
12// For further output to look write.
13options->get_TerminalOut()->get_Writer()->WriteLine();
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.