Arquivo intermediário de exportação de modo organizacional de limpeza

7

Eu uso o modo organizacional para exportar PDF. Faz isso através do LaTeX; bem.

Então, eu recebo os arquivos .pdf e .tex .

Apenas o PDF é interessante para mim. Alguma configuração / maneira em que o modo organizacional limpa os arquivos .tex por si só (ou armazena-os em alguma pasta temporária)?

Jocelyn delalande
fonte

Respostas:

6

Você pode simplesmente personalizar a variável org-latex-logfiles-extensionspara permitir que a organização exclua esses arquivos auxiliares após a exportação automaticamente. ie

(setq org-latex-logfiles-extensions (quote ("lof" "lot" "tex~" "aux" "idx" "log" "out" "toc" "nav" "snm" "vrb" "dvi" "fdb_latexmk" "blg" "brf" "fls" "entoc" "ps" "spl" "bbl")))

Adicione a extensão que você deseja excluir à variável.

Leu_Grady
fonte
boa liderança! Minha solução final é:(add-hook 'org-mode-hook (lambda ()(add-to-list 'org-latex-logfiles-extensions "tex")))
Jocelyn delalande
Eu não acho que você precise adicionar isso ao gancho do modo organizacional. Essa variável deve funcionar apenas no modo organizacional.
Leu_Grady
@ leu-grady: o problema é que, se eu usar add-to-list, o var deve ser preexistente, o que é apenas o caso após o modo org ter sido inicializado.
Jocelyn delalande
@Jocelyndelalande você está certo. Mas talvez você possa tentar avaliar após o carregamento.
Leu_Grady
Você também precisa se certificar de que org-latex-remove-logfilesnão é nulo: é tpor padrão, mas se os arquivos não forem excluídos, seu valor poderá ter sido alterado. Além disso, isso limpa apenas os vários arquivos que o látex produz. Ele não limpa, por exemplo, os subdiretórios que a própria organização (ou emacs) pode produzir.
NickD
2

Esta é uma pergunta simples, mas não tem respostas tão simples. Os arquivos temporários são usados ​​repetidamente na produção da saída em pdf. Nem o AUCTeX nem o ORG sabem quando é seguro excluí-los. Portanto, eles são deixados lá para exclusão manual após verificar se não são mais necessários.

Aqui estão algumas maneiras de acelerar o processo de exclusão manual. Um comando simples do shell fará o trabalho sem muito barulho (adicione outras extensões conforme necessário):

(defun clear-latex-temp-files () (shell-command "rm -rf *.tex *.prv preview.fmt"))

Use latexmk (em vez de pdflatex) para gerar seu pdf, para poder usar a -copção de excluir os arquivos temporários:

latexmk -c 

e, em seguida, coloque a seguinte linha neste arquivo ~\.latexmkrcpara cobrir todos os arquivos temporários, não apenas *.texe *.prv:

@generated_exts = qw(aux idx ind lof lot out toc acn acr alg glg glo gls ist);

Você pode adicionar outros arquivos temporários (.synctex .gz .nav .vrb .snm .blg -blx .bib .bbl .run .xml) dependendo das suas necessidades. Essa é a opção mais personalizável.

Para evitar essa complicação em arquivos organizacionais simples, você pode usar a -output-directoryopção interna do pdflatex.

pdflatex -output-directory=target <file>

O que também colocará a saída em pdf no diretório de destino. Em seguida, você pode mover o arquivo pdf para fora assim que estiver satisfeito com a geração correta. Todos os arquivos excluídos estão todos em um local que pode ser limpo periodicamente.

Por que não usar uma macro para delete-filedepois org-latex-compile? Porque isso às vezes pode excluir os arquivos temporários prematuramente. Você pode acabar com links quebrados, entradas de biblio desvinculadas, títulos de capítulo desvinculados no TOC e índices inacabados, lista de tabelas, lista de figuras. Consulte a cadeia de documentação do modo organizacional para C-h f org-latex-compile:

A razão pela qual esta é uma lista é que geralmente são necessárias várias execuções de 'pdflatex', talvez misturadas com uma chamada para 'bibtex'. A organização não possui um mecanismo inteligente para detectar quais desses comandos precisam ser executados para obter um resultado estável e também não realiza nenhuma verificação de erro.

Usuário Emacs
fonte
Neat, eu só tinha tentado com um exemplo muito simples, que apenas necessário um único arquivo ".tex" a ser criado
Jules
o que você acha da solução @ leu-grady?
Jocelyn delalande
Só não entendi o motivo: a limpeza do modo organizacional parece ocorrer após a produção do PDF (consulte o org-latex-remove-logfilesdocumento); como ainda poderia precisar do .tex ? Eu adoraria entender o seu ponto de vista, mas por favor me semeie um exemplo problemático.
Jocelyn delalande
Para outras pessoas que leem esta resposta: se você notar índices ausentes, links ou entradas do sumário em seu pdf, use esta solução. Para arquivos organizacionais simples, não fará diferença quando os arquivos temporários forem excluídos. Caso contrário, dá uma falsa sensação de perfeição. O OP quer ver um exemplo problemático, mas como a documentação diz que não há verificação de erros. Para cada execução, você pode notar coisas aleatórias ausentes no seu pdf, dependendo de quando os arquivos temporários foram excluídos (após a primeira, segunda ou terceira passagem).
Emacs usuário
1

Você pode colocar conselhos após a função para excluir o arquivo intermediário desta maneira:

(advice-add 'org-latex-compile :after #'delete-file)
Jules
fonte
0

Eu defini org-latex-pdf-processalgo como:

latexmk -outdir=/tmp/latexmk -f -pdf %F; mv %f /tmp/latexmk; mv /tmp/latexmk/%b.pdf %o

Dessa forma, mantenho todos os arquivos intermediários em um local "oculto" para acelerar as compilações sucessivas, mas apenas o pdf é mantido no local original.

memeplex
fonte