Altri formati di output di conversione TeX | .NET

È altamente improbabile che al momento tu voglia convertire un file TeX scritto in un formato diverso da LaTeX. Tuttavia, questo è possibile se stai studiando il linguaggio TeX e/o i suoi meccanismi interni per qualche motivo. Ad ogni modo, Aspose.TeX per .NET ti permette di convertire file scritti in formato Plain TeX. Ti permette anche di creare formati personalizzati e di impaginare documenti progettati in questi formati.

Inizieremo con la creazione di un formato personalizzato.

Creazione di un formato personalizzato

Ricordiamo che il file di formato è un dump binario dello stato interno del motore TeX.

 1// Create a custom TeX format file
 2
 3// Create TeX engine options for no format upon ObjectTeX engine extension.
 4TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectIniTeX);
 5
 6// Specify a file system working directory for the input.
 7options.InputWorkingDirectory = new InputFileSystemDirectory(DataDir);
 8
 9// Specify a file system working directory for the output.
10options.OutputWorkingDirectory = new OutputFileSystemDirectory(OutputDir);
11
12// Run format creation.
13TeXJob.CreateFormat("customtex", options);
14
15// For further output to look fine.
16options.TerminalOut.Writer.WriteLine();

Come potete vedere, il codice è simile a quello per la conversione di un file TeX. Tuttavia, ci sono alcune differenze.

Innanzitutto, qui utilizziamo la configurazione del job TeXConfig.ObjectIniTeX. Si tratta di una configurazione speciale che lascia il motore “invariato”, ovvero i parametri interni mantengono i valori predefiniti e l’insieme delle sequenze di controllo coincide con l’insieme delle primitive. Nel nostro esempio, l’insieme delle primitive viene esteso nel senso descritto qui.

Successivamente, impostiamo le directory di lavoro di input e output come di consueto. La directory di lavoro di input deve contenere il file sorgente del formato principale e tutte le sue dipendenze.

La seconda differenza fondamentale riguarda la modalità di esecuzione del job. Questa volta utilizziamo il metodo statico CreateFormat(), che insieme alle opzioni accetta il nome del file sorgente principale, che deve essere uguale al nome del formato.

Impaginazione di un file TeX nel tuo formato personalizzato

Ora che abbiamo il nostro formato TeX, vogliamo impaginare un file TeX scritto in questo formato. Ecco il codice:

 1// Typeset a TeX file using a custom TeX format
 2
 3// Create the file system input working directory.
 4// Create the format provider using the file system input working directory.
 5// We use the project output directory as our custom format file is supposed to be located there.
 6
 7using (FormatProvider formatProvider =
 8    new FormatProvider(new InputFileSystemDirectory(OutputDir), "customtex"))
 9{
10    // Create conversion options for a custom format upon ObjectTeX engine extension.
11    TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectTeX(formatProvider));
12    options.JobName = "typeset-with-custom-format";
13    
14    // Specify the input working directory. This is not required here as we are providing the main input as a stream.
15    // But it is required when the main input has dependencies (e.g. images).
16    options.InputWorkingDirectory = new InputFileSystemDirectory(DataDir);
17    
18    // Specify a file system working directory for the output.
19    options.OutputWorkingDirectory = new OutputFileSystemDirectory(OutputDir);
20
21    // Run the job.
22    new TeXJob(new MemoryStream(Encoding.ASCII.GetBytes(
23            "Congratulations! You have successfully typeset this text with your own TeX format!\\end")),
24            new XpsDevice(), options).Run();
25
26    // For further output to look fine.
27    options.TerminalOut.Writer.WriteLine();
28}

Ovviamente, dobbiamo specificare il formato in qualche modo. Innanzitutto, dobbiamo creare un’istanza della classe FormatProvider. Successivamente, nel costruttore delle opzioni, utilizziamo la configurazione TeXConfig.ObjectTeX(), che accetta il nostro provider di formato come argomento e carica il formato sullo stato “vergine” del motore.

Il resto del codice dovrebbe esservi familiare. Utilizza le funzionalità discusse in precedenza in questa guida.

Composizione di un file TeX in formato TeX semplice

Se rimuoviamo il provider di formato dal codice appena mostrato, il motore caricherà il formato predefinito, ovvero Object TeX nel suo quarto senso. Pertanto, se si dispone di un file TeX scritto in formato TeX semplice, in questo modo è possibile convertirlo in qualsiasi formato di destinazione supportato.