Outros formatos de saída de conversão Tex | Java

É altamente improvável que você queira converter um arquivo tex escrito em qualquer outro formato que não seja o LATEX. Mas isso é possível se você estiver estudando o idioma tex e/ou internos por algum motivo. De qualquer forma, Aspose.TeX para java permite converter arquivos escritos no formato Tex simples. Ele também permite criar formatos personalizados e documentos de tiponete projetados nesses formatos.

Começaremos com a criação de um formato personalizado.

Criando um formato personalizado

Lembre -se de que o arquivo de formato é um depósito binário do estado interno do mecanismo Tex.

Defina inputDirectory como uma pasta que contenha customtex.tex e suas dependências, e outputDirectory como uma pasta de saída existente. O arquivo fonte do formato deve terminar com \dump; este exemplo cria customtex.fmt nessa pasta. Importe as classes Aspose.TeX usadas nos exemplos e, para a composição, com.aspose.tex.rendering.XpsDevice, java.io.ByteArrayInputStream e java.nio.charset.StandardCharsets. O método chamador deve tratar ou declarar as exceções. Aplique uma licença conforme o guia de licenciamento para evitar as restrições de avaliação.

 1// Create a custom TeX format from customtex.tex, which ends with \dump.
 2// inputDirectory contains customtex.tex; outputDirectory is an existing output folder.
 3TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectIniTeX());
 4InputFileSystemDirectory input = new InputFileSystemDirectory(inputDirectory);
 5OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
 6options.setInputWorkingDirectory(input);
 7options.setOutputWorkingDirectory(output);
 8options.setInteraction(Interaction.NonstopMode);
 9options.setTerminalOut(new OutputMemoryTerminal());
10try {
11    TeXJob.createFormat("customtex", options);
12} finally {
13    output.close();
14    input.close();
15}

Como você pode ver, o código é semelhante ao código para converter um arquivo tex. Mas existem algumas diferenças.

Primeiro, aqui usamos o TexConfig.Objectinitex () Configuração do trabalho. Esta é uma configuração especial que deixa o estado do motor “virgem”, ou seja, os parâmetros internos têm seus valores padrão e o conjunto de sequências de controle coincide com o conjunto de primitivas. Em nosso exemplo, o conjunto de primitivas é estendido no sentido mencionado aqui.

Em seguida, configuramos os diretórios de trabalho de entrada e saída, como de costume. O diretório de trabalho de entrada precisa conter o arquivo de origem do formato principal e todas as suas dependências.

E a segunda diferença importante é a maneira como executamos o trabalho. Desta vez, usamos o método estático createFormat () , que, juntamente com as opções, pega o nome do arquivo de origem principal, que deve ser o mesmo que o nome do formato.

Tipando um arquivo tex em seu formato personalizado

Agora que temos nosso próprio formato Tex, queremos digitar um arquivo tex escrito neste formato. Aqui está o código:

Defina formatDirectory como a pasta que contém o arquivo customtex.fmt criado anteriormente, e outputDirectory como uma pasta de saída existente. O exemplo compõe um fluxo de texto independente em typeset-with-custom-format.xps, sem precisar de um diretório de trabalho de entrada. Defina um quando a entrada principal tiver dependências, como imagens.

 1// Typeset text using the previously created customtex.fmt format.
 2// formatDirectory contains customtex.fmt; outputDirectory is an existing output folder.
 3InputFileSystemDirectory formatInput = new InputFileSystemDirectory(formatDirectory);
 4FormatProvider formatProvider = new FormatProvider(formatInput, "customtex");
 5OutputFileSystemDirectory output = new OutputFileSystemDirectory(outputDirectory);
 6XpsDevice device = new XpsDevice();
 7TeXJobResult result;
 8try {
 9    TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectTeX(formatProvider));
10    options.setJobName("typeset-with-custom-format");
11    options.setOutputWorkingDirectory(output);
12    options.setInteraction(Interaction.NonstopMode);
13    options.setTerminalOut(new OutputMemoryTerminal());
14    // No input working directory is needed for this self-contained stream.
15    try (ByteArrayInputStream text = new ByteArrayInputStream(
16            "Congratulations! You have successfully typeset this text with your own TeX format!\\end"
17                    .getBytes(StandardCharsets.US_ASCII))) {
18        result = new TeXJob(text, device, options).run();
19    }
20} finally {
21    device.dispose();
22    output.close();
23    formatProvider.close();
24    formatInput.close();
25}

Obviamente, temos que especificar o formato de alguma forma. Primeiro de tudo, precisamos criar uma instância da classe FormatProvider . Em seguida, no construtor de opções, usamos a configuração TeXConfig.objectTeX(FormatProvider), que toma nosso provedor de formato como um argumento e carrega o formato no topo do estado “virgem” do motor.

Ambos os exemplos são executados sem interação e capturam a saída do terminal na memória. Após o trabalho, o exemplo de composição fecha o fluxo de entrada, libera o dispositivo XPS e fecha o diretório de trabalho e o provedor de formato. Esses recursos são explicados anteriormente neste guia.

Tipando um arquivo tex no formato PLAin Tex

Se usarmos TeXConfig.objectTeX() sem um provedor de formato, o motor carregará o formato padrão, que é objeto tex em seu quarto sentido. Assim, se você tiver um arquivo tex escrito no formato PLAIN TEX, dessa maneira poderá convertê -lo em qualquer formato de destino suportado.