Інші вихідні формати перетворення TeX | C++

Дуже малоймовірно, що зараз ви захочете конвертувати файл TeX, написаний у будь-якому іншому форматі, крім LaTeX. Але це можливо, якщо ви з якоїсь причини вивчаєте мову TeX та/або внутрішні засоби. У будь-якому разі Aspose.TeX для C++ дозволяє конвертувати файли, написані у форматі Plain TeX. Це також дозволяє створювати власні формати та набирати документи, оформлені в цих форматах.

Ми почнемо зі створення спеціального формату.

Створення власного формату

Давайте пам’ятаємо, що файл формату є двійковим дампом внутрішнього стану механізму 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();

Як бачите, код схожий на код для перетворення файлу TeX. Але є кілька відмінностей.

По-перше, тут ми використовуємо конфігурацію завдання TeXConfig.ObjectIniTeX. Це спеціальна конфігурація, яка залишає стан двигуна «незайманим», тобто внутрішні параметри мають значення за замовчуванням, а набір керуючих послідовностей збігається з набором примітивів. У нашому прикладі набір примітивів розширено в сенсі, згаданому тут.

Далі ми налаштовуємо вхідні та вихідні робочі каталоги, як зазвичай. Вхідний робочий каталог має містити вихідний файл основного формату та всі його залежності.

І друга ключова відмінність полягає в тому, як ми виконуємо роботу. Цього разу ми використовуємо статичний метод CreateFormat(), який разом із параметрами отримує назву основного вихідного файлу, яка має збігатися з назвою формату.

Набір файлу TeX у вашому спеціальному форматі

Тепер, коли у нас є власний формат TeX, ми хочемо набрати файл TeX, написаний у цьому форматі. Ось код:

 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();

Вочевидь ми повинні якось визначити формат. Перш за все, нам потрібно створити екземпляр класу FormatProvider. Потім у конструкторі параметрів ми використовуємо конфігурацію TeXConfig.ObjectTeX(), яка приймає наш провайдер формату як аргумент і завантажує формат поверх «незайманого» стану двигуна.

Решта коду повинна бути вам знайома. Він використовує функції, розглянуті раніше в цьому посібнику.

Набір файлу TeX у форматі Plain TeX

Якщо ми викинемо постачальника формату з щойно продемонстрованого коду, механізм завантажить формат за замовчуванням, яким є Object TeX у його четвертому значенні. Таким чином, якщо у вас є файл TeX, написаний у форматі Plain TeX, таким чином ви можете перетворити його в будь-який підтримуваний цільовий формат.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.