Altri formati di output di conversione Tex | C++
È altamente improbabile che tu voglia attualmente convertire un file Tex scritto in qualsiasi altro formato rispetto a LaTex. Ma questo è possibile se stai studiando la lingua Tex e/o gli interni per qualche motivo. Comunque, Aspose.TeX per C ++ ti consente di convertire i file scritti in un semplice formato Tex. Inoltre, consente di creare formati personalizzati e documenti di composizione progettati in questi formati.
Inizieremo con la creazione di un formato personalizzato.
Creazione di un formato personalizzato
Ricordiamo che il file di formato è una dump binaria dello stato interno del motore 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();
Come puoi vedere, il codice è simile al codice per la conversione di un file Tex. Ma ci sono alcune differenze.
Innanzitutto, qui utilizziamo la configurazione del lavoro TexConfig.ObjectInitex. Questa è una configurazione speciale che lascia lo stato del motore “vergine”, ovvero i parametri interni hanno i loro valori predefiniti e l’insieme di sequenze di controllo coincide con l’insieme di primitive. Nel nostro esempio, l’insieme di primitive è esteso nel senso menzionato qui.
Successivamente, impostiamo le directory di lavoro input e output come al solito. La directory di lavoro input deve contenere il file di origine del formato principale e tutte le sue dipendenze.
E la seconda differenza chiave è il modo in cui gestiamo il lavoro. Questa volta utilizziamo il metodo statico createFormat(), che insieme alle opzioni prende il nome del file di origine principale, che deve essere uguale al nome del formato.
Compromettere un file tex nel tuo formato personalizzato
Ora che abbiamo il nostro formato tex, vogliamo scrivere un file Tex scritto in questo formato. Ecco il codice:
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();
Ovviamente, dobbiamo in qualche modo specificare il formato. Prima di tutto, dobbiamo creare un’istanza della classe FormatProvider. Quindi, nel costruttore di opzioni, utilizziamo la configurazione TexConfig.objectx(), che prende il nostro fornitore di formato come argomento e carica il formato in cima allo stato “vergine” del motore.
Il resto del codice dovrebbe essere familiare a te. Utilizza le funzionalità discusse in precedenza in questa guida.
Testa di un file tex in un formato Tex semplice
Se gettiamo via il provider di formato dal codice appena dimostrato, il motore caricherà il formato predefinito, che è Object Tex nel suo quarto senso. Pertanto, se hai un file Tex scritto in un semplice formato Tex, in questo modo puoi convertirlo in qualsiasi formato target supportato.