Autres formats de sortie de conversion TeX | Java

Il est très peu probable que vous souhaitiez actuellement convertir un fichier TeX écrit dans un autre format que LaTeX. Mais cela est possible si vous étudiez le langage TeX et/ou ses composants internes pour une raison quelconque. Quoi qu’il en soit, Aspose.TeX for Java vous permet de convertir des fichiers écrits au format Plain TeX. Il vous permet également de créer des formats personnalisés et de composer des documents conçus dans ces formats.

Nous commencerons par créer un format personnalisé.

Création d’un format personnalisé

Rappelons que le fichier de format est un dump binaire de l’état interne du moteur 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();

Comme vous pouvez le voir, le code est similaire au code de conversion d’un fichier TeX. Mais il existe quelques différences.

Tout d’abord, nous utilisons ici la configuration du travail TeXConfig.objectIniTeX(). Il s’agit d’une configuration spéciale qui laisse l’état du moteur « vierge », c’est-à-dire que les paramètres internes ont leurs valeurs par défaut et que l’ensemble des séquences de contrôle coïncide avec l’ensemble des primitives. Dans notre exemple, l’ensemble des primitives est étendu dans le sens mentionné ici.

Ensuite, nous configurons les répertoires de travail d’entrée et de sortie comme d’habitude. Le répertoire de travail d’entrée doit contenir le fichier source du format principal et toutes ses dépendances.

Et la deuxième différence clé réside dans la manière dont nous gérons le travail. Cette fois, nous utilisons la méthode statique createFormat() qui, avec les options, prend le nom du fichier source principal, qui doit être le même que le nom du format.

Composition d’un fichier TeX dans votre format personnalisé

Maintenant que nous avons notre propre format TeX, nous souhaitons composer un fichier TeX écrit dans ce format. Voici le code :

 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}

Évidemment, nous devons préciser le format d’une manière ou d’une autre. Tout d’abord, nous devons créer une instance de la classe FormatProvider. Ensuite, dans le constructeur d’options, nous utilisons la configuration TeXConfig.objectTeX(), qui prend notre fournisseur de format comme argument et charge le format au-dessus de l’état “vierge” du moteur.

Le reste du code devrait vous être familier. Il utilise les fonctionnalités évoquées plus haut dans ce guide.

Composition d’un fichier TeX au format Plain TeX

Si nous supprimons le fournisseur de format du code que nous venons de démontrer, le moteur chargera le format par défaut, qui est Object TeX dans son quatrième sens. Ainsi, si vous disposez d’un fichier TeX écrit au format Plain TeX, vous pouvez ainsi le convertir dans n’importe quel format cible pris en charge.

Have any questions about Aspose.TeX?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.